KaliVeda
Toolkit for HIC analysis
KVGroupReconstructor.h
1 #ifndef __KVGROUPRECONSTRUCTOR_H
2 #define __KVGROUPRECONSTRUCTOR_H
3 
4 #include "KVBase.h"
5 #include "KVGroup.h"
6 #include "KVReconstructedEvent.h"
7 #include <unordered_map>
8 #include <string>
9 
26 class KVGroupReconstructor : public KVBase {
27 
28  static bool fDoIdentification;
29  static bool fDoCalibration;
30 
35 protected:
36  mutable int nfireddets;
39  std::unordered_map<std::string, KVIdentificationResult*> id_by_type;
40 
42  virtual void ReconstructParticle(KVReconstructedNucleus* part, const KVGeoDNTrajectory* traj, const KVGeoDetectorNode* node);
43  virtual void PostReconstructionProcessing();
46  {
47  AbstractMethod("CalibrateCoherencyParticle(KVReconstructedNucleus*)");
48  }
50  {
52  PART.SetIsCalibrated();
53  PART.SetECode(code);
54  }
55 
58  {
59  return fPartSeedCond;
60  }
62 
74  };
75  std::vector<particle_to_add_from_coherency_analysis> coherency_particles;
76  virtual void AddCoherencyParticles() {}
77 
80  {
81  idt->Identify(IDR);
82  }
83 
84 public:
85  KVGroupReconstructor(const KVGroup* g = nullptr);
86  virtual ~KVGroupReconstructor();
87 
88  void SetReconEventClass(TClass* c);
89  int GetNFiredDets() const
90  {
91  return nfireddets;
92  }
93 
95  {
96  return fGrpEvent;
97  }
98  virtual void SetGroup(const KVGroup* g);
99  KVGroup* GetGroup() const
100  {
101  return fGroup;
102  }
103 
104  static KVGroupReconstructor* Factory(const TString& plugin = "", const KVGroup* g = nullptr);
105 
106  void Process();
107  virtual void Reconstruct();
108  virtual void Identify();
109  void Calibrate();
111  {
112  AbstractMethod("CalibrateParticle(KVReconstructedNucleus*)");
113  }
114 
115  void AnalyseParticles();
117  {
119  Int_t n = 0;
120  if (GetEventFragment()->GetMult()) {
121  for (KVReconstructedEvent::Iterator it = GetEventFragment()->begin(); it != GetEventFragment()->end(); ++it) {
122  KVReconstructedNucleus& nuc = it.get_reference();
123  n += (Int_t) nuc.IsIdentified();
124  }
125  }
126  return n;
127  }
129  {
131  return (GetEventFragment()->GetMult() - GetNIdentifiedInGroup());
132  }
133  static void SetDoIdentification(bool on = kTRUE)
134  {
137  }
138  static void SetDoCalibration(bool on = kTRUE)
139  {
141  fDoCalibration = on;
142  }
143  void Clear(Option_t* = "") override
144  {
146  }
147 
148  ClassDefOverride(KVGroupReconstructor, 0) //Base class for handling event reconstruction in detector groups
149 };
150 
151 #endif
int Int_t
bool Bool_t
unsigned short UShort_t
double Double_t
const char Option_t
#define ClassDefOverride(name, id)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
Base class for KaliVeda framework.
Definition: KVBase.h:139
Path taken by particles through multidetector geometry.
Information on relative positions of detectors & particle trajectories.
Base class for particle reconstruction in one group of a detector array.
virtual KVReconstructedNucleus * ReconstructTrajectory(const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
KVReconstructedEvent * fGrpEvent
event containing particles reconstructed in this group
KVIDTelescope * identifying_telescope
telescope which identified current particle
virtual void identify_particle(KVIDTelescope *idt, KVIdentificationResult *IDR, KVReconstructedNucleus &)
virtual void ReconstructParticle(KVReconstructedNucleus *part, const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
void Clear(Option_t *="") override
KVGroup * GetGroup() const
std::unordered_map< std::string, KVIdentificationResult * > id_by_type
identification results by type for current particle
KVReconstructedEvent * GetEventFragment() const
virtual void CalibrateParticle(KVReconstructedNucleus *)
static KVGroupReconstructor * Factory(const TString &plugin="", const KVGroup *g=nullptr)
virtual void AddCoherencyParticles()
int nfireddets
set to true during secondary analysis
KVGroup * fGroup
the group where we are reconstructing
void Calibrate()
Calculate and set energies of all Z-identified but uncalibrated charged particles in event.
static void SetDoCalibration(bool on=kTRUE)
virtual void SetGroup(const KVGroup *g)
virtual ~KVGroupReconstructor()
Destructor.
virtual KVReconNucTrajectory * get_recon_traj_for_particle(const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
TString fPartSeedCond
condition for seeding reconstructed particles
Double_t GetTargetEnergyLossCorrection(KVReconstructedNucleus *ion)
void SetCalibrationStatus(KVReconstructedNucleus &PART, UShort_t code)
virtual void IdentifyParticle(KVReconstructedNucleus &)
static void SetDoIdentification(bool on=kTRUE)
virtual void CalibrateCoherencyParticle(KVReconstructedNucleus *)
KVGroupReconstructor(const KVGroup *g=nullptr)
Default constructor.
void SetReconEventClass(TClass *c)
Instantiate event fragment object.
TString GetPartSeedCond() const
KVIdentificationResult partID
identification to be applied to current particle
void TreatStatusStopFirstStage(KVReconstructedNucleus &)
virtual void PostReconstructionProcessing()
std::vector< particle_to_add_from_coherency_analysis > coherency_particles
Group of detectors which can be treated independently of all others in array.
Definition: KVGroup.h:19
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:84
virtual Bool_t Identify(KVIdentificationResult *, Double_t x=-1., Double_t y=-1.)
Full result of one attempted particle identification.
Path through detector array used to reconstruct detected particle.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Nuclei reconstructed from data measured by a detector array .
virtual void SetECode(UChar_t s)
Iterator end() const
void AbstractMethod(const char *method) const
const Int_t n
informations required to add a particle to the event which is revealed by an inconsistency between th...
Int_t max_id_result_index
last KVIdentificationResult in original_particle's list
Int_t first_id_result_to_copy
number of KVIdentificationResult (in original_particle's list) corresponding to identification of the...
KVIDTelescope * identifying_telescope
telescope which identified current particle
KVGeoDNTrajectory * stopping_trajectory
trajectory on which new particle stopped
KVReconstructedNucleus * original_particle
particle whose identification/calibration revealed presence of pile-up
KVGeoDetectorNode * stopping_detector_node
detector node in which new particle stopped