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: 2020/21 by Sarah Gaiser (gaiser@hiskp.uni-bonn.de)
11 //
12 // **************************************************************************
13 
14 #include "TString.h"
15 #include "TClonesArray.h"
16 
17 #include "FairLogger.h"
18 #include "FairTask.h"
19 #include "FairRootManager.h"
20 #include "FairGeane.h"
21 #include "PndPropagator.h"
22 
23 #include "PndTrack.h"
24 #include "PndPidCorrPar.h"
25 #include "PndPidCandidate.h"
26 #include "PndPidDetectorInfo.h"
27 #include "PndPidCalorimeterInfo.h"
28 #include "PndPidTrackInfo.h"
30 
31 class TGeant3;
32 
41 class PndPidCorrelator : public FairTask {
42  public:
43  virtual void Exec(Option_t *option);
44  virtual InitStatus Init();
45 
46  void Register();
47  void Reset();
48 
49  PndPidCorrelator(const char *name, const char *title = "Pnd Task",
50  Bool_t use_default_setup = kTRUE);
51  PndPidCorrelator(Bool_t use_default_setup = kTRUE);
52  virtual ~PndPidCorrelator();
53 
54  void SetOption(Option_t *option = " ")
55  {
56  fOption = option;
57  fOption.ToLower();
58  }
59  void SetDebugMode(Bool_t debug) { fDebugMode = debug; };
60  void SetDebugFilename(TString filename) { fDebugFile = filename; };
61  void SetMdtRefit(Bool_t mdt) { fMdtRefit = mdt; };
62  void SetBarrelTrackBranch(TString branch) { fTrackBranchBarrel = branch; };
63  void SetForwardTrackBranch(TString branch) { fTrackBranchForward = branch; };
64  void SetOutputBranch(TString branch) { fTrackOutBranch = branch; };
65 
66  void SetIdeal(Bool_t id) { fIdeal = id; };
67  void SetFast(Bool_t fast) { fFast = fast; };
68  void SetCorrErrProp(Bool_t err) { fCorrErrorProp = err; };
69  void SetPidHyp(Int_t pid) { fPidHyp = pid; };
70  void SetIdealHyp(Bool_t opt = kTRUE) { fIdealHyp = opt; }
71  void SetFlagCut(Bool_t opt = kTRUE) { fFlagCut = opt; };
72  void SetBackPropagate(Bool_t opt = kTRUE) { fBackPropagate = opt; };
73 
74  void SetUsePropagator(Bool_t use_propagator = kTRUE) { fUsePropagator = use_propagator; };
75 
80  void SetPropagator(PndPropagator* propagator = nullptr);
81 
82  void SetCalorimeterInfo(PndPidCalorimeterInfo *detector_info);
83  void SetBarrelDetectors(std::vector<PndPidDetectorInfo *> barrel_detectors);
84  void AddBarrelDetector(PndPidDetectorInfo *detector_info);
85  void SetForwardDetectors(std::vector<PndPidDetectorInfo *> forward_detectors);
86  void AddForwardDetector(PndPidDetectorInfo *detector_info);
88  void SetTrackingDetectors(std::vector<PndPidTrackingDetectorInfo *> tracking_detectors);
90 
91  virtual void SetParContainers();
92  virtual void Finish();
93 
94  protected:
95  TClonesArray *fPidChargedCand = nullptr;
96  TClonesArray *fPidNeutralCand = nullptr;
97 
99  FairRootManager *fManager = FairRootManager::Instance();
100 
101  TString fTrackBranchBarrel = "";
102  TString fTrackBranchForward = "";
103  TString fTrackOutBranch = "";
104 
105  Int_t fPidHyp = 0;
106  Bool_t fIdeal = kFALSE;
107  Bool_t fIdealHyp = kFALSE;
108  Bool_t fDoNeutralCand = kFALSE;
109  Bool_t fFast = kFALSE;
110  Bool_t fFlagCut = kFALSE;
111  Bool_t fMdtRefit = kFALSE;
112  Bool_t fCorrErrorProp = kTRUE;
113 
114  Bool_t fDebugMode = kFALSE;
115  TString fDebugDir = "";
116  TString fDebugFile = "";
117  TFile *fFileDebugNtuples = nullptr;
118 
119  Bool_t fUsePropagator = kTRUE;
120  Bool_t fBackPropagate = kTRUE;
122 
125  static Bool_t fHasPrimary;
126 
130 
131  std::vector<PndPidDetectorInfo *> fBarrelDetectors = {};
132  std::vector<PndPidDetectorInfo *> fForwardDetectors = {};
133 
134  // -------
135 
136  void DefaultDetectorSetup();
137  void SetupDetectorParams();
138  void ActivateNeutrals();
139 
143  void ConstructChargedCandidates(std::vector<PndPidDetectorInfo *> detectors, TString track_branch);
144 
151 
157  Int_t FindPidHyp(Int_t pid_hyp);
163  Int_t FindIdealPidHyp(std::vector<FairLink> *mcTrackLinks);
164 
165  friend class PidCorrelatorHelper;
166 
168 };
169 
170 #endif
void SetPropagator(PndPropagator *propagator=nullptr)
Set propagator for all necessary propagation of tracks.
friend class PidCorrelatorHelper
needed for unit tests
Bool_t fMdtRefit
Use MDT Kalman refit propagation.
Int_t fEventCounter
Event number.
void SetIdeal(Bool_t id)
void ActivateNeutrals()
void SetBarrelDetectors(std::vector< PndPidDetectorInfo *> barrel_detectors)
virtual void Exec(Option_t *option)
Bool_t fFast
kFALSE: normal; kTRUE: no correlation/extrapolation/neutral
void SetUsePropagator(Bool_t use_propagator=kTRUE)
PndPropagator * fPropagator
Propagator to be used.
virtual void SetParContainers()
Bool_t fCorrErrorProp
Error propagation in correlation.
TFile * fFileDebugNtuples
File for debug ntuples.
TClonesArray * fPidNeutralCand
PndPidCandidate TCA for neutral particles.
void SetBarrelTrackBranch(TString branch)
PndPidCorrPar * fCorrPar
Correlation parameters.
FairRootManager * fManager
Base class for accessing PID detector information of calorimeter system (EMC, FSC).
virtual ~PndPidCorrelator()
Default destructor.
TString fTrackBranchBarrel
Options to choose PndTrack branches (barrel)
void AddBarrelDetector(PndPidDetectorInfo *detector_info)
TString fDebugDir
Ntuple output directory.
void SetPidHyp(Int_t pid)
PndPidCorrelator(const char *name, const char *title="Pnd Task", Bool_t use_default_setup=kTRUE)
Constrcutor setting name and title.
Int_t FindIdealPidHyp(std::vector< FairLink > *mcTrackLinks)
Find ideal PID hypothesis from MC information.
virtual void Finish()
void SetMdtRefit(Bool_t mdt)
Bool_t fBackPropagate
kFALSE -> do not propagate to IP; kTRUE -> propagate to IP
Base class for accessing PID detector information of tracking system (MVD, STT, GEM, FTS).
TString fTrackBranchForward
Options to choose PndTrack branches (forward)
PndPidTrackingSystemInfo * fTrackingSystemInfo
Class to access pid information from tracking system.
Bool_t fDoNeutralCand
Create neutral candidates.
void SetDebugMode(Bool_t debug)
Int_t FindPidHyp(Int_t pid_hyp)
Find PID hypothesis.
void SetTrackingSystemInfo(PndPidTrackingSystemInfo *tracking_info)
PndPidDetectorParams::DetectorParams fDetectorParams
void SetupDetectorParams()
TString fTrackOutBranch
Options to choose output branch.
void AddTrackingDetector(PndPidTrackingDetectorInfo *detector_info)
void SetDebugFilename(TString filename)
PndPidCandidate * AddChargedCandidate(PndPidCandidate *cand)
Add charged candidate to charged candidate TCA.
void AddForwardDetector(PndPidDetectorInfo *detector_info)
ClassDef(PndPidCorrelator, 4)
static Bool_t fHasPrimary
Int_t fPidHyp
particle hypothesis for propagation
void ConstructChargedCandidates(std::vector< PndPidDetectorInfo *> detectors, TString track_branch)
Construct PidCandidates by calling GetInfo() on DetectorInfo and TrackInfo classes.
Bool_t fDebugMode
If true fill ntuples for debug.
Class for combining all PID track information.
Bool_t fFlagCut
kFALSE: all the tracks; kTRUE: store tracks only if flag>0
TClonesArray * fPidChargedCand
PndPidCandidate TCA for charged particles.
void DefaultDetectorSetup()
void SetCorrErrProp(Bool_t err)
std::vector< PndPidDetectorInfo * > fBarrelDetectors
Vector of barrel detectors.
void SetBackPropagate(Bool_t opt=kTRUE)
Bool_t fUsePropagator
Use propagation.
Bool_t fIdealHyp
Flag to use MC particle hypothesis.
Base class for accessing PID detector information.
void SetTrackingDetectors(std::vector< PndPidTrackingDetectorInfo *> tracking_detectors)
Bool_t fIdeal
Ideal Correlation.
PndPidCalorimeterInfo * fCalorimeterInfo
Class to access EMC/FSC pid information.
Propagator interface class for PandaRoot.
Definition: PndPropagator.h:52
void SetCalorimeterInfo(PndPidCalorimeterInfo *detector_info)
void SetForwardTrackBranch(TString branch)
void SetIdealHyp(Bool_t opt=kTRUE)
virtual InitStatus Init()
void SetForwardDetectors(std::vector< PndPidDetectorInfo *> forward_detectors)
The PID Correlator class.
void SetFast(Bool_t fast)
void SetFlagCut(Bool_t opt=kTRUE)
void SetOption(Option_t *option=" ")
void SetOutputBranch(TString branch)
TString fDebugFile
Ntuple output file.
std::vector< PndPidDetectorInfo * > fForwardDetectors
Vector of forward detectors.
Bool_t fUseDefaultDetectorSetup
If true DefaultDetectorSetup() is called in constructor.