G4QGSModel< ParticipantType > Class Template Reference

#include <G4QGSModel.hh>

Inheritance diagram for G4QGSModel< ParticipantType >:

G4VPartonStringModel G4VHighEnergyGenerator

Public Member Functions

 G4QGSModel ()
virtual ~G4QGSModel ()
 G4QGSModel (const G4QGSModel &right)
G4QGSModeloperator= (const G4QGSModel &right)
virtual G4V3DNucleusGetWoundedNucleus () const
virtual void Init (const G4Nucleus &Nucleus, const G4DynamicParticle &Projectile)
virtual G4ExcitedStringVectorGetStrings ()
virtual void ModelDescription (std::ostream &outFile) const

Detailed Description

template<class ParticipantType>
class G4QGSModel< ParticipantType >

Definition at line 55 of file G4QGSModel.hh.


Constructor & Destructor Documentation

template<class ParticipantType>
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     }

template<class ParticipantType>
G4QGSModel< ParticipantType >::~G4QGSModel (  )  [virtual]

Definition at line 53 of file G4QGSModel.icc.

00054     {
00055     }

template<class ParticipantType>
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     }


Member Function Documentation

template<class ParticipantType>
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 }

template<class ParticipantType>
G4V3DNucleus * G4QGSModel< ParticipantType >::GetWoundedNucleus (  )  const [virtual]

Implements G4VPartonStringModel.

Definition at line 132 of file G4QGSModel.icc.

00133 {
00134   return theParticipants.GetWoundedNucleus();
00135 }

template<class ParticipantType>
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     }

template<class ParticipantType>
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 }

template<class ParticipantType>
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     }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:08 2013 for Geant4 by  doxygen 1.4.7