File indexing completed on 2026-09-10 09:09:47
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifndef G4DiffractiveExcitation_h
0029 #define G4DiffractiveExcitation_h 1
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 #include "globals.hh"
0042 #include "G4FTFParameters.hh"
0043 #include "G4ElasticHNScattering.hh"
0044 #include "G4ThreeVector.hh"
0045 #include "G4LorentzVector.hh"
0046 #include "G4LorentzRotation.hh"
0047
0048 class G4VSplitableHadron;
0049 class G4ExcitedString;
0050
0051
0052 class G4DiffractiveExcitation {
0053 public:
0054 G4DiffractiveExcitation();
0055 virtual ~G4DiffractiveExcitation();
0056
0057 virtual G4bool ExciteParticipants( G4VSplitableHadron* aPartner,
0058 G4VSplitableHadron* bPartner,
0059 G4FTFParameters* theParameters,
0060 G4ElasticHNScattering* theElastic,
0061 G4bool& isDiffractive ) const;
0062
0063 virtual void CreateStrings( G4VSplitableHadron* aHadron,
0064 G4bool isProjectile,
0065 G4ExcitedString*& FirstString,
0066 G4ExcitedString*& SecondString,
0067 G4FTFParameters* theParameters ) const;
0068
0069 private:
0070 G4DiffractiveExcitation( const G4DiffractiveExcitation& right );
0071 const G4DiffractiveExcitation& operator=( const G4DiffractiveExcitation& right );
0072 G4bool operator==( const G4DiffractiveExcitation& right ) const;
0073 G4bool operator!=( const G4DiffractiveExcitation& right ) const;
0074
0075 G4double LambdaF(G4double sqrM, G4double sqrM1, G4double sqrM2) const;
0076
0077 G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
0078 G4double ChooseP( G4double Pmin, G4double Pmax ) const;
0079 G4double GetQuarkFractionOfKink( G4double zmin, G4double zmax ) const;
0080 void UnpackMeson( G4int IdPDG, G4int& Q1, G4int& Q2 ) const;
0081 void UnpackBaryon( G4int IdPDG, G4int& Q1, G4int& Q2, G4int& Q3 ) const;
0082 G4int NewNucleonId( G4int Q1, G4int Q2, G4int Q3 ) const;
0083
0084
0085 struct CommonVariables {
0086 G4int ProjectilePDGcode = 0, absProjectilePDGcode = 0, TargetPDGcode = 0,
0087 absTargetPDGcode = 0;
0088 G4double M0projectile = 0.0, M0projectile2 = 0.0, M0target = 0.0, M0target2 = 0.0,
0089 ProjMassT = 0.0, ProjMassT2 = 0.0, TargMassT = 0.0, TargMassT2 = 0.0,
0090 MminProjectile = 0.0, MminTarget = 0.0,
0091 ProjectileDiffStateMinMass = 0.0, ProjectileDiffStateMinMass2 = 0.0,
0092 ProjectileNonDiffStateMinMass = 0.0, ProjectileNonDiffStateMinMass2 = 0.0,
0093 TargetDiffStateMinMass = 0.0, TargetDiffStateMinMass2 = 0.0,
0094 TargetNonDiffStateMinMass = 0.0, TargetNonDiffStateMinMass2 = 0.0,
0095 S = 0.0, SqrtS = 0.0, Pt2 = 0.0, PZcms = 0.0, PZcms2 = 0.0,
0096 AveragePt2 = 0.0, maxPtSquare = 0.0,
0097 ProbExc = 0.0, Qminus = 0.0, Qplus = 0.0,
0098 PMinusNew = 0.0, PPlusNew = 0.0, TMinusNew = 0.0, TPlusNew = 0.0,
0099 PMinusMin = 0.0, PMinusMax = 0.0, TPlusMin = 0.0, TPlusMax = 0.0,
0100 ProbProjectileDiffraction = 0.0, ProbTargetDiffraction = 0.0, ProbOfDiffraction = 0.0;
0101 G4LorentzVector Pprojectile, Ptarget, Qmomentum;
0102 G4LorentzRotation toCms, toLab;
0103 G4SampleResonance BrW;
0104 };
0105 G4int ExciteParticipants_doChargeExchange( G4VSplitableHadron* projectile,
0106 G4VSplitableHadron* target,
0107 G4FTFParameters* theParameters,
0108 G4ElasticHNScattering* theElastic,
0109 CommonVariables& common ) const;
0110 G4bool ExciteParticipants_doDiffraction( G4VSplitableHadron* projectile,
0111 G4VSplitableHadron* target,
0112 G4FTFParameters* theParameters,
0113 CommonVariables& common ) const;
0114 G4bool ExciteParticipants_doNonDiffraction( G4VSplitableHadron* projectile,
0115 G4VSplitableHadron* target,
0116 G4FTFParameters* theParameters,
0117 CommonVariables& common ) const;
0118 };
0119
0120 #endif
0121