5 #include "G4PhysicsListHelper.hh" 7 #include "G4BaryonConstructor.hh" 8 #include "G4LeptonConstructor.hh" 9 #include "G4MesonConstructor.hh" 10 #include "G4IonConstructor.hh" 15 #include "G4PhotoElectricEffect.hh" 16 #include "G4LivermorePhotoElectricModel.hh" 17 #include "G4ComptonScattering.hh" 18 #include "G4LivermoreComptonModel.hh" 19 #include "G4GammaConversion.hh" 20 #include "G4LivermoreGammaConversionModel.hh" 21 #include "G4RayleighScattering.hh" 22 #include "G4LivermoreRayleighModel.hh" 25 #include "G4eMultipleScattering.hh" 26 #include "G4UniversalFluctuation.hh" 27 #include "G4eIonisation.hh" 28 #include "G4LivermoreIonisationModel.hh" 29 #include "G4eBremsstrahlung.hh" 30 #include "G4LivermoreBremsstrahlungModel.hh" 31 #include "G4eplusAnnihilation.hh" 34 #include "G4MuMultipleScattering.hh" 35 #include "G4MuIonisation.hh" 36 #include "G4MuBremsstrahlung.hh" 37 #include "G4MuPairProduction.hh" 38 #include "G4MuonMinusCaptureAtRest.hh" 41 #include "G4hMultipleScattering.hh" 42 #include "G4hIonisation.hh" 43 #include "G4hBremsstrahlung.hh" 44 #include "G4hPairProduction.hh" 48 #include "G4ionIonisation.hh" 49 #include "G4SynchrotronRadiation.hh" 50 #include "G4ProcessManager.hh" 51 #include "G4StepLimiter.hh" 68 G4Gamma::GammaDefinition();
71 G4MesonConstructor pMesonConstructor;
72 pMesonConstructor.ConstructParticle();
75 G4LeptonConstructor pLeptonConstructor;
76 pLeptonConstructor.ConstructParticle();
79 G4BaryonConstructor pBaryonConstructor;
80 pBaryonConstructor.ConstructParticle();
83 G4IonConstructor ionConstruct;
84 ionConstruct.ConstructParticle();
92 string hd_msg =
gemcOpt.
args[
"LOG_MSG"].args +
" EM / mu- Capture Physics List: <<< ";
93 double LOW_EM_PHYS =
gemcOpt.
args[
"LOW_EM_PHYS"].arg ;
95 cout << hd_msg <<
" Building ElectroMagnetic and Capture Processes " << endl;
98 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
99 theParticleIterator->reset();
101 while( (*theParticleIterator)() )
103 G4ParticleDefinition* particle = theParticleIterator->value();
104 G4ProcessManager* pmanager = particle->GetProcessManager();
105 string pname = particle->GetParticleName();
108 if (pname ==
"gamma")
112 G4PhotoElectricEffect* thePhotoElectricEffect =
new G4PhotoElectricEffect();
113 thePhotoElectricEffect->SetModel(
new G4LivermorePhotoElectricModel());
114 ph->RegisterProcess(thePhotoElectricEffect, particle);
116 G4ComptonScattering* theComptonScattering =
new G4ComptonScattering();
117 theComptonScattering->SetModel(
new G4LivermoreComptonModel());
118 ph->RegisterProcess(theComptonScattering, particle);
120 G4GammaConversion* theGammaConversion =
new G4GammaConversion();
121 theGammaConversion->SetModel(
new G4LivermoreGammaConversionModel());
122 ph->RegisterProcess(theGammaConversion, particle);
124 G4RayleighScattering* theRayleigh =
new G4RayleighScattering();
125 theRayleigh->SetModel(
new G4LivermoreRayleighModel());
126 ph->RegisterProcess(theRayleigh, particle);
130 ph->RegisterProcess(
new G4PhotoElectricEffect, particle);
131 ph->RegisterProcess(
new G4ComptonScattering, particle);
132 ph->RegisterProcess(
new G4GammaConversion, particle);
133 ph->RegisterProcess(
new G4RayleighScattering, particle);
137 cout << hd_msg <<
" Gamma: Photoelectric Effect, Compton Scattering, Gamma Conversion, Rayleigh Scattering" << endl;
142 else if (pname ==
"e-")
148 G4eMultipleScattering* msc =
new G4eMultipleScattering();
149 ph->RegisterProcess(msc, particle);
152 G4eIonisation* eIoni =
new G4eIonisation();
153 eIoni->SetEmModel(
new G4LivermoreIonisationModel());
154 eIoni->SetFluctModel(
new G4UniversalFluctuation() );
155 ph->RegisterProcess(eIoni, particle);
158 G4eBremsstrahlung* eBrem =
new G4eBremsstrahlung();
159 eBrem->SetEmModel(
new G4LivermoreBremsstrahlungModel());
160 ph->RegisterProcess(eBrem, particle);
164 ph->RegisterProcess(
new G4eMultipleScattering, particle);
165 ph->RegisterProcess(
new G4eIonisation, particle);
166 ph->RegisterProcess(
new G4eBremsstrahlung, particle);
169 cout << hd_msg <<
" electrons: Multiple Scattering, Ionisation, Bremsstrahlung" << endl;
173 else if (pname ==
"e+")
176 ph->RegisterProcess(
new G4eMultipleScattering, particle);
177 ph->RegisterProcess(
new G4eIonisation, particle);
178 ph->RegisterProcess(
new G4eBremsstrahlung, particle);
179 ph->RegisterProcess(
new G4eplusAnnihilation, particle);
181 cout << hd_msg <<
" positrons: Multiple Scattering, Ionisation, Bremsstrahlung, Annihilation" << endl;
185 else if(pname ==
"mu+" || pname ==
"mu-")
188 ph->RegisterProcess(
new G4MuMultipleScattering, particle);
189 ph->RegisterProcess(
new G4MuIonisation, particle);
190 ph->RegisterProcess(
new G4MuBremsstrahlung, particle);
191 ph->RegisterProcess(
new G4MuPairProduction, particle);
193 cout << hd_msg <<
" muons: Multiple Scattering, Ionisation, Bremsstrahlung, Pair Production" << endl;
197 else if( pname ==
"proton" ||
201 ph->RegisterProcess(
new G4hMultipleScattering, particle);
202 ph->RegisterProcess(
new G4hIonisation, particle);
203 ph->RegisterProcess(
new G4hBremsstrahlung, particle);
204 ph->RegisterProcess(
new G4hPairProduction, particle);
209 else if( pname ==
"alpha" ||
212 ph->RegisterProcess(
new G4hMultipleScattering, particle);
213 ph->RegisterProcess(
new G4ionIonisation, particle);
218 else if( pname ==
"GenericIon" )
220 ph->RegisterProcess(
new G4hMultipleScattering, particle);
221 ph->RegisterProcess(
new G4ionIonisation, particle);
226 else if ((!particle->IsShortLived()) &&
227 (particle->GetPDGCharge() != 0.0) &&
228 (particle->GetParticleName() !=
"chargedgeantino"))
230 ph->RegisterProcess(
new G4hMultipleScattering, particle);
231 ph->RegisterProcess(
new G4hIonisation, particle);
236 if ((!particle->IsShortLived()) && (particle->GetPDGCharge() != 0.0) && (pname !=
"chargedgeantino"))
238 if(VERB > 2) cout << hd_msg <<
" Adding Step Limiter for " << pname << endl;
239 pmanager->AddProcess(
new G4StepLimiter, -1,-1,3);
virtual void ConstructProcess()
virtual void ConstructParticle()
map< string, opts > args
Options map.