6#include "KVReconstructedNucleus.h"
9#include <KVRangeTableGeoNavigator.h>
19 fCloseGeometryNow =
kFALSE;
23 fIDTelescopes->SetOwner(
kFALSE);
77 Int_t group_offset = 0;
87 gMultiDetArray =
nullptr;
91 if (myname !=
"") myname +=
"-";
95 Error(
"Build",
"NULL pointer returned by MakeMultiDetector");
111 TIter next(groups.get());
115 group->SetNumber(group_number + group_offset);
119 group_offset += groups->GetEntries();
131 gMultiDetArray =
this;
155 Warning(
"AcceptParticleForAnalysis",
"ReconstructedNucleus has ARRAY=%s but no KVMultiDetArray with this name in set-up",
159 Warning(
"AcceptParticleForAnalysis",
"ReconstructedNucleus has no ARRAY parameter: cannot determine correct KVMultiDetArray");
189 for (KVReconstructedEvent::Iterator it =
e->GetNextParticleIterator(opt); it !=
e->end(); ++it) {
190 m.IncrementValue((*it).GetParameters()->GetStringValue(
"ARRAY"), 1);
215 std::vector<std::thread> threads;
217 threads.push_back(std::thread([ = ]() {
222 for (
auto& th : threads) {
223 if (th.joinable()) th.join();
R__EXTERN TGeoManager * gGeoManager
static const Char_t * GetDataSetEnv(const Char_t *dataset, const Char_t *type, const Char_t *defval)
Describe an experimental set-up coupling two or more different detector arrays.
KVExpSetUp()
Default constructor.
void GetArrayMultiplicities(KVReconstructedEvent *, KVNameValueList &, Option_t *="")
KVList fMDAList
list of multidetarrays
virtual void AcceptParticleForAnalysis(KVReconstructedNucleus *) const
virtual KVMultiDetArray * GetArray(const Char_t *name) const
virtual ~KVExpSetUp()
Destructor.
virtual void Build(Int_t run=-1)
Bool_t HandleRawDataEvent(KVRawDataReader *)
KVString lmultidetarrayclasses
void AbsorbDetectorPaths(KVGeoNavigator *GN)
const KVSeqCollection * GetStructures() const
KVUniqueNameList fDetectors
detectors in this structure element
KVUniqueNameList fStructures
daughter structures
KVSeqCollection * GetStructureTypeList(const Char_t *type) const
const KVSeqCollection * GetDetectors() const
Group of detectors which can be treated independently of all others in array.
static KVIonRangeTable * GetRangeTable()
Base class for describing the geometry of a detector array.
static Bool_t fCloseGeometryNow
void CreateGeoManager(Double_t dx=500, Double_t dy=500, Double_t dz=500)
KVSeqCollection * fIDTelescopes
deltaE-E telescopes in groups
static Bool_t fMakeMultiDetectorSetParameters
void prepare_to_handle_new_raw_data()
reset acquisition parameters etc. before reading new raw data event
KVGeoNavigator * GetNavigator() const
void SetGeometry(TGeoManager *)
virtual void PerformClosedROOTGeometryOperations()
KVSeqCollection * GetListOfIDTelescopes() const
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 Bool_t HandleRawDataEvent(KVRawDataReader *)
KVUniqueNameList fFiredDetectors
list of fired detectors after reading raw data event
KVNameValueList & GetReconParameters()
KVNameValueList fReconParameters
general purpose list of parameters for storing information on data reconstruction
TString fDataSet
name of associated dataset, used with MakeMultiDetector()
virtual void AcceptParticleForAnalysis(KVReconstructedNucleus *) const
void SetNavigator(KVGeoNavigator *geo)
KVUnownedList fFiredSignals
list of fired signals after reading raw data event
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Bool_t HasStringParameter(const Char_t *name) const
const Char_t * GetStringValue(const Char_t *name) const
KVNameValueList * GetParameters() const
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 .
virtual void Add(TObject *obj)
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
Optimised list in which named objects can only be placed once.
virtual void AddAll(const TCollection *col)
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
void CloseGeometry(Option_t *option="d")
const char * GetName() const override
virtual void SetName(const char *name)
TClass * IsA() const override
virtual void Clear(Option_t *="")
virtual void Warning(const char *method, const char *msgfmt,...) const
virtual void Error(const char *method, const char *msgfmt,...) const
virtual void Info(const char *method, const char *msgfmt,...) const
const char * Data() const