Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/cross_sections/include/G4ComponentGGHadronNucleusXsc.hh

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/hadronic/cross_sections/include/G4ComponentGGHadronNucleusXsc.hh (Version 11.3.0) and /processes/hadronic/cross_sections/include/G4ComponentGGHadronNucleusXsc.hh (Version 9.1)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // Calculation of the total, elastic and inela    
 27 // based on parametrisations of (proton, pion,    
 28 // cross-sections and the hadron-nucleous cros    
 29 // the framework of Glauber-Gribov approach       
 30 //                                                
 31 // 25.04.12 V. Grichine - first implementation    
 32 //                        G4GlauberGribovCross    
 33 //                                                
 34 // 04.09.18 V. Ivantchenko Major revision of i    
 35 // 01.10.18 V. Grichine strange hyperon xsc       
 36 // 27.05.19 V. Ivantchenko Removed obsolete me    
 37                                                   
 38 #ifndef G4ComponentGGHadronNucleusXsc_h           
 39 #define G4ComponentGGHadronNucleusXsc_h 1         
 40                                                   
 41 #include "globals.hh"                             
 42 #include "G4Proton.hh"                            
 43 #include "G4Nucleus.hh"                           
 44                                                   
 45 #include "G4VComponentCrossSection.hh"            
 46                                                   
 47 class G4ParticleDefinition;                       
 48 class G4HadronNucleonXsc;                         
 49 class G4Pow;                                      
 50                                                   
 51 class G4ComponentGGHadronNucleusXsc final : pu    
 52 {                                                 
 53 public:                                           
 54                                                   
 55   explicit G4ComponentGGHadronNucleusXsc();       
 56   ~G4ComponentGGHadronNucleusXsc() final;         
 57                                                   
 58   static const char* Default_Name() { return "    
 59                                                   
 60   // virtual interface methods                    
 61   G4double GetTotalElementCrossSection(const G    
 62                G4double kinEnergy,                
 63                G4int Z, G4double A) final;        
 64                                                   
 65   G4double GetTotalIsotopeCrossSection(const G    
 66                G4double kinEnergy,                
 67                G4int Z, G4int A) final;           
 68                                                   
 69   G4double GetInelasticElementCrossSection(con    
 70              G4double kinEnergy,                  
 71              G4int Z, G4double A) final;          
 72                                                   
 73   G4double GetInelasticIsotopeCrossSection(con    
 74              G4double kinEnergy,                  
 75              G4int Z, G4int A) final;             
 76                                                   
 77   G4double GetElasticElementCrossSection(const    
 78            G4double kinEnergy,                    
 79            G4int Z, G4double A) final;            
 80                                                   
 81   G4double GetElasticIsotopeCrossSection(const    
 82            G4double kinEnergy,                    
 83            G4int Z, G4int A) final;               
 84                                                   
 85   G4double ComputeQuasiElasticRatio(const G4Pa    
 86             G4double kinEnergy,                   
 87             G4int Z, G4int A) final;              
 88                                                   
 89   // Glauber-Gribov cross section                 
 90   void ComputeCrossSections(const G4ParticleDe    
 91           G4double kinEnergy, G4int Z, G4int A    
 92                                                   
 93   // additional public methods                    
 94   G4double GetProductionElementCrossSection(co    
 95               G4double kinEnergy,                 
 96               G4int Z, G4double A);               
 97                                                   
 98   G4double GetProductionIsotopeCrossSection(co    
 99               G4double kinEnergy,                 
100               G4int Z, G4int A);                  
101                                                   
102   G4double GetRatioSD(const G4DynamicParticle*    
103   G4double GetRatioQE(const G4DynamicParticle*    
104                                                   
105   G4double GetHadronNucleonXsc(const G4Dynamic    
106   G4double GetHadronNucleonXsc(const G4Dynamic    
107                                                   
108   G4double GetHadronNucleonXscPDG(const G4Dyna    
109   G4double GetHadronNucleonXscPDG(const G4Dyna    
110   G4double GetHadronNucleonXscNS(const G4Dynam    
111   G4double GetHadronNucleonXscNS(const G4Dynam    
112                                                   
113   G4double GetHNinelasticXsc(const G4DynamicPa    
114   G4double GetHNinelasticXsc(const G4DynamicPa    
115   G4double GetHNinelasticXscVU(const G4Dynamic    
116                                                   
117   void Description(std::ostream&) const final;    
118                                                   
119   inline G4double GetIsoCrossSection(const G4D    
120                    const G4Isotope* iso = null    
121                    const G4Element* elm = null    
122                    const G4Material* mat = nul    
123                                                   
124   inline G4double GetElasticGlauberGribov(cons    
125   inline G4double GetInelasticGlauberGribov(co    
126                                                   
127   inline G4double GetAxsc2piR2() const            
128   inline G4double GetModelInLog() const           
129   inline G4double GetTotalGlauberGribovXsc() c    
130   inline G4double GetElasticGlauberGribovXsc()    
131   inline G4double GetInelasticGlauberGribovXsc    
132   inline G4double GetProductionGlauberGribovXs    
133   inline G4double GetDiffractionGlauberGribovX    
134                                                   
135   inline G4double GetParticleBarCorTot(const G    
136   inline G4double GetParticleBarCorIn(const G4    
137                                                   
138 private:                                          
139                                                   
140   static const G4double fNeutronBarCorrectionT    
141   static const G4double fNeutronBarCorrectionI    
142                                                   
143   static const G4double fProtonBarCorrectionTo    
144   static const G4double fProtonBarCorrectionIn    
145                                                   
146   static const G4double fPionPlusBarCorrection    
147   static const G4double fPionPlusBarCorrection    
148                                                   
149   static const G4double fPionMinusBarCorrectio    
150   static const G4double fPionMinusBarCorrectio    
151                                                   
152   G4double fTotalXsc, fElasticXsc, fInelasticX    
153   G4double fAxsc2piR2, fModelInLog;               
154   G4double fEnergy; //Cache                       
155                                                   
156   const G4ParticleDefinition* theGamma;           
157   const G4ParticleDefinition* theProton;          
158   const G4ParticleDefinition* theNeutron;         
159   const G4ParticleDefinition* theAProton;         
160   const G4ParticleDefinition* theANeutron;        
161   const G4ParticleDefinition* thePiPlus;          
162   const G4ParticleDefinition* thePiMinus;         
163   const G4ParticleDefinition* theKPlus;           
164   const G4ParticleDefinition* theKMinus;          
165   const G4ParticleDefinition* theK0S;             
166   const G4ParticleDefinition* theK0L;             
167   const G4ParticleDefinition* theLambda;          
168                                                   
169   G4HadronNucleonXsc* hnXsc;                      
170                                                   
171   // Cache                                        
172   const G4ParticleDefinition* fParticle;          
173   G4int fZ, fA, fL;                               
174                                                   
175 };                                                
176                                                   
177 //////////////////////////////////////////////    
178 //                                                
179 // Inlines                                        
180                                                   
181 inline G4double                                   
182 G4ComponentGGHadronNucleusXsc::GetIsoCrossSect    
183               G4int Z, G4int A,                   
184               const G4Isotope*,                   
185               const G4Element*,                   
186               const G4Material*)                  
187 {                                                 
188   ComputeCrossSections(dp->GetDefinition(), dp    
189   return fTotalXsc;                               
190 }                                                 
191                                                   
192 inline G4double                                   
193 G4ComponentGGHadronNucleusXsc::GetElasticGlaub    
194            const G4DynamicParticle* dp, G4int     
195 {                                                 
196   ComputeCrossSections(dp->GetDefinition(), dp    
197   return fElasticXsc;                             
198 }                                                 
199                                                   
200 //////////////////////////////////////////////    
201                                                   
202 inline G4double                                   
203 G4ComponentGGHadronNucleusXsc::GetInelasticGla    
204            const G4DynamicParticle* dp, G4int     
205 {                                                 
206   ComputeCrossSections(dp->GetDefinition(), dp    
207   return fInelasticXsc;                           
208 }                                                 
209                                                   
210 //////////////////////////////////////////////    
211 //                                                
212 // return correction at Tkin = 90*GeV GG -> Ba    
213 // is available, else return 1.0                  
214                                                   
215 inline G4double G4ComponentGGHadronNucleusXsc:    
216                            const G4ParticleDef    
217 {                                                 
218   G4double cor = 1.0;                             
219   G4int z = std::min(92, std::max(ZZ, 1));        
220   if(      theParticle == theProton ) cor = fP    
221   else if( theParticle == theNeutron) cor = fN    
222   else if( theParticle == thePiPlus ) cor = fP    
223   else if( theParticle == thePiMinus) cor = fP    
224   return cor;                                     
225 }                                                 
226                                                   
227 //////////////////////////////////////////////    
228 //                                                
229 // return correction at Tkin = 90*GeV GG -> Ba    
230 // is available, else return 1.0                  
231                                                   
232                                                   
233 inline G4double G4ComponentGGHadronNucleusXsc:    
234                            const G4ParticleDef    
235 {                                                 
236   G4double cor = 1.0;                             
237   G4int z = std::min(92, std::max(ZZ, 1));        
238   if(      theParticle == theProton ) cor = fP    
239   else if( theParticle == theNeutron) cor = fN    
240   else if( theParticle == thePiPlus ) cor = fP    
241   else if( theParticle == thePiMinus) cor = fP    
242   return cor;                                     
243 }                                                 
244                                                   
245 #endif                                            
246