#ifndef PNDMVDRIEMANNVERTEXFINDERTASK_H_ #define PNDMVDRIEMANNVERTEXFINDERTASK_H_ #include #include "FairTask.h" //#include "PndSdsHit.h" #include "TH1F.h" #include "PndTrackCand.h" #include "PndMCTrack.h" #include "TString.h" #include "stdio.h" class PndMvdRiemannVertexFinderTask : public FairTask { public: PndMvdRiemannVertexFinderTask(); virtual ~PndMvdRiemannVertexFinderTask(); PndMvdRiemannVertexFinderTask(const PndMvdRiemannVertexFinderTask& ) = delete; PndMvdRiemannVertexFinderTask& operator=(const PndMvdRiemannVertexFinderTask& ) = delete; /** Virtual method Init **/ virtual void SetParContainers(); virtual InitStatus Init(); virtual InitStatus ReInit(); /** Virtual method Exec **/ virtual void Exec(Option_t* opt); virtual void FinishEvent(); //void PrintResult(); // not implemented void SetVerbose(Int_t verbose){ fVerbose = verbose;}; void SetVertexCut(double cut){ fVertexCut =cut;}; TH1F* delta; TH1F* wrongV; std::pair eff; std::pair ghosts; private: TString fHitBranch; TString fHitBranch2; TString fTrackBranch; TString fIdealTrackCandBranch; TString fMCTrackBranch; int fEventNr; int fVerbose; double fVertexCut; TClonesArray* fHitArray; TClonesArray* fHitArray2; TClonesArray* fTrackCandArray; // TClonesArray* fRiemannTrackArray; TClonesArray* fTrackArray; TClonesArray* fIdealTrackCandArray; TClonesArray* fMCTrackArray; TClonesArray* fVertex; TClonesArray* fMCVertex; bool CheckRecoTrack(PndTrackCand *cand,PndMCTrack* myTrack); bool CheckVertex(std::vector Combination, std::vector< std::pair > PairCand); bool CheckTwoCands(int first, int second); int FoundCandInMCCands(int candN); void refit(std::vector& CheckedCand); void FindVertex(std::vector CheckedCand,std::vector< std::pair >& PairCand,std::vector< std::pair >& TrueMCCand, std::vector< std::pair >& FalseMCCand,std::vector< std::pair >& MCCand, int& MaxIndex); void CalcEfficiency(std::vector< std::pair > TrueMCCand, std::vector< std::pair > FalseMCCand,std::vector< std::pair > MCCand); void Register(); void Reset(); void ProduceHits(); ClassDef(PndMvdRiemannVertexFinderTask,1); }; #endif /*PndMvdRiemannVertexFinderTask_H_*/