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


  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 // $Id: G4FTFModel.hh 100828 2016-11-02 15:25:59Z gcosmo $
                                                   >>  28 // GEANT4 tag $Name:  $
 27 //                                                 29 //
 28 // Class Description                               30 // Class Description
 29 // Final state production code for hadron inel     31 // Final state production code for hadron inelastic scattering above 3 GeV
 30 // based on the modeling ansatz used in FRITIO     32 // based on the modeling ansatz used in FRITIOF.
 31 // To be used in your physics list in case you     33 // To be used in your physics list in case you need this physics.
 32 // In this case you want to register an object     34 // In this case you want to register an object of this class with an object
 33 // of G4TheoFSGenerator.                           35 // of G4TheoFSGenerator. 
 34 // Class Description - End                         36 // Class Description - End
 35                                                    37 
 36 #ifndef G4FTFModel_h                               38 #ifndef G4FTFModel_h
 37 #define G4FTFModel_h 1                             39 #define G4FTFModel_h 1
 38                                                    40 
 39 // -------------------------------------------     41 // ------------------------------------------------------------
 40 //      GEANT 4 class header file                  42 //      GEANT 4 class header file
 41 //                                                 43 //
 42 //      ---------------- G4FTFModel ----------     44 //      ---------------- G4FTFModel ----------------
 43 //             by Gunter Folger, May 1998.         45 //             by Gunter Folger, May 1998.
 44 //       class implementing the excitation in      46 //       class implementing the excitation in the FTF Parton String Model
 45 // -------------------------------------------     47 // ------------------------------------------------------------
 46                                                    48 
 47 #include "G4VPartonStringModel.hh"                 49 #include "G4VPartonStringModel.hh"
 48 #include "G4FTFParameters.hh"                      50 #include "G4FTFParameters.hh"
 49 #include "G4FTFParticipants.hh"                    51 #include "G4FTFParticipants.hh"
 50 #include "G4ExcitedStringVector.hh"                52 #include "G4ExcitedStringVector.hh"
 51 #include "G4DiffractiveExcitation.hh"              53 #include "G4DiffractiveExcitation.hh"
 52 #include "G4ElasticHNScattering.hh"                54 #include "G4ElasticHNScattering.hh"
 53 #include "G4FTFAnnihilation.hh"                    55 #include "G4FTFAnnihilation.hh"
 54 #include "G4Proton.hh"                             56 #include "G4Proton.hh"
 55 #include "G4Neutron.hh"                            57 #include "G4Neutron.hh"
 56                                                    58 
 57 class G4VSplitableHadron;                          59 class G4VSplitableHadron;
 58 class G4ExcitedString;                             60 class G4ExcitedString;
 59                                                    61 
 60                                                    62 
 61 class G4FTFModel : public G4VPartonStringModel     63 class G4FTFModel : public G4VPartonStringModel {
 62   public:                                          64   public:
 63     G4FTFModel( const G4String& modelName = "F     65     G4FTFModel( const G4String& modelName = "FTF" );
 64     ~G4FTFModel() override;                    <<  66     ~G4FTFModel();
 65                                                    67 
                                                   >>  68     void Init( const G4Nucleus& aNucleus, const G4DynamicParticle& aProjectile );
                                                   >>  69     G4ExcitedStringVector* GetStrings();
                                                   >>  70     G4V3DNucleus* GetWoundedNucleus() const;
 66     G4V3DNucleus* GetTargetNucleus() const;        71     G4V3DNucleus* GetTargetNucleus() const;
 67     G4V3DNucleus* GetWoundedNucleus() const ov <<  72     G4V3DNucleus* GetProjectileNucleus() const;
 68     G4V3DNucleus* GetProjectileNucleus() const << 
 69                                                    73 
 70     void ModelDescription( std::ostream& ) con <<  74     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                                                    75 
 92   private:                                         76   private:
                                                   >>  77     G4FTFModel( const G4FTFModel& right );
                                                   >>  78     const G4FTFModel& operator=( const G4FTFModel& right );
                                                   >>  79     int operator==( const G4FTFModel& right ) const;
                                                   >>  80     int operator!=( const G4FTFModel& right ) const;
                                                   >>  81 
 93     void StoreInvolvedNucleon();                   82     void StoreInvolvedNucleon();              
 94     void ReggeonCascade();                         83     void ReggeonCascade();
 95     G4bool PutOnMassShell();                       84     G4bool PutOnMassShell();
 96     G4bool ExciteParticipants();                   85     G4bool ExciteParticipants();
 97     void BuildStrings( G4ExcitedStringVector*  <<  86     G4ExcitedStringVector* BuildStrings();
 98     void GetResiduals();                       <<  87     void GetResiduals();                  
 99                                                << 
100     G4bool AdjustNucleons( G4VSplitableHadron*     88     G4bool AdjustNucleons( G4VSplitableHadron* SelectedAntiBaryon,
101                            G4Nucleon*              89                            G4Nucleon*          ProjectileNucleon,
102                            G4VSplitableHadron*     90                            G4VSplitableHadron* SelectedTargetNucleon,
103                            G4Nucleon*              91                            G4Nucleon*          TargetNucleon,
104                            G4bool                  92                            G4bool              Annihilation ); 
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     93     G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
138                                                    94 
139     G4bool ComputeNucleusProperties( G4V3DNucl     95     G4bool ComputeNucleusProperties( G4V3DNucleus* nucleus, G4LorentzVector& nucleusMomentum, 
140                                      G4Lorentz     96                                      G4LorentzVector& residualMomentum, G4double& sumMasses,   
141                                      G4double&     97                                      G4double& residualExcitationEnergy, G4double& residualMass,
142                                      G4int& re     98                                      G4int& residualMassNumber, G4int& residualCharge );
143     // Utility method used by PutOnMassShell.      99     // Utility method used by PutOnMassShell.
144                                                   100 
145     G4bool GenerateDeltaIsobar( const G4double    101     G4bool GenerateDeltaIsobar( const G4double sqrtS, const G4int numberOfInvolvedNucleons,
146                                 G4Nucleon* inv    102                                 G4Nucleon* involvedNucleons[], G4double& sumMasses );
147     // Utility method used by PutOnMassShell.     103     // Utility method used by PutOnMassShell.
148                                                   104 
149     G4bool SamplingNucleonKinematics( G4double    105     G4bool SamplingNucleonKinematics( G4double averagePt2, const G4double maxPt2,
150                                       G4double    106                                       G4double dCor, G4V3DNucleus* nucleus,
151                                       const G4    107                                       const G4LorentzVector& pResidual, 
152                                       const G4    108                                       const G4double residualMass, const G4int residualMassNumber,
153                                       const G4    109                                       const G4int numberOfInvolvedNucleons,
154                                       G4Nucleo    110                                       G4Nucleon* involvedNucleons[], G4double& mass2 );
155                                                   111 
156     // Utility method used by PutOnMassShell.     112     // Utility method used by PutOnMassShell.
157                                                   113 
158     G4bool CheckKinematics( const G4double sVa    114     G4bool CheckKinematics( const G4double sValue, const G4double sqrtS, 
159                             const G4double pro    115                             const G4double projectileMass2, const G4double targetMass2,
160                             const G4double nuc    116                             const G4double nucleusY, const G4bool isProjectileNucleus,
161                             const G4int number    117                             const G4int numberOfInvolvedNucleons, G4Nucleon* involvedNucleons[],
162                             G4double& targetWm    118                             G4double& targetWminus, G4double& projectileWplus, G4bool& success );
163     // Utility method used by PutOnMassShell.     119     // Utility method used by PutOnMassShell.
164                                                   120 
165     G4bool FinalizeKinematics( const G4double     121     G4bool FinalizeKinematics( const G4double w, const G4bool isProjectileNucleus, 
166                                const G4Lorentz    122                                const G4LorentzRotation& boostFromCmsToLab,
167                                const G4double     123                                const G4double residualMass, const G4int residualMassNumber,
168                                const G4int num    124                                const G4int numberOfInvolvedNucleons, 
169                                G4Nucleon* invo    125                                G4Nucleon* involvedNucleons[],
170                          G4LorentzVector& resi    126                          G4LorentzVector& residual4Momentum );
171     // Utility method used by PutOnMassShell.     127     // Utility method used by PutOnMassShell.
172                                                   128 
173     G4ReactionProduct theProjectile;              129     G4ReactionProduct theProjectile;       
174     G4FTFParticipants theParticipants;            130     G4FTFParticipants theParticipants;
175                                                   131        
176     G4Nucleon* TheInvolvedNucleonsOfTarget[250    132     G4Nucleon* TheInvolvedNucleonsOfTarget[250];
177     G4int NumberOfInvolvedNucleonsOfTarget;       133     G4int NumberOfInvolvedNucleonsOfTarget;
178                                                   134 
179     G4Nucleon* TheInvolvedNucleonsOfProjectile    135     G4Nucleon* TheInvolvedNucleonsOfProjectile[250];
180     G4int NumberOfInvolvedNucleonsOfProjectile    136     G4int NumberOfInvolvedNucleonsOfProjectile;
181                                                   137 
182     G4FTFParameters* theParameters;               138     G4FTFParameters* theParameters;
183     G4DiffractiveExcitation* theExcitation;       139     G4DiffractiveExcitation* theExcitation;
184     G4ElasticHNScattering* theElastic;            140     G4ElasticHNScattering* theElastic;
185     G4FTFAnnihilation* theAnnihilation;           141     G4FTFAnnihilation* theAnnihilation;  
186                                                   142 
187     std::vector< G4VSplitableHadron* > theAddi    143     std::vector< G4VSplitableHadron* > theAdditionalString; 
188                                                   144 
189     G4double LowEnergyLimit;                      145     G4double LowEnergyLimit;
190     G4bool HighEnergyInter;                       146     G4bool HighEnergyInter;
191                                                   147 
192     G4LorentzVector ProjectileResidual4Momentu    148     G4LorentzVector ProjectileResidual4Momentum;
193     G4int           ProjectileResidualMassNumb    149     G4int           ProjectileResidualMassNumber;
194     G4int           ProjectileResidualCharge;     150     G4int           ProjectileResidualCharge;
195     G4int           ProjectileResidualLambdaNu << 
196     G4double        ProjectileResidualExcitati    151     G4double        ProjectileResidualExcitationEnergy;
197                                                   152 
198     G4LorentzVector TargetResidual4Momentum;      153     G4LorentzVector TargetResidual4Momentum;
199     G4int           TargetResidualMassNumber;     154     G4int           TargetResidualMassNumber;
200     G4int           TargetResidualCharge;         155     G4int           TargetResidualCharge;
201     G4double        TargetResidualExcitationEn    156     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 };                                                157 };
211                                                   158 
                                                   >> 159 
212 inline G4V3DNucleus* G4FTFModel::GetWoundedNuc    160 inline G4V3DNucleus* G4FTFModel::GetWoundedNucleus() const {
213   return theParticipants.GetWoundedNucleus();     161   return theParticipants.GetWoundedNucleus();
214 }                                                 162 }
215                                                   163 
                                                   >> 164 
216 inline G4V3DNucleus* G4FTFModel::GetTargetNucl    165 inline G4V3DNucleus* G4FTFModel::GetTargetNucleus() const {
217   return theParticipants.GetWoundedNucleus();     166   return theParticipants.GetWoundedNucleus();
218 }                                                 167 }
219                                                   168 
                                                   >> 169 
220 inline G4V3DNucleus* G4FTFModel::GetProjectile    170 inline G4V3DNucleus* G4FTFModel::GetProjectileNucleus() const {
221   return theParticipants.GetProjectileNucleus(    171   return theParticipants.GetProjectileNucleus();
222 }                                                 172 }
223                                                   173 
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                                            174 #endif
                                                   >> 175 
265                                                   176