Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/xray_telescope/src/XrayTelPhysicsList.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/advanced/xray_telescope/src/XrayTelPhysicsList.cc (Version 11.3.0) and /examples/advanced/xray_telescope/src/XrayTelPhysicsList.cc (Version 4.0)


  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 //                                                
 27 // *******************************************    
 28 // *                                              
 29 // *                    GEANT 4 xray_telescope    
 30 // *                                              
 31 // * MODULE:            XrayTelPhysicsList.cc     
 32 // * -------                                      
 33 // *                                              
 34 // * Version:           0.4                       
 35 // * Date:              06/11/00                  
 36 // * Author:            R Nartallo                
 37 // * Organisation:      ESA/ESTEC, Noordwijk,     
 38 // *                                              
 39 // *******************************************    
 40 //                                                
 41 // CHANGE HISTORY                                 
 42 // --------------                                 
 43 //                                                
 44 // 06.11.2000 R.Nartallo                          
 45 // - First implementation of xray_telescope Ph    
 46 // - Based on Chandra and XMM models              
 47 //                                                
 48 //                                                
 49 // *******************************************    
 50                                                   
 51 #include "XrayTelPhysicsList.hh"                  
 52                                                   
 53 #include "globals.hh"                             
 54 #include "G4SystemOfUnits.hh"                     
 55 #include "G4ParticleDefinition.hh"                
 56 #include "G4ParticleWithCuts.hh"                  
 57 #include "G4ProcessManager.hh"                    
 58 #include "G4ProcessVector.hh"                     
 59 #include "G4ParticleTypes.hh"                     
 60 #include "G4ParticleTable.hh"                     
 61 #include "G4ShortLivedConstructor.hh"             
 62 #include "G4Material.hh"                          
 63 #include "G4MaterialTable.hh"                     
 64 #include "G4ios.hh"                               
 65 // Hadrons                                        
 66 #include "G4MesonConstructor.hh"                  
 67 #include "G4BaryonConstructor.hh"                 
 68 #include "G4IonConstructor.hh"                    
 69                                                   
 70 XrayTelPhysicsList::XrayTelPhysicsList():  G4V    
 71 {                                                 
 72   // Default cut values                           
 73   defaultCutValue = 2.0*mm;                       
 74   cutForGamma     = 1.0*m;                        
 75   cutForElectron  = 1.0*m;                        
 76                                                   
 77   SetVerboseLevel(1);                             
 78 }                                                 
 79                                                   
 80 XrayTelPhysicsList::~XrayTelPhysicsList()         
 81 {}                                                
 82                                                   
 83 void XrayTelPhysicsList::ConstructParticle()      
 84 {                                                 
 85   // Here are constructed all particles           
 86   ConstructBosons();                              
 87   ConstructLeptons();                             
 88   ConstructMesons();                              
 89   ConstructBaryons();                             
 90   ConstructIons();                                
 91   ConstructAllShortLiveds();                      
 92 }                                                 
 93                                                   
 94 // In this method, static member functions sho    
 95                                                   
 96 void XrayTelPhysicsList::ConstructBosons()        
 97 {                                                 
 98   // pseudo-particles                             
 99   G4Geantino::GeantinoDefinition();               
100   G4ChargedGeantino::ChargedGeantinoDefinition    
101                                                   
102   // gamma                                        
103   G4Gamma::GammaDefinition();                     
104                                                   
105   // optical photon                               
106   G4OpticalPhoton::OpticalPhotonDefinition();     
107 }                                                 
108 void XrayTelPhysicsList::ConstructLeptons()       
109 {                                                 
110   // leptons                                      
111   G4Electron::ElectronDefinition();               
112   G4Positron::PositronDefinition();               
113                                                   
114   G4NeutrinoE::NeutrinoEDefinition();             
115   G4AntiNeutrinoE::AntiNeutrinoEDefinition();     
116   G4NeutrinoMu::NeutrinoMuDefinition();           
117   G4AntiNeutrinoMu::AntiNeutrinoMuDefinition()    
118                                                   
119   G4MuonPlus::Definition();                       
120   G4MuonMinus::Definition();                      
121 }                                                 
122 void XrayTelPhysicsList::ConstructMesons()        
123 {                                                 
124   // mesons                                       
125   G4MesonConstructor mConstructor;                
126   mConstructor.ConstructParticle();               
127 }                                                 
128                                                   
129 void XrayTelPhysicsList::ConstructBaryons()       
130 {                                                 
131   //  barions                                     
132   G4BaryonConstructor bConstructor;               
133   bConstructor.ConstructParticle();               
134 }                                                 
135                                                   
136 void XrayTelPhysicsList::ConstructIons()          
137 {                                                 
138   // ions                                         
139   G4IonConstructor iConstructor;                  
140   iConstructor.ConstructParticle();               
141 }                                                 
142                                                   
143 void XrayTelPhysicsList::ConstructAllShortLive    
144 {                                                 
145   //Short-lived                                   
146   G4ShortLivedConstructor slConstructor;          
147   slConstructor.ConstructParticle();              
148 }                                                 
149                                                   
150                                                   
151 void XrayTelPhysicsList::ConstructProcess()       
152 {                                                 
153   // Transportation, electromagnetic and gener    
154   AddTransportation();                            
155   ConstructEM();                                  
156   ConstructGeneral();                             
157 }                                                 
158                                                   
159 // Here are respective header files for chosen    
160                                                   
161 #include "G4ComptonScattering.hh"                 
162 #include "G4GammaConversion.hh"                   
163 #include "G4PhotoElectricEffect.hh"               
164                                                   
165 #include "G4eMultipleScattering.hh"               
166 #include "G4hMultipleScattering.hh"               
167                                                   
168 #include "G4eIonisation.hh"                       
169 #include "G4eBremsstrahlung.hh"                   
170 #include "G4eplusAnnihilation.hh"                 
171                                                   
172 #include "G4MuIonisation.hh"                      
173 #include "G4MuBremsstrahlung.hh"                  
174 #include "G4MuPairProduction.hh"                  
175                                                   
176 #include "G4hIonisation.hh"                       
177 #include "G4hBremsstrahlung.hh"                   
178 #include "G4hPairProduction.hh"                   
179                                                   
180 #include "G4ionIonisation.hh"                     
181                                                   
182 void XrayTelPhysicsList::ConstructEM()            
183 {                                                 
184   auto particleIterator=GetParticleIterator();    
185   particleIterator->reset();                      
186                                                   
187   while( (*particleIterator)() )                  
188     {                                             
189       G4ParticleDefinition* particle = particl    
190       G4ProcessManager* pmanager = particle->G    
191       G4String particleName = particle->GetPar    
192                                                   
193       if (particleName == "gamma")                
194   {                                               
195     //gamma                                       
196     pmanager->AddDiscreteProcess(new G4PhotoEl    
197     pmanager->AddDiscreteProcess(new G4Compton    
198     pmanager->AddDiscreteProcess(new G4GammaCo    
199   }                                               
200       else if (particleName == "e-")              
201   {                                               
202     //electron                                    
203     pmanager->AddProcess(new G4eMultipleScatte    
204     pmanager->AddProcess(new G4eIonisation(),     
205     pmanager->AddProcess(new G4eBremsstrahlung    
206                                                   
207   } else if (particleName == "e+") {              
208                                                   
209     //positron                                    
210     pmanager->AddProcess(new G4eMultipleScatte    
211     pmanager->AddProcess(new G4eIonisation(),     
212     pmanager->AddProcess(new G4eBremsstrahlung    
213     pmanager->AddProcess(new G4eplusAnnihilati    
214                                                   
215   } else if( particleName == "mu-" ||             
216        particleName == "mu+" ) {                  
217                                                   
218     //muon                                        
219     pmanager->AddProcess(new G4hMultipleScatte    
220     pmanager->AddProcess(new G4MuIonisation,      
221     pmanager->AddProcess(new G4MuBremsstrahlun    
222     pmanager->AddProcess(new G4MuPairProductio    
223                                                   
224   } else if( particleName == "pi-" ||             
225        particleName == "pi+" ) {                  
226                                                   
227     //pions                                       
228     pmanager->AddProcess(new G4hMultipleScatte    
229     pmanager->AddProcess(new G4hIonisation,       
230     pmanager->AddProcess(new G4hBremsstrahlung    
231     pmanager->AddProcess(new G4hPairProduction    
232                                                   
233   } else if( particleName == "proton" ) {         
234                                                   
235     //proton                                      
236     pmanager->AddProcess(new G4hMultipleScatte    
237     pmanager->AddProcess(new G4hIonisation,       
238     pmanager->AddProcess(new G4hBremsstrahlung    
239     pmanager->AddProcess(new G4hPairProduction    
240                                                   
241   } else if( particleName == "alpha" ||           
242        particleName == "He3" ||                   
243        particleName == "GenericIon" ) {           
244                                                   
245     //Ions                                        
246     pmanager->AddProcess(new G4hMultipleScatte    
247     pmanager->AddProcess(new G4ionIonisation,     
248                                                   
249   } else if ((!particle->IsShortLived()) &&       
250          (particle->GetPDGCharge() != 0.0) &&     
251          (particle->GetParticleName() != "char    
252                                                   
253     //all others charged particles except gean    
254     pmanager->AddProcess(new G4hMultipleScatte    
255     pmanager->AddProcess(new G4hIonisation,       
256                                                   
257   }                                               
258     }                                             
259 }                                                 
260                                                   
261 #include "G4Decay.hh"                             
262                                                   
263 void XrayTelPhysicsList::ConstructGeneral()       
264 {                                                 
265   G4Decay* theDecayProcess = new G4Decay();       
266   auto particleIterator=GetParticleIterator();    
267   particleIterator->reset();                      
268   while( (*particleIterator)() ){                 
269     G4ParticleDefinition* particle = particleI    
270     G4ProcessManager* pmanager = particle->Get    
271     if (theDecayProcess->IsApplicable(*particl    
272       pmanager ->AddProcess(theDecayProcess);     
273       pmanager ->SetProcessOrdering(theDecayPr    
274       pmanager ->SetProcessOrdering(theDecayPr    
275     }                                             
276   }                                               
277 }                                                 
278                                                   
279 void XrayTelPhysicsList::SetCuts()                
280 {                                                 
281   // defaultCutValue you have typed in is used    
282                                                   
283   if (verboseLevel >1){                           
284     G4cout << "XrayTelPhysicsList::SetCuts:" <    
285   }                                               
286                                                   
287   // set cut values for gamma at first and for    
288   SetCutValue(cutForGamma, "gamma");              
289   SetCutValue(cutForElectron, "e-");              
290   SetCutValue(cutForElectron, "e+");              
291                                                   
292   // SetCutValueForOthers(defaultCutValue);       
293                                                   
294   if (verboseLevel >1) {                          
295     DumpCutValuesTable();                         
296   }                                               
297 }                                                 
298                                                   
299 void XrayTelPhysicsList::SetCutForGamma(G4doub    
300 {                                                 
301   cutForGamma = cut;                              
302 }                                                 
303                                                   
304 void XrayTelPhysicsList::SetCutForElectron(G4d    
305 {                                                 
306   cutForElectron = cut;                           
307 }                                                 
308                                                   
309 G4double XrayTelPhysicsList::GetCutForGamma()     
310 {                                                 
311   return cutForGamma;                             
312 }                                                 
313                                                   
314 G4double XrayTelPhysicsList::GetCutForElectron    
315 {                                                 
316   return cutForElectron;                          
317 }                                                 
318                                                   
319                                                   
320                                                   
321                                                   
322                                                   
323