13 #include "TClonesArray.h"
14 #include "TParticlePDG.h"
21 #include "FairRootManager.h"
23 #include "FairRunAna.h"
24 #include "FairRuntimeDb.h"
25 #include "../pnddata/PndMCTrack.h"
47 FairRootManager* ioman = FairRootManager::Instance();
49 std::cout <<
"-E- PndHypPidIdealTask::Init: "<<
"RootManager not instantiated!" << std::endl;
55 std::cout <<
"-W- PndHypPidIdealTask::Init: "<<
"No "<<
fBranchName<<
" array!" << std::endl;
59 fMcArray=(TClonesArray*) ioman->GetObject(
"MCTrack");
61 std::cout <<
"-W- PndHypPidIdealTask::Init: "<<
"No McTruth array!" << std::endl;
66 ioman->Register(
"PndHypPidCand",
"PndHyp ideal tracklets",
fTrackOutputArray, kTRUE);
69 std::cout <<
"-W- PndHypPidIdealTask::Init: "<<
"No pid algorithm named '"<<
fAlgoName <<
"'! Names are 'ideal', 'simple', 'advanced'" << std::endl;
92 std::map<int, PndHypPidCand*> pidcand;
100 int track = mvdpoint->GetTrackID();
103 double dx = ( Out - In ).Mag();
104 double dE = mvdpoint->GetEnergyLoss();
106 mvdpoint->Momentum(momentum);
108 std::cout<<dE<<
" "<<dx<<
" "<<momentum.Mag()<<std::endl;
110 if(dx>0)pidcand[
track]->AddHypHit(dE, dx, momentum.Mag());
114 for(std::map<int, PndHypPidCand*>::iterator it=pidcand.begin();it!=pidcand.end();it++) {
115 int track = it->first;
118 std::cout<<
" track to be piditized "<<std::endl;
121 new ((*fTrackOutputArray)[size])
PndHypPidCand(*(pidcand[track]));
virtual void Exec(Option_t *opt)
virtual void SetParContainers()
void PositionIn(TVector3 &pos)
PndHypPidIdealTask(const TString algoName="ideal")
TClonesArray * fPointArray
void PositionOut(TVector3 &pos)
TClonesArray * fTrackOutputArray
virtual InitStatus Init()
static void CalcLikelihood(PndHypPidCand *cand)