40 TDatabasePDG *pdgBase = TDatabasePDG::Instance();
41 TParticlePDG *particle = pdgBase->GetParticle(fPDGType);
43 Fatal(
"CbmAnaHypYPtGenerator",
"PDG code %d not defined.", fPDGType);
46 fPDGMass = particle->Mass();
48 fDistPt =
new TF1(
"distPt",
"x*exp(-sqrt(x*x+[1]*[1])/[0])", fPtMin, fPtMax);
49 fDistPt->SetParameters(fT, fPDGMass, fY0, fSigma);
50 Info(
"Init",
"pdg=%i y0=%4.2f sigma_y=%4.2f T_pt=%6.4f", fPDGType, fY0, fSigma, fT);
58 Double_t phi, pt, y, mt, px, py, pz;
60 if (fYield > 0 && gRandom->Rndm() > fYield)
return kTRUE;
64 for (Int_t k = 0; k < fMult; k++) {
66 phi = gRandom->Uniform(0, TMath::TwoPi());
67 pt = fDistPt->GetRandom(fPtMin, fPtMax);
68 px = pt * TMath::Cos(phi);
69 py = pt * TMath::Sin(phi);
70 y = gRandom->Gaus(fY0, fSigma);
71 mt = TMath::Sqrt(fPDGMass * fPDGMass + pt * pt);
72 pz = mt * TMath::SinH(y);
73 Info(
"ReadEvent",
"Particle generated: pdg=%i pt=%f y=%f\n", fPDGType, pt, y);
74 primGen->AddTrack(fPDGType, px, py, pz, 0, 0, 0);