KaliVeda
Toolkit for HIC analysis
KVGroup.h
1 #ifndef KVGROUP_H
2 #define KVGROUP_H
3 
4 #define KVGROUP_ADD_UNKNOWN_TELESCOPE "Attempt to add undefined telescope to group"
5 
6 #include "KVGeoStrucElement.h"
7 #include "KVUnownedList.h"
8 #include "KVGeoDNTrajectory.h"
9 #include "KVNameValueList.h"
10 #include "KVDetector.h"
11 #include "KVNucleus.h"
12 
20 class KVGroup : public KVGeoStrucElement {
21 
22 protected:
23  enum {
24  kIsRemoving = BIT(14) //flag set during call to RemoveTelescope
25  };
30 
31 public:
32  enum {
35  };
36  KVGroup();
37  void init();
38  void SetNumber(UInt_t num) override
39  {
41  SetName(Form("Group_%u", num));
43  }
44 
45  void Reset(Option_t* opt = "")
46  {
50 
54  GetDetectors()->R__FOR_EACH(KVDetector, Reset)(opt);
55  }
56 
57  inline UInt_t GetHits()
58  {
60  }
62  {
65  GetDetectors()->R__FOR_EACH(KVDetector, ClearHits)();
66  }
68  {
69  return &fReconstructedNuclei;
70  }
71  void AddHit(KVNucleus* kvd)
72  {
74  }
75  void RemoveHit(KVNucleus* kvd)
76  {
79  }
80 
82  {
83  return TestBit(kIsRemoving);
84  }
85  virtual void Sort() {}
86  virtual void CountLayers() {}
88  {
89  return &fTrajectories;
90  }
92  {
93  fTrajectories.Add(t);
94  }
96  {
98  }
100  {
103  }
104 
107  {
109  return &fReconTraj;
110  }
112  {
115  }
116 
118  {
119  if (t && n) {
120  TString mapped_name = fReconTrajMap.GetStringValue(Form("%s_%s", t->GetTrajectoryName(), n->GetName()));
121  const KVGeoDNTrajectory* tr = (const KVGeoDNTrajectory*)fReconTraj.FindObject(mapped_name);
122  return tr;
123  }
124  return nullptr;
125  }
126  void PrintData() const;
127 
128  ClassDefOverride(KVGroup, 2)//Group of detectors having similar angular positions.
129 };
130 #endif
int Int_t
unsigned int UInt_t
#define c(i)
bool Bool_t
const char Option_t
#define BIT(n)
#define ClassDefOverride(name, id)
char * Form(const char *fmt,...)
virtual void SetNumber(UInt_t num)
Definition: KVBase.h:215
Path taken by particles through multidetector geometry.
const Char_t * GetTrajectoryName() const
Information on relative positions of detectors & particle trajectories.
Base class describing elements of array geometry.
const KVSeqCollection * GetDetectors() const
Group of detectors which can be treated independently of all others in array.
Definition: KVGroup.h:20
void SetNumber(UInt_t num) override
Definition: KVGroup.h:38
void AddTrajectory(KVGeoDNTrajectory *t)
Definition: KVGroup.h:91
KVHashList fTrajectories
Trajectories passing through group.
Definition: KVGroup.h:27
void Reset(Option_t *opt="")
Definition: KVGroup.h:45
const KVGeoDNTrajectory * FindReconTraj(const KVString &path)
Definition: KVGroup.h:111
UInt_t GetHits()
Definition: KVGroup.h:57
KVHashList fReconTraj
list of all possible trajectories for reconstructed particles
Definition: KVGroup.h:28
void init()
Definition: KVGroup.cpp:23
KVNameValueList fReconTrajMap
map names of duplicate trajectories for reconstructed particles
Definition: KVGroup.h:29
KVList * GetParticles()
Definition: KVGroup.h:67
const TCollection * GetTrajectories() const
Definition: KVGroup.h:87
virtual void CountLayers()
Definition: KVGroup.h:86
KVUnownedList fReconstructedNuclei
Particles reconstructed in this group.
Definition: KVGroup.h:26
@ kIsRemoving
Definition: KVGroup.h:24
void ClearHitDetectors()
Definition: KVGroup.h:61
void AddHit(KVNucleus *kvd)
Definition: KVGroup.h:71
void ReplaceTrajectories(const TCollection *c)
Definition: KVGroup.h:99
const KVGeoDNTrajectory * GetTrajectoryForReconstruction(const KVGeoDNTrajectory *t, const KVGeoDetectorNode *n) const
Definition: KVGroup.h:117
void AddTrajectories(const TCollection *c)
Definition: KVGroup.h:95
const TSeqCollection * GetReconTrajectories() const
Definition: KVGroup.h:106
virtual void Sort()
Definition: KVGroup.h:85
void RemoveHit(KVNucleus *kvd)
Definition: KVGroup.h:75
void PrintData() const
list detectors of group with any data they contain
Definition: KVGroup.cpp:102
KVGroup()
Definition: KVGroup.cpp:11
Bool_t IsRemoving()
Definition: KVGroup.h:81
Int_t CalculateReconstructionTrajectories()
Definition: KVGroup.cpp:42
@ kBackwards
Definition: KVGroup.h:34
@ kForwards
Definition: KVGroup.h:33
Extended version of ROOT THashList.
Definition: KVHashList.h:29
Extended TList class which owns its objects by default.
Definition: KVList.h:28
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
const Char_t * GetStringValue(const Char_t *name) const
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:123
TObject * Remove(TObject *obj) override
Remove object from list.
void Add(TObject *obj) override
TObject * FindObject(const char *name) const override
Int_t GetSize() const override
void Clear(Option_t *option="") override
virtual TObject * FindObjectByTitle(const Char_t *) const
Will return object with given title (value of TObject::GetTitle() method).
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
Extended TList class which does not own its objects by default.
Definition: KVUnownedList.h:17
virtual void AddAll(const TCollection *col)
virtual void SetName(const char *name)
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
const Int_t n