FairRoot/PandaRoot
PndPidCorrelator.h
Go to the documentation of this file.
1 #ifndef PID_CORRELATOR_H
2 #define PID_CORRELATOR_H
3 
4 // **************************************************************************
5 // Author: Stefano Spataro e-mail: spataro@to.infn.it
6 //
7 // pid correlator
8 //
9 // Created: 03-07-09
10 // Modified:
11 //
12 // **************************************************************************
13 
14 #include "TNtuple.h"
15 #include "TString.h"
16 #include "TClonesArray.h"
17 #include <map>
18 
19 #include "FairTask.h"
20 #include "FairField.h"
21 #include "FairTrackParH.h"
22 #include "FairGeanePro.h"
23 #include "FairGeane.h"
24 
25 #include "PndTrack.h"
26 #include "PndGeoHandling.h"
27 #include "PndRecoKalmanFit.h"
28 #include "PndPidCorrPar.h"
29 #include "PndPidCandidate.h"
30 #include "PndEmcXClMoments.h"
31 #include "PndEmcGeoPar.h"
32 #include "PndEmcErrorMatrix.h"
34 #include "PndEmcErrorMatrixPar.h"
35 #include "PndGeoSttPar.h"
36 #include "PndGeoFtsPar.h"
37 
38 using std::map;
39 using std::vector;
40 
41 class TGeant3;
42 class PndPidCorrelator : public FairTask {
43 
44 protected:
45 
46  TClonesArray* fMcTrack;
47  TClonesArray* fTrack;
48  TClonesArray* fTrackID;
49  TClonesArray* fTrack2;
50  TClonesArray* fTrackID2;
51  TClonesArray* fPidChargedCand;
52  TClonesArray* fPidNeutralCand;
53  TClonesArray* fMdtTrack;
54 
55  TClonesArray* fMvdHitsStrip;
56  TClonesArray* fMvdHitsPixel;
57  TClonesArray* fTofHit;
58  TClonesArray* fTofPoint;
59  TClonesArray* fFtofHit;
60  TClonesArray* fFtofPoint;
61  TClonesArray* fEmcCluster;
62  TClonesArray* fEmcBump;
63  TClonesArray* fEmcDigi;
64  TClonesArray* fMdtPoint;
65  TClonesArray* fMdtHit;
66  TClonesArray* fMdtTrk;
67  TClonesArray* fDrcPoint;
68  TClonesArray* fDrcHit;
69  TClonesArray* fDskParticle;
70  TClonesArray* fSttHit;
71  TClonesArray* fFtsHit;
72  TClonesArray* fRichPoint;
73  TClonesArray* fRichHit;
74 
82 
83  Short_t fDebugMode; // Fill ntuples for debug
84  Short_t fMvdMode; // MVD Mode: 0 no MVD, 1 MvdPoint, (2) MvdHit
85  Short_t fSttMode; // STT Mode: 0 no STT, 1 SttPoint, (2) SttHit
86  Short_t fFtsMode; // FTS Mode: 0 no FTS, 1 FtsPoint, (2) FtsHit
87  Short_t fTofMode; // TOF Mode: 0 no TOF, 1 -empty-, (2) TofHit
88  Short_t fFtofMode; // FTOF Mode:0 no FTOF,1 -empty-, (2) FTofHit
89  Short_t fEmcMode; // EMC Mode: 0 no EMC, 1 -empty-, (2) EmcCluster, 3 EmcBumps
90  Short_t fMdtMode; // MDT Mode: 0 no MDT, 1 -empty-, (2) MdtHit
91  Short_t fDrcMode; // DRC Mode: 0 no DRC, 1 -empty-, (2) DrcHit
92  Short_t fDskMode; // DSK Mode: 0 no DSK, 1 -empty-, (2) DskParticle
93  Short_t fRichMode; // RICH Mode: 0 no RICH, 1 -empty-, (2) RichHit
94 
95  Int_t fEmcClstCount; // Number of EMC clusters
96  Int_t fFscClstCount; // Number of FSC clusters
97 
98  Double_t fMvdELoss; // Energy Loss in MVD
99  Double_t fMvdPath; // MVD path crossed by the particle
100  Int_t fMvdHitCount; // Number of mvd hits
101 
102  map<Int_t, vector<Int_t> >mapMdtBarrel; // map of MDT barrel hits
103  map<Int_t, vector<Int_t> >mapMdtEndcap; // map of MDT endcap+muon filter hits
104  map<Int_t, vector<Int_t> >mapMdtForward; // map of MDT forward hits
105  Float_t mdtLayerPos[3][20]; // position of MDT layers
106  Float_t mdtIronThickness[3][20]; // thickness of iron layers
107 
108  map<Int_t, Bool_t> fClusterList; // List of clusters correlated to tracks
109  map<Int_t, Double_t> fClusterQ; // List of emc quaity correlated to clusters
110  TString fTrackBranch; // options to choose PndTrack branches
111 // TString fTrackIDBranch; // options to choose PndTrackID branches
112  TString fTrackBranch2; // options to choose 2nd PndTrack branches
113 // TString fTrackIDBranch2; // options to choose 2nd PndTrackID branches
114  TString fTrackOutBranch; // options to choose output branch
115  Bool_t fSimulation; // Switch simulation diagnostic
116  Bool_t fGeanePro; // Use GEANE propagation
117  Bool_t fMdtRefit; // Use MDT Kalman refit propagation
118  Bool_t fIdeal; // Ideal Correlation
119  Bool_t fCorrErrorProp; // Error propagation in correlation
120  Bool_t fMixMode; // Mix mode flag
121  Int_t fEventCounter; // Event number
122  Int_t fPidHyp; // particle hypothesis for propagation
123  Bool_t fIdealHyp; // Flag to use MC particle hypothesis
124  Bool_t fFast; // 0: normal; 1: no correlation/extrapolation/neutral
125  Bool_t fFlagCut; // kFALSE -> all the tracks; (kTRUE) -> store tracks only if flag>0
126  Bool_t fBackPropagate; // kFALSE -> do not propagate to IP; (kTRUE) -> propagate to IP
129  FairGeanePro* fGeanePropagator;
130  TFile *r; // File for debug ntuples
131  TNtuple *tofCorr; // Debug ntuple for tof correlation
132  TNtuple *ftofCorr; // Debug ntuple for ftof correlation
133  TNtuple *emcCorr; // Debug ntuple for emc correlation
134  TNtuple *fscCorr; // Debug ntuple for fsc correlation
135  TNtuple *mdtCorr; // Debug ntuple for mdt correlation
136  TNtuple *drcCorr; // Debug ntuple for drc correlation
137  TNtuple *dskCorr; // Debug ntuple for dsk correlation
138  TNtuple *richCorr; // Debug ntuple for rich correlation
139 
140  TString sDir; // Ntuple output directory
141  TString sFile; // Ntuple output file
142 
145 
149 
155  Bool_t GetTofInfo (FairTrackParH* helix, PndPidCandidate* pid);
156  Bool_t GetFtofInfo (FairTrackParH* helix, PndPidCandidate* pid);
157  Bool_t GetEmcInfo (FairTrackParH* helix, PndPidCandidate* pid);
158  Bool_t GetFscInfo (FairTrackParH* helix, PndPidCandidate* pid);
160  Bool_t GetDrcInfo (FairTrackParH* helix, PndPidCandidate* pid);
161  Bool_t GetDskInfo (FairTrackParH* helix, PndPidCandidate* pid);
162  Bool_t GetMdt2Info (FairTrackParH* helix, PndPidCandidate* pid);
163  Bool_t GetFMdtInfo (FairTrackParP* helix, PndPidCandidate* pid);
164  Bool_t GetRichInfo (FairTrackParH* helix, PndPidCandidate* pid);
165 
166  Bool_t MdtMapping(); // Mapping of MDT hits
167  Bool_t MdtGeometry(); // Mapping of MDT geometry
168 
169 public:
170 
171  virtual void Exec(Option_t * option);
172  virtual InitStatus Init(); //
173 
174  void Register();
175  void Reset();
176  void ResetEmcQ();
177 
178  PndPidCorrelator(const char *name, const char *title="Pnd Task");
180  virtual ~PndPidCorrelator();
181 
182  void SetOption(Option_t *option=" ") {fOption = option; fOption.ToLower();}
183  void SetDebugMode(Bool_t debug) { fDebugMode = debug; };
185  void SetMdtRefit(Bool_t mdt) { fMdtRefit = mdt; };
187  void SetBarrelTrackBranch(TString branch) { fTrackBranch = branch; };
188  void SetForwardTrackBranch(TString branch) { fTrackBranch2 = branch; };
189  void SetOutputBranch(TString branch) { fTrackOutBranch = branch; };
191  void SetIdeal(Bool_t id) { fIdeal = id; };
192  void SetFast(Bool_t fast) { fFast = fast; };
193  void SetCorrErrProp(Bool_t err) { fCorrErrorProp = err; };
194  void SetGeanePro(Bool_t gea = kTRUE) { fGeanePro = gea; };
195  void SetPidHyp(Int_t pid) { fPidHyp = pid; };
196  void SetIdealHyp(Bool_t opt = kTRUE) { fIdealHyp = opt; }
197  void SetFlagCut(Bool_t opt = kTRUE) { fFlagCut = opt; };
198  void SetBackPropagate(Bool_t opt =kTRUE){ fBackPropagate = opt; };
199 
200  void SetMvdMode(Short_t mode) { fMvdMode = mode; }; // MVD Mode: 0 no MVD
201  void SetSttMode(Short_t mode) { fSttMode = mode; }; // STT Mode: 0 no STT
202  void SetFtsMode(Short_t mode) { fFtsMode = mode; }; // FTS Mode: 0 no FTS
203  void SetTofMode(Short_t mode) { fTofMode = mode; }; // TOF Mode: 0 no TOF
204  void SetFtofMode(Short_t mode){ fFtofMode = mode; }; // FTOF Mode:0 no FTOF
205  void SetEmcMode(Short_t mode) { fEmcMode = mode; }; // EMC Mode: 0 no EMC
206  void SetMdtMode(Short_t mode) { fMdtMode = mode; }; // MDT Mode: 0 no MDT
207  void SetDrcMode(Short_t mode) { fDrcMode = mode; }; // DRC Mode: 0 no DRC
208  void SetDskMode(Short_t mode) { fDskMode = mode; }; // DSK Mode: 0 no DSK
209 
211  virtual void SetParContainers();
212  virtual void Finish();
213 
214 ClassDef(PndPidCorrelator,3) // PndPidCorrelator
215 
216 };
217 
218 #endif
TClonesArray * fTrackID2
2nd PndTrack TCA
Bool_t GetMdt2Info(FairTrackParH *helix, PndPidCandidate *pid)
void SetIdeal(Bool_t id)
virtual void Finish()
sim(Int_t nEvents=1, TString SimEngine="TGeant4", Float_t mom=6.231552)
PndRecoKalmanFit * fFitter
Object to retrieve MVD geometry.
map< Int_t, vector< Int_t > > mapMdtBarrel
void SetSimulation(Bool_t sim)
void SetEmcMode(Short_t mode)
virtual void Exec(Option_t *option)
PndTransMap * map
Definition: sim_emc_apd.C:99
TClonesArray * fMdtHit
PndMdtPoint TCA.
Bool_t GetFMdtInfo(FairTrackParP *helix, PndPidCandidate *pid)
TClonesArray * fPidNeutralCand
PndPidCandidate TCA for charged particles.
Bool_t GetMvdInfo(PndTrack *track, PndPidCandidate *pid)
PndPidCandidate * AddNeutralCandidate(PndPidCandidate *cand)
void SetBarrelTrackBranch(TString branch)
Float_t mdtLayerPos[3][20]
PndEmcErrorMatrix * fEmcErrorMatrix
EMC error matrix parameters.
int pid()
TClonesArray * fDskParticle
PndDrcHit TCA.
TFile * r
Geane propagator.
PndEmcErrorMatrixPar * fEmcErrorMatrixPar
EMC geometry parameters.
PndPidCorrPar * fCorrPar
PndRichHit TCA.
Bool_t GetMdtInfo(PndTrack *track, PndPidCandidate *pid)
map< Int_t, Bool_t > fClusterList
TClonesArray * fMdtTrack
PndPidCandidate TCA for neutral particles.
void SetDrcMode(Short_t mode)
void SetPidHyp(Int_t pid)
Bool_t GetSttInfo(PndTrack *track, PndPidCandidate *pid)
TClonesArray * fFtsHit
PndSttHit TCA.
PndTrack * AddMdtTrack(PndTrack *track)
Bool_t GetTofInfo(FairTrackParH *helix, PndPidCandidate *pid)
TClonesArray * fRichHit
PndRichBarPoint TCA.
PndGeoFtsPar * fFtsParameters
STT geometry parameters.
void SetMvdMode(Short_t mode)
Bool_t GetFscInfo(FairTrackParH *helix, PndPidCandidate *pid)
void SetMdtRefit(Bool_t mdt)
TClonesArray * fMdtTrk
PndMdtHit TCA.
void SetMdtMode(Short_t mode)
Int_t mode
Definition: autocutx.C:47
Bool_t GetRichInfo(FairTrackParH *helix, PndPidCandidate *pid)
PndEmcAbsClusterCalibrator * fEmcCalibrator
FTS geometry parameters.
Class to access the naming information of the MVD.
Bool_t GetFtofInfo(FairTrackParH *helix, PndPidCandidate *pid)
TClonesArray * fSttHit
PndDskParticle TCA //need to change to PndDskHit in future.
TClonesArray * fTrackID
PndTrack TCA.
void SetDebugMode(Bool_t debug)
Double_t
TClonesArray * fMvdHitsPixel
PndSdsHit TCA for strip.
void SetTofMode(Short_t mode)
virtual void SetParContainers()
PndMCTrack * track
Definition: anaLmdCluster.C:89
Bool_t GetDrcInfo(FairTrackParH *helix, PndPidCandidate *pid)
PndPidCandidate * AddChargedCandidate(PndPidCandidate *cand)
void SetFtsMode(Short_t mode)
void SetGeanePro(Bool_t gea=kTRUE)
void SetDebugFilename(TString filename)
PndMixBackgroundEvents * mix
Definition: runrecoMix.C:67
virtual ~PndPidCorrelator()
TClonesArray * fDrcHit
PndDrcBarPoint TCA.
map< Int_t, vector< Int_t > > mapMdtForward
Bool_t GetGemInfo(PndTrack *track, PndPidCandidate *pid)
TClonesArray * fTrack2
PndTrackID TCA.
map< Int_t, Double_t > fClusterQ
TClonesArray * fEmcDigi
PndEmcBump TCA.
FairGeanePro * fGeanePropagator
Refitter for MDT tracks.
TString name
PndGeoSttPar * fSttParameters
EMC error matrix.
TClonesArray * fMdtPoint
PndEmcDigi TCA.
TClonesArray * fMvdHitsStrip
PndTrack TCA for MDT refit.
TClonesArray * fFtofPoint
PndFtofHit TCA.
TClonesArray * fTofPoint
PndTofHit TCA.
TClonesArray * fPidChargedCand
2nd PndTrackID TCA
void SetDskMode(Short_t mode)
Float_t mdtIronThickness[3][20]
void SetCorrErrProp(Bool_t err)
void SetFtofMode(Short_t mode)
void SetBackPropagate(Bool_t opt=kTRUE)
void SetSttMode(Short_t mode)
TClonesArray * fEmcBump
PndEmcCluster TCA.
TClonesArray * fDrcPoint
PndMdtTrk TCA.
TClonesArray * fMcTrack
Bool_t GetDskInfo(FairTrackParH *helix, PndPidCandidate *pid)
Bool_t GetTrackInfo(PndTrack *track, PndPidCandidate *pid)
virtual InitStatus Init()
void SetForwardTrackBranch(TString branch)
void SetIdealHyp(Bool_t opt=kTRUE)
Calculate Error Matrix for the given EmcCluster with parametrization defined by the given parameter P...
PndGeoHandling * fGeoH
PndEmcGeoPar * fEmcGeoPar
Correlation parameters.
Bool_t GetFtsInfo(PndTrack *track, PndPidCandidate *pid)
TClonesArray * fTrack
PndMCTrack TCA.
void SetFast(Bool_t fast)
TClonesArray * fRichPoint
PndFtsHit TCA.
void SetFlagCut(Bool_t opt=kTRUE)
void SetOption(Option_t *option=" ")
void SetOutputBranch(TString branch)
TClonesArray * fFtofHit
PndTofPoint TCA.
map< Int_t, vector< Int_t > > mapMdtEndcap
TClonesArray * fTofHit
PndSdsHit TCA for pixel.
Bool_t GetEmcInfo(FairTrackParH *helix, PndPidCandidate *pid)
TClonesArray * fEmcCluster
PndFtofPoint TCA.
const string filename
void SetMixMode(Bool_t mix)