Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/biasing/B03/src/B03PhysicsList.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/extended/biasing/B03/src/B03PhysicsList.cc (Version 11.3.0) and /examples/extended/biasing/B03/src/B03PhysicsList.cc (Version 3.1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 /// \file biasing/B03/src/B03PhysicsList.cc       
 27 /// \brief Implementation of the B03PhysicsLis    
 28 //                                                
 29 //                                                
 30 //                                                
 31                                                   
 32 #include "B03PhysicsList.hh"                      
 33                                                   
 34 #include "G4BaryonConstructor.hh"                 
 35 #include "G4BosonConstructor.hh"                  
 36 #include "G4HadronicParameters.hh"                
 37 #include "G4IonConstructor.hh"                    
 38 #include "G4LeptonConstructor.hh"                 
 39 #include "G4Material.hh"                          
 40 #include "G4MaterialTable.hh"                     
 41 #include "G4MesonConstructor.hh"                  
 42 #include "G4ParticleDefinition.hh"                
 43 #include "G4ParticleTable.hh"                     
 44 #include "G4ParticleTypes.hh"                     
 45 #include "G4ParticleWithCuts.hh"                  
 46 #include "G4ProcessManager.hh"                    
 47 #include "G4ProcessVector.hh"                     
 48 #include "G4ShortLivedConstructor.hh"             
 49 #include "G4SystemOfUnits.hh"                     
 50 #include "globals.hh"                             
 51                                                   
 52 #include <iomanip>                                
 53                                                   
 54 //....oooOO0OOooo........oooOO0OOooo........oo    
 55                                                   
 56 B03PhysicsList::B03PhysicsList(G4String parall    
 57   : G4VUserPhysicsList(), fBiasWorldName(paral    
 58 {                                                 
 59   fParaWorldName.clear();                         
 60   SetVerboseLevel(1);                             
 61 }                                                 
 62                                                   
 63 //....oooOO0OOooo........oooOO0OOooo........oo    
 64                                                   
 65 B03PhysicsList::~B03PhysicsList()                 
 66 {                                                 
 67   fParaWorldName.clear();                         
 68 }                                                 
 69                                                   
 70 //....oooOO0OOooo........oooOO0OOooo........oo    
 71                                                   
 72 void B03PhysicsList::ConstructParticle()          
 73 {                                                 
 74   // In this method, static member functions s    
 75   // for all particles which you want to use.     
 76   // This ensures that objects of these partic    
 77   // created in the program.                      
 78                                                   
 79   ConstructAllBosons();                           
 80   ConstructAllLeptons();                          
 81   ConstructAllMesons();                           
 82   ConstructAllBaryons();                          
 83   ConstructAllIons();                             
 84   ConstructAllShortLiveds();                      
 85 }                                                 
 86                                                   
 87 //....oooOO0OOooo........oooOO0OOooo........oo    
 88                                                   
 89 void B03PhysicsList::ConstructAllBosons()         
 90 {                                                 
 91   // Construct all bosons                         
 92   G4BosonConstructor pConstructor;                
 93   pConstructor.ConstructParticle();               
 94 }                                                 
 95                                                   
 96 //....oooOO0OOooo........oooOO0OOooo........oo    
 97                                                   
 98 void B03PhysicsList::ConstructAllLeptons()        
 99 {                                                 
100   // Construct all leptons                        
101   G4LeptonConstructor pConstructor;               
102   pConstructor.ConstructParticle();               
103 }                                                 
104                                                   
105 //....oooOO0OOooo........oooOO0OOooo........oo    
106                                                   
107 void B03PhysicsList::ConstructAllMesons()         
108 {                                                 
109   //  Construct all mesons                        
110   G4MesonConstructor pConstructor;                
111   pConstructor.ConstructParticle();               
112 }                                                 
113                                                   
114 //....oooOO0OOooo........oooOO0OOooo........oo    
115                                                   
116 void B03PhysicsList::ConstructAllBaryons()        
117 {                                                 
118   //  Construct all barions                       
119   G4BaryonConstructor pConstructor;               
120   pConstructor.ConstructParticle();               
121 }                                                 
122                                                   
123 //....oooOO0OOooo........oooOO0OOooo........oo    
124                                                   
125 void B03PhysicsList::ConstructAllIons()           
126 {                                                 
127   //  Construct light ions                        
128   G4IonConstructor pConstructor;                  
129   pConstructor.ConstructParticle();               
130 }                                                 
131                                                   
132 //....oooOO0OOooo........oooOO0OOooo........oo    
133                                                   
134 void B03PhysicsList::ConstructAllShortLiveds()    
135 {                                                 
136   //  Construct  resonaces and quarks             
137   G4ShortLivedConstructor pConstructor;           
138   pConstructor.ConstructParticle();               
139 }                                                 
140                                                   
141 //....oooOO0OOooo........oooOO0OOooo........oo    
142                                                   
143 void B03PhysicsList::ConstructProcess()           
144 {                                                 
145   AddTransportation();                            
146   AddScoringProcess();                            
147   AddBiasingProcess();                            
148   ConstructEM();                                  
149   ConstructLeptHad();                             
150   ConstructHad();                                 
151   ConstructGeneral();                             
152 }                                                 
153                                                   
154 //....oooOO0OOooo........oooOO0OOooo........oo    
155                                                   
156 #include "G4ComptonScattering.hh"                 
157 #include "G4GammaConversion.hh"                   
158 #include "G4MuBremsstrahlung.hh"                  
159 #include "G4MuIonisation.hh"                      
160 #include "G4MuMultipleScattering.hh"              
161 #include "G4MuPairProduction.hh"                  
162 #include "G4PhotoElectricEffect.hh"               
163 #include "G4eBremsstrahlung.hh"                   
164 #include "G4eIonisation.hh"                       
165 #include "G4eMultipleScattering.hh"               
166 #include "G4eplusAnnihilation.hh"                 
167 #include "G4hIonisation.hh"                       
168 #include "G4hMultipleScattering.hh"               
169                                                   
170 void B03PhysicsList::ConstructEM()                
171 {                                                 
172   auto particleIterator = GetParticleIterator(    
173   particleIterator->reset();                      
174   while ((*particleIterator)()) {                 
175     G4ParticleDefinition* particle = particleI    
176     G4ProcessManager* pmanager = particle->Get    
177     G4String particleName = particle->GetParti    
178                                                   
179     if (particleName == "gamma") {                
180       // gamma                                    
181       // Construct processes for gamma            
182       pmanager->AddDiscreteProcess(new G4Gamma    
183       pmanager->AddDiscreteProcess(new G4Compt    
184       pmanager->AddDiscreteProcess(new G4Photo    
185     }                                             
186     else if (particleName == "e-") {              
187       // electron                                 
188       //  Construct processes for electron        
189       pmanager->AddProcess(new G4eMultipleScat    
190       pmanager->AddProcess(new G4eIonisation()    
191       pmanager->AddProcess(new G4eBremsstrahlu    
192     }                                             
193     else if (particleName == "e+") {              
194       // positron                                 
195       //  Construct processes for positron        
196       pmanager->AddProcess(new G4eMultipleScat    
197                                                   
198       pmanager->AddProcess(new G4eIonisation()    
199       pmanager->AddProcess(new G4eBremsstrahlu    
200       pmanager->AddProcess(new G4eplusAnnihila    
201     }                                             
202     else if (particleName == "mu+" || particle    
203       // muon                                     
204       //  Construct processes for muon+           
205       pmanager->AddProcess(new G4MuMultipleSca    
206       pmanager->AddProcess(new G4MuIonisation(    
207       pmanager->AddProcess(new G4MuBremsstrahl    
208       pmanager->AddProcess(new G4MuPairProduct    
209     }                                             
210     else if (particleName == "GenericIon") {      
211       pmanager->AddProcess(new G4hMultipleScat    
212       pmanager->AddProcess(new G4hIonisation()    
213     }                                             
214     else {                                        
215       if ((particle->GetPDGCharge() != 0.0) &&    
216           && (!particle->IsShortLived()))         
217       {                                           
218         // all others charged particles except    
219         pmanager->AddProcess(new G4hMultipleSc    
220         pmanager->AddProcess(new G4hIonisation    
221       }                                           
222     }                                             
223   }                                               
224 }                                                 
225                                                   
226 //....oooOO0OOooo........oooOO0OOooo........oo    
227                                                   
228 // Hadron Processes                               
229                                                   
230 #include "G4HadronElasticProcess.hh"              
231 #include "G4HadronInelasticProcess.hh"            
232 #include "G4NeutronCaptureProcess.hh"             
233 #include "G4NeutronFissionProcess.hh"             
234                                                   
235 // Low-energy Models                              
236                                                   
237 #include "G4HadronElastic.hh"                     
238 #include "G4LFission.hh"                          
239 #include "G4NeutronRadCapture.hh"                 
240                                                   
241 // -- generator models                            
242 #include "G4BinaryLightIonReaction.hh"            
243 #include "G4CascadeInterface.hh"                  
244 #include "G4CompetitiveFission.hh"                
245 #include "G4ExcitationHandler.hh"                 
246 #include "G4ExcitedStringDecay.hh"                
247 #include "G4FTFModel.hh"                          
248 #include "G4Fancy3DNucleus.hh"                    
249 #include "G4GeneratorPrecompoundInterface.hh"     
250 #include "G4LundStringFragmentation.hh"           
251 #include "G4PreCompoundModel.hh"                  
252 #include "G4QGSMFragmentation.hh"                 
253 #include "G4QMDReaction.hh"                       
254 #include "G4StringModel.hh"                       
255 #include "G4TheoFSGenerator.hh"                   
256                                                   
257 // Cross sections                                 
258 #include "G4ComponentGGHadronNucleusXsc.hh"       
259 #include "G4ComponentGGNuclNuclXsc.hh"            
260 #include "G4CrossSectionElastic.hh"               
261 #include "G4CrossSectionInelastic.hh"             
262 #include "G4NeutronInelasticXS.hh"                
263                                                   
264 //                                                
265 // ConstructHad()                                 
266 //                                                
267 // Makes discrete physics processes for the ha    
268 // The processes are: Elastic scattering, Inel    
269 // Fission (for neutron only), and Capture (ne    
270 //                                                
271                                                   
272 void B03PhysicsList::ConstructHad()               
273 {                                                 
274   // this will be the model class for high ene    
275   G4TheoFSGenerator* theTheoModel = new G4Theo    
276   G4TheoFSGenerator* antiBHighEnergyModel = ne    
277                                                   
278   // Evaporation logic                            
279   G4ExcitationHandler* theHandler = new G4Exci    
280   theHandler->SetMinEForMultiFrag(3 * MeV);       
281                                                   
282   // Pre equilibrium stage                        
283   G4PreCompoundModel* thePreEquilib = new G4Pr    
284                                                   
285   // a no-cascade generator-precompound intera    
286   G4GeneratorPrecompoundInterface* theCascade     
287   theCascade->SetDeExcitation(thePreEquilib);     
288                                                   
289   // Bertini cascade                              
290   G4CascadeInterface* bertini = new G4CascadeI    
291   bertini->SetMaxEnergy(22 * MeV);                
292                                                   
293   // here come the high energy parts              
294   G4VPartonStringModel* theStringModel;           
295   theStringModel = new G4FTFModel;                
296   theTheoModel->SetTransport(theCascade);         
297   theTheoModel->SetHighEnergyGenerator(theStri    
298   theTheoModel->SetMinEnergy(19 * GeV);           
299   theTheoModel->SetMaxEnergy(G4HadronicParamet    
300                                                   
301   G4VLongitudinalStringDecay* theFragmentation    
302   G4ExcitedStringDecay* theStringDecay = new G    
303   theStringModel->SetFragmentationModel(theStr    
304                                                   
305   // high energy model for anti-baryons           
306   antiBHighEnergyModel = new G4TheoFSGenerator    
307   G4FTFModel* antiBStringModel = new G4FTFMode    
308   G4ExcitedStringDecay* stringDecay = new G4Ex    
309   antiBStringModel->SetFragmentationModel(stri    
310                                                   
311   G4GeneratorPrecompoundInterface* antiBCascad    
312   G4PreCompoundModel* preEquilib = new G4PreCo    
313   antiBCascade->SetDeExcitation(preEquilib);      
314                                                   
315   antiBHighEnergyModel->SetTransport(antiBCasc    
316   antiBHighEnergyModel->SetHighEnergyGenerator    
317   antiBHighEnergyModel->SetMinEnergy(0.0);        
318   antiBHighEnergyModel->SetMaxEnergy(20 * TeV)    
319                                                   
320   // Light ion models                             
321   G4BinaryLightIonReaction* binaryCascade = ne    
322   binaryCascade->SetMinEnergy(0.0);               
323   binaryCascade->SetMaxEnergy(110 * MeV);         
324                                                   
325   G4QMDReaction* qmd = new G4QMDReaction;         
326   qmd->SetMinEnergy(100 * MeV);                   
327   qmd->SetMaxEnergy(10 * GeV);                    
328                                                   
329   G4VCrossSectionDataSet* ionXS = new G4CrossS    
330                                                   
331   G4ComponentGGHadronNucleusXsc* ggHNXsec = ne    
332   G4VCrossSectionDataSet* theGGHNEl = new G4Cr    
333   G4VCrossSectionDataSet* theGGHNInel = new G4    
334                                                   
335   // Elastic process                              
336   G4HadronElasticProcess* theElasticProcess =     
337   theElasticProcess->AddDataSet(theGGHNEl);       
338   G4HadronElastic* theElasticModel = new G4Had    
339   theElasticProcess->RegisterMe(theElasticMode    
340                                                   
341   auto particleIterator = GetParticleIterator(    
342   particleIterator->reset();                      
343   while ((*particleIterator)()) {                 
344     G4ParticleDefinition* particle = particleI    
345     G4ProcessManager* pmanager = particle->Get    
346     G4String particleName = particle->GetParti    
347                                                   
348     if (particleName == "pi+") {                  
349       pmanager->AddDiscreteProcess(theElasticP    
350       G4HadronInelasticProcess* theInelasticPr    
351         new G4HadronInelasticProcess("inelasti    
352       theInelasticProcess->AddDataSet(theGGHNI    
353       theInelasticProcess->RegisterMe(bertini)    
354       theInelasticProcess->RegisterMe(theTheoM    
355       pmanager->AddDiscreteProcess(theInelasti    
356     }                                             
357     else if (particleName == "pi-") {             
358       pmanager->AddDiscreteProcess(theElasticP    
359       G4HadronInelasticProcess* theInelasticPr    
360         new G4HadronInelasticProcess("inelasti    
361       theInelasticProcess->AddDataSet(theGGHNI    
362       theInelasticProcess->RegisterMe(bertini)    
363       theInelasticProcess->RegisterMe(theTheoM    
364       pmanager->AddDiscreteProcess(theInelasti    
365     }                                             
366     else if (particleName == "kaon+") {           
367       pmanager->AddDiscreteProcess(theElasticP    
368       G4HadronInelasticProcess* theInelasticPr    
369         new G4HadronInelasticProcess("inelasti    
370       theInelasticProcess->AddDataSet(theGGHNI    
371       theInelasticProcess->RegisterMe(bertini)    
372       theInelasticProcess->RegisterMe(theTheoM    
373       pmanager->AddDiscreteProcess(theInelasti    
374     }                                             
375     else if (particleName == "kaon0S") {          
376       pmanager->AddDiscreteProcess(theElasticP    
377       G4HadronInelasticProcess* theInelasticPr    
378         new G4HadronInelasticProcess("inelasti    
379       theInelasticProcess->AddDataSet(theGGHNI    
380       theInelasticProcess->RegisterMe(bertini)    
381       theInelasticProcess->RegisterMe(theTheoM    
382       pmanager->AddDiscreteProcess(theInelasti    
383     }                                             
384     else if (particleName == "kaon0L") {          
385       pmanager->AddDiscreteProcess(theElasticP    
386       G4HadronInelasticProcess* theInelasticPr    
387         new G4HadronInelasticProcess("inelasti    
388       theInelasticProcess->AddDataSet(theGGHNI    
389       theInelasticProcess->RegisterMe(bertini)    
390       theInelasticProcess->RegisterMe(theTheoM    
391       pmanager->AddDiscreteProcess(theInelasti    
392     }                                             
393     else if (particleName == "kaon-") {           
394       pmanager->AddDiscreteProcess(theElasticP    
395       G4HadronInelasticProcess* theInelasticPr    
396         new G4HadronInelasticProcess("inelasti    
397       theInelasticProcess->AddDataSet(theGGHNI    
398       theInelasticProcess->RegisterMe(bertini)    
399       theInelasticProcess->RegisterMe(theTheoM    
400       pmanager->AddDiscreteProcess(theInelasti    
401     }                                             
402     else if (particleName == "proton") {          
403       pmanager->AddDiscreteProcess(theElasticP    
404       G4HadronInelasticProcess* theInelasticPr    
405         new G4HadronInelasticProcess("inelasti    
406       theInelasticProcess->AddDataSet(theGGHNI    
407       theInelasticProcess->RegisterMe(bertini)    
408       theInelasticProcess->RegisterMe(theTheoM    
409       pmanager->AddDiscreteProcess(theInelasti    
410     }                                             
411     else if (particleName == "anti_proton") {     
412       pmanager->AddDiscreteProcess(theElasticP    
413       G4HadronInelasticProcess* theInelasticPr    
414         new G4HadronInelasticProcess("inelasti    
415       theInelasticProcess->AddDataSet(theGGHNI    
416       theInelasticProcess->RegisterMe(antiBHig    
417       pmanager->AddDiscreteProcess(theInelasti    
418     }                                             
419     else if (particleName == "neutron") {         
420       // elastic scattering                       
421       pmanager->AddDiscreteProcess(theElasticP    
422                                                   
423       // inelastic scattering                     
424       G4HadronInelasticProcess* theInelasticPr    
425         new G4HadronInelasticProcess("inelasti    
426       theInelasticProcess->AddDataSet(new G4Ne    
427       theInelasticProcess->RegisterMe(bertini)    
428       theInelasticProcess->RegisterMe(theTheoM    
429       pmanager->AddDiscreteProcess(theInelasti    
430                                                   
431       // fission                                  
432       G4NeutronFissionProcess* theFissionProce    
433       G4LFission* theFissionModel = new G4LFis    
434       theFissionProcess->RegisterMe(theFission    
435       pmanager->AddDiscreteProcess(theFissionP    
436                                                   
437       // capture                                  
438       G4NeutronCaptureProcess* theCaptureProce    
439       G4NeutronRadCapture* theCaptureModel = n    
440       theCaptureProcess->RegisterMe(theCapture    
441       pmanager->AddDiscreteProcess(theCaptureP    
442     }                                             
443     else if (particleName == "anti_neutron") {    
444       pmanager->AddDiscreteProcess(theElasticP    
445       G4HadronInelasticProcess* theInelasticPr    
446         new G4HadronInelasticProcess("inelasti    
447       theInelasticProcess->AddDataSet(theGGHNI    
448       theInelasticProcess->RegisterMe(antiBHig    
449       pmanager->AddDiscreteProcess(theInelasti    
450     }                                             
451     else if (particleName == "lambda") {          
452       pmanager->AddDiscreteProcess(theElasticP    
453       G4HadronInelasticProcess* theInelasticPr    
454         new G4HadronInelasticProcess("inelasti    
455       theInelasticProcess->AddDataSet(theGGHNI    
456       theInelasticProcess->RegisterMe(bertini)    
457       theInelasticProcess->RegisterMe(theTheoM    
458       pmanager->AddDiscreteProcess(theInelasti    
459     }                                             
460     else if (particleName == "anti_lambda") {     
461       pmanager->AddDiscreteProcess(theElasticP    
462       G4HadronInelasticProcess* theInelasticPr    
463         new G4HadronInelasticProcess("inelasti    
464       theInelasticProcess->AddDataSet(theGGHNI    
465       theInelasticProcess->RegisterMe(antiBHig    
466       pmanager->AddDiscreteProcess(theInelasti    
467     }                                             
468     else if (particleName == "sigma+") {          
469       pmanager->AddDiscreteProcess(theElasticP    
470       G4HadronInelasticProcess* theInelasticPr    
471         new G4HadronInelasticProcess("inelasti    
472       theInelasticProcess->AddDataSet(theGGHNI    
473       theInelasticProcess->RegisterMe(bertini)    
474       theInelasticProcess->RegisterMe(theTheoM    
475       pmanager->AddDiscreteProcess(theInelasti    
476     }                                             
477     else if (particleName == "sigma-") {          
478       pmanager->AddDiscreteProcess(theElasticP    
479       G4HadronInelasticProcess* theInelasticPr    
480         new G4HadronInelasticProcess("inelasti    
481       theInelasticProcess->AddDataSet(theGGHNI    
482       theInelasticProcess->RegisterMe(bertini)    
483       theInelasticProcess->RegisterMe(theTheoM    
484       pmanager->AddDiscreteProcess(theInelasti    
485     }                                             
486     else if (particleName == "anti_sigma+") {     
487       pmanager->AddDiscreteProcess(theElasticP    
488       G4HadronInelasticProcess* theInelasticPr    
489         new G4HadronInelasticProcess("inelasti    
490       theInelasticProcess->AddDataSet(theGGHNI    
491       theInelasticProcess->RegisterMe(antiBHig    
492       pmanager->AddDiscreteProcess(theInelasti    
493     }                                             
494     else if (particleName == "anti_sigma-") {     
495       pmanager->AddDiscreteProcess(theElasticP    
496       G4HadronInelasticProcess* theInelasticPr    
497         new G4HadronInelasticProcess("inelasti    
498       theInelasticProcess->AddDataSet(theGGHNI    
499       theInelasticProcess->RegisterMe(antiBHig    
500       pmanager->AddDiscreteProcess(theInelasti    
501     }                                             
502     else if (particleName == "xi0") {             
503       pmanager->AddDiscreteProcess(theElasticP    
504       G4HadronInelasticProcess* theInelasticPr    
505         new G4HadronInelasticProcess("inelasti    
506       theInelasticProcess->AddDataSet(theGGHNI    
507       theInelasticProcess->RegisterMe(bertini)    
508       theInelasticProcess->RegisterMe(theTheoM    
509       pmanager->AddDiscreteProcess(theInelasti    
510     }                                             
511     else if (particleName == "xi-") {             
512       pmanager->AddDiscreteProcess(theElasticP    
513       G4HadronInelasticProcess* theInelasticPr    
514         new G4HadronInelasticProcess("inelasti    
515       theInelasticProcess->AddDataSet(theGGHNI    
516       theInelasticProcess->RegisterMe(bertini)    
517       theInelasticProcess->RegisterMe(theTheoM    
518       pmanager->AddDiscreteProcess(theInelasti    
519     }                                             
520     else if (particleName == "anti_xi0") {        
521       pmanager->AddDiscreteProcess(theElasticP    
522       G4HadronInelasticProcess* theInelasticPr    
523         new G4HadronInelasticProcess("inelasti    
524       theInelasticProcess->AddDataSet(theGGHNI    
525       theInelasticProcess->RegisterMe(antiBHig    
526       pmanager->AddDiscreteProcess(theInelasti    
527     }                                             
528     else if (particleName == "anti_xi-") {        
529       pmanager->AddDiscreteProcess(theElasticP    
530       G4HadronInelasticProcess* theInelasticPr    
531         new G4HadronInelasticProcess("inelasti    
532       theInelasticProcess->AddDataSet(theGGHNI    
533       theInelasticProcess->RegisterMe(antiBHig    
534       pmanager->AddDiscreteProcess(theInelasti    
535     }                                             
536     else if (particleName == "deuteron") {        
537       pmanager->AddDiscreteProcess(theElasticP    
538       G4HadronInelasticProcess* theInelasticPr    
539         new G4HadronInelasticProcess("inelasti    
540       theInelasticProcess->RegisterMe(binaryCa    
541       theInelasticProcess->RegisterMe(qmd);       
542       theInelasticProcess->AddDataSet(ionXS);     
543       pmanager->AddDiscreteProcess(theInelasti    
544     }                                             
545     else if (particleName == "triton") {          
546       pmanager->AddDiscreteProcess(theElasticP    
547       G4HadronInelasticProcess* theInelasticPr    
548         new G4HadronInelasticProcess("inelasti    
549       theInelasticProcess->RegisterMe(binaryCa    
550       theInelasticProcess->RegisterMe(qmd);       
551       theInelasticProcess->AddDataSet(ionXS);     
552       pmanager->AddDiscreteProcess(theInelasti    
553     }                                             
554     else if (particleName == "alpha") {           
555       pmanager->AddDiscreteProcess(theElasticP    
556       G4HadronInelasticProcess* theInelasticPr    
557         new G4HadronInelasticProcess("inelasti    
558       theInelasticProcess->RegisterMe(binaryCa    
559       theInelasticProcess->RegisterMe(qmd);       
560       theInelasticProcess->AddDataSet(ionXS);     
561       pmanager->AddDiscreteProcess(theInelasti    
562     }                                             
563     else if (particleName == "omega-") {          
564       pmanager->AddDiscreteProcess(theElasticP    
565       G4HadronInelasticProcess* theInelasticPr    
566         new G4HadronInelasticProcess("inelasti    
567       theInelasticProcess->AddDataSet(theGGHNI    
568       theInelasticProcess->RegisterMe(bertini)    
569       theInelasticProcess->RegisterMe(theTheoM    
570       pmanager->AddDiscreteProcess(theInelasti    
571     }                                             
572     else if (particleName == "anti_omega-") {     
573       pmanager->AddDiscreteProcess(theElasticP    
574       G4HadronInelasticProcess* theInelasticPr    
575         new G4HadronInelasticProcess("inelasti    
576       theInelasticProcess->AddDataSet(theGGHNI    
577       theInelasticProcess->RegisterMe(antiBHig    
578       pmanager->AddDiscreteProcess(theInelasti    
579     }                                             
580   }                                               
581 }                                                 
582                                                   
583 //....oooOO0OOooo........oooOO0OOooo........oo    
584                                                   
585 void B03PhysicsList::ConstructLeptHad()           
586 {                                                 
587   ;                                               
588 }                                                 
589                                                   
590 //....oooOO0OOooo........oooOO0OOooo........oo    
591                                                   
592 #include "G4Decay.hh"                             
593 void B03PhysicsList::ConstructGeneral()           
594 {                                                 
595   G4Decay* theDecayProcess = new G4Decay();       
596   auto particleIterator = GetParticleIterator(    
597   particleIterator->reset();                      
598   while ((*particleIterator)()) {                 
599     G4ParticleDefinition* particle = particleI    
600     G4ProcessManager* pmanager = particle->Get    
601     if (theDecayProcess->IsApplicable(*particl    
602       pmanager->AddProcess(theDecayProcess);      
603       pmanager->SetProcessOrdering(theDecayPro    
604       pmanager->SetProcessOrdering(theDecayPro    
605     }                                             
606   }                                               
607 }                                                 
608                                                   
609 //....oooOO0OOooo........oooOO0OOooo........oo    
610                                                   
611 void B03PhysicsList::SetCuts()                    
612 {                                                 
613   if (verboseLevel > 0) {                         
614     G4cout << "B03PhysicsList::SetCuts:";         
615     G4cout << "CutLength : " << defaultCutValu    
616   }                                               
617   //   "G4VUserPhysicsList::SetCutsWithDefault    
618   //   the default cut value for all particle     
619   SetCutsWithDefault();                           
620 }                                                 
621                                                   
622 //....oooOO0OOooo........oooOO0OOooo........oo    
623                                                   
624 #include "G4ParallelWorldProcess.hh"              
625 void B03PhysicsList::AddScoringProcess()          
626 {                                                 
627   G4int npw = fParaWorldName.size();              
628   for (G4int i = 0; i < npw; i++) {               
629     G4String procName = "ParaWorldProc_" + fPa    
630     G4ParallelWorldProcess* theParallelWorldPr    
631     theParallelWorldProcess->SetParallelWorld(    
632                                                   
633     auto particleIterator = GetParticleIterato    
634     particleIterator->reset();                    
635     while ((*particleIterator)()) {               
636       G4ParticleDefinition* particle = particl    
637       G4ProcessManager* pmanager = particle->G    
638       pmanager->AddProcess(theParallelWorldPro    
639       if (theParallelWorldProcess->IsAtRestReq    
640         pmanager->SetProcessOrdering(theParall    
641       }                                           
642       pmanager->SetProcessOrderingToSecond(the    
643       pmanager->SetProcessOrdering(theParallel    
644     }                                             
645   }                                               
646 }                                                 
647                                                   
648 //....oooOO0OOooo........oooOO0OOooo........oo    
649                                                   
650 #include "G4IStore.hh"                            
651 #include "G4ImportanceProcess.hh"                 
652 void B03PhysicsList::AddBiasingProcess()          
653 {                                                 
654   G4cout << " Preparing Importance Sampling wi    
655                                                   
656   G4IStore* iStore = G4IStore::GetInstance(fBi    
657   G4GeometrySampler fGeomSampler(fBiasWorldNam    
658   fGeomSampler.SetParallel(true);  // parallel    
659   // fGeomSampler.SetWorld(iStore->GetParallel    
660   //  fGeomSampler->PrepareImportanceSampling(    
661   //                              GetInstance(    
662   static G4bool first = true;                     
663   if (first) {                                    
664     fGeomSampler.PrepareImportanceSampling(iSt    
665                                                   
666     fGeomSampler.Configure();                     
667     G4cout << " GeomSampler Configured!!! " <<    
668     first = false;                                
669   }                                               
670                                                   
671 #ifdef G4MULTITHREADED                            
672   if (!G4Threading::IsMasterThread()) fGeomSam    
673 #else                                             
674   G4cout << " Running in singlethreaded mode!!    
675 #endif                                            
676 }                                                 
677                                                   
678 //....oooOO0OOooo........oooOO0OOooo........oo    
679