42 nCutMax(7),ThresholdParameter(0.000*GeV),
43 QGSMThreshold(3*GeV),theNucleonRadius(1.5*fermi)
50 ThresholdParameter(right.ThresholdParameter), QGSMThreshold(right.QGSMThreshold),
51 theNucleonRadius(right.theNucleonRadius)
116 #ifdef debug_G4QGSParticipants
124 std::pair<G4double, G4double> theImpactParameter;
126 G4double impactX = theImpactParameter.first;
127 G4double impactY = theImpactParameter.second;
131 G4int nucleonCount = 0;
133 #ifdef debug_G4QGSParticipants
134 intNuclMom=aPrimaryMomentum;
146 G4double s_nucleon = (aPrimaryMomentum + nucleonMomentum).mag2();
153 if (Probability > rndNumber)
155 #ifdef debug_G4QGSParticipants
156 G4cout <<
"DEBUG p="<< Probability<<
" r="<<rndNumber<<
" d="<<std::sqrt(Distance2)<<
G4endl;
157 G4cout <<
" qgspart+ " << aPrimaryMomentum <<
" # " << aPrimaryMomentum.
mag()
159 intNuclMom += nucleonMomentum;
165 pNucleon->
Hit(aTarget);
191 for(nCut = 0; nCut <
nCutMax; nCut++)
194 if(nCut!=0) running[nCut] += running[nCut-1];
197 for(nCut = 0; nCut <
nCutMax; nCut++)
199 if(running[nCut] > random)
break;
210 #ifdef debug_G4QGSParticipants
211 impactUsed=Distance2;
216 #ifdef debug_G4QGSParticipants
221 #ifdef debug_G4QGSParticipants
223 G4cout <<
"Impact Parameter used = "<<impactUsed<<
G4endl;
244 #ifdef debug_G4QGSPart_PDiffColl
262 #ifdef debug_G4QGSPart_PDiffColl
277 std::vector<G4InteractionContent*>::iterator i;
292 #ifdef debug_G4QGSPart_PSoftColl
300 #ifdef debug_G4QGSParticipants
307 #ifdef debug_G4QGSPart_PSoftColl
315 #ifdef debug_G4QGSParticipants
327 #ifdef debug_G4QGSPart_PSoftColl
G4int G4QGSParticipants_NPart
G4DLLIMPORT std::ostream G4cout
void SetNumberOfDiffractiveCollisions(int)
void SetNumberOfSoftCollisions(int)
G4VSplitableHadron * GetProjectile() const
G4int GetNumberOfSoftCollisions()
void SetTarget(G4VSplitableHadron *aTarget)
G4VSplitableHadron * GetTarget() const
void SetMomentum(G4LorentzVector &aMomentum)
virtual const G4LorentzVector & Get4Momentum() const
void Hit(G4VSplitableHadron *aHit)
virtual const G4ThreeVector & GetPosition() const
G4double GetBindingEnergy() const
virtual G4ParticleDefinition * GetDefinition() const
G4double GetPDGMass() const
G4Parton * GetParton2(void)
G4Parton * GetParton1(void)
const G4LorentzVector & Get4Momentum() const
G4double GetInelasticProbability(const G4double s, const G4double impactsquare)
G4double GetDiffractiveProbability(const G4double s, const G4double impactsquare)
G4double GetCutPomeronProbability(const G4double s, const G4double impactsquare, const G4int nPomerons)
virtual G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner) const
const G4double ThresholdParameter
G4SingleDiffractiveExcitation theSingleDiffExcitation
std::vector< G4InteractionContent * > theInteractions
virtual G4VSplitableHadron * SelectInteractions(const G4ReactionProduct &thePrimary)
void PerformDiffractiveCollisions()
G4QGSDiffractiveExcitation theDiffExcitaton
G4bool IsSingleDiffractive()
virtual ~G4QGSParticipants()
const G4double QGSMThreshold
const G4double theNucleonRadius
void BuildInteractions(const G4ReactionProduct &thePrimary)
std::vector< G4PartonPair * > thePartonPairs
std::vector< G4VSplitableHadron * > theTargets
void PerformSoftCollisions()
G4double GetKineticEnergy() const
G4double GetTotalEnergy() const
G4ThreeVector GetMomentum() const
G4ParticleDefinition * GetDefinition() const
G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner) const
virtual G4double GetOuterRadius()=0
virtual G4Nucleon * GetNextNucleon()=0
virtual G4bool StartLoop()=0
std::pair< G4double, G4double > ChooseImpactXandY(G4double maxImpact)
G4V3DNucleus * theNucleus
virtual G4Parton * GetNextParton()=0
virtual G4Parton * GetNextAntiParton()=0
void IncrementCollisionCount(G4int aCount)