11 #include "TClonesArray.h"
12 #include "TParticlePDG.h"
17 #include "FairRootManager.h"
19 #include "FairRuntimeDb.h"
36 fHitBranch(
"MVDHitsPixel"),
37 fHitBranch2(
"MVDHitsStrip"),
38 fMCTrackBranch(
"MCTrack"),
39 fIdealTrackBranch(
"MVDIdealTrackCand"),
40 fFTrackBranch(
"MVDRiemannTrackCand"),
48 fTrackCandArray(NULL),
49 fIdealTrackCandArray(NULL),
64 InitStatus stat=kSUCCESS;
72 FairRootManager* ioman = FairRootManager::Instance();
76 std::cout <<
"-E- PndMvdRiemannTrackFinderTask::Init: "
77 <<
"RootManager not instantiated!" << std::endl;
84 std::cout <<
"-W- PndMvdRiemannTrackFinderTask::Init: " <<
"No hitArray!" << std::endl;
90 std::cout <<
"-W- PndMvdRiemannTrackFinderTask::Init: " <<
"No hitArray2!" << std::endl;
96 std::cout <<
"-W- PndMvdRiemannTrackFinderTask::Init: " <<
"No MCtracks!" << std::endl;
102 std::cout <<
"-W- PndMvdRiemannTrackFinderTask::Init: " <<
"No IdealTrackCands!" << std::endl;
107 std::cout <<
"-W- PndMvdRiemannTrackFinderTask::Init: " <<
"No FTrackCands!" << std::endl;
112 eff0H =
new TH2F(
"eff0H",
"eff0H",Nbin,0.1,1,Nbin,15,150);
113 effH =
new TH2F(
"effH",
"effH",Nbin,0.1,1,Nbin,15,150);
115 GhH =
new TH2F(
"GhH",
"GhH",Nbin,0.1,1,Nbin,15,150);
117 std::cout <<
"-I- PndMvdRiemannTrackFinderTask: Initialisation successfull" << std::endl;
125 std::vector<PndTrackCand*> RecoT;
132 RecoT.push_back(cand);
134 double Theta=180.0*Pvec.Theta()/
TMath::Pi();
136 eff0H->Fill(P,Theta);
140 std::cout<<
" Event n: "<<
fEventNr++<<std::endl;
151 unsigned int detIDi, hitIDi;
152 unsigned int detIDj, hitIDj;
157 if ((
int)detIDi == FairRootManager::Instance()->GetBranchId(
fHitBranch))
159 else if ((
int)detIDi == FairRootManager::Instance()->GetBranchId(
fHitBranch2))
163 for(
unsigned int j=0;j<cand->
GetNHits();j++){
167 if ((
int)detIDj == FairRootManager::Instance()->GetBranchId(
fHitBranch))
169 else if ((
int)detIDj == FairRootManager::Instance()->GetBranchId(
fHitBranch2))
173 if ((pointI!=0) && (pointJ!=0) && (
i!=j)){
182 std::cout <<
"Less then 3 base points in RecoTrack"<<
" "<<cand->
GetNHits()<<
" "<<count <<std::endl;
192 unsigned int detidRC, hitidRC;
193 unsigned int detidF, hitidF;
195 for(
unsigned int trackRC=0;trackRC<RecoT.size();trackRC++){
200 for(
unsigned int iRC=0;iRC<RecoT[trackRC]->GetNHits();iRC++){
201 detidRC=RecoT[trackRC]->GetSortedHit(iRC).GetDetId();
202 hitidRC=RecoT[trackRC]->GetSortedHit(iRC).GetHitId();
203 if (detidRC==detidF && hitidRC==hitidF){
211 std::cout<<
"TRUE FOUND"<<std::endl;
213 double Theta=180.0*Pvec.Theta()/
TMath::Pi();
216 RecoT.erase(RecoT.begin()+trackRC);
220 if ((trackRC)==RecoT.size()-1){
221 std::cout<<
" FALSE FOUND"<<std::endl;
234 unsigned int detID, hitID;
240 if ((
int)detID == FairRootManager::Instance()->GetBranchId(
fHitBranch))
242 else if ((
int)detID == FairRootManager::Instance()->GetBranchId(
fHitBranch2))
247 hit.
setXYZ(point->GetX(),point->GetY(),point->GetZ());
248 hit.
setDXYZ(point->GetDx(),point->GetDy(),point->GetDz());
252 if (point->GetZ()>0){
264 if (sign) Theta=(TMath::ATan(TMath::Power(
TMath::Tan(TMath::ACos(dip)),-1)))*180/
TMath::Pi();
virtual void FinishEvent()
TVector3 GetPosition() const
virtual InitStatus ReInit()
TClonesArray * fHitArray2
void AddGhostTrack(int trackF)
PndMvdRiemannTrackFinderTaskEff()
PndTrackCandHit GetSortedHit(UInt_t i)
TVector3 GetMomentum() const
virtual InitStatus Init()
void setDXYZ(double dx, double dy, double dz)
void ComparingFandR(std::vector< PndTrackCand * > RecoT)
void AddHit(UInt_t detId, UInt_t hitId, Double_t rho)
void setXYZ(double x, double y, double z)
void refit(bool withErrorCalc=true)
virtual ~PndMvdRiemannTrackFinderTaskEff()
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
TClonesArray * fMCTracksArray
bool CheckRecoTrack(PndTrackCand *cand, PndMCTrack *myTrack)
TString fIdealTrackBranch
virtual void Exec(Option_t *opt)
void szFit(bool withErrorCalc=true)
void addHit(PndRiemannHit &hit)
TClonesArray * fTrackCandArray
Int_t GetMotherID() const
TClonesArray * fIdealTrackCandArray
virtual void SetParContainers()
ClassImp(PndMvdRiemannTrackFinderTaskEff)