79 Mprojectile2 =
sqr(projectile->GetDefinition()->GetPDGMass() * (1-
perCent) );
88 Psum=Pprojectile+Ptarget;
94 if ( Ptmp.pz() <= 0. )
102 toCms.
rotateY(-1*Ptmp.theta());
120 if (whilecount++ >= 500 && (whilecount%100)==0)
124 if (whilecount > 1000 )
140 G4double Qplus =-1 * pt2 / Xminus/Ptarget.minus();
141 G4double Qminus= pt2 / Xplus /Pprojectile.plus();
143 if ( KeepProjectile )
145 Qminus = (
sqr(projectile->GetDefinition()->GetPDGMass()) + pt2 )
146 / (Pprojectile.plus() + Qplus )
147 - Pprojectile.minus();
150 Qplus = Ptarget.plus()
151 - (
sqr(
target->GetDefinition()->GetPDGMass()) + pt2 )
152 / (Ptarget.minus() - Qminus );
155 Qmomentum.
setPz( (Qplus-Qminus)/2 );
156 Qmomentum.
setE( (Qplus+Qminus)/2 );
164 }
while ( (Ptarget-Qmomentum).mag2() <= Mtarget2
165 || (Pprojectile+Qmomentum).mag2() <= Mprojectile2
166 || (Ptarget-Qmomentum).
e() < 0.
167 || (Pprojectile+Qmomentum).
e() < 0. );
172 Pprojectile += Qmomentum;
174 Ptarget -= Qmomentum;
195 target->Set4Momentum(Ptarget);
196 projectile->Set4Momentum(Pprojectile);
CLHEP::Hep3Vector G4ThreeVector
const G4double widthOfPtSquare
HepLorentzVector & rotateZ(double)
G4double ChooseX(G4double Xmin, G4double Xmax) const
HepLorentzRotation & transform(const HepBoost &b)
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare) const
static const double perCent
Hep3Vector boostVector() const
cout<< "-> Edep in the target
HepLorentzVector & rotateY(double)
HepLorentzVector & transform(const HepRotation &)
const G4double minExtraMass
CLHEP::HepLorentzVector G4LorentzVector