Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.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/models/parton_string/diffraction/include/G4FTFModel.hh (Version 11.3.0) and /processes/hadronic/models/parton_string/diffraction/include/G4FTFModel.hh (Version 3.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 // Class Description                              
 29 // Final state production code for hadron inel    
 30 // based on the modeling ansatz used in FRITIO    
 31 // To be used in your physics list in case you    
 32 // In this case you want to register an object    
 33 // of G4TheoFSGenerator.                          
 34 // Class Description - End                        
 35                                                   
 36 #ifndef G4FTFModel_h                              
 37 #define G4FTFModel_h 1                            
 38                                                   
 39 // -------------------------------------------    
 40 //      GEANT 4 class header file                 
 41 //                                                
 42 //      ---------------- G4FTFModel ----------    
 43 //             by Gunter Folger, May 1998.        
 44 //       class implementing the excitation in     
 45 // -------------------------------------------    
 46                                                   
 47 #include "G4VPartonStringModel.hh"                
 48 #include "G4FTFParameters.hh"                     
 49 #include "G4FTFParticipants.hh"                   
 50 #include "G4ExcitedStringVector.hh"               
 51 #include "G4DiffractiveExcitation.hh"             
 52 #include "G4ElasticHNScattering.hh"               
 53 #include "G4FTFAnnihilation.hh"                   
 54 #include "G4Proton.hh"                            
 55 #include "G4Neutron.hh"                           
 56                                                   
 57 class G4VSplitableHadron;                         
 58 class G4ExcitedString;                            
 59                                                   
 60                                                   
 61 class G4FTFModel : public G4VPartonStringModel    
 62   public:                                         
 63     G4FTFModel( const G4String& modelName = "F    
 64     ~G4FTFModel() override;                       
 65                                                   
 66     G4V3DNucleus* GetTargetNucleus() const;       
 67     G4V3DNucleus* GetWoundedNucleus() const ov    
 68     G4V3DNucleus* GetProjectileNucleus() const    
 69                                                   
 70     void ModelDescription( std::ostream& ) con    
 71                                                   
 72     G4FTFModel( const G4FTFModel& right ) = de    
 73     const G4FTFModel& operator=( const G4FTFMo    
 74     G4bool operator==( const G4FTFModel& right    
 75     G4bool operator!=( const G4FTFModel& right    
 76                                                   
 77     void SetImpactParameter( const G4double b_    
 78     G4double GetImpactParameter() const;          
 79     void SetBminBmax( const G4double bmin_valu    
 80     G4bool SampleBinInterval() const;             
 81     G4double GetBmin() const;                     
 82     G4double GetBmax() const;                     
 83     G4int GetNumberOfProjectileSpectatorNucleo    
 84     G4int GetNumberOfTargetSpectatorNucleons()    
 85     G4int GetNumberOfNNcollisions() const;        
 86                                                   
 87   protected:                                      
 88     void Init( const G4Nucleus& aNucleus,         
 89                const G4DynamicParticle& aProje    
 90     G4ExcitedStringVector* GetStrings() overri    
 91                                                   
 92   private:                                        
 93     void StoreInvolvedNucleon();                  
 94     void ReggeonCascade();                        
 95     G4bool PutOnMassShell();                      
 96     G4bool ExciteParticipants();                  
 97     void BuildStrings( G4ExcitedStringVector*     
 98     void GetResiduals();                          
 99                                                   
100     G4bool AdjustNucleons( G4VSplitableHadron*    
101                            G4Nucleon*             
102                            G4VSplitableHadron*    
103                            G4Nucleon*             
104                            G4bool                 
105     // The "AdjustNucleons" method uses the fo    
106     struct CommonVariables {                      
107       G4int TResidualMassNumber = 0, TResidual    
108         PResidualCharge = 0, PResidualLambdaNu    
109       G4double SqrtS = 0.0, S = 0.0, SumMasses    
110         TResidualExcitationEnergy = 0.0, TResi    
111         PResidualExcitationEnergy = 0.0, PResi    
112         Mprojectile = 0.0, M2projectile = 0.0,    
113         WplusProjectile = 0.0,                    
114         Mtarget = 0.0, M2target = 0.0, Pztarge    
115         Mt2targetNucleon = 0.0, PztargetNucleo    
116         Mt2projectileNucleon = 0.0, Pzprojecti    
117         YtargetNucleus = 0.0, YprojectileNucle    
118         XminusNucleon = 0.0, XplusNucleon = 0.    
119       G4ThreeVector PtNucleon, PtResidual, PtN    
120       G4LorentzVector Psum, Pprojectile, Ptmp,    
121       G4LorentzRotation toCms, toLab;             
122     };                                            
123     G4int AdjustNucleonsAlgorithm_beforeSampli    
124                                                   
125                                                   
126                                                   
127                                                   
128                                                   
129                                                   
130     G4bool AdjustNucleonsAlgorithm_Sampling(      
131                                                   
132     void AdjustNucleonsAlgorithm_afterSampling    
133                                                   
134                                                   
135                                                   
136                                                   
137     G4ThreeVector GaussianPt( G4double Average    
138                                                   
139     G4bool ComputeNucleusProperties( G4V3DNucl    
140                                      G4Lorentz    
141                                      G4double&    
142                                      G4int& re    
143     // Utility method used by PutOnMassShell.     
144                                                   
145     G4bool GenerateDeltaIsobar( const G4double    
146                                 G4Nucleon* inv    
147     // Utility method used by PutOnMassShell.     
148                                                   
149     G4bool SamplingNucleonKinematics( G4double    
150                                       G4double    
151                                       const G4    
152                                       const G4    
153                                       const G4    
154                                       G4Nucleo    
155                                                   
156     // Utility method used by PutOnMassShell.     
157                                                   
158     G4bool CheckKinematics( const G4double sVa    
159                             const G4double pro    
160                             const G4double nuc    
161                             const G4int number    
162                             G4double& targetWm    
163     // Utility method used by PutOnMassShell.     
164                                                   
165     G4bool FinalizeKinematics( const G4double     
166                                const G4Lorentz    
167                                const G4double     
168                                const G4int num    
169                                G4Nucleon* invo    
170                          G4LorentzVector& resi    
171     // Utility method used by PutOnMassShell.     
172                                                   
173     G4ReactionProduct theProjectile;              
174     G4FTFParticipants theParticipants;            
175                                                   
176     G4Nucleon* TheInvolvedNucleonsOfTarget[250    
177     G4int NumberOfInvolvedNucleonsOfTarget;       
178                                                   
179     G4Nucleon* TheInvolvedNucleonsOfProjectile    
180     G4int NumberOfInvolvedNucleonsOfProjectile    
181                                                   
182     G4FTFParameters* theParameters;               
183     G4DiffractiveExcitation* theExcitation;       
184     G4ElasticHNScattering* theElastic;            
185     G4FTFAnnihilation* theAnnihilation;           
186                                                   
187     std::vector< G4VSplitableHadron* > theAddi    
188                                                   
189     G4double LowEnergyLimit;                      
190     G4bool HighEnergyInter;                       
191                                                   
192     G4LorentzVector ProjectileResidual4Momentu    
193     G4int           ProjectileResidualMassNumb    
194     G4int           ProjectileResidualCharge;     
195     G4int           ProjectileResidualLambdaNu    
196     G4double        ProjectileResidualExcitati    
197                                                   
198     G4LorentzVector TargetResidual4Momentum;      
199     G4int           TargetResidualMassNumber;     
200     G4int           TargetResidualCharge;         
201     G4double        TargetResidualExcitationEn    
202                                                   
203     G4double Bimpact;                             
204     G4bool   BinInterval;                         
205     G4double Bmin;                                
206     G4double Bmax;                                
207     G4int NumberOfProjectileSpectatorNucleons;    
208     G4int NumberOfTargetSpectatorNucleons;        
209     G4int NumberOfNNcollisions;                   
210 };                                                
211                                                   
212 inline G4V3DNucleus* G4FTFModel::GetWoundedNuc    
213   return theParticipants.GetWoundedNucleus();     
214 }                                                 
215                                                   
216 inline G4V3DNucleus* G4FTFModel::GetTargetNucl    
217   return theParticipants.GetWoundedNucleus();     
218 }                                                 
219                                                   
220 inline G4V3DNucleus* G4FTFModel::GetProjectile    
221   return theParticipants.GetProjectileNucleus(    
222 }                                                 
223                                                   
224 inline void G4FTFModel::SetImpactParameter( co    
225   Bimpact = b_value;                              
226 }                                                 
227                                                   
228 inline G4double G4FTFModel::GetImpactParameter    
229   return Bimpact;                                 
230 }                                                 
231                                                   
232 inline void G4FTFModel::SetBminBmax( const G4d    
233   BinInterval = false;                            
234   if ( bmin_value < 0.0 || bmax_value < 0.0 ||    
235   BinInterval = true;                             
236   Bmin = bmin_value;                              
237   Bmax = bmax_value;                              
238 }                                                 
239                                                   
240 inline G4bool G4FTFModel::SampleBinInterval()     
241   return BinInterval;                             
242 }                                                 
243                                                   
244 inline G4double G4FTFModel::GetBmin() const {     
245   return Bmin;                                    
246 }                                                 
247                                                   
248 inline G4double G4FTFModel::GetBmax() const {     
249   return Bmax;                                    
250 }                                                 
251                                                   
252 inline G4int G4FTFModel::GetNumberOfProjectile    
253   return NumberOfProjectileSpectatorNucleons;     
254 }                                                 
255                                                   
256 inline G4int G4FTFModel::GetNumberOfTargetSpec    
257   return NumberOfTargetSpectatorNucleons;         
258 }                                                 
259                                                   
260 inline G4int G4FTFModel::GetNumberOfNNcollisio    
261   return NumberOfNNcollisions;                    
262 }                                                 
263                                                   
264 #endif                                            
265