51widthOfPtSquare(-2*
sqr(sigmaPt)) , minExtraMass(minextraMass),
85 Psum=Pprojectile+Ptarget;
91 if ( Ptmp.
pz() <= 0. )
117 if (whilecount++ >= 500 && (whilecount%100)==0)
121 if (whilecount > 1000 )
131 G4double Xmin = minmass / ( Pprojectile.
e() + Ptarget.
e() );
140 if ( KeepProjectile )
143 / (Pprojectile.
plus() + Qplus )
144 - Pprojectile.
minus();
147 Qplus = Ptarget.
plus()
149 / (Ptarget.
minus() - Qminus );
152 Qmomentum.
setPz( (Qplus-Qminus)/2 );
153 Qmomentum.
setE( (Qplus+Qminus)/2 );
161 }
while ( (Ptarget-Qmomentum).mag2() <= Mtarget2
162 || (Pprojectile+Qmomentum).mag2() <= Mprojectile2
163 || (Ptarget-Qmomentum).e() < 0.
164 || (Pprojectile+Qmomentum).e() < 0. );
169 Pprojectile += Qmomentum;
171 Ptarget -= Qmomentum;
212 if ( Xmin <= 0. || range <=0. )
214 G4cout <<
" Xmin, range : " << Xmin <<
" , " << range <<
G4endl;
215 throw G4HadronicException(__FILE__, __LINE__,
"G4SingleDiffractiveExcitation::ChooseX : Invalid arguments ");
234 }
while ( pt2 > maxPtSquare);
240 return G4ThreeVector (pt2*std::cos(phi), pt2*std::sin(phi), 0.);
CLHEP::HepLorentzVector G4LorentzVector
CLHEP::Hep3Vector G4ThreeVector
G4DLLIMPORT std::ostream G4cout
HepLorentzRotation & rotateY(double delta)
HepLorentzRotation & rotateZ(double delta)
HepLorentzRotation inverse() const
Hep3Vector boostVector() const
HepLorentzVector & transform(const HepRotation &)
G4double GetPDGMass() const
~G4SingleDiffractiveExcitation()
G4bool ExciteParticipants(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner) const
G4SingleDiffractiveExcitation(G4double sigmaPt=0.6 *CLHEP::GeV, G4double minExtraMass=250 *CLHEP::MeV, G4double x0mass=250 *CLHEP::MeV)
G4ParticleDefinition * GetDefinition() const
void Set4Momentum(const G4LorentzVector &a4Momentum)
const G4LorentzVector & Get4Momentum() const