File indexing completed on 2025-01-18 09:58:06
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 ) const;
0061
0062 virtual void CreateStrings( G4VSplitableHadron* aHadron,
0063 G4bool isProjectile,
0064 G4ExcitedString*& FirstString,
0065 G4ExcitedString*& SecondString,
0066 G4FTFParameters* theParameters ) const;
0067
0068 private:
0069 G4DiffractiveExcitation( const G4DiffractiveExcitation& right );
0070 const G4DiffractiveExcitation& operator=( const G4DiffractiveExcitation& right );
0071 G4bool operator==( const G4DiffractiveExcitation& right ) const;
0072 G4bool operator!=( const G4DiffractiveExcitation& right ) const;
0073
0074 G4double LambdaF(G4double sqrM, G4double sqrM1, G4double sqrM2) const;
0075
0076 G4ThreeVector GaussianPt( G4double AveragePt2, G4double maxPtSquare ) const;
0077 G4double ChooseP( G4double Pmin, G4double Pmax ) const;
0078 G4double GetQuarkFractionOfKink( G4double zmin, G4double zmax ) const;
0079 void UnpackMeson( G4int IdPDG, G4int& Q1, G4int& Q2 ) const;
0080 void UnpackBaryon( G4int IdPDG, G4int& Q1, G4int& Q2, G4int& Q3 ) const;
0081 G4int NewNucleonId( G4int Q1, G4int Q2, G4int Q3 ) const;
0082
0083
0084 struct CommonVariables {
0085 G4int ProjectilePDGcode = 0, absProjectilePDGcode = 0, TargetPDGcode = 0,
0086 absTargetPDGcode = 0;
0087 G4double M0projectile = 0.0, M0projectile2 = 0.0, M0target = 0.0, M0target2 = 0.0,
0088 ProjMassT = 0.0, ProjMassT2 = 0.0, TargMassT = 0.0, TargMassT2 = 0.0,
0089 MminProjectile = 0.0, MminTarget = 0.0,
0090 ProjectileDiffStateMinMass = 0.0, ProjectileDiffStateMinMass2 = 0.0,
0091 ProjectileNonDiffStateMinMass = 0.0, ProjectileNonDiffStateMinMass2 = 0.0,
0092 TargetDiffStateMinMass = 0.0, TargetDiffStateMinMass2 = 0.0,
0093 TargetNonDiffStateMinMass = 0.0, TargetNonDiffStateMinMass2 = 0.0,
0094 S = 0.0, SqrtS = 0.0, Pt2 = 0.0, PZcms = 0.0, PZcms2 = 0.0,
0095 AveragePt2 = 0.0, maxPtSquare = 0.0,
0096 ProbExc = 0.0, Qminus = 0.0, Qplus = 0.0,
0097 PMinusNew = 0.0, PPlusNew = 0.0, TMinusNew = 0.0, TPlusNew = 0.0,
0098 PMinusMin = 0.0, PMinusMax = 0.0, TPlusMin = 0.0, TPlusMax = 0.0,
0099 ProbProjectileDiffraction = 0.0, ProbTargetDiffraction = 0.0, ProbOfDiffraction = 0.0;
0100 G4LorentzVector Pprojectile, Ptarget, Qmomentum;
0101 G4LorentzRotation toCms, toLab;
0102 G4SampleResonance BrW;
0103 };
0104 G4int ExciteParticipants_doChargeExchange( G4VSplitableHadron* projectile,
0105 G4VSplitableHadron* target,
0106 G4FTFParameters* theParameters,
0107 G4ElasticHNScattering* theElastic,
0108 CommonVariables& common ) const;
0109 G4bool ExciteParticipants_doDiffraction( G4VSplitableHadron* projectile,
0110 G4VSplitableHadron* target,
0111 G4FTFParameters* theParameters,
0112 CommonVariables& common ) const;
0113 G4bool ExciteParticipants_doNonDiffraction( G4VSplitableHadron* projectile,
0114 G4VSplitableHadron* target,
0115 G4FTFParameters* theParameters,
0116 CommonVariables& common ) const;
0117 };
0118
0119 #endif
0120