KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVGroup.h
Go to the documentation of this file.
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 "KVList.h"
8 #include "KVGeoDNTrajectory.h"
9 #include "KVNameValueList.h"
10 class KVDetector;
11 class KVNucleus;
12 
19 class KVGroup : public KVGeoStrucElement {
20 
21 protected:
22  enum {
23  kIsRemoving = BIT(14) //flag set during call to RemoveTelescope
24  };
29 
30 public:
31  enum {
34  };
35  KVGroup();
36  void init();
37  virtual ~ KVGroup();
38  virtual void SetNumber(UInt_t num)
39  {
41  SetName(Form("Group_%u", num));
43  }
45  {
47  return (KVGeoStrucElement*)GetParents()->First();
48  }
49 
51 
52  void Reset(Option_t* opt = "");
53 
54  virtual TList* GetDetectorsInLayer(UInt_t lay);
56 
57  inline UInt_t GetHits()
58  {
60  return fReconstructedNuclei->GetSize();
61  else
62  return 0;
63  };
64  void ClearHitDetectors();
66  {
67  return fReconstructedNuclei;
68  }
69  void AddHit(KVNucleus* kvd);
70  void RemoveHit(KVNucleus* kvd);
71 
73  {
74  return TestBit(kIsRemoving);
75  }
76  virtual void Sort() {}
77  virtual void CountLayers() {}
79  {
80  return &fTrajectories;
81  }
83  {
84  fTrajectories.Add(t);
85  }
87  {
89  }
90 
93  {
95  return &fReconTraj;
96  }
98  {
101  }
102 
104  {
105  if (t && n) {
106  TString mapped_name = fReconTrajMap.GetStringValue(Form("%s_%s", t->GetTrajectoryName(), n->GetName()));
107  const KVGeoDNTrajectory* tr = (const KVGeoDNTrajectory*)fReconTraj.FindObject(mapped_name);
108  return tr;
109  }
110  return nullptr;
111  }
112  void PrintData() const;
113 
114  ClassDef(KVGroup, 1)//Group of detectors having similar angular positions.
115 };
116 #endif
int Int_t
unsigned int UInt_t
#define c(i)
unsigned char UChar_t
bool Bool_t
const char Option_t
#define ClassDef(name, id)
#define BIT(n)
char * Form(const char *fmt,...)
virtual void SetNumber(UInt_t num)
Definition: KVBase.h:215
Base class for detector geometry description.
Definition: KVDetector.h:159
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 * GetParents() const
Group of detectors which can be treated independently of all others in array.
Definition: KVGroup.h:19
void AddTrajectory(KVGeoDNTrajectory *t)
Definition: KVGroup.h:82
KVHashList fTrajectories
Trajectories passing through group.
Definition: KVGroup.h:26
void Reset(Option_t *opt="")
Definition: KVGroup.cpp:114
const KVGeoDNTrajectory * FindReconTraj(const KVString &path)
Definition: KVGroup.h:97
UInt_t GetHits()
Definition: KVGroup.h:57
virtual TList * GetAlignedDetectors(KVDetector *, UChar_t dir=kBackwards)
Definition: KVGroup.cpp:177
KVGeoStrucElement * GetArray() const
Definition: KVGroup.h:44
@ kBackwards
Definition: KVGroup.h:33
@ kForwards
Definition: KVGroup.h:32
@ kIsRemoving
Definition: KVGroup.h:23
virtual ~ KVGroup()
KVHashList fReconTraj
list of all possible trajectories for reconstructed particles
Definition: KVGroup.h:27
void init()
Definition: KVGroup.cpp:30
KVNameValueList fReconTrajMap
map names of duplicate trajectories for reconstructed particles
Definition: KVGroup.h:28
virtual void SetNumber(UInt_t num)
Definition: KVGroup.h:38
KVList * GetParticles()
Definition: KVGroup.h:65
const TCollection * GetTrajectories() const
Definition: KVGroup.h:78
virtual void CountLayers()
Definition: KVGroup.h:77
virtual TList * GetDetectorsInLayer(UInt_t lay)
Definition: KVGroup.cpp:88
virtual UInt_t GetNumberOfDetectorLayers()
Definition: KVGroup.cpp:64
void ClearHitDetectors()
Definition: KVGroup.cpp:222
void AddHit(KVNucleus *kvd)
Definition: KVGroup.cpp:134
const KVGeoDNTrajectory * GetTrajectoryForReconstruction(const KVGeoDNTrajectory *t, const KVGeoDetectorNode *n) const
Definition: KVGroup.h:103
void AddTrajectories(const TCollection *c)
Definition: KVGroup.h:86
const TSeqCollection * GetReconTrajectories() const
Definition: KVGroup.h:92
virtual void Sort()
Definition: KVGroup.h:76
void RemoveHit(KVNucleus *kvd)
Definition: KVGroup.cpp:150
void PrintData() const
list detectors of group with any data they contain
Definition: KVGroup.cpp:297
KVGroup()
Definition: KVGroup.cpp:18
KVList * fReconstructedNuclei
Particles reconstructed in this group.
Definition: KVGroup.h:25
Bool_t IsRemoving()
Definition: KVGroup.h:72
Int_t CalculateReconstructionTrajectories()
Definition: KVGroup.cpp:237
Extended version of ROOT THashList.
Definition: KVHashList.h:28
Extended TList class which owns its objects by default.
Definition: KVList.h:27
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:125
virtual Int_t GetSize() const
virtual TObject * First() const
virtual TObject * FindObjectByTitle(const Char_t *) const
Will return object with given title (value of TObject::GetTitle() method).
virtual void Add(TObject *obj)
virtual TObject * FindObject(const char *name) const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:72
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