10 #include "FairPrimaryGenerator.h"
11 #include "TParticlePDG.h"
12 #include "TDatabasePDG.h"
16 fPDGType(0),fMult(0),fPDGMass(0),fPtMin(0),fPtMax(0),
17 fPhiMin(0),fPhiMax(0),fEtaMin(0),fEtaMax(0),fYMin(0),fYMax(0),
19 fX1(0),fY1(0),fX2(0),fY2(0),
20 fEtaRangeIsSet(0),fYRangeIsSet(0),fThetaRangeIsSet(0),
21 fCosThetaIsSet(0),fInversePIsSet(0),fPtRangeIsSet(0),fPRangeIsSet(0),
22 fPointVtxIsSet(0), fBoxVtxIsSet(0)
29 fPDGType(pdgid),fMult(mult),fPDGMass(0),fPtMin(0),fPtMax(0),
30 fPhiMin(0),fPhiMax(0), fEtaMin(0),fEtaMax(0),fYMin(0),fYMax(0),
32 fX1(0),fY1(0),fX2(0),fY2(0),
33 fEtaRangeIsSet(0),fYRangeIsSet(0),fThetaRangeIsSet(0),
34 fCosThetaIsSet(0),fInversePIsSet(0),fPtRangeIsSet(0),fPRangeIsSet(0),
35 fPointVtxIsSet(0), fBoxVtxIsSet(0)
47 Fatal(
"Init()",
"PndBoxGenerator: phi range is too wide: %f<phi<%f",
50 Fatal(
"Init()",
"PndBoxGenerator: Cannot set P and Pt ranges simultaneously");
52 Fatal(
"Init()",
"PndBoxGenerator: Cannot set P and Y ranges simultaneously");
56 Fatal(
"Init()",
"PndBoxGenerator: Cannot set Y, Theta or Eta ranges simultaneously");
58 Fatal(
"Init()",
"PndBoxGenerator: Cannot set point and box vertices simultaneously");
60 Fatal(
"Init()",
"PndBoxGenerator: Cannot use P == 0 as limit for inverse momentum distribution");
63 TDatabasePDG* pdgBase = TDatabasePDG::Instance();
65 if (! particle) Fatal(
"PndBoxGenerator",
"PDG code %d not defined.",
fPDGType);
78 Double32_t pabs,
phi,
pt,
theta=0,
eta,
y, mt, px, py,
pz, pinv=0;
81 for (Int_t k = 0; k <
fMult; k++) {
115 theta = 2*TMath::ATan(TMath::Exp(-
eta));
120 pz = mt * TMath::SinH(y);
141 printf(
"BoxGen: kf=%d, p=(%.2f, %.2f, %.2f) GeV, x=(%.1f, %.1f, %.1f) cm\n",
friend F32vec4 acos(const F32vec4 &a)
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
friend F32vec4 cos(const F32vec4 &a)
static T Sqrt(const T &x)
FairPrimaryGenerator * primGen
TString pt(TString pts, TString exts="px py pz")
virtual Bool_t ReadEvent(FairPrimaryGenerator *primGen)
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360)