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 9.4.p4)


  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,v 1.11 2010-09-20 15:50:46 vuzhinsk Exp $
                                                   >>  28 // GEANT4 tag $Name: not supported by cvs2svn $
 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 20 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 
                                                   >>  49 
 47 #include "G4VPartonStringModel.hh"                 50 #include "G4VPartonStringModel.hh"
                                                   >>  51 
                                                   >>  52 class G4VSplitableHadron;
                                                   >>  53 class G4ExcitedString;
                                                   >>  54 
 48 #include "G4FTFParameters.hh"                      55 #include "G4FTFParameters.hh"
 49 #include "G4FTFParticipants.hh"                    56 #include "G4FTFParticipants.hh"
                                                   >>  57 
 50 #include "G4ExcitedStringVector.hh"                58 #include "G4ExcitedStringVector.hh"
 51 #include "G4DiffractiveExcitation.hh"              59 #include "G4DiffractiveExcitation.hh"
 52 #include "G4ElasticHNScattering.hh"                60 #include "G4ElasticHNScattering.hh"
 53 #include "G4FTFAnnihilation.hh"                << 
 54 #include "G4Proton.hh"                         << 
 55 #include "G4Neutron.hh"                        << 
 56                                                << 
 57 class G4VSplitableHadron;                      << 
 58 class G4ExcitedString;                         << 
 59                                                    61 
                                                   >>  62 class G4FTFModel : public G4VPartonStringModel
                                                   >>  63 {
 60                                                    64 
 61 class G4FTFModel : public G4VPartonStringModel << 
 62   public:                                          65   public:
 63     G4FTFModel( const G4String& modelName = "F <<  66       G4FTFModel();
 64     ~G4FTFModel() override;                    <<  67       G4FTFModel(G4double , G4double , G4double );
                                                   >>  68       G4FTFModel(G4DiffractiveExcitation * anExcitation);
                                                   >>  69       G4FTFModel(const G4FTFModel &right);
                                                   >>  70       ~G4FTFModel();
                                                   >>  71       const G4FTFModel & operator=(const G4FTFModel &right);
                                                   >>  72 
                                                   >>  73       int operator==(const G4FTFModel &right) const;
                                                   >>  74       int operator!=(const G4FTFModel &right) const;
                                                   >>  75 
                                                   >>  76       void Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile);
                                                   >>  77       G4ExcitedStringVector * GetStrings();
                                                   >>  78       G4V3DNucleus * GetWoundedNucleus() const;
 65                                                    79 
 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                                                    80 
 87   protected:                                       81   protected:
 88     void Init( const G4Nucleus& aNucleus,      <<  82   
 89                const G4DynamicParticle& aProje << 
 90     G4ExcitedStringVector* GetStrings() overri << 
 91                                                << 
 92   private:                                         83   private:
 93     void StoreInvolvedNucleon();               <<  84        void ReggeonCascade();
 94     void ReggeonCascade();                     <<  85        G4bool PutOnMassShell();
 95     G4bool PutOnMassShell();                   <<  86        G4bool ExciteParticipants();
 96     G4bool ExciteParticipants();               <<  87        G4ExcitedStringVector * BuildStrings();
 97     void BuildStrings( G4ExcitedStringVector*  <<  88        void GetResidualNucleus();                  // 23 Oct. 2009
 98     void GetResiduals();                       <<  89        G4ThreeVector GaussianPt(G4double  AveragePt2, G4double maxPtSquare) const;
 99                                                <<  90   
100     G4bool AdjustNucleons( G4VSplitableHadron* <<  91   private:     
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                                                    92 
173     G4ReactionProduct theProjectile;           <<  93        G4ReactionProduct theProjectile;       
174     G4FTFParticipants theParticipants;         <<  94        G4FTFParticipants theParticipants;
175                                                    95        
176     G4Nucleon* TheInvolvedNucleonsOfTarget[250 <<  96        G4Nucleon * TheInvolvedNucleon[250];
177     G4int NumberOfInvolvedNucleonsOfTarget;    <<  97        G4int NumberOfInvolvedNucleon;
178                                                    98 
179     G4Nucleon* TheInvolvedNucleonsOfProjectile <<  99        G4FTFParameters  *theParameters;
180     G4int NumberOfInvolvedNucleonsOfProjectile << 100        G4DiffractiveExcitation * theExcitation;
                                                   >> 101        G4ElasticHNScattering   * theElastic;
181                                                   102 
182     G4FTFParameters* theParameters;            << 103        G4LorentzVector Residual4Momentum;
183     G4DiffractiveExcitation* theExcitation;    << 104        G4double ResidualExcitationEnergy;
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                                                   105 
212 inline G4V3DNucleus* G4FTFModel::GetWoundedNuc << 106 };
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                                                   107 
260 inline G4int G4FTFModel::GetNumberOfNNcollisio << 108 // ------------------------------------------------------------
261   return NumberOfNNcollisions;                 << 109 inline 
                                                   >> 110 G4V3DNucleus * G4FTFModel::GetWoundedNucleus() const
                                                   >> 111 {
                                                   >> 112   return theParticipants.GetWoundedNucleus();
262 }                                                 113 }
263                                                   114 
264 #endif                                            115 #endif
265                                                   116