13 #include "G4ParticleDefinition.hh"
14 #include "G4ParticleTypes.hh"
15 #include "G4ParticleWithCuts.hh"
16 #include "G4UserSpecialCuts.hh"
17 #include "G4ParticleTable.hh"
18 #include "G4Material.hh"
19 #include "G4MaterialTable.hh"
20 #include "G4ProcessManager.hh"
21 #include "G4ProcessVector.hh"
24 #include <utl/config.h>
25 #include "G4Version.hh"
28 #if (G4VERSION_NUMBER>900)
32 using namespace TelescopeSimulatorLX;
65 G4Geantino::GeantinoDefinition();
66 G4ChargedGeantino::ChargedGeantinoDefinition();
69 G4Gamma::GammaDefinition();
72 G4OpticalPhoton::OpticalPhotonDefinition();
80 G4Electron::ElectronDefinition();
81 G4Positron::PositronDefinition();
82 G4NeutrinoE::NeutrinoEDefinition();
83 G4AntiNeutrinoE::AntiNeutrinoEDefinition();
84 G4MuonPlus::MuonPlusDefinition();
85 G4MuonMinus::MuonMinusDefinition();
86 G4NeutrinoMu::NeutrinoMuDefinition();
87 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
95 G4PionPlus::PionPlusDefinition();
96 G4PionMinus::PionMinusDefinition();
97 G4PionZero::PionZeroDefinition();
105 G4Proton::ProtonDefinition();
106 G4AntiProton::AntiProtonDefinition();
107 G4Neutron::NeutronDefinition();
108 G4AntiNeutron::AntiNeutronDefinition();
124 #include "G4Decay.hh"
128 G4Decay* theDecayProcess =
new G4Decay();
129 theParticleIterator->reset();
130 while( (*theParticleIterator)() ){
131 G4ParticleDefinition*
particle = theParticleIterator->value();
132 G4ProcessManager* pmanager = particle->GetProcessManager();
133 if (theDecayProcess->IsApplicable(*particle)) {
134 pmanager->AddDiscreteProcess(theDecayProcess);
141 #include "G4ComptonScattering.hh"
142 #include "G4GammaConversion.hh"
143 #include "G4PhotoElectricEffect.hh"
145 #if (G4VERSION_NUMBER>=930)
146 #include "G4eMultipleScattering.hh"
147 #include "G4MuMultipleScattering.hh"
148 #include "G4hMultipleScattering.hh"
150 #include "G4MultipleScattering.hh"
153 #include "G4eIonisation.hh"
154 #include "G4eBremsstrahlung.hh"
155 #include "G4eplusAnnihilation.hh"
157 #include "G4MuIonisation.hh"
158 #include "G4MuBremsstrahlung.hh"
159 #include "G4MuPairProduction.hh"
161 #include "G4hIonisation.hh"
167 theParticleIterator->reset();
168 while( (*theParticleIterator)() ){
169 G4ParticleDefinition*
particle = theParticleIterator->value();
170 G4ProcessManager* pmanager = particle->GetProcessManager();
171 G4String particleName = particle->GetParticleName();
173 if (particleName ==
"gamma")
177 pmanager->AddDiscreteProcess(
new G4GammaConversion());
178 pmanager->AddDiscreteProcess(
new G4ComptonScattering());
179 pmanager->AddDiscreteProcess(
new G4PhotoElectricEffect());
181 }
else if (particleName ==
"e-") {
184 #if (G4VERSION_NUMBER>=930)
185 pmanager->AddProcess(
new G4eMultipleScattering(),-1,1,1) ;
187 pmanager->AddProcess(
new G4MultipleScattering(),-1,1,1) ;
189 pmanager->AddProcess(
new G4eIonisation(),-1,2,2) ;
190 pmanager->AddProcess(
new G4eBremsstrahlung(),-1,-1,3) ;
191 pmanager->AddProcess(
new G4UserSpecialCuts(),-1,-1,1) ;
192 }
else if (particleName ==
"e+") {
196 #if (G4VERSION_NUMBER>=930)
197 pmanager->AddProcess(
new G4eMultipleScattering(),-1,1,1);
199 pmanager->AddProcess(
new G4MultipleScattering(),-1,1,1);
201 pmanager->AddProcess(
new G4eIonisation(),-1,2,2);
202 pmanager->AddProcess(
new G4eBremsstrahlung(),-1,-1,3);
203 pmanager->AddProcess(
new G4eplusAnnihilation(),0,-1,4);
204 pmanager->AddProcess(
new G4UserSpecialCuts(),-1,-1,1) ;
206 }
else if( particleName ==
"mu+" ||
207 particleName ==
"mu-" ) {
210 #if (G4VERSION_NUMBER>=930)
211 pmanager->AddProcess(
new G4MuMultipleScattering(),-1,1,1);
213 pmanager->AddProcess(
new G4MultipleScattering(),-1,1,1);
215 pmanager->AddProcess(
new G4MuIonisation(),-1,2,2);
216 pmanager->AddProcess(
new G4MuBremsstrahlung(),-1,-1,3);
217 pmanager->AddProcess(
new G4MuPairProduction(),-1,-1,4);
220 if ((particle->GetPDGCharge() != 0.0) &&
221 (particle->GetParticleName() !=
"chargedgeantino")) {
223 #if (G4VERSION_NUMBER>=930)
224 pmanager->AddProcess(
new G4hMultipleScattering(),-1,1,1);
226 pmanager->AddProcess(
new G4MultipleScattering(),-1,1,1);
228 pmanager->AddProcess(
new G4hIonisation(),-1,2,2);
236 #include "G4Cerenkov.hh"
237 #include "G4OpAbsorption.hh"
238 #include "G4OpRayleigh.hh"
244 G4Cerenkov* theCerenkovProcess =
new G4Cerenkov(
"Cerenkov");
246 G4OpAbsorption* theAbsorptionProcess =
new G4OpAbsorption();
248 G4OpRayleigh* theRayleighScatteringProcess =
new G4OpRayleigh();
255 theCerenkovProcess->SetVerboseLevel(0);
256 theAbsorptionProcess->SetVerboseLevel(0);
257 theRayleighScatteringProcess->SetVerboseLevel(0);
258 theBoundaryProcess->SetVerboseLevel(0);
262 G4int MaxNumPhotons = 100000 ;
263 theCerenkovProcess->SetMaxNumPhotonsPerStep(MaxNumPhotons);
264 theCerenkovProcess->SetTrackSecondariesFirst(
true);
267 G4OpticalSurfaceModel themodel = unified;
268 theBoundaryProcess->
SetModel(themodel);
270 theParticleIterator->reset();
271 while( (*theParticleIterator)() ){
272 G4ParticleDefinition*
particle = theParticleIterator->value();
273 G4ProcessManager* pmanager = particle->GetProcessManager();
274 G4String particleName = particle->GetParticleName();
276 if (theCerenkovProcess->IsApplicable(*particle))
279 pmanager->AddProcess(theCerenkovProcess);
280 pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
282 pmanager->AddContinuousProcess(theCerenkovProcess);
288 if (particleName ==
"opticalphoton") {
289 G4cerr <<
" Adding DiscreteProcesses to OpticalPhoton " << G4endl;
290 pmanager->AddDiscreteProcess(theAbsorptionProcess);
292 pmanager->AddDiscreteProcess(theBoundaryProcess);
301 if (verboseLevel >1){
302 G4cerr <<
"FDsimG4PhysicsList::SetCuts:";
307 SetCutsWithDefault();
struct particle_info particle[80]
void SetModel(G4OpticalSurfaceModel model)