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 10.7.p2)


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