File indexing completed on 2025-07-05 08:55:50
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 template<class ParticipantType>
0029 G4QGSModel<ParticipantType>::G4QGSModel()
0030 {
0031 SetEnergyMomentumCheckLevels(2*CLHEP::perCent, 150*CLHEP::MeV);
0032 }
0033
0034 template<class ParticipantType>
0035 G4QGSModel<ParticipantType>::~G4QGSModel()
0036 {}
0037
0038 template<class ParticipantType>
0039 void G4QGSModel<ParticipantType>::Init(const G4Nucleus & aNucleus,
0040 const G4DynamicParticle & aProjectile)
0041 {
0042
0043 theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt());
0044
0045 G4LorentzVector Mom = aProjectile.Get4Momentum();
0046
0047 G4ReactionProduct theProjectile;
0048 theProjectile.SetDefinition(aProjectile.GetDefinition());
0049 theProjectile.SetTotalEnergy(Mom.e());
0050 theProjectile.SetMomentum(Mom.vect());
0051
0052
0053 theParticipants.BuildInteractions(theProjectile);
0054 }
0055
0056 template<class ParticipantType>
0057 G4ExcitedStringVector * G4QGSModel<ParticipantType>::GetStrings()
0058 {
0059
0060
0061 G4PartonPair* aPair;
0062 G4ExcitedStringVector* theStrings = new G4ExcitedStringVector;
0063 G4ExcitedString * aString;
0064 while( (aPair = theParticipants.GetNextPartonPair()) )
0065 {
0066 if (aPair->GetCollisionType() == G4PartonPair::DIFFRACTIVE)
0067 {
0068 aString = theDiffractiveStringBuilder.BuildString(aPair);
0069 }
0070 else
0071 {
0072 aString = theSoftStringBuilder.BuildString(aPair);
0073 }
0074
0075
0076 theStrings->push_back(aString);
0077 delete aPair;
0078 }
0079
0080 return theStrings;
0081 }
0082
0083 template<class ParticipantType>
0084 G4V3DNucleus* G4QGSModel<ParticipantType>::GetWoundedNucleus() const
0085 {
0086 return theParticipants.GetWoundedNucleus();
0087 }
0088
0089 template<class ParticipantType>
0090 G4V3DNucleus* G4QGSModel<ParticipantType>::GetProjectileNucleus() const
0091 {
0092 return nullptr;
0093 }
0094
0095 template<class ParticipantType>
0096 void G4QGSModel<ParticipantType>::ModelDescription(std::ostream& outFile) const
0097 {
0098 outFile << "The Quark-Gluon String (QGS) model simulates the interaction\n"
0099 << "of protons, neutrons, pions and kaons with nuclei in the\n"
0100 << "approximate energy range 20 GeV to 50 TeV. The model handles\n"
0101 << "the selection of collision partners, splitting of the nucleons\n"
0102 << "into quarks and di-quarks, the formation and excitation of\n"
0103 << "quark-gluon strings, string hadronization and diffractive dissociation.\n";
0104 }
0105
0106