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 #ifdef WITH_CPP11
8 #include <unordered_map>
9 #else
10 #include <map>
11 #endif
12 #include <string>
13 
30 class KVGroupReconstructor : public KVBase {
31 
32  static bool fDoIdentification;
33  static bool fDoCalibration;
34 
38 protected:
39  mutable int nfireddets;
42  std::unordered_map<std::string, KVIdentificationResult*> id_by_type;
43 
46  virtual void PostReconstructionProcessing();
49  {
50  AbstractMethod("CalibrateCoherencyParticle(KVReconstructedNucleus*)");
51  }
53  {
55  PART.SetIsCalibrated();
56  PART.SetECode(code);
57  }
58 
61  {
62  return fPartSeedCond;
63  }
65 
77  };
78  std::vector<particle_to_add_from_coherency_analysis> coherency_particles;
79  virtual void AddCoherencyParticles() {};
80 
81 public:
83  virtual ~KVGroupReconstructor();
84 
85  void SetReconEventClass(TClass* c);
86  int GetNFiredDets() const
87  {
88  return nfireddets;
89  }
90 
92  {
93  return fGrpEvent;
94  }
95  virtual void SetGroup(KVGroup* g);
96  KVGroup* GetGroup() const
97  {
98  return fGroup;
99  }
100 
101  static KVGroupReconstructor* Factory(const TString& plugin = "");
102 
103  void Process();
104  void Reconstruct();
105  virtual void Identify();
106  void Calibrate();
108  {
109  AbstractMethod("CalibrateParticle(KVReconstructedNucleus*)");
110  }
111 
112  void AnalyseParticles();
114  {
116  Int_t n = 0;
117  if (GetEventFragment()->GetMult()) {
118  for (KVReconstructedEvent::Iterator it = GetEventFragment()->begin(); it != GetEventFragment()->end(); ++it) {
119  KVReconstructedNucleus& nuc = it.get_reference();
120  n += (Int_t) nuc.IsIdentified();
121  }
122  }
123  return n;
124  }
126  {
128  return (GetEventFragment()->GetMult() - GetNIdentifiedInGroup());
129  }
130  static void SetDoIdentification(bool on = kTRUE)
131  {
134  }
135  static void SetDoCalibration(bool on = kTRUE)
136  {
138  fDoCalibration = on;
139  }
140 
141  ClassDef(KVGroupReconstructor, 0) //Base class for handling event reconstruction in detector groups
142 };
143 
144 #endif
int Int_t
unsigned short UShort_t
double Double_t
#define ClassDef(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:142
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
void ReconstructParticle(KVReconstructedNucleus *part, const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
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 *)
virtual void AddCoherencyParticles()
int nfireddets
number of fired detectors in group for current event
KVGroup * fGroup
the group where we are reconstructing
void Calibrate()
Calculate and set energies of all identified but uncalibrated particles in event.
static void SetDoCalibration(bool on=kTRUE)
virtual ~KVGroupReconstructor()
Destructor.
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 *)
void SetReconEventClass(TClass *c)
Instantiate event fragment object.
TString GetPartSeedCond() const
KVIdentificationResult partID
identification to be applied to current particle
KVGroupReconstructor()
Default constructor.
void TreatStatusStopFirstStage(KVReconstructedNucleus &)
virtual void PostReconstructionProcessing()
static KVGroupReconstructor * Factory(const TString &plugin="")
virtual void SetGroup(KVGroup *g)
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:20
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:84
Full result of one attempted particle identification.
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