PandaRoot
PndAnalysis.h
Go to the documentation of this file.
1 #ifndef PNDANALYSIS_H
2 #define PNDANALYSIS_H 1
3 
4 #include <string>
5 #include <vector>
6 #include <array>
7 
8 #include "TString.h"
9 #include "TVector3.h"
10 #include "TLorentzVector.h"
11 #include "TMatrixD.h"
12 
13 #include "RhoCandList.h"
14 #include "FairRootManager.h"
15 #include "FairTrackParP.h"
16 
17 class TChain;
18 class TClonesArray;
19 class TBranch;
20 
21 class TDatabasePDG;
22 class FairMCEventHeader;
23 class PndAnaPidSelector;
24 class PndAnaPidCombiner;
25 class PndMCTrack;
26 class PndTrack;
29 
30 // class PndEventInfo;
31 
32 class TGeant3;
33 
34 class PndAnalysis {
35  public:
36  PndAnalysis(TString tname1 = "", TString tname2 = "", TString algnamec = "PidAlgoIdealCharged", TString algnamen = "PidAlgoIdealNeutral");
37  virtual ~PndAnalysis();
38 
39  void Rewind();
40  void Reset() { Rewind(); }
41  Int_t GetEvent(Int_t n = -1);
42  void GetEventInTask();
43  FairMCEventHeader *GetEventHeader();
44  Int_t GetEntries();
45  Bool_t FillList(RhoCandList &l, TString listkey = "All", TString pidTcaNames = "", int trackHypothesis = -1);
46  void SetGoodTrackCriterion(TString crit="veryLoose");
47  void SetVerbose(Int_t level) { fVerbose = level; }
48  // void SetPidChargedName(TString s) {fChargedPidName = s;}
49  // void SetPidNeutralName(TString s) {fNeutralPidName = s;}
50  // void SetTracksName(TString s) {fTracksName = s;}
51  // void SetTracksName2(TString s) {fTracksName2 = s;}
52 
53  Bool_t PropagateToIp(RhoCandidate *cand);
54  Bool_t PropagateToZAxis(RhoCandidate *cand);
55  Bool_t PropagateToPoint(RhoCandidate *cand, TVector3 mypoint);
56  Bool_t PropagateToPlane(RhoCandidate *cand, TVector3 origin, TVector3 dj, TVector3 dk);
57 
59  FairTrackParP GetFirstPar(RhoCandidate *cand);
60 
61  Bool_t ResetCandidate(RhoCandidate *cand);
62  Bool_t ResetDaughters(RhoCandidate *cand);
63  Bool_t McTruthMatch(RhoCandidate *cand, Int_t level = 2, bool verbose = false);
64  std::vector<int> McTruthMatch(RhoCandList &list, Int_t level = 2, bool verbose = false);
65  // this also allows match, when some soft photons are missing in decay
66  void McMatchAllowPhotos(int maxn = 1, double thresh = 0.05)
67  {
68  fPhotosMax = maxn;
69  fPhotosThresh = thresh;
70  }
71 
72  // FIXME: This is an aweful solution to access the correct
73  // track array from a fitter object. [R.K.03'11]
74  // todo:removed this because fuck it
75  // TClonesArray* GetTrackArrayPointer() const {return fTracks;};
76 
77  Bool_t Propagator(int mode, FairTrackParP &tStart, RhoCandidate *cand, TVector3 point = TVector3(0, 0, 0), Bool_t skipcov = kFALSE, Bool_t overwrite = kFALSE,
78  TVector3 planej = TVector3(1, 0, 0), TVector3 planek = TVector3(0, 1, 0));
79 
80  protected:
81  void Init();
82  virtual void BuildMcCands();
83  Bool_t GetMcCandList(RhoCandList &l);
84  void ReadRecoCandidates();
85  void Cleanup();
86  // void ReadCandidates();
87 
88  TClonesArray *ReadTCA(TString tcaname);
89 
90  Bool_t MctMatch(RhoCandidate &c, RhoCandList &mct, Int_t level = 2, bool verbose = false) { return MctMatch(&c, mct, level, verbose); };
91  Bool_t MctMatch(RhoCandidate *c, RhoCandList &mct, Int_t level = 2, bool verbose = false);
92  // Private Member Variables
93 
94  FairRootManager *fRootManager;
99  Int_t fEvtCount;
101  Bool_t fEventRead;
103  Int_t fVerbose;
104  Int_t fPhotosMax;
105  Double_t fPhotosThresh;
106 
107  std::map<int, RhoCandidate *> fMcPresenceMap;
108 
109  std::array<TClonesArray *, 6> fChargedCands; // 0-4 for trk hypothesis, 5 for fallback
110  std::array<TClonesArray *, 6> fBremCorr; // 0-4 for trk hypothesis, 5 for fallback
111  TClonesArray *fNeutralCands;
112  std::array<TClonesArray *, 6> fChargedProbability; // 0-4 for trk hypothesis, 5 for fallback
113  // TClonesArray* fNeutralProbability;
114  std::array<TClonesArray *, 6> fTracks; // 0-4 for trk hypothesis, 5 for fallback
115  std::array<TClonesArray *, 6> fTracks2; // 0-4 for trk hypothesis, 5 for fallback
116  TClonesArray *fMcCands;
117  TClonesArray *fMcTracks;
118 
119  std::array<RhoCandList, 6> fChargedCandList; // 0-4 for trk hypothesis, 5 for fallback
123 
126  TString fTracksName;
127  TString fTracksName2;
128 
129  TString fPidHypoStr[6]; // 0-4 for trk hypothesis, 5 for fallback
130  Int_t fHypoPdg[6]; // 0-4 for trk hypothesis, 5 for fallback
131  Bool_t fHypoFlagCharged[6];
132  Int_t fDefaultHypo; // Default hypothesis (pion), used if no hypo is specified by user
133  ClassDef(PndAnalysis, 0);
134 };
135 
136 #endif
Int_t GetEntries()
Int_t fHypoPdg[6]
Definition: PndAnalysis.h:130
Bool_t ResetCandidate(RhoCandidate *cand)
Bool_t PropagateToPoint(RhoCandidate *cand, TVector3 mypoint)
TClonesArray * fMcCands
Definition: PndAnalysis.h:116
Bool_t fBuildMcCands
Definition: PndAnalysis.h:102
FairTrackParP GetFirstPar(RhoCandidate *cand)
RhoGoodPhotonSelector * fGoodPhotonSelector
Definition: PndAnalysis.h:97
std::array< TClonesArray *, 6 > fTracks
Definition: PndAnalysis.h:114
Int_t fVerbose
Definition: PndAnalysis.h:103
std::array< TClonesArray *, 6 > fBremCorr
Definition: PndAnalysis.h:110
Bool_t PropagateToZAxis(RhoCandidate *cand)
Double_t fPhotosThresh
Definition: PndAnalysis.h:105
RhoCandList fMcCandList
Definition: PndAnalysis.h:122
PndAnaPidSelector * fPidSelector
Definition: PndAnalysis.h:95
TString fNeutralPidName
Definition: PndAnalysis.h:125
Bool_t FillList(RhoCandList &l, TString listkey="All", TString pidTcaNames="", int trackHypothesis=-1)
Bool_t MctMatch(RhoCandidate &c, RhoCandList &mct, Int_t level=2, bool verbose=false)
Definition: PndAnalysis.h:90
PndTrack * GetTrack(RhoCandidate *cand)
ClassDef(PndAnalysis, 0)
Int_t fEvtCount
Definition: PndAnalysis.h:99
Bool_t GetMcCandList(RhoCandList &l)
Bool_t PropagateToPlane(RhoCandidate *cand, TVector3 origin, TVector3 dj, TVector3 dk)
Int_t fDefaultHypo
Flag to check which hypo lists exists //0-4 for trk hypothesis, 5 for fallback.
Definition: PndAnalysis.h:132
void SetGoodTrackCriterion(TString crit="veryLoose")
std::array< TClonesArray *, 6 > fChargedCands
Definition: PndAnalysis.h:109
PndAnaPidCombiner * fPidCombiner
Definition: PndAnalysis.h:96
void GetEventInTask()
virtual ~PndAnalysis()
void Rewind()
std::array< TClonesArray *, 6 > fTracks2
Definition: PndAnalysis.h:115
RhoCandList fAllCandList
Definition: PndAnalysis.h:121
TClonesArray * fMcTracks
Definition: PndAnalysis.h:117
std::array< RhoCandList, 6 > fChargedCandList
Definition: PndAnalysis.h:119
PndAnalysis(TString tname1="", TString tname2="", TString algnamec="PidAlgoIdealCharged", TString algnamen="PidAlgoIdealNeutral")
void ReadRecoCandidates()
TString fChargedPidName
Definition: PndAnalysis.h:124
virtual void BuildMcCands()
std::array< TClonesArray *, 6 > fChargedProbability
Definition: PndAnalysis.h:112
void Reset()
Definition: PndAnalysis.h:40
void Cleanup()
Bool_t Propagator(int mode, FairTrackParP &tStart, RhoCandidate *cand, TVector3 point=TVector3(0, 0, 0), Bool_t skipcov=kFALSE, Bool_t overwrite=kFALSE, TVector3 planej=TVector3(1, 0, 0), TVector3 planek=TVector3(0, 1, 0))
FairMCEventHeader * GetEventHeader()
RhoGoodTrackSelector * fGoodTrackSelector
Definition: PndAnalysis.h:98
TString fPidHypoStr[6]
Definition: PndAnalysis.h:129
TString fTracksName2
Definition: PndAnalysis.h:127
FairRootManager * fRootManager
Definition: PndAnalysis.h:94
void McMatchAllowPhotos(int maxn=1, double thresh=0.05)
Definition: PndAnalysis.h:66
TString fTracksName
Definition: PndAnalysis.h:126
Bool_t PropagateToIp(RhoCandidate *cand)
RhoCandList fNeutralCandList
Definition: PndAnalysis.h:120
Int_t fChainEntries
Definition: PndAnalysis.h:100
Bool_t McTruthMatch(RhoCandidate *cand, Int_t level=2, bool verbose=false)
Int_t fPhotosMax
Definition: PndAnalysis.h:104
Bool_t fHypoFlagCharged[6]
Definition: PndAnalysis.h:131
Int_t GetEvent(Int_t n=-1)
TClonesArray * ReadTCA(TString tcaname)
std::map< int, RhoCandidate * > fMcPresenceMap
Definition: PndAnalysis.h:107
Bool_t fEventRead
Definition: PndAnalysis.h:101
TClonesArray * fNeutralCands
Definition: PndAnalysis.h:111
Bool_t ResetDaughters(RhoCandidate *cand)
void SetVerbose(Int_t level)
Definition: PndAnalysis.h:47