7 #include "KVMultiDetArray.h"
9 #include <KVGeoImport.h>
12 #include "KVFAZIATrigger.h"
14 #if ROOT_VERSION_CODE <= ROOT_VERSION(5,32,0)
126 return ECodes::NORMAL_CALIBRATION;
150 return IDCodes::ID_STOPPED_IN_FIRST_STAGE;
154 return IDCodes::NO_IDENTIFICATION;
161 return "NO_IDENTIFICATION";
175 return "ID_SI12_CSI";
179 return "ID_STOPPED_IN_FIRST_STAGE";
181 return "ID_SI1_SI2_MAYBE_PUNCH_THROUGH";
183 return "ID_SI1_SI2_PUNCH_THROUGH";
185 return "ID_SI1_PUNCH_THROUGH";
187 return Form(
"(unknown:%d)", idc);
204 return "NO_CALIBRATION_ATTEMPTED";
206 return "NORMAL_CALIBRATION";
208 return "SOME_ENERGY_LOSSES_CALCULATED";
210 return "WARNING_CSI_MAX_ENERGY";
212 return "ENERGY_LOSSES_TENTATIVELY_CALCULATED (for Z=1,2 stopped in uncalibrated CsI)";
214 return Form(
"(unknown:%d)", ec);
303 trans.
SetDz(distance) ;
305 if (postTrans)
h = (*postTrans) * rot2 * trans * rot1 ;
306 else h = rot2 * trans * rot1;
#define ClassDefOverride(name, id)
char * Form(const char *fmt,...)
List of hit groups in a multidetector array.
Extension of TEnv to allow the writing of comments in the file.
Base class to describe database of an experiment ,,.
The trigger pattern for each FAZIA event.
void SetTriggerPattern(uint16_t tp)
Description of a FAZIA detector geometry.
Double_t fImport_Xorg
for geometry import
void PerformClosedROOTGeometryOperations() override
Double_t fImport_ThetaMin
for geometry import
UChar_t GetNormalCalibrationCode() const override
Double_t fFDist
distance of FAZIA detectors from target (in cm)
Double_t fQH1risetime
values of trapezoidal filter rise time set in the fpgas defined in .kvrootrc
Double_t TreatEnergy(Int_t sigid, Int_t eid, UInt_t val)
void SetTriggerPatternsForDataSet(const TString &dataset)
TString fFGeoType
type of FAZIA geometry (="compact",...)
void SetGeometryImportParameters(Double_t dt=0.25, Double_t dp=1.0, Double_t tmin=2., Double_t pmin=0, Double_t tmax=20., Double_t pmax=360., Double_t xorg=0, Double_t yorg=0, Double_t zorg=0)
int fQuartet[8][2]
quartet number from #FEE and #FPGA
Double_t GetSetupParameter(const Char_t *parname)
Double_t fImport_dTheta
for geometry import
UShort_t GetBadIDCode() const override
Bool_t handle_raw_data_event_mfmframe(const MFMCommonFrame &) override
Double_t fFThetaMin
minimum polar angle for compact geometry (in degrees)
void SetIDCodeForIDTelescope(KVIDTelescope *) const override
Set the FAZIA-specific general identification code for the given telescope.
ECodes
Calibration quality codes attributed to particles reconstructed from data.
@ NO_CALIBRATION_ATTEMPTED
particle stopped in detectors with no available calibration
@ NORMAL_CALIBRATION
normal well-calibrated particle with no problems
@ WARNING_CSI_MAX_ENERGY
particle calibration OK, although apparent energy would mean punching through the CsI
@ ENERGY_LOSSES_TENTATIVELY_CALCULATED
particle calibration OK, with some detector energies tentatively calculated (Z<2)
@ SOME_ENERGY_LOSSES_CALCULATED
particle calibration OK, with some detector energies calculated
TString GetIDCodeMeaning(Int_t idc) const override
std::string GetTriggerForCurrentRun() const
void AddDetectorLabel(const Char_t *label)
TString GetECodeMeaning(Int_t ec) const override
const KVFAZIATrigger & GetTrigger() const
void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *dets) override
virtual void BuildTarget()
Int_t GetNumberOfBlocks() const
void Build(Int_t=-1) override
Build the FAZIA array.
static TGeoHMatrix * GetFAZIAVolumePositioningMatrix(Double_t distance, Double_t theta, Double_t phi, TGeoTranslation *postTrans=nullptr)
Int_t GetIDCodeForParticlesStoppingInFirstStageOfTelescopes() const override
Int_t fStartingBlockNumber
TString fCorrespondanceFile
Bool_t fBuildTarget; //kTRUE to include target frame in the geometry.
Double_t fImport_PhiMax
for geometry import
virtual void SetNameOfDetectors(KVEnv &env)
Double_t fImport_Zorg
for geometry import
virtual void BuildFAZIA()
methods to be implemented in child classes
void DeduceIdentificationTelescopesFromGeometry() override
KVFAZIA(const Char_t *title="")
Default constructor.
void FillDetectorList(KVReconstructedNucleus *rnuc, KVHashList *DetList, const KVString &DetNames) override
void ReadTriggerPatterns(KVExpDB *db)
virtual void DefineStructureFormats(KVGeoImport &)
void GenerateCorrespondanceFile()
Bool_t treat_event(const DAQ::FzEvent &)
Read raw data for an event.
virtual ~KVFAZIA()
Destructor.
Double_t fImport_dPhi
for geometry import
Double_t fImport_ThetaMax
for geometry import
int fTelescope[8][2]
telescope number from #FEE and #FPGA
KVFAZIATrigger fTrigger
trigger pattern read from data for each event
KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const override
Specialized group reconstructor for FAZIA.
void SetRawDataFromReconEvent(KVNameValueList &) override
Overrides base method in order to set the value of the trigger bit pattern for the event.
virtual void GetGeometryParameters()
Called by the Build method.
void SetTriggerPattern(uint16_t fp)
double oldfaziats
dummy ts to control trigger info transmission rate
Bool_t handle_raw_data_event_protobuf(KVProtobufDataReader &) override
void copy_fired_parameters_to_recon_param_list() override
TString GetSignalName(Int_t bb, Int_t qq, Int_t tt, Int_t idsig)
Double_t fImport_PhiMin
for geometry import
IDCodes
Identification quality codes attributed to particles reconstructed from data.
@ ID_SI12_CSI
particle identified in (SI1+SI2)-CSI telescope
@ ID_SI1_SI2_MAYBE_PUNCH_THROUGH
possible ambiguity of particle identification in SI1-SI2 due to unvetoed punch-through
@ ID_CSI_PSA
particle identified by pulse shape analysis in CSI
@ ID_STOPPED_IN_FIRST_STAGE
particle stopped in SI1, no identification possible better than estimation of minimum Z
@ ID_SI1_SI2_PUNCH_THROUGH
particle punching through SI2, identified Z is a minimum value
@ ID_SI1_CSI
particle identified in SI1-SI2 telescope
@ ID_SI1_PSA
particle identified by pulse shape analysis in SI1
@ ID_SI1_PUNCH_THROUGH
particle partially identified by pulse shape analysis in SI1, although it is punching through (no SI2...
@ ID_SI2_PSA
particle identified by pulse shape analysis in SI1
@ NO_IDENTIFICATION
no identification possible for particle
@ ID_GAMMA
'gamma' particle identified by pulse shape analysis in CSI
@ ID_SI2_CSI
particle identified in SI2-CSI telescope
@ ID_INCOHERENT
particle with incoherent identifications (CCode>=0)
@ ID_SI1_SI2
particle identified in SI1-SI2 telescope
const Char_t * GetSignalTypes() const
void IncludeTargetInGeometry(Bool_t include=kTRUE)
Int_t fNblocks
number of blocks
KVString GetDetectorLabels() const
void prepare_to_handle_new_raw_data()
Double_t fImport_Yorg
for geometry import
void CreateCorrespondence()
void MakeCalibrationTables(KVExpDB *) override
Override base method in order to read FAZIA trigger for each run.
Import detector array described by ROOT geometry and set up corresponding KVMultiDetArray object.
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 all detectors or associations of detectors in array which can identify charged particl...
Base class for describing the geometry of a detector array.
void prepare_to_handle_new_raw_data()
reset acquisition parameters etc. before reading new raw data event
static Bool_t fBuildTarget
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Read Google Protobuf DAQ files.
Nuclei reconstructed from data measured by a detector array .
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void SetAngles(Double_t phi, Double_t theta, Double_t psi)
void SetDz(Double_t dz) override
const char * Data() const