Message: Proton Physics Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Proton Physics 

Forum: Physics List
Date: 27 May, 2008
From: Sean Kirkwood <Sean Kirkwood>

Hi,

We are simulating proton absorption in silicon detectors and noticed that
as the proton energies reach about 50 - 100 MeV that the deposition curve
looks "broken up".  Rather than a smooth curve as expected from a Bethe
equation, it appears as though the deposition is taken from a look-up
table.  The curve would go straight for a few MeV and then drop to the 
next level, as though it found a new table entry.

My questions are:
1. Is GEANT4 using a look-up table for proton absorption?
2. Are there other physics models I should incorporate?
3. Where can I get a good sandwich?

Thanks for your time,
Sean

**************************************
Here is my PhysicsList.cc if it helps
**************************************
// Default include types
#include "HEPT_Physics.hh"
#include "G4ParticleTypes.hh"
#include "G4ProcessManager.hh"

// From Novice Example N02
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
#include "G4StepLimiter.hh"
#include "G4UserSpecialCuts.hh"
#include "G4Decay.hh"

// Low Energy EM
#include "G4LowEnergyPhotoElectric.hh"
#include "G4LowEnergyCompton.hh"  
#include "G4LowEnergyGammaConversion.hh"
#include "G4LowEnergyRayleigh.hh" 
#include "G4LowEnergyIonisation.hh" 
#include "G4LowEnergyBremsstrahlung.hh" 

HEPT_Physics::HEPT_Physics()    {;}

HEPT_Physics::~HEPT_Physics()   {;}

void HEPT_Physics::ConstructParticle() {
  G4Gamma::GammaDefinition();
  G4Proton::ProtonDefinition();
  G4Electron::ElectronDefinition();
  G4Positron::PositronDefinition();
  G4NeutrinoE::NeutrinoEDefinition();
  G4AntiNeutrinoE::AntiNeutrinoEDefinition();
  G4MuonPlus::MuonPlusDefinition();
  G4MuonMinus::MuonMinusDefinition();
}

void HEPT_Physics::ConstructProcess() {
  AddTransportation();
  ConstructEM();
  ConstructGeneral();
}

void HEPT_Physics::ConstructEM() {
  theParticleIterator->reset();
  while( (*theParticleIterator)() ){
    G4ParticleDefinition* particle = theParticleIterator->value();
    G4ProcessManager* pmanager = particle->GetProcessManager();
    G4String particleName = particle->GetParticleName();

    if (particleName == "gamma") {
      pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
      pmanager->AddDiscreteProcess(new G4ComptonScattering);
      pmanager->AddDiscreteProcess(new G4GammaConversion);

      // Low E stuff added by REPT to N02
      pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
      pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);
      pmanager->AddDiscreteProcess(new G4LowEnergyCompton);
      pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);
    } 

    else if (particleName == "e-") {
      pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
      pmanager->AddProcess(new G4eIonisation,       -1, 2,2);
      pmanager->AddProcess(new G4eBremsstrahlung,   -1, 3,3);
    }

    else if (particleName == "e+") {
      pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
      pmanager->AddProcess(new G4eIonisation,       -1, 2,2);
      pmanager->AddProcess(new G4eBremsstrahlung,   -1, 3,3);
      pmanager->AddProcess(new G4eplusAnnihilation,  0,-1,4);
    }

    else if( particleName == "mu+" ||  particleName == "mu-") {
      pmanager->AddProcess(new G4MuIonisation);
      pmanager->AddProcess(new G4MultipleScattering);
      pmanager->AddProcess(new G4MuBremsstrahlung);
      pmanager->AddProcess(new G4MuPairProduction);
    }

    else if ((!particle->IsShortLived()) && (particle->GetPDGCharge() != 0.0) && 
	       (particle->GetParticleName() != "chargedgeantino")) {
      //all others charged particles except geantino
      pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
      pmanager->AddProcess(new G4hIonisation,       -1, 2,2);
      //step limit
      pmanager->AddProcess(new G4StepLimiter,       -1,-1,3);
      //pmanager->AddProcess(new G4UserSpecialCuts,   -1,-1,4);
    }
  }
}

void HEPT_Physics::ConstructGeneral() {
  // Add Decay Process
  G4Decay* theDecayProcess = new G4Decay();
  theParticleIterator->reset();
  while( (*theParticleIterator)() ){
    G4ParticleDefinition* particle = theParticleIterator->value();
    G4ProcessManager* pmanager = particle->GetProcessManager();
    if (theDecayProcess->IsApplicable(*particle)) { 
      pmanager ->AddProcess(theDecayProcess);
      // set ordering for PostStepDoIt and AtRestDoIt
      pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
      pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
    }
  }
}

void HEPT_Physics::SetCuts() {
  //  G4VUserPhysicsList::SetCutsWithDefault method sets the default cut value for all
  //  particle types 
  SetCutsWithDefault();
  if (verboseLevel>0) DumpCutValuesTable();
}

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: Proton Physics   (Vladimir IVANTCHENKO - 27 May, 2008)
(_ None: Re: Proton Physics   (Sean Kirkwood - 28 May, 2008)
 Add Message Add Message
to: "Proton Physics"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]