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 10.6.p3)


  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 //                                                 26 //
 27 //                                                 27 //
 28 // Class Description                               28 // Class Description
 29 // Final state production code for hadron inel     29 // Final state production code for hadron inelastic scattering above 3 GeV
 30 // based on the modeling ansatz used in FRITIO     30 // based on the modeling ansatz used in FRITIOF.
 31 // To be used in your physics list in case you     31 // To be used in your physics list in case you need this physics.
 32 // In this case you want to register an object     32 // In this case you want to register an object of this class with an object
 33 // of G4TheoFSGenerator.                           33 // of G4TheoFSGenerator. 
 34 // Class Description - End                         34 // Class Description - End
 35                                                    35 
 36 #ifndef G4FTFModel_h                               36 #ifndef G4FTFModel_h
 37 #define G4FTFModel_h 1                             37 #define G4FTFModel_h 1
 38                                                    38 
 39 // -------------------------------------------     39 // ------------------------------------------------------------
 40 //      GEANT 4 class header file                  40 //      GEANT 4 class header file
 41 //                                                 41 //
 42 //      ---------------- G4FTFModel ----------     42 //      ---------------- G4FTFModel ----------------
 43 //             by Gunter Folger, May 1998.         43 //             by Gunter Folger, May 1998.
 44 //       class implementing the excitation in      44 //       class implementing the excitation in the FTF Parton String Model
 45 // -------------------------------------------     45 // ------------------------------------------------------------
 46                                                    46 
 47 #include "G4VPartonStringModel.hh"                 47 #include "G4VPartonStringModel.hh"
 48 #include "G4FTFParameters.hh"                      48 #include "G4FTFParameters.hh"
 49 #include "G4FTFParticipants.hh"                    49 #include "G4FTFParticipants.hh"
 50 #include "G4ExcitedStringVector.hh"                50 #include "G4ExcitedStringVector.hh"
 51 #include "G4DiffractiveExcitation.hh"              51 #include "G4DiffractiveExcitation.hh"
 52 #include "G4ElasticHNScattering.hh"                52 #include "G4ElasticHNScattering.hh"
 53 #include "G4FTFAnnihilation.hh"                    53 #include "G4FTFAnnihilation.hh"
 54 #include "G4Proton.hh"                             54 #include "G4Proton.hh"
 55 #include "G4Neutron.hh"                            55 #include "G4Neutron.hh"
 56                                                    56 
 57 class G4VSplitableHadron;                          57 class G4VSplitableHadron;
 58 class G4ExcitedString;                             58 class G4ExcitedString;
 59                                                    59 
 60                                                    60 
 61 class G4FTFModel : public G4VPartonStringModel     61 class G4FTFModel : public G4VPartonStringModel {
 62   public:                                          62   public:
 63     G4FTFModel( const G4String& modelName = "F     63     G4FTFModel( const G4String& modelName = "FTF" );
 64     ~G4FTFModel() override;                    <<  64     ~G4FTFModel();
 65                                                    65 
                                                   >>  66     void Init( const G4Nucleus& aNucleus, const G4DynamicParticle& aProjectile );
                                                   >>  67     G4ExcitedStringVector* GetStrings();
                                                   >>  68     G4V3DNucleus* GetWoundedNucleus() const;
 66     G4V3DNucleus* GetTargetNucleus() const;        69     G4V3DNucleus* GetTargetNucleus() const;
 67     G4V3DNucleus* GetWoundedNucleus() const ov <<  70     G4V3DNucleus* GetProjectileNucleus() const;
 68     G4V3DNucleus* GetProjectileNucleus() const << 
 69                                                    71 
 70     void ModelDescription( std::ostream& ) con <<  72     virtual void ModelDescription( std::ostream& ) const;
 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                                                    73 
 92   private:                                         74   private:
                                                   >>  75     G4FTFModel( const G4FTFModel& right );
                                                   >>  76     const G4FTFModel& operator=( const G4FTFModel& right );
                                                   >>  77     G4bool operator==( const G4FTFModel& right ) const;
                                                   >>  78     G4bool operator!=( const G4FTFModel& right ) const;
                                                   >>  79 
 93     void StoreInvolvedNucleon();                   80     void StoreInvolvedNucleon();              
 94     void ReggeonCascade();                         81     void ReggeonCascade();
 95     G4bool PutOnMassShell();                       82     G4bool PutOnMassShell();
 96     G4bool ExciteParticipants();                   83     G4bool ExciteParticipants();
 97     void BuildStrings( G4ExcitedStringVector*      84     void BuildStrings( G4ExcitedStringVector* strings );
 98     void GetResiduals();                           85     void GetResiduals();
 99                                                    86       
100     G4bool AdjustNucleons( G4VSplitableHadron*     87     G4bool AdjustNucleons( G4VSplitableHadron* SelectedAntiBaryon,
101                            G4Nucleon*              88                            G4Nucleon*          ProjectileNucleon,
102                            G4VSplitableHadron*     89                            G4VSplitableHadron* SelectedTargetNucleon,
103                            G4Nucleon*              90                            G4Nucleon*          TargetNucleon,
104                            G4bool                  91                            G4bool              Annihilation ); 
105     // The "AdjustNucleons" method uses the fo     92     // The "AdjustNucleons" method uses the following struct and 3 new utility methods:
106     struct CommonVariables {                       93     struct CommonVariables {
107       G4int TResidualMassNumber = 0, TResidual     94       G4int TResidualMassNumber = 0, TResidualCharge = 0, PResidualMassNumber = 0, 
108         PResidualCharge = 0, PResidualLambdaNu <<  95         PResidualCharge = 0;
109       G4double SqrtS = 0.0, S = 0.0, SumMasses     96       G4double SqrtS = 0.0, S = 0.0, SumMasses = 0.0,
110         TResidualExcitationEnergy = 0.0, TResi     97         TResidualExcitationEnergy = 0.0, TResidualMass = 0.0, TNucleonMass = 0.0,
111         PResidualExcitationEnergy = 0.0, PResi     98         PResidualExcitationEnergy = 0.0, PResidualMass = 0.0, PNucleonMass = 0.0,
112         Mprojectile = 0.0, M2projectile = 0.0,     99         Mprojectile = 0.0, M2projectile = 0.0, Pzprojectile = 0.0, Eprojectile = 0.0, 
113         WplusProjectile = 0.0,                    100         WplusProjectile = 0.0,
114         Mtarget = 0.0, M2target = 0.0, Pztarge    101         Mtarget = 0.0, M2target = 0.0, Pztarget = 0.0, Etarget = 0.0, WminusTarget = 0.0,
115         Mt2targetNucleon = 0.0, PztargetNucleo    102         Mt2targetNucleon = 0.0, PztargetNucleon = 0.0, EtargetNucleon = 0.0,
116         Mt2projectileNucleon = 0.0, Pzprojecti    103         Mt2projectileNucleon = 0.0, PzprojectileNucleon = 0.0, EprojectileNucleon = 0.0,
117         YtargetNucleus = 0.0, YprojectileNucle    104         YtargetNucleus = 0.0, YprojectileNucleus = 0.0,
118         XminusNucleon = 0.0, XplusNucleon = 0.    105         XminusNucleon = 0.0, XplusNucleon = 0.0, XminusResidual = 0.0, XplusResidual = 0.0;
119       G4ThreeVector PtNucleon, PtResidual, PtN    106       G4ThreeVector PtNucleon, PtResidual, PtNucleonP, PtResidualP, PtNucleonT, PtResidualT;
120       G4LorentzVector Psum, Pprojectile, Ptmp,    107       G4LorentzVector Psum, Pprojectile, Ptmp, Ptarget, TResidual4Momentum, PResidual4Momentum;
121       G4LorentzRotation toCms, toLab;             108       G4LorentzRotation toCms, toLab;
122     };                                            109     };
123     G4int AdjustNucleonsAlgorithm_beforeSampli    110     G4int AdjustNucleonsAlgorithm_beforeSampling( G4int               interactionCase, 
124                                                   111                                                   G4VSplitableHadron* SelectedAntiBaryon,
125                                                   112                                                   G4Nucleon*          ProjectileNucleon,
126                                                   113                                                   G4VSplitableHadron* SelectedTargetNucleon,
127                                                   114                                                   G4Nucleon*          TargetNucleon,
128                                                   115                                                   G4bool              Annihilation,
129                                                   116                                                   CommonVariables&    common );  
130     G4bool AdjustNucleonsAlgorithm_Sampling(      117     G4bool AdjustNucleonsAlgorithm_Sampling(      G4int interactionCase, 
131                                                   118                                                   CommonVariables& common );
132     void AdjustNucleonsAlgorithm_afterSampling    119     void AdjustNucleonsAlgorithm_afterSampling( G4int               interactionCase, 
133                                                   120                                                 G4VSplitableHadron* SelectedAntiBaryon,
134                                                   121                                                 G4VSplitableHadron* SelectedTargetNucleon,
135                                                   122                                                 CommonVariables&    common ); 
136                                                   123 
137     G4ThreeVector GaussianPt( G4double Average    124     G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
138                                                   125 
139     G4bool ComputeNucleusProperties( G4V3DNucl    126     G4bool ComputeNucleusProperties( G4V3DNucleus* nucleus, G4LorentzVector& nucleusMomentum, 
140                                      G4Lorentz    127                                      G4LorentzVector& residualMomentum, G4double& sumMasses,   
141                                      G4double&    128                                      G4double& residualExcitationEnergy, G4double& residualMass,
142                                      G4int& re    129                                      G4int& residualMassNumber, G4int& residualCharge );
143     // Utility method used by PutOnMassShell.     130     // Utility method used by PutOnMassShell.
144                                                   131 
145     G4bool GenerateDeltaIsobar( const G4double    132     G4bool GenerateDeltaIsobar( const G4double sqrtS, const G4int numberOfInvolvedNucleons,
146                                 G4Nucleon* inv    133                                 G4Nucleon* involvedNucleons[], G4double& sumMasses );
147     // Utility method used by PutOnMassShell.     134     // Utility method used by PutOnMassShell.
148                                                   135 
149     G4bool SamplingNucleonKinematics( G4double    136     G4bool SamplingNucleonKinematics( G4double averagePt2, const G4double maxPt2,
150                                       G4double    137                                       G4double dCor, G4V3DNucleus* nucleus,
151                                       const G4    138                                       const G4LorentzVector& pResidual, 
152                                       const G4    139                                       const G4double residualMass, const G4int residualMassNumber,
153                                       const G4    140                                       const G4int numberOfInvolvedNucleons,
154                                       G4Nucleo    141                                       G4Nucleon* involvedNucleons[], G4double& mass2 );
155                                                   142 
156     // Utility method used by PutOnMassShell.     143     // Utility method used by PutOnMassShell.
157                                                   144 
158     G4bool CheckKinematics( const G4double sVa    145     G4bool CheckKinematics( const G4double sValue, const G4double sqrtS, 
159                             const G4double pro    146                             const G4double projectileMass2, const G4double targetMass2,
160                             const G4double nuc    147                             const G4double nucleusY, const G4bool isProjectileNucleus,
161                             const G4int number    148                             const G4int numberOfInvolvedNucleons, G4Nucleon* involvedNucleons[],
162                             G4double& targetWm    149                             G4double& targetWminus, G4double& projectileWplus, G4bool& success );
163     // Utility method used by PutOnMassShell.     150     // Utility method used by PutOnMassShell.
164                                                   151 
165     G4bool FinalizeKinematics( const G4double     152     G4bool FinalizeKinematics( const G4double w, const G4bool isProjectileNucleus, 
166                                const G4Lorentz    153                                const G4LorentzRotation& boostFromCmsToLab,
167                                const G4double     154                                const G4double residualMass, const G4int residualMassNumber,
168                                const G4int num    155                                const G4int numberOfInvolvedNucleons, 
169                                G4Nucleon* invo    156                                G4Nucleon* involvedNucleons[],
170                          G4LorentzVector& resi    157                          G4LorentzVector& residual4Momentum );
171     // Utility method used by PutOnMassShell.     158     // Utility method used by PutOnMassShell.
172                                                   159 
173     G4ReactionProduct theProjectile;              160     G4ReactionProduct theProjectile;       
174     G4FTFParticipants theParticipants;            161     G4FTFParticipants theParticipants;
175                                                   162        
176     G4Nucleon* TheInvolvedNucleonsOfTarget[250    163     G4Nucleon* TheInvolvedNucleonsOfTarget[250];
177     G4int NumberOfInvolvedNucleonsOfTarget;       164     G4int NumberOfInvolvedNucleonsOfTarget;
178                                                   165 
179     G4Nucleon* TheInvolvedNucleonsOfProjectile    166     G4Nucleon* TheInvolvedNucleonsOfProjectile[250];
180     G4int NumberOfInvolvedNucleonsOfProjectile    167     G4int NumberOfInvolvedNucleonsOfProjectile;
181                                                   168 
182     G4FTFParameters* theParameters;               169     G4FTFParameters* theParameters;
183     G4DiffractiveExcitation* theExcitation;       170     G4DiffractiveExcitation* theExcitation;
184     G4ElasticHNScattering* theElastic;            171     G4ElasticHNScattering* theElastic;
185     G4FTFAnnihilation* theAnnihilation;           172     G4FTFAnnihilation* theAnnihilation;  
186                                                   173 
187     std::vector< G4VSplitableHadron* > theAddi    174     std::vector< G4VSplitableHadron* > theAdditionalString; 
188                                                   175 
189     G4double LowEnergyLimit;                      176     G4double LowEnergyLimit;
190     G4bool HighEnergyInter;                       177     G4bool HighEnergyInter;
191                                                   178 
192     G4LorentzVector ProjectileResidual4Momentu    179     G4LorentzVector ProjectileResidual4Momentum;
193     G4int           ProjectileResidualMassNumb    180     G4int           ProjectileResidualMassNumber;
194     G4int           ProjectileResidualCharge;     181     G4int           ProjectileResidualCharge;
195     G4int           ProjectileResidualLambdaNu << 
196     G4double        ProjectileResidualExcitati    182     G4double        ProjectileResidualExcitationEnergy;
197                                                   183 
198     G4LorentzVector TargetResidual4Momentum;      184     G4LorentzVector TargetResidual4Momentum;
199     G4int           TargetResidualMassNumber;     185     G4int           TargetResidualMassNumber;
200     G4int           TargetResidualCharge;         186     G4int           TargetResidualCharge;
201     G4double        TargetResidualExcitationEn    187     G4double        TargetResidualExcitationEnergy;
202                                                << 
203     G4double Bimpact;                          << 
204     G4bool   BinInterval;                      << 
205     G4double Bmin;                             << 
206     G4double Bmax;                             << 
207     G4int NumberOfProjectileSpectatorNucleons; << 
208     G4int NumberOfTargetSpectatorNucleons;     << 
209     G4int NumberOfNNcollisions;                << 
210 };                                                188 };
211                                                   189 
                                                   >> 190 
212 inline G4V3DNucleus* G4FTFModel::GetWoundedNuc    191 inline G4V3DNucleus* G4FTFModel::GetWoundedNucleus() const {
213   return theParticipants.GetWoundedNucleus();     192   return theParticipants.GetWoundedNucleus();
214 }                                                 193 }
215                                                   194 
                                                   >> 195 
216 inline G4V3DNucleus* G4FTFModel::GetTargetNucl    196 inline G4V3DNucleus* G4FTFModel::GetTargetNucleus() const {
217   return theParticipants.GetWoundedNucleus();     197   return theParticipants.GetWoundedNucleus();
218 }                                                 198 }
219                                                   199 
                                                   >> 200 
220 inline G4V3DNucleus* G4FTFModel::GetProjectile    201 inline G4V3DNucleus* G4FTFModel::GetProjectileNucleus() const {
221   return theParticipants.GetProjectileNucleus(    202   return theParticipants.GetProjectileNucleus();
222 }                                                 203 }
223                                                   204 
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                                            205 #endif
                                                   >> 206 
265                                                   207