KaliVeda
Toolkit for HIC analysis
KVINDRA.h
1 /***************************************************************************
2  kvindra.h - description
3  -------------------
4  begin : Mon May 20 2002
5  copyright : (C) 2002 by J.D. Frankland
6  email : frankland@ganil.fr
7 
8 $Id: KVINDRA.h,v 1.43 2009/01/21 10:05:51 franklan Exp $
9  ***************************************************************************/
10 
11 /***************************************************************************
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * *
18  ***************************************************************************/
19 
20 #ifndef KVINDRA_H
21 #define KVINDRA_H
22 
23 #include "KVMultiDetArray.h"
24 #include "KVUniqueNameList.h"
25 #include "KVINDRATriggerInfo.h"
26 #include "KVINDRADetector.h"
27 
28 class KVLayer;
29 class KVNucleus;
30 class KVChIo;
31 class KVDetectorEvent;
32 class KVINDRAReconEvent;
34 
36 enum EBaseIndra_type {
37  ChIo_GG = 1,
38  ChIo_PG, //=2
39  ChIo_T, //=3
40  Si_GG, //=4
41  Si_PG, //=5
42  Si_T, //=6
43  CsI_R, //=7
44  CsI_L, //=8
45  CsI_T, //=9
46  Si75_GG, //=10
47  Si75_PG, //=11
48  Si75_T, //=12
49  SiLi_GG, //=13
50  SiLi_PG, //=14
51  SiLi_T //=15
52 };
53 enum EBaseIndra_typePhos {
54  Phos_R = 1,
55  Phos_L, //=2
56  Phos_T, //=3
57 };
58 
66 class KVINDRA: public KVMultiDetArray {
67 
68 public:
69  static Char_t SignalTypes[16][3];
70 private:
72 
73  std::unique_ptr<INDRAGeometryBuilder> fIGB;
74 
75 protected:
80 
82 
84 
86 
89 
91  void SetNamesOfIDTelescopes() const;
92 
94 #ifdef WITH_BUILTIN_GRU
96 #endif
97 #ifdef WITH_MFM
98  Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame&) override;
99 #ifdef WITH_MESYTEC
100  Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame&) override;
101 #endif
102 #endif
104  void set_detector_thicknesses(const TString&) override;
105 
106  void ReadChIoPressures(KVExpDB*);
107  void SetChIoPressures(KVDBRun*);
108  void SetDetectorParametersForRun(KVDBRun*, const TString& = "") override;
109 
110 public:
111  void BuildGeometry();
112  void SetIDCodeForIDTelescope(KVIDTelescope*) const override;
113 
115  {
117  return ECodes::NORMAL_CALIBRATION;
118  }
119 
120 public:
121  enum IDCodes {
127  ID_GAMMA = 0,
131  ID_SI_CSI = 3,
134  ID_CI_SI = 4,
135  ID_CI_CSI = 4,
142  };
143  TString GetIDCodeMeaning(Int_t idc) const override
144  {
146  switch (idc) {
147  case NO_IDENTIFICATION:
148  return "NO_IDENTIFICATION";
150  return "ID_STOPPED_IN_FIRST_STAGE";
151  case ID_GAMMA:
152  return "ID_GAMMA";
153  case ID_NEUTRON:
154  return "ID_NEUTRON";
155  case ID_CSI_PSA:
156  return "ID_CSI_PSA";
157  case ID_SI_CSI:
158  return "ID_SI_CSI";
159  case ID_CI_SI:
160  return "ID_CI_CSI";
161  case ID_CSI_FRAGMENT:
162  return "ID_CSI_FRAGMENT";
164  return "ID_CSI_MASS_OUT_OF_RANGE";
165  default:
166  return Form("(unknown:%d)", idc);
167  }
168  }
169  enum ECodes {
178  BAD_CALIBRATION = 15
179  };
180  TString GetECodeMeaning(Int_t ec) const override
181  {
182  switch (ec) {
184  return "NO_CALIBRATION_ATTEMPTED";
185  case NORMAL_CALIBRATION:
186  return "NORMAL_CALIBRATION";
188  return "SOME_ENERGY_LOSSES_CALCULATED";
190  return "WARNING_CSI_MAX_ENERGY";
192  return "WARNING_CSI_NO_MASS_ID";
193  case BAD_CALIBRATION:
194  return "BAD_CALIBRATION";
195  default:
196  return Form("(unknown:%d)", ec);
197  }
198  }
200  {
201  return IDCodes::ID_STOPPED_IN_FIRST_STAGE;
202  }
203  UShort_t GetBadIDCode() const override
204  {
205  return IDCodes::NO_IDENTIFICATION;
206  }
207  UShort_t GetCoherencyIDCode() const override
208  {
211  return IDCodes::ID_CI_SI_COHERENCY;
212  }
214  {
215  return IDCodes::ID_CI_MULTIHIT;
216  }
217  TString GetCsIIDType() const;
218 
219  KVINDRA();
220  virtual ~ KVINDRA();
221 
222  void handle_ebyedat_raw_data_parameter(const char* param_name, uint16_t val);
223 
224  void Build(Int_t run = -1) override;
225  virtual Bool_t ArePHDSet() const
226  {
227  return fPHDSet;
228  }
229  virtual void PHDSet(Bool_t yes = kTRUE)
230  {
231  fPHDSet = yes;
232  }
233 
234  KVLayer* GetChIoLayer();
236  {
237  return &fChIo;
238  }
240  {
241  return &fSi;
242  }
244  {
245  return &fCsI;
246  }
248  {
249  return &fPhoswich;
250  }
251 
252  virtual KVChIo* GetChIoOf(const Char_t* detname);
253  virtual void cd(Option_t* option = "");
255  UInt_t type) const;
256 
257  void SetTrigger(UChar_t trig);
259  {
260  return fTrigger;
261  }
262 
263  void SetPinLasersForCsI();
264 
266  void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_dets = 0) override;
267 
269  {
270  return fSelecteur;
271  }
272 
273  KVGroupReconstructor* GetReconstructorForGroup(const KVGroup*) const override;
274  void SetReconParametersInEvent(KVReconstructedEvent*) const override;
276 
277  KVINDRADetector* GetDetector(const Char_t* name) const override
278  {
280  }
281 
282  void MakeCalibrationTables(KVExpDB*) override;
283 
284  ClassDefOverride(KVINDRA, 6) //class describing the materials and detectors etc. to build an INDRA multidetector array
285 };
286 
288 R__EXTERN KVINDRA* gIndra;
289 
291 inline void KVINDRA::cd(Option_t*)
292 {
293  gIndra = this;
294 }
295 
296 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
bool Bool_t
unsigned short UShort_t
unsigned char UChar_t
char Char_t
const char Option_t
#define ClassDefOverride(name, id)
char name[80]
char * Form(const char *fmt,...)
Build INDRA geometry from Huguet CAO infos.
Ionisation chamber detectors of the INDRA multidetector array.
Definition: KVChIo.h:30
Description of an experimental run in database ,,.
Definition: KVDBRun.h:40
List of hit groups in a multidetector array.
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:20
Reads GANIL acquisition files (EBYEDAT)
virtual KVDetector * GetDetector(const Char_t *name) const
Return detector in this structure with given name.
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
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:84
Base class for detectors of INDRA array.
Event reconstructed from energy losses in INDRA multidetector.
Information on INDRA event from DAQ trigger.
INDRA multidetector array geometry.
Definition: KVINDRA.h:66
Bool_t fEbyedatData
set to true when VME/VXI acquisition system is used
Definition: KVINDRA.h:87
void Build(Int_t run=-1) override
Correspondance between CsI detectors and pin lasers is set up if known.
Definition: KVINDRA.cpp:119
KVINDRA()
Definition: KVINDRA.cpp:85
KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const override
Definition: KVINDRA.cpp:893
virtual KVChIo * GetChIoOf(const Char_t *detname)
Definition: KVINDRA.cpp:171
void handle_ebyedat_raw_data_parameter(const char *param_name, uint16_t val)
Definition: KVINDRA.cpp:417
void SetDetectorParametersForRun(KVDBRun *, const TString &="") override
Override base method in order to set ChIo pressures (if defined)
Definition: KVINDRA.cpp:623
UChar_t GetNormalCalibrationCode() const override
Definition: KVINDRA.h:114
UChar_t GetTrigger() const
Definition: KVINDRA.h:258
void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_dets=0) override
Definition: KVINDRA.cpp:866
void SetPinLasersForCsI()
Definition: KVINDRA.cpp:802
UShort_t GetCoherencyIDCode() const override
Definition: KVINDRA.h:207
void copy_fired_parameters_to_recon_param_list() override
Definition: KVINDRA.cpp:446
std::unique_ptr< INDRAGeometryBuilder > fIGB
Definition: KVINDRA.h:73
ECodes
Calibration quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:169
@ NORMAL_CALIBRATION
normal well-calibrated particle with no problems
Definition: KVINDRA.h:174
@ BAD_CALIBRATION
calibration attempted but bad result (negative energies etc.)
Definition: KVINDRA.h:178
@ NO_CALIBRATION_ATTEMPTED
particle stopped in detectors with no available calibration
Definition: KVINDRA.h:173
@ WARNING_CSI_MAX_ENERGY
particle calibration OK, although apparent energy would mean punching through the CsI
Definition: KVINDRA.h:176
@ WARNING_CSI_NO_MASS_ID
particle identified in CsI only in Z, not in A, therefore calculated energy untrustworthy
Definition: KVINDRA.h:177
@ SOME_ENERGY_LOSSES_CALCULATED
particle calibration OK, with some detector energies calculated
Definition: KVINDRA.h:175
KVINDRATriggerInfo * fSelecteur
infos from DAQ trigger (le Selecteur)
Definition: KVINDRA.h:83
KVUniqueNameList fChIo
List Of ChIo of INDRA.
Definition: KVINDRA.h:76
Int_t GetIDCodeForParticlesStoppingInFirstStageOfTelescopes() const override
Definition: KVINDRA.h:199
UChar_t fTrigger
multiplicity trigger used for acquisition
Definition: KVINDRA.h:71
const KVSeqCollection * GetListOfChIo() const
Definition: KVINDRA.h:235
KVLayer * GetChIoLayer()
Definition: KVINDRA.cpp:189
Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame &) override
Definition: KVINDRA.cpp:1075
virtual void cd(Option_t *option="")
................ inline functions
Definition: KVINDRA.h:291
KVUniqueNameList fSi
List of Si detectors of INDRA.
Definition: KVINDRA.h:77
UShort_t GetMultiHitFirstStageIDCode() const override
Definition: KVINDRA.h:213
void SetChIoPressures(KVDBRun *)
Definition: KVINDRA.cpp:555
static Char_t SignalTypes[16][3]
Use this static array to translate EBaseIndra_type signal type to a string giving the signal type.
Definition: KVINDRA.h:69
void FillListsOfDetectorsByType()
Fill lists of ChIo, Si, CsI and phoswich.
Definition: KVINDRA.cpp:138
const KVSeqCollection * GetListOfCsI() const
Definition: KVINDRA.h:243
virtual ~ KVINDRA()
Bool_t fMesytecData
set to true when Mesytec acquisition system is used
Definition: KVINDRA.h:88
TString GetCsIIDType() const
Definition: KVINDRA.cpp:769
void SetReconParametersInEvent(KVReconstructedEvent *) const override
If "INDRA.EN" parameter has been set, we use it to set the event number.
Definition: KVINDRA.cpp:934
KVINDRADetector * GetDetector(const Char_t *name) const override
Definition: KVINDRA.h:277
UShort_t GetBadIDCode() const override
Definition: KVINDRA.h:203
KVUniqueNameList fCsI
List of CsI detectors of INDRA.
Definition: KVINDRA.h:78
IDCodes
Identification quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:121
@ ID_CI_SI75
particle identified in ChIo-Si75 etalon telescope
Definition: KVINDRA.h:136
@ ID_SI_CSI
particle identified in Si-CsI telescope
Definition: KVINDRA.h:131
@ ID_NEUTRON
'neutron' discriminated by coherency between CsI and Si-CsI identifications
Definition: KVINDRA.h:128
@ ID_CI_SI
particle identified in ChIo-Si telescope
Definition: KVINDRA.h:134
@ ID_CI_SI_COHERENCY
particle identified in ChIo-Si telescope in coincidence with light particle identified in CsI
Definition: KVINDRA.h:137
@ ID_STOPPED_IN_FIRST_STAGE
particle stopped in first detector of telescope, only minimum Z can be estimated
Definition: KVINDRA.h:126
@ ID_CSI_PSA
particle identified in CsI detector by pulse shape analysis
Definition: KVINDRA.h:130
@ ID_PHOSWICH
particle identified in phoswich (campaigns 1-3)
Definition: KVINDRA.h:129
@ NO_IDENTIFICATION
no identification either attempted or available for particle
Definition: KVINDRA.h:125
@ ID_CI_COHERENCY
particle stopped in ChIo revealed by coherency tests (Zmin)
Definition: KVINDRA.h:138
@ ID_CI_MULTIHIT
particles stopped in multiple Si (ring<10) or CsI (ring>9) behind same ChIo, bad identification
Definition: KVINDRA.h:139
@ ID_CSI_FRAGMENT
particle partially identified in CsI detector, with Z greater than identifiable
Definition: KVINDRA.h:140
@ ID_GAMMA
'gamma' particle detected in CsI
Definition: KVINDRA.h:127
@ ID_SILI_CSI
particle identified in SiLi-CsI etalon telescope
Definition: KVINDRA.h:133
@ ID_CSI_MASS_OUT_OF_RANGE
particle partially identified in CsI detector, mass out of range of apparent Z (pile-up?...
Definition: KVINDRA.h:141
@ ID_SI75_SILI
particle identified in Si75-SiLi etalon telescope
Definition: KVINDRA.h:132
@ ID_CI_CSI
particle identified in ChIo-CsI telescope
Definition: KVINDRA.h:135
virtual void PHDSet(Bool_t yes=kTRUE)
Definition: KVINDRA.h:229
void PerformClosedROOTGeometryOperations() override
Definition: KVINDRA.cpp:368
const KVSeqCollection * GetListOfSi() const
Definition: KVINDRA.h:239
void SetTrigger(UChar_t trig)
Definition: KVINDRA.cpp:204
void SetRawDataFromReconEvent(KVNameValueList &) override
Definition: KVINDRA.cpp:950
void MakeCalibrationTables(KVExpDB *) override
Override base method in order to read ChIo pressures for each run.
Definition: KVINDRA.cpp:1004
virtual Bool_t ArePHDSet() const
Definition: KVINDRA.h:225
KVNameValueList fEbyedatParamDetMap
maps EBYEDAT parameter names to detectors
Definition: KVINDRA.h:85
KVUniqueNameList fPhoswich
List of NE102/NE115 detectors of INDRA.
Definition: KVINDRA.h:79
virtual KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
Definition: KVINDRA.cpp:240
void SetNamesOfIDTelescopes() const
Definition: KVINDRA.cpp:314
void SetIDCodeForIDTelescope(KVIDTelescope *) const override
Set the INDRA-specific general identification code for the given telescope.
Definition: KVINDRA.cpp:747
void ReadChIoPressures(KVExpDB *)
Definition: KVINDRA.cpp:486
KVINDRATriggerInfo * GetTriggerInfo()
Definition: KVINDRA.h:268
void InitialiseRawDataReading(KVRawDataReader *) override
Definition: KVINDRA.cpp:1019
void set_detector_thicknesses(const TString &) override
Definition: KVINDRA.cpp:1167
Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame &) override
Definition: KVINDRA.cpp:688
void BuildGeometry()
Definition: KVINDRA.cpp:634
const KVSeqCollection * GetListOfPhoswich() const
Definition: KVINDRA.h:247
TString GetIDCodeMeaning(Int_t idc) const override
Definition: KVINDRA.h:143
Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader &) override
Definition: KVINDRA.cpp:652
Bool_t fPHDSet
set to kTRUE if pulse height defect parameters are set
Definition: KVINDRA.h:81
TString GetECodeMeaning(Int_t ec) const override
Definition: KVINDRA.h:180
Base class for describing the geometry of a detector array.
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:123
Abstract base class for reading raw (DAQ) data.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
KaliVeda extensions to ROOT collection classes.
Optimised list in which named objects can only be placed once.