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 "TGeoManager.h"
10 #include "KVDetector.h"
11 #include "KVGroupReconstructor.h"
12 #include "KVDetectorSignalTrace.h"
13 #include <KVFileReader.h>
14 #include <KVGeoDNTrajectory.h>
15 #include <KVUnownedList.h>
16 class KVIDGraph;
17 class KVTarget;
18 class KVTelescope;
19 class KVIDTelescope;
21 class KVDetectorEvent;
22 class KVGroup;
23 class KVNameValueList;
25 class KVList;
26 class KVGeoNavigator;
27 class KVUpDater;
28 class KVRawDataReader;
29 #ifdef WITH_BUILTIN_GRU
30 class KVGANILDataReader;
31 #endif
32 #ifdef WITH_MFM
33 class MFMCommonFrame;
34 class MFMMergeFrameManager;
36 class MFMEbyedatFrame;
37 class MFMBufferReader;
38 #ifdef WITH_MESYTEC
39 #include "MFMMesytecFrame.h"
40 #endif
41 #endif
42 #ifdef WITH_PROTOBUF
44 #endif
45 class KVExpSetUp;
46 class KVExpDB;
47 class KVDBTable;
48 class KVDBRun;
49 
60 
61  friend class KVGeoImport;
62  friend class KVExpSetUp;
63 
64 protected:
65 
66  static Bool_t fCloseGeometryNow;
67  static Bool_t fBuildTarget;
68  static Bool_t fMakeMultiDetectorSetParameters;
69  static Bool_t fMakeMultiDetectorPhysicsParametersOnly;
70  static Int_t fMakeMultiDetectorRunNumber;
71 
72  KVTarget* fTarget;
73  enum {
74  kIsRemoving = BIT(14), //flag set during call to RemoveLayer etc.
75  kParamsSet = BIT(15), //flag set when SetParameters called
76  kIsBuilt = BIT(16), //flag set when Build() is called
77  kIsBeingDeleted = BIT(17), //flag set when dtor is called
78  kIDParamsSet = BIT(18), //flag set when SetRunIdentificationParameters called
79  kCalParamsSet = BIT(19) //flag set when SetRunCalibrationParameters called
80  };
81 
82  TList* fStatusIDTelescopes;
83  TList* fCalibStatusDets;
84 
85  KVDetectorEvent* fHitGroups;
86  KVSeqCollection* fIDTelescopes;
87  KVUniqueNameList fFiredDetectors;
88  KVUniqueNameList fExtraRawDataSignals;
89  KVUnownedList fFiredSignals;
90  TString fDataSet;
91  UInt_t fCurrentRun;
92  KVUpDater* fUpDater;
93 
94  Bool_t fSimMode;
95 
96  Int_t fFilterType;
97 
98  std::unique_ptr<KVGeoNavigator> fNavigator;
99 
100  KVUniqueNameList fTrajectories;
101 
102  KVNumberList fAcceptIDCodes;
103  KVNumberList fAcceptECodes;
104 
105  TString fPartSeedCond;
106 
107  KVRawDataReader* fRawDataReader;
108  Bool_t fHandledRawData;
109 
110  KVNameValueList fReconParameters;
111 
112  virtual void RenumberGroups();
113 
114  virtual void SetExpectedDetectorSignalNames();
115 
116  Int_t GetIDTelescopes(KVGeoDetectorNode*, KVDetector*, TCollection* list);
117 
118  virtual void SetIDCodeForIDTelescope(KVIDTelescope*) const
119  {
123  }
124 
125  int try_all_doubleID_telescopes(KVDetector* de, KVDetector* e, TCollection* l);
126  bool try_a_doubleIDtelescope(TString uri, KVDetector* de, KVDetector* e, TCollection* l);
127  bool try_upper_and_lower_doubleIDtelescope(TString uri, KVDetector* de, KVDetector* e, TCollection* l);
128  int try_all_singleID_telescopes(KVDetector* d, TCollection* l);
129  bool try_a_singleIDtelescope(TString uri, KVDetector* d, TCollection* l);
130  bool try_upper_and_lower_singleIDtelescope(TString uri, KVDetector* d, TCollection* l);
131  virtual void set_up_telescope(KVDetector* de, KVDetector* e, KVIDTelescope* idt, TCollection* l);
132  virtual void set_up_single_stage_telescope(KVDetector* det, KVIDTelescope* idt, TCollection* l);
133  Bool_t check_idtelescope_in_allowed_list(const TString& plugin);
134 
135  void CalculateReconstructionTrajectories();
136  virtual void DeduceIdentificationTelescopesFromGeometry();
137  void AddTrajectory(KVGeoDNTrajectory* d)
138  {
139  fTrajectories.Add(d);
140  }
141  virtual void AssociateTrajectoriesAndNodes();
142  void DeduceGroupsFromTrajectories();
143 
144 #ifdef WITH_MFM
145  virtual Bool_t handle_raw_data_event_mfmfile(MFMBufferReader&);
146  virtual Bool_t handle_raw_data_event_mfmmergeframe(const MFMMergeFrameManager&);
147  virtual Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame&);
148  virtual Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame&);
149 #ifdef WITH_MESYTEC
150  virtual Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame&);
151 #endif
152 #endif
153 #ifdef WITH_PROTOBUF
154  virtual Bool_t handle_raw_data_event_protobuf(KVProtobufDataReader&);
155 #endif
156 #ifdef WITH_BUILTIN_GRU
157  virtual Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader&);
158 #endif
159  void add_and_set_detector_signal(KVDetector* det, KVString detname, Double_t sig_data, KVString sig_type);
160  template<typename TraceData>
161  void add_and_set_detector_signal_trace(KVDetector* det, const std::vector<TraceData>& traces, double time_resolution)
162  {
168 
169  auto det_signal = dynamic_cast<KVDetectorSignalTrace*>(det->GetDetectorSignal("SignalTrace"));
170  if (!det_signal) {
171  det_signal = det->AddDetectorSignalTrace();
172  }
173  det_signal->SetTrace(traces, time_resolution);
174  det_signal->SetFired();
175  }
176 
177  virtual void PerformClosedROOTGeometryOperations();
178 
179  virtual void copy_fired_parameters_to_recon_param_list();
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 
188  virtual void set_detector_thicknesses(const TString&);
189 
190 public:
193  {
196  return fReconParameters;
197  }
199  {
202  return fReconParameters;
203  }
204  virtual void SetReconParametersInEvent(KVReconstructedEvent*) const;
205  void CreateGeoManager(Double_t dx = 500, Double_t dy = 500, Double_t dz = 500)
206  {
207  if (!gGeoManager) {
208 
209  new TGeoManager(GetName(), Form("%s geometry for dataset %s", GetName(), fDataSet.Data()));
210 
211  TGeoMaterial* matVacuum = gGeoManager->GetMaterial("Vacuum");
212  if (!matVacuum) {
213  matVacuum = new TGeoMaterial("Vacuum", 0, 0, 0);
214  matVacuum->SetTitle("Vacuum");
215  }
216  TGeoMedium* Vacuum = gGeoManager->GetMedium("Vacuum");
217  if (!Vacuum) Vacuum = new TGeoMedium("Vacuum", 1, matVacuum);
218  TGeoVolume* top = gGeoManager->MakeBox("WORLD", Vacuum, dx, dy, dz);
220  }
221 
222  }
223  void SetGeometry(TGeoManager*);
224  TGeoManager* GetGeometry() const;
225  KVGeoNavigator* GetNavigator() const;
226  void SetNavigator(KVGeoNavigator* geo);
227 
229  enum EFilterType {
233  };
234  KVMultiDetArray();
235  KVMultiDetArray(const Char_t* name, const Char_t* type = "");
236  virtual ~KVMultiDetArray();
237 
239  {
240  fFilterType = t;
241  }
242  void init();
243 
244  KVGroup* GetGroup(const Char_t* name) const
245  {
246  return (KVGroup*)GetStructure("GROUP", name);
247  }
248  KVGroup* GetGroup(Int_t number) const
249  {
250  return (KVGroup*)GetStructure("GROUP", number);
251  }
252  virtual void Build(Int_t run = -1);
253 
254  void Clear(Option_t* opt = "") override;
255 
258  {
259  return &fFiredDetectors;
260  }
261 
264  {
265  return &fFiredSignals;
266  }
267 
270  {
271  return &fExtraRawDataSignals;
272  }
273 
274  virtual void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_params = 0);
275 
276  KVIDTelescope* GetIDTelescope(const Char_t* name) const;
278  {
279  return fIDTelescopes;
280  }
283  void SetDetectorThicknesses();
284 
285  virtual void SetTarget(KVTarget* target)
286  {
290 
291  fTarget = target;
292  }
294  {
296  return fTarget;
297  }
298 
300 
302  {
303  return TestBit(kIsRemoving);
304  }
305 
306  virtual Bool_t IsBuilt() const
307  {
308  return TestBit(kIsBuilt);
309  }
310  static KVMultiDetArray* MakeMultiDetector(const Char_t* dataset_name, Int_t run = -1, TString classname = "KVMultiDetArray", KVExpDB* db = nullptr);
311 
313  {
314  return TestBit(kIsBeingDeleted);
315  }
317  virtual void SetParameters(UInt_t n, Bool_t physics_parameters_only = kFALSE);
319  virtual void SetRunCalibrationParameters(UShort_t n);
320 
322  {
323  return TestBit(kParamsSet);
324  }
326  {
327  return (TestBit(kIDParamsSet) || ParamsSet());
328  }
330  {
331  return (TestBit(kCalParamsSet) || ParamsSet());
332  }
334  {
335  return fCurrentRun;
336  }
338  {
339  fCurrentRun = r;
340  }
341 
342  virtual void SetIdentifications();
343  virtual void InitializeIDTelescopes();
344  Bool_t ReadGridsFromAsciiFile(const Char_t*) const;
345 
346  virtual Double_t GetTotalSolidAngle(void) const
347  {
353 
354  Double_t SA = 0;
355  TIter it(GetDetectors());
356  KVDetector* d;
357  while ((d = (KVDetector*)it())) {
358  if (!d->GetNode()->GetNDetsInFront()) {
359  SA += d->GetSolidAngle();
360  }
361  }
362  return SA;
363  }
364 
369 
370 
371  virtual void SetSimMode(Bool_t on = kTRUE)
372  {
376  fSimMode = on;
377  GetDetectors()->R__FOR_EACH(KVDetector, SetSimMode)(on);
378  }
380  {
384  return fSimMode;
385  }
386 
387  static TGeoHMatrix* GetVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi,
388  TGeoTranslation* postTrans = nullptr);
389  void SetGridsInTelescopes(UInt_t run);
390  void FillListOfIDTelescopes(KVIDGraph* gr) const;
391 
392  void Draw(Option_t* option = "") override;
394  {
396  return &fTrajectories;
397  }
398 
399  void MakeHistogramsForAllIDTelescopes(KVSeqCollection* list, Int_t dimension = 100);
401 
403  virtual void FillDetectorList(KVReconstructedNucleus* rnuc, KVHashList* DetList, const KVString& DetNames);
404 
407  {
408  return fAcceptIDCodes;
409  }
411  {
412  return fAcceptECodes;
413  }
414  void AcceptIDCodes(const KVNumberList& codelist)
415  {
437 
438  fAcceptIDCodes = codelist;
439  }
440  virtual void AcceptAllIDCodes()
441  {
446 
447  AcceptIDCodes("");
448  }
449  void AcceptECodes(const KVNumberList& codelist)
450  {
464 
472 
473  fAcceptECodes = codelist;
474  }
475  virtual void AcceptAllECodes()
476  {
481 
482  AcceptECodes("");
483  }
484 
485  virtual KVMultiDetArray* GetArray(const Char_t*) const
486  {
487  return const_cast<KVMultiDetArray*>(this);
488  }
489  virtual const KVSeqCollection* GetArrays() const
490  {
491  return nullptr;
492  }
493 
494  void RecursiveTrajectoryClustering(KVGeoDetectorNode* N, KVUniqueNameList& tried_trajectories, KVUniqueNameList& multitraj_nodes, KVUniqueNameList& detectors_of_group);
495  virtual const Char_t* GetPartSeedCond() const
496  {
498  return fPartSeedCond;
499  }
500  virtual void SetPartSeedCond(const Char_t* cond)
501  {
503  fPartSeedCond = cond;
504  }
507  {
508  std::unique_ptr<KVSeqCollection> glist(GetStructureTypeList("GROUP"));
509  return glist->GetEntries();
510  }
511 
514 #ifdef WITH_MFM
515  Bool_t HandleRawDataBuffer(MFMBufferReader&);
516 #endif
518  {
519  return fHandledRawData;
520  }
521  virtual void SetRawDataFromReconEvent(const KVReconstructedEvent&);
522 
524  {
525  return fDataSet;
526  }
527 
528  virtual void MakeCalibrationTables(KVExpDB*);
529  virtual void SetCalibratorParameters(KVDBRun*, const TString& = "");
530  void CheckStatusOfDetectors(KVDBRun*, const TString& = "");
531  virtual void SetDetectorParametersForRun(KVDBRun*, const TString& = "");
532 
534  {
536  return 5;
537  }
539  {
540  return "";
541  }
543  {
544  return "";
545  }
546  virtual Short_t GetBadIDCode() const
547  {
551  return 14;
552  }
553  virtual Short_t GetCoherencyIDCode() const
554  {
558  return 6;
559  }
561  {
565  return 8;
566  }
568  {
572  }
574  {
577  return 1;
578  }
580  {
583  return 0;
584  }
586  {
589  return 2;
590  }
592  {
595  fMakeMultiDetectorPhysicsParametersOnly = on;
596  }
597 
598  ClassDefOverride(KVMultiDetArray, 7) //Base class for multidetector arrays
599 };
600 
602 R__EXTERN KVMultiDetArray* gMultiDetArray;
603 
604 #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
short Short_t
double Double_t
const char Option_t
#define BIT(n)
#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
char name[80]
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Description of an experimental run in database ,,.
Definition: KVDBRun.h:41
Table in a database.
Definition: KVDBTable.h:34
List of hit groups in a multidetector array.
Detector signal waveform.
void SetTrace(const std::vector< TraceData > &trace, double time_resolution)
Base class for detector geometry description, interface to energy-loss calculations.
Definition: KVDetector.h:173
KVDetectorSignalTrace * AddDetectorSignalTrace()
virtual KVDetectorSignal * GetDetectorSignal(const KVString &type) const
Definition: KVDetector.h:543
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:61
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:69
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
KVGeoStrucElement * GetStructure(const Char_t *name) 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:31
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:85
Extended TList class which owns its objects by default.
Definition: KVList.h:22
Read MFM format acquisition data.
Base class for describing the geometry of a detector array.
const KVSeqCollection * GetFiredSignals() const
const KVNumberList & GetAcceptedIDCodes() const
KVSeqCollection * GetListOfIDTelescopes() const
void FillListOfIDTelescopes(KVIDGraph *gr) const
KVNameValueList & GetReconParameters()
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_params=0)
void MakeHistogramsForAllIDTelescopes(KVSeqCollection *list, Int_t dimension=100)
TList * GetStatusOfIDTelescopes()
void Draw(Option_t *option="") override
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray", KVExpDB *db=nullptr)
static void SetMakeMultiDetectorPhysicsParametersOnly(Bool_t on=kTRUE)
virtual void AcceptAllECodes()
virtual TString GetECodeMeaning(Int_t) const
virtual Double_t GetTargetEnergyLossCorrection(KVReconstructedNucleus *)
void CreateGeoManager(Double_t dx=500, Double_t dy=500, Double_t dz=500)
Bool_t HandledRawData() const
KVSeqCollection * GetIDTelescopesWithType(const Char_t *type)
KVTarget * GetTarget()
void RecursiveTrajectoryClustering(KVGeoDetectorNode *N, KVUniqueNameList &tried_trajectories, KVUniqueNameList &multitraj_nodes, KVUniqueNameList &detectors_of_group)
virtual void SetRawDataFromReconEvent(const KVReconstructedEvent &)
void AcceptECodes(const KVNumberList &codelist)
void Clear(Option_t *opt="") override
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
Bool_t IsSimMode() const
void AcceptIDCodes(const KVNumberList &codelist)
Bool_t ReadGridsFromAsciiFile(const Char_t *) const
Int_t GetNumberOfGroups() const
virtual void InitialiseRawDataReading(KVRawDataReader *)
virtual void SetParameters(UInt_t n, Bool_t physics_parameters_only=kFALSE)
void SetCurrentRunNumber(UInt_t r)
virtual void SetDetectorParametersForRun(KVDBRun *, const TString &="")
void SetFilterType(Int_t t)
virtual TString GetIDCodeMeaning(Int_t) const
TString GetDataSet() const
virtual const KVSeqCollection * GetArrays() const
const KVNumberList & GetAcceptedECodes() const
KVGroup * GetGroup(const Char_t *name) const
static TGeoHMatrix * GetVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi, TGeoTranslation *postTrans=nullptr)
KVGeoNavigator * GetNavigator() const
const KVSeqCollection * GetExtraRawDataSignals() const
void SetGeometry(TGeoManager *)
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 &)
void CheckStatusOfDetectors(KVDBRun *, const TString &="")
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()
virtual void Build(Int_t run=-1)
virtual void FillDetectorList(KVReconstructedNucleus *rnuc, KVHashList *DetList, const KVString &DetNames)
Bool_t IsBeingDeleted()
const TSeqCollection * GetTrajectories() const
TList * GetCalibrationStatusOfDetectors()
virtual Bool_t IsBuilt() const
const KVSeqCollection * GetFiredDetectors() const
TGeoManager * GetGeometry() const
Return pointer to the (ROOT) geometry of the array.
virtual Short_t GetBadIDCode() const
virtual Int_t GetIDCodeForParticlesStoppingInFirstStageOfTelescopes() const
virtual Bool_t HandleRawDataEvent(KVRawDataReader *)
virtual void InitializeIDTelescopes()
virtual void SetRunCalibrationParameters(UShort_t n)
virtual Short_t GetMultiHitFirstStageIDCode() const
virtual const Char_t * GetPartSeedCond() const
void PrintStatusOfIDTelescopes()
virtual void SetSimMode(Bool_t on=kTRUE)
void PrintCalibStatusOfDetectors()
virtual UChar_t GetCalculatedCalibrationCode() const
virtual Double_t GetTotalSolidAngle(void) const
virtual void SetTarget(KVTarget *target)
virtual Short_t GetCoherencyIDCode() const
virtual void AcceptAllIDCodes()
virtual void SetCalibratorParameters(KVDBRun *, const TString &="")
virtual void SetPartSeedCond(const Char_t *cond)
void SetGridsInTelescopes(UInt_t run)
KVGroup * GetGroup(Int_t number) const
virtual UChar_t GetNormalCalibrationCode() const
KVIDTelescope * GetIDTelescope(const Char_t *name) const
Return pointer to DeltaE-E ID Telescope with "name".
Short_t GetZminCode() const
virtual void SetReconParametersInEvent(KVReconstructedEvent *) const
Copy any parameters in fReconParameters in to the reconstructed event parameter list.
const KVNameValueList & GetReconParameters() const
virtual UChar_t GetNoCalibrationCode() const
virtual KVMultiDetArray * GetArray(const Char_t *) const
virtual void AcceptParticleForAnalysis(KVReconstructedNucleus *) const
void SetNavigator(KVGeoNavigator *geo)
EFilterType
filter types. values of fFilterType
KVMultiDetArray()
Default constructor.
KVUpDater * GetUpDater()
KVUniqueNameList GetIDTelescopeTypes()
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:85
Read Google Protobuf DAQ files.
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.
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
Optimised list in which named objects can only be placed once.
void Add(TObject *obj) override
Extended TList class which does not own its objects by default.
Definition: KVUnownedList.h:20
Base class implementing necessary methods for setting multidetector parameters for each run of the cu...
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
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
const char * Data() const