PandaRoot
PndMvdRiemannVertexFinderTask.h
Go to the documentation of this file.
1 #ifndef PNDMVDRIEMANNVERTEXFINDERTASK_H_
2 #define PNDMVDRIEMANNVERTEXFINDERTASK_H_
3 
4 #include <iostream>
5 #include "FairTask.h"
6 //#include "PndSdsHit.h"
7 #include "TH1F.h"
8 #include "PndTrackCand.h"
9 #include "PndMCTrack.h"
10 #include "TString.h"
11 #include "TClonesArray.h"
12 #include "stdio.h"
13 
14 class PndMvdRiemannVertexFinderTask : public FairTask {
15  public:
20 
22  virtual void SetParContainers();
23  virtual InitStatus Init();
24  virtual InitStatus ReInit();
25 
27  virtual void Exec(Option_t *opt);
28  virtual void FinishEvent();
29 
30  // void PrintResult(); // not implemented
31  void SetVerbose(Int_t verbose) { fVerbose = verbose; };
32  void SetVertexCut(double cut) { fVertexCut = cut; };
33  TH1F *delta;
34  TH1F *wrongV;
35 
36  std::pair<double, double> eff;
37  std::pair<double, double> ghosts;
38 
39  private:
40  TString fHitBranch;
41  TString fHitBranch2;
42  TString fTrackBranch;
43  TString fIdealTrackCandBranch;
44  TString fMCTrackBranch;
45 
46  int fEventNr;
47  int fVerbose;
48  double fVertexCut;
49 
50  TClonesArray *fHitArray;
51  TClonesArray *fHitArray2;
52  TClonesArray *fTrackCandArray;
53  // TClonesArray* fRiemannTrackArray;
54  TClonesArray *fTrackArray;
55  TClonesArray *fIdealTrackCandArray;
56  TClonesArray *fMCTrackArray;
57 
58  TClonesArray *fVertex;
59  TClonesArray *fMCVertex;
60 
61  bool CheckRecoTrack(PndTrackCand *cand, PndMCTrack *myTrack);
62 
63  bool CheckVertex(std::vector<int> Combination, std::vector<std::pair<int, int>> PairCand);
64  bool CheckTwoCands(int first, int second);
65  int FoundCandInMCCands(int candN);
66  void refit(std::vector<int> &CheckedCand);
67  void FindVertex(std::vector<int> CheckedCand, std::vector<std::pair<int, int>> &PairCand, std::vector<std::pair<int, int>> &TrueMCCand,
68  std::vector<std::pair<int, int>> &FalseMCCand, std::vector<std::pair<int, int>> &MCCand, int &MaxIndex);
69  void CalcEfficiency(std::vector<std::pair<int, int>> TrueMCCand, std::vector<std::pair<int, int>> FalseMCCand, std::vector<std::pair<int, int>> MCCand);
70 
71  void Register();
72  void Reset();
73  void ProduceHits();
74 
75  ClassDef(PndMvdRiemannVertexFinderTask, 1);
76 };
77 
78 #endif /*PndMvdRiemannVertexFinderTask_H_*/
virtual InitStatus ReInit()
virtual InitStatus Init()
virtual void Exec(Option_t *opt)
PndMvdRiemannVertexFinderTask & operator=(const PndMvdRiemannVertexFinderTask &)=delete