KaliVeda
Toolkit for HIC analysis
KVMultiDetArray.h
1 
4 #ifndef __KVMultiDetArray_H
5 #define __KVMultiDetArray_H
6 
7 #include "KVGeoStrucElement.h"
8 #include "KVUniqueNameList.h"
9 #include "TGraph.h"
10 #include "TGeoManager.h"
11 #include "KVNucleus.h"
12 #include "KVDetector.h"
13 #include "KVGroupReconstructor.h"
14 
15 #include <KVFileReader.h>
16 #include <KVGeoDNTrajectory.h>
17 #include <KVUnownedList.h>
18 class KVIDGraph;
19 class KVTarget;
20 class KVTelescope;
21 class KVIDTelescope;
24 class KVDetectorEvent;
25 class KVGroup;
26 class KVNameValueList;
28 class KVList;
29 class KVGeoNavigator;
31 class KVUpDater;
32 class KVRawDataReader;
33 #ifdef WITH_BUILTIN_GRU
34 class KVGANILDataReader;
35 #endif
36 #ifdef WITH_MFM
37 class MFMCommonFrame;
38 class MFMMergeFrameManager;
40 class MFMEbyedatFrame;
41 class MFMBufferReader;
42 #ifdef WITH_MESYTEC
43 #include "MFMMesytecMDPPFrame.h"
44 #endif
45 #endif
46 #ifdef WITH_PROTOBUF
48 #endif
49 class KVExpSetUp;
50 class KVExpDB;
51 class KVDBTable;
52 class KVDBRun;
53 
64 
65  friend class KVGeoImport;
66  friend class KVExpSetUp;
67 
68 protected:
69 
75 
77  enum {
78  kIsRemoving = BIT(14), //flag set during call to RemoveLayer etc.
79  kParamsSet = BIT(15), //flag set when SetParameters called
80  kIsBuilt = BIT(16), //flag set when Build() is called
81  kIsBeingDeleted = BIT(17), //flag set when dtor is called
82  kIDParamsSet = BIT(18), //flag set when SetRunIdentificationParameters called
83  kCalParamsSet = BIT(19) //flag set when SetRunCalibrationParameters called
84  };
85 
88 
97 
99 
101 
103 
105 
107 
110 
112 
115 
117 
118  virtual void RenumberGroups();
119  virtual void BuildGeometry()
120  {
121  AbstractMethod("BuildGeometry");
122  }
123  virtual void MakeListOfDetectors();
124 
125  virtual void SetExpectedDetectorSignalNames();
126 
128 
130  {
134  }
135 
142  virtual void set_up_telescope(KVDetector* de, KVDetector* e, KVIDTelescope* idt, TCollection* l);
144 
145  virtual void GetAlignedIDTelescopesForDetector(KVDetector* det, TCollection* list);
146  virtual void GetIDTelescopesForGroup(KVGroup* grp, TCollection* tel_list);
147  virtual void PrepareModifGroup(KVGroup* grp, KVDetector* dd);
148  virtual void SetPresent(KVDetector* det, Bool_t present = kTRUE);
149  virtual void SetDetecting(KVDetector* det, Bool_t detecting = kTRUE);
150 
154  {
156  }
159 
160 #ifdef WITH_MFM
161  virtual Bool_t handle_raw_data_event_mfmfile(MFMBufferReader&);
162  virtual Bool_t handle_raw_data_event_mfmmergeframe(const MFMMergeFrameManager&);
163  virtual Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame&);
164  virtual Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame&);
165 #ifdef WITH_MESYTEC
166  virtual Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame&);
167 #endif
168 #endif
169 #ifdef WITH_PROTOBUF
171 #endif
172 #ifdef WITH_BUILTIN_GRU
174 #endif
175  void add_and_set_detector_signal(KVDetector* det, KVString detname, Double_t sig_data, KVString sig_type);
176 
178 
180 
181  TString GetFileName(KVExpDB*, const Char_t* meth, const Char_t* keyw);
182  std::unique_ptr<KVFileReader> GetKVFileReader(KVExpDB* db, const Char_t* meth, const Char_t* keyw);
183  void ReadCalibrationFiles(KVExpDB* db);
184  void ReadCalibFile(const Char_t* filename, KVExpDB* db, KVDBTable* calib_table);
185  void ReadOoODetectors(KVExpDB* db);
186  void ReadAbsentDetectors(KVExpDB* db);
187 
191  {
195  return 14;
196  }
198  {
202  return 6;
203  }
205  {
209  return 8;
210  }
212  {
216  }
218  {
221  return 1;
222  }
223 
224  void set_detector_thicknesses(const TString&);
225 
226 public:
229  {
232  return fReconParameters;
233  }
235  {
238  return fReconParameters;
239  }
240  virtual void SetReconParametersInEvent(KVReconstructedEvent*) const;
241  void CreateGeoManager(Double_t dx = 500, Double_t dy = 500, Double_t dz = 500)
242  {
243  if (!gGeoManager) {
244 
245  new TGeoManager(GetName(), Form("%s geometry for dataset %s", GetName(), fDataSet.Data()));
246 
247  TGeoMaterial* matVacuum = gGeoManager->GetMaterial("Vacuum");
248  if (!matVacuum) {
249  matVacuum = new TGeoMaterial("Vacuum", 0, 0, 0);
250  matVacuum->SetTitle("Vacuum");
251  }
252  TGeoMedium* Vacuum = gGeoManager->GetMedium("Vacuum");
253  if (!Vacuum) Vacuum = new TGeoMedium("Vacuum", 1, matVacuum);
254  TGeoVolume* top = gGeoManager->MakeBox("WORLD", Vacuum, dx, dy, dz);
256  }
257 
258  }
259  void SetGeometry(TGeoManager*);
260  TGeoManager* GetGeometry() const;
261  KVGeoNavigator* GetNavigator() const;
262  void SetNavigator(KVGeoNavigator* geo);
263 
265  enum EFilterType {
269  };
270  KVMultiDetArray();
271  KVMultiDetArray(const Char_t* name, const Char_t* type = "");
272  virtual ~KVMultiDetArray();
273 
275  {
276  fFilterType = t;
277  }
278  void init();
279 
280  virtual void Build(Int_t run = -1);
281  virtual void CreateIDTelescopesInGroups();
282 
283  virtual void Clear(Option_t* opt = "");
284 
285  virtual KVTelescope* GetTelescope(const Char_t* name) const;
286  virtual KVGroup* GetGroupWithDetector(const Char_t*);
287  virtual KVGroup* GetGroup(const Char_t*) const;
288  virtual KVGroup* GetGroupWithAngles(Float_t /*theta*/, Float_t /*phi*/)
289  {
290  return 0;
291  }
292  void RemoveGroup(KVGroup*);
293  void RemoveGroup(const Char_t*);
294  void ReplaceDetector(const Char_t* name, KVDetector* new_kvd);
295 
298  {
299  return &fFiredDetectors;
300  }
301 
304  {
305  return &fFiredSignals;
306  }
307 
310  {
311  return &fExtraRawDataSignals;
312  }
313 
314  virtual void DetectEvent(KVEvent* event, KVReconstructedEvent* rec_event, const Char_t* detection_frame = "");
316  virtual void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_params = 0);
320  {
321  return DetectParticle_TGEO(part);
322  }
323  void DetectParticleIn(const Char_t* detname, KVNucleus* kvp);
324 
325  KVIDTelescope* GetIDTelescope(const Char_t* name) const;
327  {
328  return fIDTelescopes;
329  }
332  void SetDetectorThicknesses();
333 
334  virtual void SetTarget(KVTarget* target)
335  {
339 
340  fTarget = target;
341  }
343  {
345  return fTarget;
346  }
347 
349 
351  {
352  return TestBit(kIsRemoving);
353  }
354 
355  virtual Bool_t IsBuilt() const
356  {
357  return TestBit(kIsBuilt);
358  }
359  static KVMultiDetArray* MakeMultiDetector(const Char_t* dataset_name, Int_t run = -1, TString classname = "KVMultiDetArray");
360 
362  {
363  return TestBit(kIsBeingDeleted);
364  }
366  virtual void SetParameters(UInt_t n, Bool_t physics_parameters_only = kFALSE);
368  virtual void SetRunCalibrationParameters(UShort_t n);
369 
371  {
372  return TestBit(kParamsSet);
373  }
375  {
376  return (TestBit(kIDParamsSet) || ParamsSet());
377  }
379  {
380  return (TestBit(kCalParamsSet) || ParamsSet());
381  }
383  {
384  return fCurrentRun;
385  }
387  {
388  fCurrentRun = r;
389  }
390 
391  virtual void SetIdentifications();
392  virtual void InitializeIDTelescopes();
393  Bool_t ReadGridsFromAsciiFile(const Char_t*) const;
394 
395  virtual Double_t GetTotalSolidAngle(void) const
396  {
402 
403  Double_t SA = 0;
404  TIter it(GetDetectors());
405  KVDetector* d;
406  while ((d = (KVDetector*)it())) {
407  if (!d->GetNode()->GetDetectorsInFront()) {
408  SA += d->GetSolidAngle();
409  }
410  }
411  return SA;
412  }
413 
418 
419 
420  virtual void SetSimMode(Bool_t on = kTRUE)
421  {
425  fSimMode = on;
426  GetDetectors()->R__FOR_EACH(KVDetector, SetSimMode)(on);
427  }
429  {
433  return fSimMode;
434  }
435 
436  virtual Double_t GetPunchThroughEnergy(const Char_t* detector, Int_t Z, Int_t A);
437  virtual TGraph* DrawPunchThroughEnergyVsZ(const Char_t* detector, Int_t massform = KVNucleus::kBetaMass);
438  virtual TGraph* DrawPunchThroughEsurAVsZ(const Char_t* detector, Int_t massform = KVNucleus::kBetaMass);
439  virtual TGraph* DrawPunchThroughZVsVpar(const Char_t* detector, Int_t massform = KVNucleus::kBetaMass);
440 
441  virtual void SetROOTGeometry(Bool_t on = kTRUE);
443  {
447 
448  if (!GetDetectors()->GetEntries()) return kFALSE;
449  KVDetector* d = dynamic_cast<KVDetector*>(GetDetectors()->First());
450  return d->ROOTGeo();
451  }
452  static TGeoHMatrix* GetVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi,
453  TGeoTranslation* postTrans = nullptr);
456  void SetGridsInTelescopes(UInt_t run);
457  void FillListOfIDTelescopes(KVIDGraph* gr) const;
458 
459  void Draw(Option_t* option = "");
461  {
463  return &fTrajectories;
464  }
465 
467  {
470  }
471  void MakeHistogramsForAllIDTelescopes(KVSeqCollection* list, Int_t dimension = 100);
474 
476  virtual void FillDetectorList(KVReconstructedNucleus* rnuc, KVHashList* DetList, const KVString& DetNames);
477 
480  {
481  return fAcceptIDCodes;
482  }
484  {
485  return fAcceptECodes;
486  }
487  void AcceptIDCodes(const KVNumberList& codelist)
488  {
510 
511  fAcceptIDCodes = codelist;
512  }
513  virtual void AcceptAllIDCodes()
514  {
519 
520  AcceptIDCodes("");
521  }
522  void AcceptECodes(const KVNumberList& codelist)
523  {
537 
545 
546  fAcceptECodes = codelist;
547  }
548  virtual void AcceptAllECodes()
549  {
554 
555  AcceptECodes("");
556  }
557 
558  virtual KVMultiDetArray* GetArray(const Char_t*) const
559  {
560  return const_cast<KVMultiDetArray*>(this);
561  }
562 
563  void RecursiveTrajectoryClustering(KVGeoDetectorNode* N, KVUniqueNameList& tried_trajectories, KVUniqueNameList& multitraj_nodes, KVUniqueNameList& detectors_of_group);
564  virtual const Char_t* GetPartSeedCond() const
565  {
567  return fPartSeedCond;
568  }
569  virtual void SetPartSeedCond(const Char_t* cond)
570  {
572  fPartSeedCond = cond;
573  }
576  {
577  std::unique_ptr<KVSeqCollection> glist(GetStructureTypeList("GROUP"));
578  return glist->GetEntries();
579  }
580 
583 #ifdef WITH_MFM
584  Bool_t HandleRawDataBuffer(MFMBufferReader&);
585 #endif
587  {
588  return fHandledRawData;
589  }
591 
593  {
594  return fDataSet;
595  }
596 
597  virtual void MakeCalibrationTables(KVExpDB*);
598  virtual void SetCalibratorParameters(KVDBRun*, const TString& = "");
599  void CheckStatusOfDetectors(KVDBRun*, const TString& = "");
600  virtual void SetDetectorParametersForRun(KVDBRun*, const TString& = "");
601 
603  {
605  return 5;
606  }
608  {
609  return "";
610  }
612  {
613  return "";
614  }
616  {
620  }
621 
622  ClassDef(KVMultiDetArray, 7) //Base class for multidetector arrays
623 };
624 
626 R__EXTERN KVMultiDetArray* gMultiDetArray;
627 
628 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
ROOT::R::TRInterface & r
#define d(i)
bool Bool_t
unsigned short UShort_t
unsigned char UChar_t
char Char_t
float Float_t
constexpr Bool_t kFALSE
double Double_t
const char Option_t
#define ClassDef(name, id)
#define BIT(n)
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
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Description of an experimental run in database ,,.
Definition: KVDBRun.h:36
Table in a database.
Definition: KVDBTable.h:34
List of hit groups in a multidetector array.
Base class for detector geometry description.
Definition: KVDetector.h:160
Abstract base class container for multi-particle events.
Definition: KVEvent.h:67
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:20
Describe an experimental set-up coupling two or more different detector arrays.
Definition: KVExpSetUp.h:25
Reads GANIL acquisition files (EBYEDAT)
Path taken by particles through multidetector geometry.
Information on relative positions of detectors & particle trajectories.
Import detector array described by ROOT geometry and set up corresponding KVMultiDetArray object.
Definition: KVGeoImport.h:68
Base class for propagation of particles through array geometry.
Base class describing elements of array geometry.
const KVSeqCollection * GetDetectors() const
KVSeqCollection * GetStructureTypeList(const Char_t *type) const
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
Base class for particle identification in a 2D map.
Definition: KVIDGraph.h:32
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:84
Extended TList class which owns its objects by default.
Definition: KVList.h:28
Read MFM format acquisition data.
Base class for describing the geometry of a detector array.
const KVSeqCollection * GetFiredSignals() const
KVNumberList fAcceptECodes
list of acceptable calibration codes for reconstructed nuclei
virtual KVNameValueList * DetectParticle(KVNucleus *part)
Bool_t IsROOTGeometry() const
bool try_a_singleIDtelescope(TString uri, KVDetector *d, TCollection *l)
KVUniqueNameList fExtraRawDataSignals
any signals read from raw data not associated with a detector
virtual KVGroup * GetGroupWithDetector(const Char_t *)
const KVNumberList & GetAcceptedIDCodes() const
KVSeqCollection * GetListOfIDTelescopes() const
KVUniqueNameList * GetIDTelescopeTypes()
void FillListOfIDTelescopes(KVIDGraph *gr) const
virtual Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame &)
Read a raw data event from a EBYEDAT MFM Frame.
KVNumberList fAcceptIDCodes
list of acceptable identification codes for reconstructed nuclei
virtual void DetectEvent(KVEvent *event, KVReconstructedEvent *rec_event, const Char_t *detection_frame="")
KVNameValueList & GetReconParameters()
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_params=0)
virtual Bool_t handle_raw_data_event_protobuf(KVProtobufDataReader &)
void MakeHistogramsForAllIDTelescopes(KVSeqCollection *list, Int_t dimension=100)
TList * GetStatusOfIDTelescopes()
int try_all_singleID_telescopes(KVDetector *d, TCollection *l)
virtual void GetIDTelescopesForGroup(KVGroup *grp, TCollection *tel_list)
static Bool_t fCloseGeometryNow
virtual KVGroup * GetGroup(const Char_t *) const
Return pointer to group with name.
virtual void DeduceIdentificationTelescopesFromGeometry()
static void SetMakeMultiDetectorPhysicsParametersOnly(Bool_t on=kTRUE)
virtual void AcceptAllECodes()
virtual TString GetECodeMeaning(Int_t) const
std::unique_ptr< KVFileReader > GetKVFileReader(KVExpDB *db, const Char_t *meth, const Char_t *keyw)
virtual Double_t GetTargetEnergyLossCorrection(KVReconstructedNucleus *)
virtual Bool_t handle_raw_data_event_mfmmergeframe(const MFMMergeFrameManager &)
void CreateGeoManager(Double_t dx=500, Double_t dy=500, Double_t dz=500)
virtual Bool_t handle_raw_data_event_mfmfile(MFMBufferReader &)
Bool_t HandledRawData() const
void ReadOoODetectors(KVExpDB *db)
Bool_t fHandledRawData
set to true if multidetector handles data in last call to HandleRawData
KVSeqCollection * GetIDTelescopesWithType(const Char_t *type)
TList * fCalibStatusDets
used by GetStatusIDTelescopes
KVDetectorEvent * fHitGroups
list of hit groups in simulation
virtual UShort_t GetCoherencyIDCode()
void ReadAbsentDetectors(KVExpDB *db)
KVTarget * GetTarget()
void RecursiveTrajectoryClustering(KVGeoDetectorNode *N, KVUniqueNameList &tried_trajectories, KVUniqueNameList &multitraj_nodes, KVUniqueNameList &detectors_of_group)
KVSeqCollection * fIDTelescopes
deltaE-E telescopes in groups
virtual Int_t FilteredEventCoherencyAnalysis(Int_t round, KVReconstructedEvent *rec_event)
void AcceptECodes(const KVNumberList &codelist)
UInt_t fCurrentRun
Number of the current run used to call SetParameters.
static Bool_t fMakeMultiDetectorSetParameters
void CalculateIdentificationGrids()
For each IDtelescope in array, calculate an identification grid.
void prepare_to_handle_new_raw_data()
reset acquisition parameters etc. before reading new raw data event
virtual UChar_t GetNormalCalibrationCode()
int try_all_doubleID_telescopes(KVDetector *de, KVDetector *e, TCollection *l)
Bool_t IsSimMode() const
void AcceptIDCodes(const KVNumberList &codelist)
void FillHistogramsForAllIDTelescopes(KVSeqCollection *list)
Fill TH2F histograms for all IDTelescopes of the array.
void set_detector_thicknesses(const TString &)
virtual void BuildGeometry()
virtual TGraph * DrawPunchThroughEsurAVsZ(const Char_t *detector, Int_t massform=KVNucleus::kBetaMass)
Bool_t ReadGridsFromAsciiFile(const Char_t *) const
Int_t GetNumberOfGroups() const
virtual void InitialiseRawDataReading(KVRawDataReader *)
virtual void SetExpectedDetectorSignalNames()
virtual void SetParameters(UInt_t n, Bool_t physics_parameters_only=kFALSE)
void SetCurrentRunNumber(UInt_t r)
virtual void SetDetectorParametersForRun(KVDBRun *, const TString &="")
virtual void SetDetecting(KVDetector *det, Bool_t detecting=kTRUE)
void SetFilterType(Int_t t)
virtual TString GetIDCodeMeaning(Int_t) const
virtual void copy_fired_parameters_to_recon_param_list()
TString GetDataSet() const
virtual void SetPresent(KVDetector *det, Bool_t present=kTRUE)
void CalculateDetectorSegmentationIndex()
void AddTrajectory(KVGeoDNTrajectory *d)
virtual void AnalyseGroupAndReconstructEvent(KVReconstructedEvent *recev, KVGroup *grp)
const KVNumberList & GetAcceptedECodes() const
static TGeoHMatrix * GetVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi, TGeoTranslation *postTrans=nullptr)
KVGeoNavigator * GetNavigator() const
void DetectParticleIn(const Char_t *detname, KVNucleus *kvp)
KVUpDater * fUpDater
used to set parameters for multidetector
const KVSeqCollection * GetExtraRawDataSignals() const
virtual Int_t GetIDTelescopes(KVDetector *, KVDetector *, TCollection *list)
void SetGeometry(TGeoManager *)
UShort_t GetZminCode()
virtual void MakeCalibrationTables(KVExpDB *)
virtual ~KVMultiDetArray()
destroy (delete) the MDA and all the associated structure, detectors etc.
virtual void SetRunIdentificationParameters(UShort_t n)
Bool_t HandleRawDataBuffer(MFMBufferReader &)
TString GetFileName(KVExpDB *, const Char_t *meth, const Char_t *keyw)
virtual void Clear(Option_t *opt="")
void CheckStatusOfDetectors(KVDBRun *, const TString &="")
virtual void PerformClosedROOTGeometryOperations()
KVRangeTableGeoNavigator * fNavigator
for propagating particles through array geometry
UInt_t GetCurrentRunNumber() const
void SetDetectorTransparency(Char_t)
Modify the transparency of detector volumes in OpenGL view.
virtual KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const
virtual void SetIdentifications()
static Bool_t fMakeMultiDetectorPhysicsParametersOnly
void RemoveGroup(KVGroup *)
TList * fStatusIDTelescopes
used by GetStatusIDTelescopes
Bool_t fSimMode
=kTRUE in "simulation mode" (use for calculating response to simulated events)
virtual void Build(Int_t run=-1)
virtual void FillDetectorList(KVReconstructedNucleus *rnuc, KVHashList *DetList, const KVString &DetNames)
virtual UShort_t GetBadIDCode()
virtual Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader &)
General method for reading raw data in old GANIL ebyedat format.
Bool_t IsBeingDeleted()
TString fPartSeedCond
condition for seeding new reconstructed particles
const TSeqCollection * GetTrajectories() const
virtual void MakeListOfDetectors()
static Bool_t fBuildTarget
KVTarget * fTarget
target used in experiment
virtual void set_up_telescope(KVDetector *de, KVDetector *e, KVIDTelescope *idt, TCollection *l)
Set up detectors in de-e identification telescope and add to fIDTelescopes and to l.
TList * GetCalibrationStatusOfDetectors()
void Draw(Option_t *option="")
bool try_upper_and_lower_singleIDtelescope(TString uri, KVDetector *d, TCollection *l)
void ReplaceDetector(const Char_t *name, KVDetector *new_kvd)
virtual Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame &)
virtual Bool_t IsBuilt() const
const KVSeqCollection * GetFiredDetectors() const
TGeoManager * GetGeometry() const
Return pointer to the (ROOT) geometry of the array.
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray")
KVRawDataReader * fRawDataReader
last raw data reader object used in call to HandleRawData
virtual void ReconstructEvent(KVReconstructedEvent *, KVDetectorEvent *)
virtual KVGroup * GetGroupWithAngles(Float_t, Float_t)
virtual void SetRawDataFromReconEvent(KVNameValueList &)
virtual Int_t GetIDCodeForParticlesStoppingInFirstStageOfTelescopes() const
void add_and_set_detector_signal(KVDetector *det, KVString detname, Double_t sig_data, KVString sig_type)
virtual TGraph * DrawPunchThroughZVsVpar(const Char_t *detector, Int_t massform=KVNucleus::kBetaMass)
static Int_t fMakeMultiDetectorRunNumber
virtual Bool_t HandleRawDataEvent(KVRawDataReader *)
virtual Double_t GetPunchThroughEnergy(const Char_t *detector, Int_t Z, Int_t A)
virtual void InitializeIDTelescopes()
virtual void SetROOTGeometry(Bool_t on=kTRUE)
KVUniqueNameList fFiredDetectors
list of fired detectors after reading raw data event
virtual void RenumberGroups()
virtual void SetRunCalibrationParameters(UShort_t n)
virtual const Char_t * GetPartSeedCond() const
void PrintStatusOfIDTelescopes()
bool try_upper_and_lower_doubleIDtelescope(TString uri, KVDetector *de, KVDetector *e, TCollection *l)
virtual void SetSimMode(Bool_t on=kTRUE)
void PrintCalibStatusOfDetectors()
virtual TGraph * DrawPunchThroughEnergyVsZ(const Char_t *detector, Int_t massform=KVNucleus::kBetaMass)
virtual Double_t GetTotalSolidAngle(void) const
Bool_t fROOTGeometry
=kTRUE use ROOT geometry
virtual void SetTarget(KVTarget *target)
virtual void AcceptAllIDCodes()
void ReadCalibrationFiles(KVExpDB *db)
virtual UShort_t GetMultiHitFirstStageIDCode()
virtual void SetCalibratorParameters(KVDBRun *, const TString &="")
KVNameValueList * DetectParticle_TGEO(KVNucleus *part)
Int_t fFilterType
type of filtering (used by DetectEvent)
virtual void PrepareModifGroup(KVGroup *grp, KVDetector *dd)
virtual void SetPartSeedCond(const Char_t *cond)
void SetGridsInTelescopes(UInt_t run)
KVIDTelescope * GetIDTelescope(const Char_t *name) const
Return pointer to DeltaE-E ID Telescope with "name".
void CalculateReconstructionTrajectories()
KVUniqueNameList fTrajectories
list of all possible trajectories through detectors of array
virtual void SetIDCodeForIDTelescope(KVIDTelescope *) const
virtual void SetReconParametersInEvent(KVReconstructedEvent *) const
Copy any parameters in fReconParameters in to the reconstructed event parameter list.
KVNameValueList fReconParameters
general purpose list of parameters for storing information on data reconstruction
const KVNameValueList & GetReconParameters() const
TString fDataSet
name of associated dataset, used with MakeMultiDetector()
void AssociateTrajectoriesAndNodes()
void ReadCalibFile(const Char_t *filename, KVExpDB *db, KVDBTable *calib_table)
virtual KVMultiDetArray * GetArray(const Char_t *) const
virtual void AcceptParticleForAnalysis(KVReconstructedNucleus *) const
virtual KVTelescope * GetTelescope(const Char_t *name) const
Return pointer to telescope in array with name given by "name".
void SetNavigator(KVGeoNavigator *geo)
EFilterType
filter types. values of fFilterType
KVMultiDetArray()
Default constructor.
KVUpDater * GetUpDater()
void DeduceGroupsFromTrajectories()
virtual void set_up_single_stage_telescope(KVDetector *det, KVIDTelescope *idt, TCollection *l)
Set up detector in single-stage identification telescope and add to fIDTelescopes and to l.
bool try_a_doubleIDtelescope(TString uri, KVDetector *de, KVDetector *e, TCollection *l)
virtual void GetAlignedIDTelescopesForDetector(KVDetector *det, TCollection *list)
virtual void CreateIDTelescopesInGroups()
KVUnownedList fFiredSignals
list of fired signals after reading raw data event
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:126
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:85
Read Google Protobuf DAQ files.
Propagate particles through array geometry calculating energy losses.
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.
virtual TObject * First() const
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:127
Associates two detectors placed one behind the other.
Definition: KVTelescope.h:36
Optimised list in which named objects can only be placed once.
virtual void Add(TObject *obj)
Extended TList class which does not own its objects by default.
Definition: KVUnownedList.h:17
Abstract class implementing necessary methods for setting multidetector parameters for each run of th...
Definition: KVUpDater.h:25
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
void SetTopVolume(TGeoVolume *vol)
TGeoMedium * GetMedium(const char *medium) const
TGeoMaterial * GetMaterial(const char *matname) const
virtual void SetTitle(const char *title="")
const char * GetName() const override
void AbstractMethod(const char *method) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
const char * Data() const