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.7.p1)


  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() override;
 65                                                    65 
 66     G4V3DNucleus* GetTargetNucleus() const;        66     G4V3DNucleus* GetTargetNucleus() const;
 67     G4V3DNucleus* GetWoundedNucleus() const ov     67     G4V3DNucleus* GetWoundedNucleus() const override;
 68     G4V3DNucleus* GetProjectileNucleus() const     68     G4V3DNucleus* GetProjectileNucleus() const override;
 69                                                    69 
 70     void ModelDescription( std::ostream& ) con     70     void ModelDescription( std::ostream& ) const override;
 71                                                    71 
 72     G4FTFModel( const G4FTFModel& right ) = de     72     G4FTFModel( const G4FTFModel& right ) = delete;
 73     const G4FTFModel& operator=( const G4FTFMo     73     const G4FTFModel& operator=( const G4FTFModel& right ) = delete;
 74     G4bool operator==( const G4FTFModel& right     74     G4bool operator==( const G4FTFModel& right ) const = delete;
 75     G4bool operator!=( const G4FTFModel& right     75     G4bool operator!=( const G4FTFModel& right ) const = delete;
 76                                                    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:                                       77   protected:
 88     void Init( const G4Nucleus& aNucleus,          78     void Init( const G4Nucleus& aNucleus, 
 89                const G4DynamicParticle& aProje     79                const G4DynamicParticle& aProjectile ) override;
 90     G4ExcitedStringVector* GetStrings() overri     80     G4ExcitedStringVector* GetStrings() override;
 91                                                    81 
 92   private:                                         82   private:
 93     void StoreInvolvedNucleon();                   83     void StoreInvolvedNucleon();              
 94     void ReggeonCascade();                         84     void ReggeonCascade();
 95     G4bool PutOnMassShell();                       85     G4bool PutOnMassShell();
 96     G4bool ExciteParticipants();                   86     G4bool ExciteParticipants();
 97     void BuildStrings( G4ExcitedStringVector*      87     void BuildStrings( G4ExcitedStringVector* strings );
 98     void GetResiduals();                           88     void GetResiduals();
 99                                                    89       
100     G4bool AdjustNucleons( G4VSplitableHadron*     90     G4bool AdjustNucleons( G4VSplitableHadron* SelectedAntiBaryon,
101                            G4Nucleon*              91                            G4Nucleon*          ProjectileNucleon,
102                            G4VSplitableHadron*     92                            G4VSplitableHadron* SelectedTargetNucleon,
103                            G4Nucleon*              93                            G4Nucleon*          TargetNucleon,
104                            G4bool                  94                            G4bool              Annihilation ); 
105     // The "AdjustNucleons" method uses the fo     95     // The "AdjustNucleons" method uses the following struct and 3 new utility methods:
106     struct CommonVariables {                       96     struct CommonVariables {
107       G4int TResidualMassNumber = 0, TResidual     97       G4int TResidualMassNumber = 0, TResidualCharge = 0, PResidualMassNumber = 0, 
108         PResidualCharge = 0, PResidualLambdaNu <<  98         PResidualCharge = 0;
109       G4double SqrtS = 0.0, S = 0.0, SumMasses     99       G4double SqrtS = 0.0, S = 0.0, SumMasses = 0.0,
110         TResidualExcitationEnergy = 0.0, TResi    100         TResidualExcitationEnergy = 0.0, TResidualMass = 0.0, TNucleonMass = 0.0,
111         PResidualExcitationEnergy = 0.0, PResi    101         PResidualExcitationEnergy = 0.0, PResidualMass = 0.0, PNucleonMass = 0.0,
112         Mprojectile = 0.0, M2projectile = 0.0,    102         Mprojectile = 0.0, M2projectile = 0.0, Pzprojectile = 0.0, Eprojectile = 0.0, 
113         WplusProjectile = 0.0,                    103         WplusProjectile = 0.0,
114         Mtarget = 0.0, M2target = 0.0, Pztarge    104         Mtarget = 0.0, M2target = 0.0, Pztarget = 0.0, Etarget = 0.0, WminusTarget = 0.0,
115         Mt2targetNucleon = 0.0, PztargetNucleo    105         Mt2targetNucleon = 0.0, PztargetNucleon = 0.0, EtargetNucleon = 0.0,
116         Mt2projectileNucleon = 0.0, Pzprojecti    106         Mt2projectileNucleon = 0.0, PzprojectileNucleon = 0.0, EprojectileNucleon = 0.0,
117         YtargetNucleus = 0.0, YprojectileNucle    107         YtargetNucleus = 0.0, YprojectileNucleus = 0.0,
118         XminusNucleon = 0.0, XplusNucleon = 0.    108         XminusNucleon = 0.0, XplusNucleon = 0.0, XminusResidual = 0.0, XplusResidual = 0.0;
119       G4ThreeVector PtNucleon, PtResidual, PtN    109       G4ThreeVector PtNucleon, PtResidual, PtNucleonP, PtResidualP, PtNucleonT, PtResidualT;
120       G4LorentzVector Psum, Pprojectile, Ptmp,    110       G4LorentzVector Psum, Pprojectile, Ptmp, Ptarget, TResidual4Momentum, PResidual4Momentum;
121       G4LorentzRotation toCms, toLab;             111       G4LorentzRotation toCms, toLab;
122     };                                            112     };
123     G4int AdjustNucleonsAlgorithm_beforeSampli    113     G4int AdjustNucleonsAlgorithm_beforeSampling( G4int               interactionCase, 
124                                                   114                                                   G4VSplitableHadron* SelectedAntiBaryon,
125                                                   115                                                   G4Nucleon*          ProjectileNucleon,
126                                                   116                                                   G4VSplitableHadron* SelectedTargetNucleon,
127                                                   117                                                   G4Nucleon*          TargetNucleon,
128                                                   118                                                   G4bool              Annihilation,
129                                                   119                                                   CommonVariables&    common );  
130     G4bool AdjustNucleonsAlgorithm_Sampling(      120     G4bool AdjustNucleonsAlgorithm_Sampling(      G4int interactionCase, 
131                                                   121                                                   CommonVariables& common );
132     void AdjustNucleonsAlgorithm_afterSampling    122     void AdjustNucleonsAlgorithm_afterSampling( G4int               interactionCase, 
133                                                   123                                                 G4VSplitableHadron* SelectedAntiBaryon,
134                                                   124                                                 G4VSplitableHadron* SelectedTargetNucleon,
135                                                   125                                                 CommonVariables&    common ); 
136                                                   126 
137     G4ThreeVector GaussianPt( G4double Average    127     G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
138                                                   128 
139     G4bool ComputeNucleusProperties( G4V3DNucl    129     G4bool ComputeNucleusProperties( G4V3DNucleus* nucleus, G4LorentzVector& nucleusMomentum, 
140                                      G4Lorentz    130                                      G4LorentzVector& residualMomentum, G4double& sumMasses,   
141                                      G4double&    131                                      G4double& residualExcitationEnergy, G4double& residualMass,
142                                      G4int& re    132                                      G4int& residualMassNumber, G4int& residualCharge );
143     // Utility method used by PutOnMassShell.     133     // Utility method used by PutOnMassShell.
144                                                   134 
145     G4bool GenerateDeltaIsobar( const G4double    135     G4bool GenerateDeltaIsobar( const G4double sqrtS, const G4int numberOfInvolvedNucleons,
146                                 G4Nucleon* inv    136                                 G4Nucleon* involvedNucleons[], G4double& sumMasses );
147     // Utility method used by PutOnMassShell.     137     // Utility method used by PutOnMassShell.
148                                                   138 
149     G4bool SamplingNucleonKinematics( G4double    139     G4bool SamplingNucleonKinematics( G4double averagePt2, const G4double maxPt2,
150                                       G4double    140                                       G4double dCor, G4V3DNucleus* nucleus,
151                                       const G4    141                                       const G4LorentzVector& pResidual, 
152                                       const G4    142                                       const G4double residualMass, const G4int residualMassNumber,
153                                       const G4    143                                       const G4int numberOfInvolvedNucleons,
154                                       G4Nucleo    144                                       G4Nucleon* involvedNucleons[], G4double& mass2 );
155                                                   145 
156     // Utility method used by PutOnMassShell.     146     // Utility method used by PutOnMassShell.
157                                                   147 
158     G4bool CheckKinematics( const G4double sVa    148     G4bool CheckKinematics( const G4double sValue, const G4double sqrtS, 
159                             const G4double pro    149                             const G4double projectileMass2, const G4double targetMass2,
160                             const G4double nuc    150                             const G4double nucleusY, const G4bool isProjectileNucleus,
161                             const G4int number    151                             const G4int numberOfInvolvedNucleons, G4Nucleon* involvedNucleons[],
162                             G4double& targetWm    152                             G4double& targetWminus, G4double& projectileWplus, G4bool& success );
163     // Utility method used by PutOnMassShell.     153     // Utility method used by PutOnMassShell.
164                                                   154 
165     G4bool FinalizeKinematics( const G4double     155     G4bool FinalizeKinematics( const G4double w, const G4bool isProjectileNucleus, 
166                                const G4Lorentz    156                                const G4LorentzRotation& boostFromCmsToLab,
167                                const G4double     157                                const G4double residualMass, const G4int residualMassNumber,
168                                const G4int num    158                                const G4int numberOfInvolvedNucleons, 
169                                G4Nucleon* invo    159                                G4Nucleon* involvedNucleons[],
170                          G4LorentzVector& resi    160                          G4LorentzVector& residual4Momentum );
171     // Utility method used by PutOnMassShell.     161     // Utility method used by PutOnMassShell.
172                                                   162 
173     G4ReactionProduct theProjectile;              163     G4ReactionProduct theProjectile;       
174     G4FTFParticipants theParticipants;            164     G4FTFParticipants theParticipants;
175                                                   165        
176     G4Nucleon* TheInvolvedNucleonsOfTarget[250    166     G4Nucleon* TheInvolvedNucleonsOfTarget[250];
177     G4int NumberOfInvolvedNucleonsOfTarget;       167     G4int NumberOfInvolvedNucleonsOfTarget;
178                                                   168 
179     G4Nucleon* TheInvolvedNucleonsOfProjectile    169     G4Nucleon* TheInvolvedNucleonsOfProjectile[250];
180     G4int NumberOfInvolvedNucleonsOfProjectile    170     G4int NumberOfInvolvedNucleonsOfProjectile;
181                                                   171 
182     G4FTFParameters* theParameters;               172     G4FTFParameters* theParameters;
183     G4DiffractiveExcitation* theExcitation;       173     G4DiffractiveExcitation* theExcitation;
184     G4ElasticHNScattering* theElastic;            174     G4ElasticHNScattering* theElastic;
185     G4FTFAnnihilation* theAnnihilation;           175     G4FTFAnnihilation* theAnnihilation;  
186                                                   176 
187     std::vector< G4VSplitableHadron* > theAddi    177     std::vector< G4VSplitableHadron* > theAdditionalString; 
188                                                   178 
189     G4double LowEnergyLimit;                      179     G4double LowEnergyLimit;
190     G4bool HighEnergyInter;                       180     G4bool HighEnergyInter;
191                                                   181 
192     G4LorentzVector ProjectileResidual4Momentu    182     G4LorentzVector ProjectileResidual4Momentum;
193     G4int           ProjectileResidualMassNumb    183     G4int           ProjectileResidualMassNumber;
194     G4int           ProjectileResidualCharge;     184     G4int           ProjectileResidualCharge;
195     G4int           ProjectileResidualLambdaNu << 
196     G4double        ProjectileResidualExcitati    185     G4double        ProjectileResidualExcitationEnergy;
197                                                   186 
198     G4LorentzVector TargetResidual4Momentum;      187     G4LorentzVector TargetResidual4Momentum;
199     G4int           TargetResidualMassNumber;     188     G4int           TargetResidualMassNumber;
200     G4int           TargetResidualCharge;         189     G4int           TargetResidualCharge;
201     G4double        TargetResidualExcitationEn    190     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 };                                                191 };
211                                                   192 
212 inline G4V3DNucleus* G4FTFModel::GetWoundedNuc    193 inline G4V3DNucleus* G4FTFModel::GetWoundedNucleus() const {
213   return theParticipants.GetWoundedNucleus();     194   return theParticipants.GetWoundedNucleus();
214 }                                                 195 }
215                                                   196 
216 inline G4V3DNucleus* G4FTFModel::GetTargetNucl    197 inline G4V3DNucleus* G4FTFModel::GetTargetNucleus() const {
217   return theParticipants.GetWoundedNucleus();     198   return theParticipants.GetWoundedNucleus();
218 }                                                 199 }
219                                                   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