25 if (fVerbose > 1) cout <<
"=========================== PID init started ====================" << endl;
27 db = TDatabasePDG::Instance();
31 db->AddParticle(
"D",
"D",1.876123928,
true, 0, 3,
"Core", 1000010020, 1000010020, 1000010020);
32 db->AddParticle(
"T",
"T",2.809432115,
true, 0, 3,
"Core", 1000010030, 1000010030, 1000010030);
33 db->AddParticle(
"He3",
"He3",2.809413523,
true, 0, 6,
"Core", 1000020030, 1000020030, 1000020030);
34 db->AddParticle(
"He4",
"He4",3.728401326,
true, 0, 6,
"Core", 1000020040, 1000020040, 1000020040);
37 FairRootManager* ioman = FairRootManager::Instance();
38 if (NULL == ioman) Fatal(
"Init",
"FairRootManager is not instantiated");
40 fGlobalTracksArray = (TClonesArray*) ioman->GetObject(fGlobalTracksBranchName);
41 if (!fGlobalTracksArray) {
42 cout <<
"PID::Init(): branch " << fGlobalTracksBranchName <<
" not found! Task will be deactivated" << endl;
47 if (fVerbose > 1) cout <<
"=========================== PID init finished ===================" << endl;
71 Int_t size = fGlobalTracksArray->GetEntriesFast();
72 Double_t rigidity, beta400, beta700, mass, charge, p;
74 for (Int_t iTrack = 0; iTrack < size; ++iTrack){
76 vector<Double_t> vectorTof400;
77 vector<Double_t> vectorTof700;
80 Int_t pdg = EnumToPdg(iSort);
81 TParticlePDG* iParticle = db->GetParticle(pdg);
82 rigidity = track->
GetP();
85 mass = iParticle->Mass();
86 charge = iParticle->Charge()/3;
88 if (beta400 > -999) vectorTof400.push_back(EstimateProbability(p, beta400, mass, fModelPower));
89 if (beta700 > -999) vectorTof700.push_back(EstimateProbability(p, beta700, mass, fModelPower));
91 NormalizeVector(vectorTof400);
92 NormalizeVector(vectorTof700);
99Double_t BmnPid::EstimateProbability(Double_t p, Double_t beta, Double_t mass, Int_t power){