#include <G4QGSModel.hh>
Inheritance diagram for G4QGSModel< ParticipantType >:
Public Member Functions | |
G4QGSModel () | |
virtual | ~G4QGSModel () |
G4QGSModel (const G4QGSModel &right) | |
G4QGSModel & | operator= (const G4QGSModel &right) |
virtual G4V3DNucleus * | GetWoundedNucleus () const |
virtual void | Init (const G4Nucleus &Nucleus, const G4DynamicParticle &Projectile) |
virtual G4ExcitedStringVector * | GetStrings () |
virtual void | ModelDescription (std::ostream &outFile) const |
Definition at line 55 of file G4QGSModel.hh.
G4QGSModel< ParticipantType >::G4QGSModel | ( | ) |
Definition at line 29 of file G4QGSModel.icc.
References G4VHighEnergyGenerator::SetEnergyMomentumCheckLevels(), and G4VPartonStringModel::SetThisPointer().
00030 { 00031 G4VPartonStringModel::SetThisPointer(this); 00032 SetEnergyMomentumCheckLevels(2*CLHEP::perCent, 150*CLHEP::MeV); 00033 }
G4QGSModel< ParticipantType >::~G4QGSModel | ( | ) | [virtual] |
G4QGSModel< ParticipantType >::G4QGSModel | ( | const G4QGSModel< ParticipantType > & | right | ) |
Definition at line 35 of file G4QGSModel.icc.
References G4VHighEnergyGenerator::GetEnergyMomentumCheckLevels(), G4VHighEnergyGenerator::SetEnergyMomentumCheckLevels(), and G4VPartonStringModel::SetThisPointer().
00036 { 00037 G4VPartonStringModel::SetThisPointer(this); 00038 std::pair<G4double, G4double> levels=right.GetEnergyMomentumCheckLevels(); 00039 SetEnergyMomentumCheckLevels(levels.first, levels.second); 00040 }
G4ExcitedStringVector * G4QGSModel< ParticipantType >::GetStrings | ( | ) | [virtual] |
Implements G4VPartonStringModel.
Definition at line 98 of file G4QGSModel.icc.
References G4ExcitedString::Boost(), G4SoftStringBuilder::BuildString(), G4DiffractiveStringBuilder::BuildString(), G4PartonPair::DIFFRACTIVE, and G4PartonPair::GetCollisionType().
00099 { 00100 // clean-up and consistancy with design, HPW Feb 1999 00101 // also fixing a memory leak, removing unnecessary caching, and 00102 // streamlining of logic 00103 G4PartonPair* aPair; 00104 G4ExcitedStringVector* theStrings = new G4ExcitedStringVector; 00105 G4ExcitedString * aString; 00106 while( (aPair = theParticipants.GetNextPartonPair()) ) 00107 { 00108 if (aPair->GetCollisionType() == G4PartonPair::DIFFRACTIVE) 00109 { 00110 aString = theDiffractiveStringBuilder.BuildString(aPair); 00111 // G4cout << "diffractive "<<aString->Get4Momentum()<<G4endl; 00112 } 00113 else 00114 { 00115 aString = theSoftStringBuilder.BuildString(aPair); 00116 // G4cout << "soft "<<aString->Get4Momentum()<<G4endl; 00117 } 00118 //--DEBUG-- G4cout << " QGSModel.icc::GetStrings() theCurrentVelocity " << theCurrentVelocity << G4endl; 00119 aString->Boost(theCurrentVelocity); 00120 theStrings->push_back(aString); 00121 delete aPair; 00122 } 00123 //--DEBUG-- G4cout << G4endl; 00124 // for(G4int i=0; i<theStrings->size(); i++) 00125 // { 00126 // G4cout << "String = "<<theStrings->operator[](i)->Get4Momentum()<<G4endl; 00127 // } 00128 return theStrings; 00129 }
G4V3DNucleus * G4QGSModel< ParticipantType >::GetWoundedNucleus | ( | ) | const [virtual] |
void G4QGSModel< ParticipantType >::Init | ( | const G4Nucleus & | Nucleus, | |
const G4DynamicParticle & | Projectile | |||
) | [virtual] |
Implements G4VPartonStringModel.
Definition at line 58 of file G4QGSModel.icc.
References G4DynamicParticle::Get4Momentum(), G4Nucleus::GetA_asInt(), G4ParticleDefinition::GetBaryonNumber(), G4DynamicParticle::GetDefinition(), G4ParticleDefinition::GetPDGMass(), G4Nucleus::GetZ_asInt(), G4Proton::Proton(), G4ReactionProduct::SetDefinition(), G4ReactionProduct::SetMomentum(), and G4ReactionProduct::SetTotalEnergy().
00059 { 00060 // clean-up and consistency with design, HPW Feb 1999 00061 theParticipants.Init(aNucleus.GetA_asInt(),aNucleus.GetZ_asInt()); 00062 theCurrentVelocity.setX(0); 00063 theCurrentVelocity.setY(0); 00064 // HPW Feb 1999 00065 // this is an approximation, neglecting the motion of nucleons in the nucleus & p,n mass differences. @@@ 00066 // G4double vz_old = aProjectile.Get4Momentum().pz()/ 00067 // (aProjectile.Get4Momentum().e() + G4Proton::Proton()->GetPDGMass()); 00068 G4double nCons = 1; 00069 if(std::abs(aProjectile.GetDefinition()->GetBaryonNumber()) !=0) 00070 { 00071 nCons = std::abs(aProjectile.GetDefinition()->GetBaryonNumber()); 00072 } 00073 G4double pz_per_projectile = aProjectile.Get4Momentum().pz()/nCons; 00074 // G4double e_per_projectile = aProjectile.Get4Momentum().vect()*aProjectile.Get4Momentum().vect(); 00075 // e_per_projectile /=nCons*nCons; 00076 // e_per_projectile += G4Proton::Proton()->GetPDGMass()*G4Proton::Proton()->GetPDGMass(); 00077 G4double e_per_projectile = aProjectile.Get4Momentum()*aProjectile.Get4Momentum(); 00078 e_per_projectile += aProjectile.Get4Momentum().vect()*aProjectile.Get4Momentum().vect(); 00079 e_per_projectile /=nCons*nCons; 00080 e_per_projectile = std::sqrt(e_per_projectile); 00081 e_per_projectile += G4Proton::Proton()->GetPDGMass(); 00082 G4double vz = pz_per_projectile/e_per_projectile; 00083 //--DEBUG-- G4cout << "IncomingMomentum - vz "<<aProjectile.Get4Momentum()<< ", " << vz <<G4endl; 00084 theCurrentVelocity.setZ(vz); 00085 theParticipants.DoLorentzBoost(-theCurrentVelocity); 00086 G4LorentzVector Mom = aProjectile.Get4Momentum(); 00087 Mom.boost(-theCurrentVelocity); 00088 G4ReactionProduct theProjectile; 00089 theProjectile.SetDefinition(aProjectile.GetDefinition()); 00090 theProjectile.SetTotalEnergy(Mom.e()); 00091 theProjectile.SetMomentum(Mom.vect()); 00092 //--DEBUG-- G4cout << "PreInteractionMomentum "<<Mom<<G4endl; 00093 theParticipants.BuildInteractions(theProjectile); 00094 theParticipants.GetWoundedNucleus()->DoLorentzBoost(theCurrentVelocity); 00095 }
void G4QGSModel< ParticipantType >::ModelDescription | ( | std::ostream & | outFile | ) | const [virtual] |
Reimplemented from G4VPartonStringModel.
Definition at line 138 of file G4QGSModel.icc.
00139 { 00140 outFile << "The Quark-Gluon String (QGS) model simulates the interaction\n" 00141 << "of protons, neutrons, pions and kaons with nuclei in the\n" 00142 << "approximate energy range 20 GeV to 50 TeV. The model handles\n" 00143 << "the selection of collision partners, splitting of the nucleons\n" 00144 << "into quarks and di-quarks, the formation and excitation of\n" 00145 << "quark-gluon strings, string hadronization and diffractive dissociation.\n"; 00146 }
G4QGSModel< ParticipantType > & G4QGSModel< ParticipantType >::operator= | ( | const G4QGSModel< ParticipantType > & | right | ) |
Definition at line 43 of file G4QGSModel.icc.
References G4VHighEnergyGenerator::GetEnergyMomentumCheckLevels(), G4VHighEnergyGenerator::SetEnergyMomentumCheckLevels(), and G4VPartonStringModel::SetThisPointer().
00044 { 00045 if (this != &right ) 00046 { 00047 G4VPartonStringModel::SetThisPointer(this); 00048 std::pair<G4double, G4double> levels=right.GetEnergyMomentumCheckLevels(); 00049 SetEnergyMomentumCheckLevels(levels.first, levels.second); 00050 } 00051 }