10 #include <FairParticle.h> 
   11 #include <FairPrimaryGenerator.h> 
   12 #include <FairRunSim.h> 
   14 #include <TDatabasePDG.h> 
   16 #include <TObjArray.h> 
   18 #include <TParticle.h> 
   19 #include <TParticlePDG.h> 
   27 constexpr 
auto cRED = 
"\033[1;31m";
 
   30 constexpr 
auto cGREEN = 
"\033[1;32m";
 
   31 constexpr 
auto cBLUE = 
"\033[1;34m";
 
   42    : fMult(0), fPx(0.), fPy(0.), fPz(0.), fR(0.), fz(0.), fOffsetX(0.), fOffsetY(0.), fVx(0.), fVy(0.), fVz(0.),
 
   52    : fMult(0), fPx(0.), fPy(0.), fPz(0.), fR(0.), fz(0.), fOffsetX(0.), fOffsetY(0.), fVx(0.), fVy(0.), fVz(0.),
 
   56    FairRunSim *fRun = FairRunSim::Instance();
 
   57    TObjArray *UserIons = fRun->GetUserDefIons();
 
   58    TObjArray *UserParticles = fRun->GetUserDefParticles();
 
   59    FairParticle *part = 
nullptr;
 
   60    fIon = 
dynamic_cast<FairIon *
>(UserIons->FindObject(ionName)); 
 
   65       fPx = Double_t(
fIon->GetA()) * px;
 
   66       fPy = Double_t(
fIon->GetA()) * py;
 
   67       fPz = Double_t(
fIon->GetA()) * pz;
 
   74       part = 
dynamic_cast<FairParticle *
>(UserParticles->FindObject(ionName));
 
   77          TParticle *particle = part->GetParticle();
 
   79          fPx = Double_t(particle->GetMass() / 0.92827231) * px;
 
   80          fPy = Double_t(particle->GetMass() / 0.92827231) * py;
 
   81          fPz = Double_t(particle->GetMass() / 0.92827231) * pz;
 
   87    if (
fIon == 
nullptr && part == 
nullptr) {
 
   88       cout << 
"-E- AtTPCIonGenerator: Ion or Particle is not defined !" << endl;
 
   89       Fatal(
"AtTPCIonGenerator", 
"No FairRun instantised!");
 
   94                                      Double_t pz, Double_t Ex, Double_t m, Double_t ener, Double_t eLoss)
 
   95    : fMult(mult), fPx(Double_t(a) * px), fPy(Double_t(a) * py), fPz(Double_t(a) * pz), fR(0.), fz(0.), fOffsetX(0.),
 
   96      fOffsetY(0.), fVx(0.), fVy(0.), fVz(0.), fIon(nullptr), fQ(0), fNomEner(ener), fMaxEnLoss(eLoss < 0 ? ener : eLoss)
 
  100    fIon = 
new FairIon(TString::Format(
"FairIon%d", 
fgNIon).Data(), z, a, q, Ex, m); 
 
  101    cout << 
" Beam Ion mass : " << 
fIon->GetMass() << endl;
 
  104    FairRunSim *run = FairRunSim::Instance();
 
  106       cout << 
"-E- FairIonGenerator: No FairRun instantised!" << endl;
 
  107       Fatal(
"FairIonGenerator", 
"No FairRun instantised!");
 
  110    run->AddNewIon(
fIon);
 
  115    fIon->SetExcEnergy(eExc);
 
  131    auto Phi = gRandom->Uniform(0, 360) * TMath::DegToRad();
 
  132    auto SpotR = gRandom->Uniform(0, 
fR);
 
  147    TParticlePDG *thisPart = TDatabasePDG::Instance()->GetParticle(
fIon->GetName());
 
  149       cout << 
"-W- FairIonGenerator: Ion " << 
fIon->GetName() << 
" not found in database!" << endl;
 
  153    int pdgType = thisPart->PdgCode();
 
  160          Double_t Er = gRandom->Uniform(0., 
fMaxEnLoss);
 
  170       for (Int_t i = 0; i < 
fMult; i++)