Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.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 /processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc (Version 11.3.0) and /processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc (Version 5.2)


  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 // GEANT4 Class file                              
 30 //                                                
 31 //                                                
 32 // File name:     G4eeToHadronsMultiModel         
 33 //                                                
 34 // Author:        Vladimir Ivanchenko             
 35 //                                                
 36 // Creation date: 02.08.2004                      
 37 //                                                
 38 // Modifications:                                 
 39 // 08-11-04 Migration to new interface of Stor    
 40 // 08-04-05 Major optimisation of internal int    
 41 //                                                
 42                                                   
 43 //                                                
 44 // -------------------------------------------    
 45 //                                                
 46 //....oooOO0OOooo........oooOO0OOooo........oo    
 47 //....oooOO0OOooo........oooOO0OOooo........oo    
 48                                                   
 49 #include "G4eeToHadronsMultiModel.hh"             
 50 #include "G4PhysicalConstants.hh"                 
 51 #include "G4SystemOfUnits.hh"                     
 52 #include "G4eeToTwoPiModel.hh"                    
 53 #include "G4eeTo3PiModel.hh"                      
 54 #include "G4eeToPGammaModel.hh"                   
 55 #include "G4ee2KNeutralModel.hh"                  
 56 #include "G4ee2KChargedModel.hh"                  
 57 #include "G4eeCrossSections.hh"                   
 58 #include "G4Vee2hadrons.hh"                       
 59 #include "G4Positron.hh"                          
 60                                                   
 61 //....oooOO0OOooo........oooOO0OOooo........oo    
 62                                                   
 63 using namespace std;                              
 64                                                   
 65 G4eeToHadronsMultiModel::G4eeToHadronsMultiMod    
 66   const G4String& mname) : G4VEmModel(mname),     
 67 {                                                 
 68   maxKineticEnergy = 4.521*CLHEP::GeV;  //crre    
 69   delta = 1.0*CLHEP::MeV;  //for bin width        
 70 }                                                 
 71                                                   
 72 //....oooOO0OOooo........oooOO0OOooo........oo    
 73                                                   
 74 G4eeToHadronsMultiModel::~G4eeToHadronsMultiMo    
 75 {                                                 
 76   delete cross;                                   
 77 }                                                 
 78                                                   
 79 //....oooOO0OOooo........oooOO0OOooo........oo    
 80                                                   
 81 void G4eeToHadronsMultiModel::Initialise(const    
 82            const G4DataVector& cuts)              
 83 {                                                 
 84   if(!isInitialised) {                            
 85     isInitialised = true;                         
 86                                                   
 87     //G4cout<<"###Initialise in HadronMultiMod    
 88                                                   
 89     cross = new G4eeCrossSections();              
 90                                                   
 91     G4eeToTwoPiModel* m2pi =                      
 92       new G4eeToTwoPiModel(cross,maxKineticEne    
 93     AddEEModel(m2pi,cuts);                        
 94                                                   
 95     G4eeTo3PiModel* m3pi =                        
 96       new G4eeTo3PiModel(cross,maxKineticEnerg    
 97     AddEEModel(m3pi,cuts);                        
 98                                                   
 99     G4ee2KChargedModel* m2kc =                    
100       new G4ee2KChargedModel(cross,maxKineticE    
101     AddEEModel(m2kc,cuts);                        
102                                                   
103     G4ee2KNeutralModel* m2kn =                    
104       new G4ee2KNeutralModel(cross,maxKineticE    
105     AddEEModel(m2kn,cuts);                        
106                                                   
107     G4eeToPGammaModel* mpg1 =                     
108       new G4eeToPGammaModel(cross,"pi0",maxKin    
109     AddEEModel(mpg1,cuts);                        
110                                                   
111     G4eeToPGammaModel* mpg2 =                     
112       new G4eeToPGammaModel(cross,"eta",maxKin    
113     AddEEModel(mpg2,cuts);                        
114                                                   
115     nModels = (G4int)models.size();               
116                                                   
117     fParticleChange = GetParticleChangeForGamm    
118   }                                               
119 }                                                 
120                                                   
121 //....oooOO0OOooo........oooOO0OOooo........oo    
122                                                   
123 void G4eeToHadronsMultiModel::AddEEModel(G4Vee    
124            const G4DataVector& cuts)              
125 {                                                 
126   G4eeToHadronsModel* model = new G4eeToHadron    
127   models.push_back(model);                        
128   G4double elow = mod->LowEnergy();               
129   ekinMin.push_back(elow);                        
130   if(thKineticEnergy > elow) { thKineticEnergy    
131   ekinMax.push_back(mod->HighEnergy());           
132   ekinPeak.push_back(mod->PeakEnergy());          
133   cumSum.push_back(0.0);                          
134                                                   
135   const G4ParticleDefinition* positron = G4Pos    
136   model->Initialise(positron,cuts);               
137 }                                                 
138                                                   
139 //....oooOO0OOooo........oooOO0OOooo........oo    
140                                                   
141 G4double G4eeToHadronsMultiModel::CrossSection    
142               const G4Material* mat,              
143               const G4ParticleDefinition* p,      
144               G4double kineticEnergy,             
145               G4double, G4double)                 
146 {                                                 
147   return mat->GetElectronDensity()*               
148     ComputeCrossSectionPerElectron(p, kineticE    
149 }                                                 
150                                                   
151 //....oooOO0OOooo........oooOO0OOooo........oo    
152                                                   
153 G4double G4eeToHadronsMultiModel::ComputeCross    
154                                       const G4    
155               G4double kineticEnergy,             
156               G4double Z, G4double,               
157               G4double, G4double)                 
158 {                                                 
159   return Z*ComputeCrossSectionPerElectron(p, k    
160 }                                                 
161                                                   
162 //....oooOO0OOooo........oooOO0OOooo........oo    
163                                                   
164 G4double G4eeToHadronsMultiModel::ComputeCross    
165                  G4double kineticEnergy,          
166                  G4double, G4double)              
167 {                                                 
168   G4double res = 0.0;                             
169                                                   
170   G4double energy = LabToCM(kineticEnergy);       
171                                                   
172   if (energy > thKineticEnergy) {                 
173     for(G4int i=0; i<nModels; i++) {              
174       if(energy >= ekinMin[i] && energy <= eki    
175         res += (models[i])->ComputeCrossSectio    
176       }                                           
177       cumSum[i] = res;                            
178     }                                             
179   }                                               
180   return res*csFactor;                            
181 }                                                 
182                                                   
183 //....oooOO0OOooo........oooOO0OOooo........oo    
184                                                   
185 void G4eeToHadronsMultiModel::SampleSecondarie    
186            std::vector<G4DynamicParticle*>* ne    
187      const G4MaterialCutsCouple* couple,          
188      const G4DynamicParticle* dp,                 
189      G4double, G4double)                          
190 {                                                 
191   G4double kinEnergy = dp->GetKineticEnergy();    
192   G4double energy = LabToCM(kinEnergy);           
193   if (energy > thKineticEnergy) {                 
194     G4double q = cumSum[nModels-1]*G4UniformRa    
195     for(G4int i=0; i<nModels; ++i) {              
196       if(q <= cumSum[i]) {                        
197         (models[i])->SampleSecondaries(newp, c    
198   if(newp->size() > 0) {                          
199     fParticleChange->ProposeTrackStatus(fStopA    
200   }                                               
201   break;                                          
202       }                                           
203     }                                             
204   }                                               
205 }                                                 
206                                                   
207 //....oooOO0OOooo........oooOO0OOooo........oo    
208                                                   
209 void G4eeToHadronsMultiModel::ModelDescription    
210 {                                                 
211   if(verbose > 0) {                               
212     G4double e1 = 0.5*thKineticEnergy*thKineti    
213       - 2.0*electron_mass_c2;                     
214     G4double e2 = 0.5*maxKineticEnergy*maxKine    
215       - 2.0*electron_mass_c2;                     
216     outFile << "      e+ annihilation into had    
217       << e1/GeV << " GeV to " << e2/GeV << " G    
218   }                                               
219 }                                                 
220                                                   
221 //....oooOO0OOooo........oooOO0OOooo........oo    
222                                                   
223 void G4eeToHadronsMultiModel::SetCrossSecFacto    
224 {                                                 
225   if(fac > 1.0) {                                 
226     csFactor = fac;                               
227     if(verbose > 0) {                             
228       G4cout << "### G4eeToHadronsMultiModel:     
229        << "G4eeToHadronsMultiModel is increase    
230        << csFactor << " times" << G4endl;         
231     }                                             
232   }                                               
233 }                                                 
234                                                   
235 //....oooOO0OOooo........oooOO0OOooo........oo    
236