41 double pabs = 0, phi, pt = 0, theta = 0, eta,
y, mt, px, py, pz = 0;
42 phi = gRandom->Uniform(mPhiMin, mPhiMax) * TMath::DegToRad();
44 pabs = gRandom->Uniform(mPMin, mPMax);
45 }
else if (mPtRangeIsSet) {
46 pt = gRandom->Uniform(mPtMin, mPtMax);
48 if (mThetaRangeIsSet) {
50 theta = acos(gRandom->Uniform(cos(mThetaMin * TMath::DegToRad()), cos(mThetaMax * TMath::DegToRad())));
52 theta = gRandom->Uniform(mThetaMin, mThetaMax) * TMath::DegToRad();
54 }
else if (mEtaRangeIsSet) {
55 eta = gRandom->Uniform(mEtaMin, mEtaMax);
56 theta = 2 * TMath::ATan(TMath::Exp(-eta));
57 }
else if (mYRangeIsSet) {
58 y = gRandom->Uniform(mYMin, mYMax);
59 mt = TMath::Sqrt(mass * mass + pt * pt);
60 pz = mt * TMath::SinH(
y);
63 if (mThetaRangeIsSet || mEtaRangeIsSet) {
65 pz = pabs * TMath::Cos(theta);
66 pt = pabs * TMath::Sin(theta);
67 }
else if (mPtRangeIsSet) {
68 pz = pt / TMath::Tan(theta);
71 px = pt * TMath::Cos(phi);
72 py = pt * TMath::Sin(phi);
74 double vx = 0., vy = 0., vz = 0.;
75 double etot = TMath::Sqrt(px * px + py * py + pz * pz + mass * mass);
76 return TParticle(mPDG, 1 , -1 , -1 ,
77 -1 , -1 , px, py, pz, etot, vx, vy, vz, 0. );