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 MFMMesytecFrame&) 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  ID_SI_PSA = 111
143  };
144  TString GetIDCodeMeaning(Int_t idc) const override
145  {
147  switch (idc) {
148  case NO_IDENTIFICATION:
149  return "NO_IDENTIFICATION";
151  return "ID_STOPPED_IN_FIRST_STAGE";
152  case ID_GAMMA:
153  return "ID_GAMMA";
154  case ID_NEUTRON:
155  return "ID_NEUTRON";
156  case ID_CSI_PSA:
157  return "ID_CSI_PSA";
158  case ID_SI_CSI:
159  return "ID_SI_CSI";
160  case ID_CI_SI:
161  return "ID_CI_CSI";
162  case ID_CSI_FRAGMENT:
163  return "ID_CSI_FRAGMENT";
165  return "ID_CSI_MASS_OUT_OF_RANGE";
166  default:
167  return Form("(unknown:%d)", idc);
168  }
169  }
170  enum ECodes {
179  BAD_CALIBRATION = 15
180  };
181  TString GetECodeMeaning(Int_t ec) const override
182  {
183  switch (ec) {
185  return "NO_CALIBRATION_ATTEMPTED";
186  case NORMAL_CALIBRATION:
187  return "NORMAL_CALIBRATION";
189  return "SOME_ENERGY_LOSSES_CALCULATED";
191  return "WARNING_CSI_MAX_ENERGY";
193  return "WARNING_CSI_NO_MASS_ID";
194  case BAD_CALIBRATION:
195  return "BAD_CALIBRATION";
196  default:
197  return Form("(unknown:%d)", ec);
198  }
199  }
201  {
202  return IDCodes::ID_STOPPED_IN_FIRST_STAGE;
203  }
204  Short_t GetBadIDCode() const override
205  {
206  return IDCodes::NO_IDENTIFICATION;
207  }
208  Short_t GetCoherencyIDCode() const override
209  {
212  return IDCodes::ID_CI_SI_COHERENCY;
213  }
215  {
216  return IDCodes::ID_CI_MULTIHIT;
217  }
218  TString GetCsIIDType() const;
219 
220  KVINDRA();
221  virtual ~ KVINDRA();
222 
223  void handle_ebyedat_raw_data_parameter(const char* param_name, uint16_t val);
224 
225  void Build(Int_t run = -1) override;
226  virtual Bool_t ArePHDSet() const
227  {
228  return fPHDSet;
229  }
230  virtual void PHDSet(Bool_t yes = kTRUE)
231  {
232  fPHDSet = yes;
233  }
234 
235  KVLayer* GetChIoLayer();
237  {
238  return &fChIo;
239  }
241  {
242  return &fSi;
243  }
245  {
246  return &fCsI;
247  }
249  {
250  return &fPhoswich;
251  }
252 
253  virtual KVChIo* GetChIoOf(const Char_t* detname);
254  virtual void cd(Option_t* option = "");
256  UInt_t type) const;
257 
258  void SetTrigger(UChar_t trig);
260  {
261  return fTrigger;
262  }
263 
264  void SetPinLasersForCsI();
265 
267  void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_dets = 0) override;
268 
270  {
271  return fSelecteur;
272  }
273 
274  KVGroupReconstructor* GetReconstructorForGroup(const KVGroup*) const override;
275  void SetReconParametersInEvent(KVReconstructedEvent*) const override;
277 
278  KVINDRADetector* GetDetector(const Char_t* name) const override
279  {
281  }
282 
283  void MakeCalibrationTables(KVExpDB*) override;
284 
285  ClassDefOverride(KVINDRA, 6) //class describing the materials and detectors etc. to build an INDRA multidetector array
286 };
287 
289 R__EXTERN KVINDRA* gIndra;
290 
292 inline void KVINDRA::cd(Option_t*)
293 {
294  gIndra = this;
295 }
296 
297 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
bool Bool_t
unsigned char UChar_t
char Char_t
short Short_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:41
List of hit groups in a multidetector array.
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:61
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:20
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:85
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:895
virtual KVChIo * GetChIoOf(const Char_t *detname)
Definition: KVINDRA.cpp:171
Short_t GetCoherencyIDCode() const override
Definition: KVINDRA.h:208
void handle_ebyedat_raw_data_parameter(const char *param_name, uint16_t val)
Definition: KVINDRA.cpp:422
void SetDetectorParametersForRun(KVDBRun *, const TString &="") override
Override base method in order to set ChIo pressures (if defined)
Definition: KVINDRA.cpp:628
UChar_t GetNormalCalibrationCode() const override
Definition: KVINDRA.h:114
UChar_t GetTrigger() const
Definition: KVINDRA.h:259
void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_dets=0) override
Definition: KVINDRA.cpp:868
void SetPinLasersForCsI()
Definition: KVINDRA.cpp:808
void copy_fired_parameters_to_recon_param_list() override
Definition: KVINDRA.cpp:451
std::unique_ptr< INDRAGeometryBuilder > fIGB
Definition: KVINDRA.h:73
ECodes
Calibration quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:170
@ NORMAL_CALIBRATION
normal well-calibrated particle with no problems
Definition: KVINDRA.h:175
@ BAD_CALIBRATION
calibration attempted but bad result (negative energies etc.)
Definition: KVINDRA.h:179
@ NO_CALIBRATION_ATTEMPTED
particle stopped in detectors with no available calibration
Definition: KVINDRA.h:174
@ WARNING_CSI_MAX_ENERGY
particle calibration OK, although apparent energy would mean punching through the CsI
Definition: KVINDRA.h:177
@ WARNING_CSI_NO_MASS_ID
particle identified in CsI only in Z, not in A, therefore calculated energy untrustworthy
Definition: KVINDRA.h:178
@ SOME_ENERGY_LOSSES_CALCULATED
particle calibration OK, with some detector energies calculated
Definition: KVINDRA.h:176
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:200
UChar_t fTrigger
multiplicity trigger used for acquisition
Definition: KVINDRA.h:71
const KVSeqCollection * GetListOfChIo() const
Definition: KVINDRA.h:236
KVLayer * GetChIoLayer()
Definition: KVINDRA.cpp:189
virtual void cd(Option_t *option="")
................ inline functions
Definition: KVINDRA.h:292
KVUniqueNameList fSi
List of Si detectors of INDRA.
Definition: KVINDRA.h:77
void SetChIoPressures(KVDBRun *)
Definition: KVINDRA.cpp:560
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:244
virtual ~ KVINDRA()
Bool_t fMesytecData
set to true when Mesytec acquisition system is used
Definition: KVINDRA.h:88
TString GetCsIIDType() const
Definition: KVINDRA.cpp:775
void SetReconParametersInEvent(KVReconstructedEvent *) const override
If "INDRA.EN" parameter has been set, we use it to set the event number.
Definition: KVINDRA.cpp:936
KVINDRADetector * GetDetector(const Char_t *name) const override
Definition: KVINDRA.h:278
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_SI_PSA
particle identified in Si detector by pulse shape analysis
Definition: KVINDRA.h:142
@ ID_CI_CSI
particle identified in ChIo-CsI telescope
Definition: KVINDRA.h:135
virtual void PHDSet(Bool_t yes=kTRUE)
Definition: KVINDRA.h:230
void PerformClosedROOTGeometryOperations() override
Definition: KVINDRA.cpp:373
const KVSeqCollection * GetListOfSi() const
Definition: KVINDRA.h:240
Short_t GetBadIDCode() const override
Definition: KVINDRA.h:204
void SetTrigger(UChar_t trig)
Definition: KVINDRA.cpp:204
void SetRawDataFromReconEvent(KVNameValueList &) override
Definition: KVINDRA.cpp:952
void MakeCalibrationTables(KVExpDB *) override
Override base method in order to read ChIo pressures for each run.
Definition: KVINDRA.cpp:1006
virtual Bool_t ArePHDSet() const
Definition: KVINDRA.h:226
Short_t GetMultiHitFirstStageIDCode() const override
Definition: KVINDRA.h:214
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:752
void ReadChIoPressures(KVExpDB *)
Definition: KVINDRA.cpp:491
KVINDRATriggerInfo * GetTriggerInfo()
Definition: KVINDRA.h:269
Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecFrame &) override
Definition: KVINDRA.cpp:1154
void InitialiseRawDataReading(KVRawDataReader *) override
Definition: KVINDRA.cpp:1048
void set_detector_thicknesses(const TString &) override
Definition: KVINDRA.cpp:1239
Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame &) override
Definition: KVINDRA.cpp:693
void BuildGeometry()
Definition: KVINDRA.cpp:639
const KVSeqCollection * GetListOfPhoswich() const
Definition: KVINDRA.h:248
TString GetIDCodeMeaning(Int_t idc) const override
Definition: KVINDRA.h:144
Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader &) override
Definition: KVINDRA.cpp:657
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:181
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.