KaliVeda
Toolkit for HIC analysis
KVExpSetUp.h
1 
4 #ifndef __KVEXPSETUP_H
5 #define __KVEXPSETUP_H
6 
7 #include "KVMultiDetArray.h"
8 #include <KVExpDB.h>
9 class KVDBRun;
10 
25 class KVExpSetUp : public KVMultiDetArray {
26 
27  void for_each_array(const std::function<void(KVMultiDetArray*)>& f,
28  const std::function<bool(KVMultiDetArray*)>& break_cond = [](KVMultiDetArray*)
29  {
30  return false;
31  })
32  const
33  {
38  TIter next_array(&fMDAList);
39  KVMultiDetArray* mda;
40  while ((mda = (KVMultiDetArray*)next_array())) {
41  f(mda);
42  if (break_cond(mda)) break;
43  }
44  }
45 
46 protected:
49 
50  void init();
51 
52 #ifdef WITH_MFM
53  Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame& mfmframe) override
54  {
59 
60  Bool_t return_value = kFALSE;
62  [](KVMultiDetArray*) {},
63  [&](KVMultiDetArray * mda) {
64  if (mda->handle_raw_data_event_mfmframe(mfmframe)) {
65  mda->fHandledRawData = true;
66  return_value = kTRUE;
67  }
68  return return_value;
69  }
70  );
71  return return_value;
72  }
73 #endif
75  {
78  }
79  );
80  }
81 
83  {
86  }
87  );
88  }
89 
90 public:
91 
92  KVExpSetUp();
93  virtual ~KVExpSetUp();
94  void Build(Int_t run = -1) override;
95  void Clear(Option_t* opt = "") override
96  {
98 
99  for_each_array([ = ](KVMultiDetArray * mda) {
100  mda->Clear(opt);
101  });
102  }
103 
104  void FillDetectorList(KVReconstructedNucleus* rnuc, KVHashList* DetList, const KVString& DetNames) override
105  {
108 
110  [ = ](KVMultiDetArray * mda) {
111  mda->FillDetectorList(rnuc, DetList, DetNames);
112  },
113  [ = ](KVMultiDetArray*) {
114  return !DetList->IsEmpty();
115  }
116  );
117  }
118  KVMultiDetArray* GetArray(const Char_t* name) const override
119  {
122  }
123  const KVSeqCollection* GetArrays() const override
124  {
125  return &fMDAList;
126  }
128 
129  void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_params = nullptr) override
130  {
133 
135  [ = ](KVMultiDetArray * mda) {
136  mda->GetDetectorEvent(detev, fired_params);
137  }
138  );
139  }
141  {
144 
145  KVGroupReconstructor* gr(nullptr);
147  [ =, &gr](KVMultiDetArray * mda) {
148  gr = mda->GetReconstructorForGroup(g);
149  },
150  [ =, &gr ](KVMultiDetArray * mda) {
151  return gr != nullptr;
152  }
153  );
154  return gr;
155  }
157  {
159  for_each_array([&](KVMultiDetArray * mda) {
161  });
162  }
163 
165 
166  void MakeCalibrationTables(KVExpDB* db) override
167  {
168  TString orig_dbtype = db->GetDBType();
169  for_each_array([ = ](KVMultiDetArray * mda) {
170  mda->MakeCalibrationTables(db);
171  }
172  );
173  db->SetDBType(orig_dbtype);
174  }
175  void SetCalibratorParameters(KVDBRun* r, const TString& = "") override
176  {
178  for_each_array([ = ](KVMultiDetArray * mda) {
179  mda->SetCalibratorParameters(r, mda->GetName());
180  }
181  );
182  }
183  void SetDetectorParametersForRun(KVDBRun* r, const TString& = "") override
184  {
186  for_each_array([ = ](KVMultiDetArray * mda) {
187  mda->SetCurrentRunNumber(r->GetNumber());
188  mda->SetDetectorParametersForRun(r, mda->GetName());
189  }
190  );
191  }
192 
193  void AcceptAllIDCodes() override
194  {
197 
198  for_each_array([](KVMultiDetArray * mda) {
199  mda->AcceptAllIDCodes();
200  }
201  );
202  }
203  void AcceptAllECodes() override
204  {
207 
208  for_each_array([](KVMultiDetArray * mda) {
209  mda->AcceptAllECodes();
210  }
211  );
212  }
213 
214  void InitializeIDTelescopes() override
215  {
217 
218  for_each_array([](KVMultiDetArray * mda) {
219  mda->InitializeIDTelescopes();
220  }
221  );
222  }
223 
225  {
227  for_each_array([ = ](KVMultiDetArray * mda) {
229  }
230  );
231  }
233 
234  void SetSimMode(Bool_t on = kTRUE) override
235  {
237 
238  for_each_array([ = ](KVMultiDetArray * mda) {
239  mda->SetSimMode(on);
240  }
241  );
242  }
243  void SetTarget(KVTarget* target) override
244  {
246 
248  for_each_array([ = ](KVMultiDetArray * mda) {
249  mda->SetTarget(target);
250  }
251  );
252  }
253 
254  ClassDefOverride(KVExpSetUp, 1) //Describe an experimental set-up made of several KVMultiDetArray objects
255 };
256 
257 #endif
int Int_t
ROOT::R::TRInterface & r
#define f(i)
bool Bool_t
char Char_t
constexpr Bool_t kFALSE
constexpr Bool_t kTRUE
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 char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t g
char name[80]
Description of an experimental run in database ,,.
Definition: KVDBRun.h:40
List of hit groups in a multidetector array.
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:20
void SetDBType(const TString &s)
Definition: KVExpDB.h:63
TString GetDBType() const
Definition: KVExpDB.h:59
Describe an experimental set-up coupling two or more different detector arrays.
Definition: KVExpSetUp.h:25
void FillDetectorList(KVReconstructedNucleus *rnuc, KVHashList *DetList, const KVString &DetNames) override
Definition: KVExpSetUp.h:104
KVExpSetUp()
Default constructor.
Definition: KVExpSetUp.cpp:32
Bool_t HandleRawDataEvent(KVRawDataReader *) override
Definition: KVExpSetUp.cpp:204
Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame &mfmframe) override
Definition: KVExpSetUp.h:53
void AcceptAllIDCodes() override
Definition: KVExpSetUp.h:193
void GetArrayMultiplicities(KVReconstructedEvent *, KVNameValueList &, Option_t *="")
Definition: KVExpSetUp.cpp:176
void SetExpectedDetectorSignalNames() override
Definition: KVExpSetUp.h:82
KVList fMDAList
list of multidetarrays
Definition: KVExpSetUp.h:47
KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *g) const override
Definition: KVExpSetUp.h:140
void SetDetectorParametersForRun(KVDBRun *r, const TString &="") override
Definition: KVExpSetUp.h:183
void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_params=nullptr) override
Definition: KVExpSetUp.h:129
void SetTarget(KVTarget *target) override
Definition: KVExpSetUp.h:243
void AcceptAllECodes() override
Definition: KVExpSetUp.h:203
void SetSimMode(Bool_t on=kTRUE) override
Definition: KVExpSetUp.h:234
void InitializeIDTelescopes() override
Definition: KVExpSetUp.h:214
virtual ~KVExpSetUp()
Destructor.
Definition: KVExpSetUp.cpp:43
void Build(Int_t run=-1) override
Definition: KVExpSetUp.cpp:58
KVMultiDetArray * GetArray(const Char_t *name) const override
Definition: KVExpSetUp.h:118
void SetRawDataFromReconEvent(KVNameValueList &l) override
Definition: KVExpSetUp.h:156
void AcceptParticleForAnalysis(KVReconstructedNucleus *) const override
Definition: KVExpSetUp.cpp:143
void Clear(Option_t *opt="") override
Definition: KVExpSetUp.h:95
const KVSeqCollection * GetArrays() const override
Definition: KVExpSetUp.h:123
void SetCalibratorParameters(KVDBRun *r, const TString &="") override
Definition: KVExpSetUp.h:175
void for_each_array(const std::function< void(KVMultiDetArray *)> &f, const std::function< bool(KVMultiDetArray *)> &break_cond=[](KVMultiDetArray *) { return false;}) const
Definition: KVExpSetUp.h:27
void InitialiseRawDataReading(KVRawDataReader *R) override
Definition: KVExpSetUp.h:224
void init()
Definition: KVExpSetUp.cpp:16
KVString lmultidetarrayclasses
Definition: KVExpSetUp.h:48
void MakeCalibrationTables(KVExpDB *db) override
Definition: KVExpSetUp.h:166
void copy_fired_parameters_to_recon_param_list() override
Definition: KVExpSetUp.h:74
Base class for particle reconstruction in one group of a detector array.
Group of detectors which can be treated independently of all others in array.
Definition: KVGroup.h:20
Extended version of ROOT THashList.
Definition: KVHashList.h:29
Extended TList class which owns its objects by default.
Definition: KVList.h:28
Base class for describing the geometry of a detector array.
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_params=0)
virtual void AcceptAllECodes()
Bool_t HandledRawData() const
Bool_t fHandledRawData
set to true if multidetector handles data in last call to HandleRawData
void Clear(Option_t *opt="") override
void prepare_to_handle_new_raw_data()
reset acquisition parameters etc. before reading new raw data event
virtual void InitialiseRawDataReading(KVRawDataReader *)
virtual void SetExpectedDetectorSignalNames()
void SetCurrentRunNumber(UInt_t r)
virtual void SetDetectorParametersForRun(KVDBRun *, const TString &="")
virtual void copy_fired_parameters_to_recon_param_list()
virtual void MakeCalibrationTables(KVExpDB *)
virtual KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const
virtual void FillDetectorList(KVReconstructedNucleus *rnuc, KVHashList *DetList, const KVString &DetNames)
virtual Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame &)
virtual void SetRawDataFromReconEvent(KVNameValueList &)
virtual void InitializeIDTelescopes()
virtual void SetSimMode(Bool_t on=kTRUE)
virtual void SetTarget(KVTarget *target)
virtual void AcceptAllIDCodes()
virtual void SetCalibratorParameters(KVDBRun *, const TString &="")
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Abstract base class for reading raw (DAQ) data.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Nuclei reconstructed from data measured by a detector array .
KaliVeda extensions to ROOT collection classes.
TObject * FindObject(const char *name) const override
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
Calculation/correction of energy losses of particles through an experimental target.
Definition: KVTarget.h:128
virtual Bool_t IsEmpty() const
const char * GetName() const override
TGraphErrors * gr
constexpr Double_t R()
TLine l