4 #ifndef __KVMultiDetArray_H
5 #define __KVMultiDetArray_H
7 #include "KVGeoStrucElement.h"
8 #include "KVUniqueNameList.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>
29 #ifdef WITH_BUILTIN_GRU
34 class MFMMergeFrameManager;
36 class MFMEbyedatFrame;
37 class MFMBufferReader;
39 #include "MFMMesytecFrame.h"
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;
74 kIsRemoving =
BIT(14),
77 kIsBeingDeleted =
BIT(17),
78 kIDParamsSet =
BIT(18),
79 kCalParamsSet =
BIT(19)
82 TList* fStatusIDTelescopes;
83 TList* fCalibStatusDets;
98 std::unique_ptr<KVGeoNavigator> fNavigator;
112 virtual void RenumberGroups();
114 virtual void SetExpectedDetectorSignalNames();
134 void CalculateReconstructionTrajectories();
135 virtual void DeduceIdentificationTelescopesFromGeometry();
138 fTrajectories.
Add(d);
140 virtual void AssociateTrajectoriesAndNodes();
141 void DeduceGroupsFromTrajectories();
144 virtual Bool_t handle_raw_data_event_mfmfile(MFMBufferReader&);
145 virtual Bool_t handle_raw_data_event_mfmmergeframe(
const MFMMergeFrameManager&);
146 virtual Bool_t handle_raw_data_event_mfmframe(
const MFMCommonFrame&);
147 virtual Bool_t handle_raw_data_event_mfmframe_ebyedat(
const MFMEbyedatFrame&);
149 virtual Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(
const MFMMesytecMDPPFrame&);
155 #ifdef WITH_BUILTIN_GRU
159 template<
typename TraceData>
160 void add_and_set_detector_signal_trace(
KVDetector* det,
const std::vector<TraceData>& traces,
double time_resolution)
172 det_signal->
SetTrace(traces, time_resolution);
173 det_signal->SetFired();
176 virtual void PerformClosedROOTGeometryOperations();
178 virtual void copy_fired_parameters_to_recon_param_list();
181 std::unique_ptr<KVFileReader> GetKVFileReader(
KVExpDB* db,
const Char_t* meth,
const Char_t* keyw);
182 void ReadCalibrationFiles(
KVExpDB* db);
184 void ReadOoODetectors(
KVExpDB* db);
185 void ReadAbsentDetectors(
KVExpDB* db);
187 virtual void set_detector_thicknesses(
const TString&);
195 return fReconParameters;
201 return fReconParameters;
216 if (!Vacuum) Vacuum =
new TGeoMedium(
"Vacuum", 1, matVacuum);
258 return &fFiredDetectors;
264 return &fFiredSignals;
270 return &fExtraRawDataSignals;
278 return fIDTelescopes;
313 return TestBit(kIsBeingDeleted);
357 if (!
d->GetNode()->GetNDetsInFront()) {
358 SA +=
d->GetSolidAngle();
395 return &fTrajectories;
407 return fAcceptIDCodes;
411 return fAcceptECodes;
437 fAcceptIDCodes = codelist;
472 fAcceptECodes = codelist;
497 return fPartSeedCond;
502 fPartSeedCond = cond;
508 return glist->GetEntries();
518 return fHandledRawData;
594 fMakeMultiDetectorPhysicsParametersOnly =
on;
#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
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
Description of an experimental run in database ,,.
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.
KVDetectorSignalTrace * AddDetectorSignalTrace()
virtual KVDetectorSignal * GetDetectorSignal(const KVString &type) const
Base class to describe database of an experiment ,,.
Describe an experimental set-up coupling two or more different detector arrays.
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.
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.
Extended version of ROOT THashList.
Base class for particle identification in a 2D map.
Base class for all detectors or associations of detectors in array which can identify charged particl...
Extended TList class which owns its objects by default.
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
void SetDetectorThicknesses()
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)
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
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)
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.
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.
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....
Calculation/correction of energy losses of particles through an experimental target.
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.
Base class implementing necessary methods for setting multidetector parameters for each run of the cu...
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