PandaRoot
PndPidCalorimeterInfo.h
Go to the documentation of this file.
1 #ifndef PID_CALORIMETER_INFO_H
2 #define PID_CALORIMETER_INFO_H
3 
4 #include <map>
5 #include <memory>
6 
7 #include "TClonesArray.h"
8 
9 #include "FairRootManager.h"
10 #include "FairRuntimeDb.h"
11 #include "FairPropagator.h"
12 #include "PndPropagator.h"
13 #include "FairGeane.h"
14 #include "FairLogger.h"
15 
16 #include "PndTrack.h"
17 #include "PndEmcErrorMatrix.h"
19 #include "PndEmcErrorMatrixPar.h"
20 #include "PndEmcGeoPar.h"
22 #include "PndEmcCluster.h"
23 #include "PndEmcBump.h"
24 
25 #include "PndPidDetectorInfo.h"
26 
35  protected:
36 
37  std::map<Int_t, Bool_t> fClusterList{};
38  std::map<Int_t, Double_t> fClusterQ{};
39  std::map<Int_t, std::pair<Double_t, Int_t>> fCorrelatedTracks;
40  Bool_t fTracksCorrelated = kFALSE;
41 
43  Int_t EmcIndex;
44  Double_t Quality;
45  bool operator<(const EmcQualityEntry_t &other) const {return Quality<other.Quality;}
46  };
47 
49  Int_t TrackId;
50  std::vector<EmcQualityEntry_t> Qualities;
51  bool operator<(const TrackQualities_t &other) const {return Qualities[0].Quality < other.Qualities[0].Quality;}
52  EmcQualityEntry_t & operator [](Int_t index) {return Qualities[index];}
53  const EmcQualityEntry_t & operator [](Int_t index) const {return Qualities[index];}
54  };
55 
57  Int_t TrackId;
58  };
59 
60  struct QualityTable_t {
61  std::vector<TrackQualities_t> Table;
62 
63  TrackQuality_t GetNextBestFit();
64  void Remove(Int_t trackId, Int_t emcIndex);
65  void Clear();
66  };
67 
69 
70  private:
71 
72  virtual void FillCorrelationMap() = 0;
73 
74  public:
77 
78  virtual Int_t GetClusterCount() {
79  LOG(warn) << "PndPidCalorimeterInfo::GetClusterCount: Function not implemented in base class.";
80  return 0;
81  };
82 
88  Bool_t SetParContainers(FairRuntimeDb *db) = 0;
89 
90  void Reset() = 0;
91 
96  virtual Int_t SetDetectorHits(FairRootManager *manager) = 0;
97 
105  Bool_t Setup(FairRootManager *manager, PndPropagator *propagator, PndPidDetectorParams::DetectorParams *params);
106 
112  virtual void ActivateDebugNtuple(Bool_t debug_mode);
113 
119  void GetNeutralInfo(Int_t nbr_tracks, TClonesArray *neutralArray) = 0;
120 
128  virtual Bool_t GetInfo(PndTrack *track, PndPidCandidate *pidCand) = 0;
129 
131 };
132 
133 #endif // PID_CALORIMETER_INFO_H
PndPidCalorimeterInfo()
Default constructor.
Base class for accessing PID detector information of calorimeter system (EMC, FSC).
Bool_t SetParContainers(FairRuntimeDb *db)=0
Set parameter containers.
virtual Int_t GetClusterCount()
Default destructor.
bool operator<(const TrackQualities_t &other) const
virtual Bool_t GetInfo(PndTrack *track, PndPidCandidate *pidCand)=0
Add calorimeter information to PidCandidate.
virtual Int_t SetDetectorHits(FairRootManager *manager)=0
Fill detector hit TCAs and adjust detector mode.
std::vector< EmcQualityEntry_t > Qualities
void GetNeutralInfo(Int_t nbr_tracks, TClonesArray *neutralArray)=0
Include calorimeter information in neutral PndPidCandidate.
float & operator[](int i)
Definition: P4_F32vec4.h:5
std::vector< TrackQualities_t > Table
std::map< Int_t, Bool_t > fClusterList
List of clusters for track correlation.
Base class for accessing PID detector information.
Propagator interface class for PandaRoot.
Definition: PndPropagator.h:52
bool operator<(const EmcQualityEntry_t &other) const
std::map< Int_t, Double_t > fClusterQ
List of emc quality correlated to clusters.
virtual void ActivateDebugNtuple(Bool_t debug_mode)
Set debug mode of detector.
Bool_t Setup(FairRootManager *manager, PndPropagator *propagator, PndPidDetectorParams::DetectorParams *params)
Setup calorimeter info.
std::map< Int_t, std::pair< Double_t, Int_t > > fCorrelatedTracks
Map of matched track and emc id&#39;s.
ClassDef(PndPidCalorimeterInfo, 2)