KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVMultiDetArray.h
Go to the documentation of this file.
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 class MFMMesytecMDPPFrame;
44 #endif
45 #endif
46 #ifdef WITH_PROTOBUF
48 #endif
49 class KVExpSetUp;
50 class KVExpDB;
51 class KVDBTable;
52 class KVDBRun;
53 
63 
64  friend class KVGeoImport;
65  friend class KVExpSetUp;
66 
67 protected:
68 
72 
74  enum {
75  kIsRemoving = BIT(14), //flag set during call to RemoveLayer etc.
76  kParamsSet = BIT(15), //flag set when SetParameters called
77  kIsBuilt = BIT(16), //flag set when Build() is called
78  kIsBeingDeleted = BIT(17), //flag set when dtor is called
79  kIDParamsSet = BIT(18), //flag set when SetRunIdentificationParameters called
80  kCalParamsSet = BIT(19) //flag set when SetRunCalibrationParameters called
81  };
82 
85 
86  KVDetectorEvent* fHitGroups;
94 
96 
98 
100 
102 
104 
107 
109 
112 
114 
115  virtual void RenumberGroups();
116  virtual void BuildGeometry()
117  {
118  AbstractMethod("BuildGeometry");
119  }
120  virtual void MakeListOfDetectors();
121 
122  virtual void SetExpectedDetectorSignalNames();
123 
125 
127  {
131  }
132 
139  virtual void set_up_telescope(KVDetector* de, KVDetector* e, KVIDTelescope* idt, TCollection* l);
141 
142  virtual void GetAlignedIDTelescopesForDetector(KVDetector* det, TCollection* list);
143  virtual void GetIDTelescopesForGroup(KVGroup* grp, TCollection* tel_list);
144  virtual void PrepareModifGroup(KVGroup* grp, KVDetector* dd);
145  virtual void SetPresent(KVDetector* det, Bool_t present = kTRUE);
146  virtual void SetDetecting(KVDetector* det, Bool_t detecting = kTRUE);
147 
151  {
153  }
156 
157 #ifdef WITH_MFM
158  virtual Bool_t handle_raw_data_event_mfmfile(MFMBufferReader&);
159  virtual Bool_t handle_raw_data_event_mfmmergeframe(const MFMMergeFrameManager&);
160  virtual Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame&);
161  virtual Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame&);
162 #ifdef WITH_MESYTEC
163  virtual Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame&);
164 #endif
165 #endif
166 #ifdef WITH_PROTOBUF
168 #endif
169 #ifdef WITH_BUILTIN_GRU
171 #endif
172  void add_and_set_detector_signal(KVDetector* det, KVString detname, Double_t sig_data, KVString sig_type);
173 
175 
177 
178  TString GetFileName(KVExpDB*, const Char_t* meth, const Char_t* keyw);
179  std::unique_ptr<KVFileReader> GetKVFileReader(KVExpDB* db, const Char_t* meth, const Char_t* keyw);
180  void ReadCalibrationFiles(KVExpDB* db);
181  void ReadCalibFile(const Char_t* filename, KVExpDB* db, KVDBTable* calib_table);
182  void ReadOoODetectors(KVExpDB* db);
183 
187  {
191  return 14;
192  }
194  {
198  return 6;
199  }
201  {
205  return 8;
206  }
208  {
212  }
214  {
217  return 1;
218  }
219 
220  void set_detector_thicknesses(const TString&);
221 
222 public:
225  {
228  return fReconParameters;
229  }
231  {
234  return fReconParameters;
235  }
236  virtual void SetReconParametersInEvent(KVReconstructedEvent*) const;
237  void CreateGeoManager(Double_t dx = 500, Double_t dy = 500, Double_t dz = 500)
238  {
239  if (!gGeoManager) {
240 
241  new TGeoManager(GetName(), Form("%s geometry for dataset %s", GetName(), fDataSet.Data()));
242 
243  TGeoMaterial* matVacuum = gGeoManager->GetMaterial("Vacuum");
244  if (!matVacuum) {
245  matVacuum = new TGeoMaterial("Vacuum", 0, 0, 0);
246  matVacuum->SetTitle("Vacuum");
247  }
248  TGeoMedium* Vacuum = gGeoManager->GetMedium("Vacuum");
249  if (!Vacuum) Vacuum = new TGeoMedium("Vacuum", 1, matVacuum);
250  TGeoVolume* top = gGeoManager->MakeBox("WORLD", Vacuum, dx, dy, dz);
252  }
253 
254  }
255  void SetGeometry(TGeoManager*);
256  TGeoManager* GetGeometry() const;
257  KVGeoNavigator* GetNavigator() const;
258  void SetNavigator(KVGeoNavigator* geo);
259 
261  enum EFilterType {
265  };
266  KVMultiDetArray();
267  KVMultiDetArray(const Char_t* name, const Char_t* type = "");
268  virtual ~KVMultiDetArray();
269 
271  {
272  fFilterType = t;
273  }
274  void init();
275 
276  virtual void Build(Int_t run = -1);
277  virtual void CreateIDTelescopesInGroups();
278 
279  virtual void Clear(Option_t* opt = "");
280 
281  virtual KVTelescope* GetTelescope(const Char_t* name) const;
282  virtual KVGroup* GetGroupWithDetector(const Char_t*);
283  virtual KVGroup* GetGroup(const Char_t*) const;
284  virtual KVGroup* GetGroupWithAngles(Float_t /*theta*/, Float_t /*phi*/)
285  {
286  return 0;
287  }
288  void RemoveGroup(KVGroup*);
289  void RemoveGroup(const Char_t*);
290  void ReplaceDetector(const Char_t* name, KVDetector* new_kvd);
291 
294  {
295  return &fFiredDetectors;
296  }
297 
300  {
301  return &fFiredSignals;
302  }
303 
306  {
307  return &fExtraRawDataSignals;
308  }
309 
310  virtual void DetectEvent(KVEvent* event, KVReconstructedEvent* rec_event, const Char_t* detection_frame = "");
312  virtual void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_params = 0);
313  virtual void ReconstructEvent(KVReconstructedEvent*, KVDetectorEvent*);
316  {
317  return DetectParticle_TGEO(part);
318  }
319  void DetectParticleIn(const Char_t* detname, KVNucleus* kvp);
320 
321  KVIDTelescope* GetIDTelescope(const Char_t* name) const;
323  {
324  return fIDTelescopes;
325  }
328  void SetDetectorThicknesses();
329 
330  virtual void SetTarget(KVTarget* target)
331  {
335 
336  fTarget = target;
337  }
339  {
341  return fTarget;
342  }
343 
345 
347  {
348  return TestBit(kIsRemoving);
349  }
350 
351  virtual Bool_t IsBuilt() const
352  {
353  return TestBit(kIsBuilt);
354  }
355  static KVMultiDetArray* MakeMultiDetector(const Char_t* dataset_name, Int_t run = -1, TString classname = "KVMultiDetArray");
356 
358  {
359  return TestBit(kIsBeingDeleted);
360  }
362  virtual void SetParameters(UInt_t n, Bool_t physics_parameters_only = kFALSE);
364  virtual void SetRunCalibrationParameters(UShort_t n);
365 
367  {
368  return TestBit(kParamsSet);
369  }
371  {
372  return (TestBit(kIDParamsSet) || ParamsSet());
373  }
375  {
376  return (TestBit(kCalParamsSet) || ParamsSet());
377  }
379  {
380  return fCurrentRun;
381  }
383  {
384  fCurrentRun = r;
385  }
386 
387  virtual void SetIdentifications();
388  virtual void InitializeIDTelescopes();
389  Bool_t ReadGridsFromAsciiFile(const Char_t*) const;
390 
391  virtual Double_t GetTotalSolidAngle(void) const
392  {
398 
399  Double_t SA = 0;
400  TIter it(GetDetectors());
401  KVDetector* d;
402  while ((d = (KVDetector*)it())) {
403  if (!d->GetNode()->GetDetectorsInFront()) {
404  SA += d->GetSolidAngle();
405  }
406  }
407  return SA;
408  }
409 
414 
415 
416  virtual void SetSimMode(Bool_t on = kTRUE)
417  {
421  fSimMode = on;
422  GetDetectors()->R__FOR_EACH(KVDetector, SetSimMode)(on);
423  }
425  {
429  return fSimMode;
430  }
431 
432  virtual Double_t GetPunchThroughEnergy(const Char_t* detector, Int_t Z, Int_t A);
433  virtual TGraph* DrawPunchThroughEnergyVsZ(const Char_t* detector, Int_t massform = KVNucleus::kBetaMass);
434  virtual TGraph* DrawPunchThroughEsurAVsZ(const Char_t* detector, Int_t massform = KVNucleus::kBetaMass);
435  virtual TGraph* DrawPunchThroughZVsVpar(const Char_t* detector, Int_t massform = KVNucleus::kBetaMass);
436 
437  virtual void SetROOTGeometry(Bool_t on = kTRUE);
439  {
443 
444  if (!GetDetectors()->GetEntries()) return kFALSE;
445  KVDetector* d = dynamic_cast<KVDetector*>(GetDetectors()->First());
446  return d->ROOTGeo();
447  }
448  static TGeoHMatrix* GetVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi,
449  TGeoTranslation* postTrans = nullptr);
452  void SetGridsInTelescopes(UInt_t run);
453  void FillListOfIDTelescopes(KVIDGraph* gr) const;
454 
455  void Draw(Option_t* option = "");
457  {
459  return &fTrajectories;
460  }
461 
463  {
466  }
467  void MakeHistogramsForAllIDTelescopes(KVSeqCollection* list, Int_t dimension = 100);
470 
472  virtual void FillDetectorList(KVReconstructedNucleus* rnuc, KVHashList* DetList, const KVString& DetNames);
473 
476  {
477  return fAcceptIDCodes;
478  }
480  {
481  return fAcceptECodes;
482  }
483  void AcceptIDCodes(const KVNumberList& codelist)
484  {
506 
507  fAcceptIDCodes = codelist;
508  }
509  virtual void AcceptAllIDCodes()
510  {
515 
516  AcceptIDCodes("");
517  }
518  void AcceptECodes(const KVNumberList& codelist)
519  {
533 
541 
542  fAcceptECodes = codelist;
543  }
544  virtual void AcceptAllECodes()
545  {
550 
551  AcceptECodes("");
552  }
553 
554  virtual KVMultiDetArray* GetArray(const Char_t*) const
555  {
556  return const_cast<KVMultiDetArray*>(this);
557  }
558 
559  virtual void SetMinimumOKMultiplicity(KVEvent*) const;
560  void RecursiveTrajectoryClustering(KVGeoDetectorNode* N, KVUniqueNameList& tried_trajectories, KVUniqueNameList& multitraj_nodes, KVUniqueNameList& detectors_of_group);
561  virtual const Char_t* GetPartSeedCond() const
562  {
564  return fPartSeedCond;
565  }
566  virtual void SetPartSeedCond(const Char_t* cond)
567  {
569  fPartSeedCond = cond;
570  }
573  {
574  std::unique_ptr<KVSeqCollection> glist(GetStructureTypeList("GROUP"));
575  return glist->GetEntries();
576  }
577 
580 #ifdef WITH_MFM
581  Bool_t HandleRawDataBuffer(MFMBufferReader&);
582 #endif
584  {
585  return fHandledRawData;
586  }
588 
590  {
591  return fDataSet;
592  }
593 
594  virtual void MakeCalibrationTables(KVExpDB*);
595  virtual void SetCalibratorParameters(KVDBRun*, const TString& = "");
596  virtual void CheckStatusOfDetectors(KVDBRun*, const TString& = "");
597 
599  {
601  return 5;
602  }
604  {
605  return "";
606  }
608  {
609  return "";
610  }
611 
612  ClassDef(KVMultiDetArray, 7) //Base class for multidetector arrays
613 };
614 
617 
618 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
R__EXTERN KVMultiDetArray * gMultiDetArray
................ global variable
ROOT::R::TRInterface & r
#define d(i)
unsigned short UShort_t
unsigned char UChar_t
char Char_t
const Bool_t kFALSE
bool Bool_t
double Double_t
float Float_t
const char Option_t
#define ClassDef(name, id)
#define BIT(n)
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Description of an experimental run in database ,.
Definition: KVDBRun.h:35
Table in a database.
Definition: KVDBTable.h:33
Base class for detector geometry description.
Definition: KVDetector.h:159
Abstract base class container for multi-particle events.
Definition: KVEvent.h:66
Base class to describe database of an experiment ,.
Definition: KVExpDB.h:19
Describe an experimental set-up coupling two or more different detector arrays.
Definition: KVExpSetUp.h:24
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:67
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:19
Extended version of ROOT THashList.
Definition: KVHashList.h:28
Base class for particle identification in a 2D map.
Definition: KVIDGraph.h:31
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:83
Extended TList class which owns its objects by default.
Definition: KVList.h:27
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()
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()
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)
virtual void SetMinimumOKMultiplicity(KVEvent *) const
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 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="")
virtual 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()
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)
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:125
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:83
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:72
Calculation/correction of energy losses of particles through an experimental target.
Definition: KVTarget.h:126
Associates two detectors placed one behind the other.
Definition: KVTelescope.h:35
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:16
Abstract class implementing necessary methods for setting multidetector parameters for each run of th...
Definition: KVUpDater.h:24
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 const char * GetName() const
virtual void SetTitle(const char *title="")
void AbstractMethod(const char *method) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
const char * Data() const