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 "TEnv.h"
24 #include "KVASMultiDetArray.h"
25 #include "KVList.h"
26 #include "KVHashList.h"
27 #include "KVDBSystem.h"
28 #include "KVUpDater.h"
29 #include "KVDataSetManager.h"
30 #include "KVINDRATriggerInfo.h"
31 #include "KVINDRADetector.h"
32 #include "KVINDRATelescope.h"
33 
34 class KVLayer;
35 class KVNucleus;
36 class KVChIo;
37 class KVDetectorEvent;
38 class KVINDRAReconEvent;
39 
41 enum EBaseIndra_type {
42  ChIo_GG = 1,
43  ChIo_PG, //=2
44  ChIo_T, //=3
45  Si_GG, //=4
46  Si_PG, //=5
47  Si_T, //=6
48  CsI_R, //=7
49  CsI_L, //=8
50  CsI_T, //=9
51  Si75_GG, //=10
52  Si75_PG, //=11
53  Si75_T, //=12
54  SiLi_GG, //=13
55  SiLi_PG, //=14
56  SiLi_T //=15
57 };
58 enum EBaseIndra_typePhos {
59  Phos_R = 1,
60  Phos_L, //=2
61  Phos_T, //=3
62 };
63 
71 class KVINDRA: public KVASMultiDetArray {
72 
73 public:
74  static Char_t SignalTypes[16][3];
75 
76 
77 private:
79 
80 protected:
85 
87 
89 
91 
93 
96 
97  virtual void MakeListOfDetectors();
98  virtual void BuildGeometry();
99  virtual void SetGroupsAndIDTelescopes();
103  void BuildLayer(const Char_t* name);
104  KVRing* BuildRing(Int_t number, const Char_t* prefix);
105  KVINDRATelescope* BuildTelescope(const Char_t* prefix, Int_t mod);
108  void SetNamesOfIDTelescopes() const;
109 
111 #ifdef WITH_BUILTIN_GRU
113 #endif
114 #ifdef WITH_MFM
115  Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame&);
116 #ifdef WITH_MESYTEC
117  virtual Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame&);
118 #endif
119 #endif
121 
122  void ReadChIoPressures(KVExpDB*);
123  void SetChIoPressures(KVDBRun*);
124  void SetDetectorParametersForRun(KVDBRun*, const TString& = "");
125 
126 public:
128 
132  {
135  return IDCodes::NO_IDENTIFICATION;
136  }
138  {
141  return IDCodes::ID_CI_SI_COHERENCY;
142  }
144  {
147  return IDCodes::ID_CI_MULTIHIT;
148  }
150  {
152  return ECodes::NORMAL_CALIBRATION;
153  }
154 
155 public:
156  enum IDCodes {
162  ID_GAMMA = 0,
166  ID_SI_CSI = 3,
169  ID_CI_SI = 4,
170  ID_CI_CSI = 4,
177  };
179  {
181  switch (idc) {
182  case NO_IDENTIFICATION:
183  return "NO_IDENTIFICATION";
185  return "ID_STOPPED_IN_FIRST_STAGE";
186  case ID_GAMMA:
187  return "ID_GAMMA";
188  case ID_NEUTRON:
189  return "ID_NEUTRON";
190  case ID_CSI_PSA:
191  return "ID_CSI_PSA";
192  case ID_SI_CSI:
193  return "ID_SI_CSI";
194  case ID_CI_SI:
195  return "ID_CI_CSI";
196  case ID_CSI_FRAGMENT:
197  return "ID_CSI_FRAGMENT";
199  return "ID_CSI_MASS_OUT_OF_RANGE";
200  default:
201  return Form("(unknown:%d)", idc);
202  }
203  }
204  enum ECodes {
213  BAD_CALIBRATION = 15
214  };
216  {
217  switch (ec) {
219  return "NO_CALIBRATION_ATTEMPTED";
220  case NORMAL_CALIBRATION:
221  return "NORMAL_CALIBRATION";
223  return "SOME_ENERGY_LOSSES_CALCULATED";
225  return "WARNING_CSI_MAX_ENERGY";
227  return "WARNING_CSI_NO_MASS_ID";
228  case BAD_CALIBRATION:
229  return "BAD_CALIBRATION";
230  default:
231  return Form("(unknown:%d)", ec);
232  }
233  }
235  {
236  return IDCodes::ID_STOPPED_IN_FIRST_STAGE;
237  }
238 
239  KVINDRA();
240  virtual ~ KVINDRA();
241 
242  void handle_ebyedat_raw_data_parameter(const char* param_name, uint16_t val);
243 
244  virtual void Build(Int_t run = -1);
245  virtual Bool_t ArePHDSet() const
246  {
247  return fPHDSet;
248  }
249  virtual void PHDSet(Bool_t yes = kTRUE)
250  {
251  fPHDSet = yes;
252  }
253 
255  inline KVHashList* GetListOfChIo() const
256  {
257  return fChIo;
258  };
259  inline KVHashList* GetListOfSi() const
260  {
261  return fSi;
262  };
263  inline KVHashList* GetListOfCsI() const
264  {
265  return fCsI;
266  };
268  {
269  return fPhoswich;
270  };
271 
272  virtual KVChIo* GetChIoOf(const Char_t* detname);
273  virtual void cd(Option_t* option = "");
275  UInt_t type) const;
276 
277  void SetTrigger(UChar_t trig);
279  {
280  return fTrigger;
281  }
282 
283  void SetPinLasersForCsI();
284 
286  virtual void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_dets = 0);
287 
289  {
290  return fSelecteur;
291  };
292 
293  void CreateROOTGeometry();
294 
295  virtual void SetROOTGeometry(Bool_t on = kTRUE);
296 
300 
302 
303  ClassDef(KVINDRA, 6) //class describing the materials and detectors etc. to build an INDRA multidetector array
304 };
305 
307 R__EXTERN KVINDRA* gIndra;
308 
310 inline void KVINDRA::cd(Option_t*)
311 {
312  gIndra = this;
313 }
314 
315 #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 ClassDef(name, id)
char * Form(const char *fmt,...)
Base class for azimuthally-symmetric multidetector arrays (obsolete)
Ionisation chamber detectors of the INDRA multidetector array.
Definition: KVChIo.h:30
Description of an experimental run in database ,,.
Definition: KVDBRun.h:36
List of hit groups in a multidetector array.
Base class for detector geometry description.
Definition: KVDetector.h:160
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:20
Reads GANIL acquisition files (EBYEDAT)
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
Extended version of ROOT THashList.
Definition: KVHashList.h:29
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.
Base class for telescopes in INDRA array.
Information on INDRA event from DAQ trigger.
INDRA multidetector array geometry.
Definition: KVINDRA.h:71
Bool_t fEbyedatData
set to true when VME/VXI acquisition system is used
Definition: KVINDRA.h:94
virtual void Build(Int_t run=-1)
Definition: KVINDRA.cpp:385
void InitialiseRawDataReading(KVRawDataReader *)
Definition: KVINDRA.cpp:1610
KVHashList * GetListOfSi() const
Definition: KVINDRA.h:259
KVINDRA()
Definition: KVINDRA.cpp:88
virtual KVChIo * GetChIoOf(const Char_t *detname)
Definition: KVINDRA.cpp:570
void handle_ebyedat_raw_data_parameter(const char *param_name, uint16_t val)
Definition: KVINDRA.cpp:801
KVINDRATelescope * BuildTelescope(const Char_t *prefix, Int_t mod)
Definition: KVINDRA.cpp:298
virtual Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader &)
Definition: KVINDRA.cpp:1021
void CreateROOTGeometry()
Definition: KVINDRA.cpp:1370
UChar_t GetTrigger() const
Definition: KVINDRA.h:278
KVHashList * fChIo
List Of ChIo of INDRA.
Definition: KVINDRA.h:81
void SetRawDataFromReconEvent(KVNameValueList &)
Definition: KVINDRA.cpp:1541
virtual UChar_t GetNormalCalibrationCode()
Definition: KVINDRA.h:149
void SetPinLasersForCsI()
Definition: KVINDRA.cpp:1162
TString GetIDCodeMeaning(Int_t idc) const
Definition: KVINDRA.h:178
void copy_fired_parameters_to_recon_param_list()
Definition: KVINDRA.cpp:830
KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const
Definition: KVINDRA.cpp:1495
virtual Int_t GetIDCodeForParticlesStoppingInFirstStageOfTelescopes() const
Definition: KVINDRA.h:234
virtual void SetGroupsAndIDTelescopes()
Definition: KVINDRA.cpp:552
Int_t GetIDTelescopes(KVDetector *, KVDetector *, TCollection *)
Definition: KVINDRA.cpp:713
ECodes
Calibration quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:204
@ NORMAL_CALIBRATION
normal well-calibrated particle with no problems
Definition: KVINDRA.h:209
@ BAD_CALIBRATION
calibration attempted but bad result (negative energies etc.)
Definition: KVINDRA.h:213
@ NO_CALIBRATION_ATTEMPTED
particle stopped in detectors with no available calibration
Definition: KVINDRA.h:208
@ WARNING_CSI_MAX_ENERGY
particle calibration OK, although apparent energy would mean punching through the CsI
Definition: KVINDRA.h:211
@ WARNING_CSI_NO_MASS_ID
particle identified in CsI only in Z, not in A, therefore calculated energy untrustworthy
Definition: KVINDRA.h:212
@ SOME_ENERGY_LOSSES_CALCULATED
particle calibration OK, with some detector energies calculated
Definition: KVINDRA.h:210
KVHashList * GetListOfPhoswich() const
Definition: KVINDRA.h:267
KVINDRATriggerInfo * fSelecteur
infos from DAQ trigger (le Selecteur)
Definition: KVINDRA.h:88
UChar_t fTrigger
multiplicity trigger used for acquisition
Definition: KVINDRA.h:78
virtual UShort_t GetCoherencyIDCode()
Definition: KVINDRA.h:137
KVLayer * GetChIoLayer()
Definition: KVINDRA.cpp:588
KVHashList * fCsI
List of CsI detectors of INDRA.
Definition: KVINDRA.h:83
virtual void cd(Option_t *option="")
................ inline functions
Definition: KVINDRA.h:310
virtual void SetROOTGeometry(Bool_t on=kTRUE)
Definition: KVINDRA.cpp:1471
void SetChIoPressures(KVDBRun *)
Definition: KVINDRA.cpp:939
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:74
void FillListsOfDetectorsByType()
Fill lists of ChIo, Si, CsI and phoswich.
Definition: KVINDRA.cpp:516
virtual ~ KVINDRA()
Bool_t fMesytecData
set to true when Mesytec acquisition system is used
Definition: KVINDRA.h:95
virtual void MakeListOfDetectors()
Overrides KVASMultiDetArray method to add FillListsOfDetectorsByType()
Definition: KVINDRA.cpp:503
void FillTrajectoryIDTelescopeLists()
Definition: KVINDRA.cpp:345
TString GetECodeMeaning(Int_t ec) const
Definition: KVINDRA.h:215
KVHashList * fSi
List of Si detectors of INDRA.
Definition: KVINDRA.h:82
void SetIDCodeForIDTelescope(KVIDTelescope *) const
Set the INDRA-specific general identification code for the given telescope.
Definition: KVINDRA.cpp:1116
KVHashList * GetListOfChIo() const
Definition: KVINDRA.h:255
TEnv fStrucInfos
file containing structure of array
Definition: KVINDRA.h:90
void PerformClosedROOTGeometryOperations()
Definition: KVINDRA.cpp:790
IDCodes
Identification quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:156
@ ID_CI_SI75
particle identified in ChIo-Si75 etalon telescope
Definition: KVINDRA.h:171
@ ID_SI_CSI
particle identified in Si-CsI telescope
Definition: KVINDRA.h:166
@ ID_NEUTRON
'neutron' discriminated by coherency between CsI and Si-CsI identifications
Definition: KVINDRA.h:163
@ ID_CI_SI
particle identified in ChIo-Si telescope
Definition: KVINDRA.h:169
@ ID_CI_SI_COHERENCY
particle identified in ChIo-Si telescope in coincidence with light particle identified in CsI
Definition: KVINDRA.h:172
@ ID_STOPPED_IN_FIRST_STAGE
particle stopped in first detector of telescope, only minimum Z can be estimated
Definition: KVINDRA.h:161
@ ID_CSI_PSA
particle identified in CsI detector by pulse shape analysis
Definition: KVINDRA.h:165
@ ID_PHOSWICH
particle identified in phoswich (campaigns 1-3)
Definition: KVINDRA.h:164
@ NO_IDENTIFICATION
no identification either attempted or available for particle
Definition: KVINDRA.h:160
@ ID_CI_COHERENCY
particle stopped in ChIo revealed by coherency tests (Zmin)
Definition: KVINDRA.h:173
@ ID_CI_MULTIHIT
particles stopped in multiple Si (ring<10) or CsI (ring>9) behind same ChIo, bad identification
Definition: KVINDRA.h:174
@ ID_CSI_FRAGMENT
particle partially identified in CsI detector, with Z greater than identifiable
Definition: KVINDRA.h:175
@ ID_GAMMA
'gamma' particle detected in CsI
Definition: KVINDRA.h:162
@ ID_SILI_CSI
particle identified in SiLi-CsI etalon telescope
Definition: KVINDRA.h:168
@ ID_CSI_MASS_OUT_OF_RANGE
particle partially identified in CsI detector, mass out of range of apparent Z (pile-up?...
Definition: KVINDRA.h:176
@ ID_SI75_SILI
particle identified in Si75-SiLi etalon telescope
Definition: KVINDRA.h:167
@ ID_CI_CSI
particle identified in ChIo-CsI telescope
Definition: KVINDRA.h:170
virtual void PHDSet(Bool_t yes=kTRUE)
Definition: KVINDRA.h:249
virtual UShort_t GetBadIDCode()
Definition: KVINDRA.h:131
void SetReconParametersInEvent(KVReconstructedEvent *) const
If "INDRA.EN" parameter has been set, we use it to set the event number.
Definition: KVINDRA.cpp:1525
void MakeCalibrationTables(KVExpDB *)
Override base method in order to read ChIo pressures for each run.
Definition: KVINDRA.cpp:1595
void SetTrigger(UChar_t trig)
Definition: KVINDRA.cpp:603
virtual Bool_t ArePHDSet() const
Definition: KVINDRA.h:245
KVNameValueList fEbyedatParamDetMap
maps EBYEDAT parameter names to detectors
Definition: KVINDRA.h:92
Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame &)
Definition: KVINDRA.cpp:1057
KVRing * BuildRing(Int_t number, const Char_t *prefix)
Build ring with infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset].env".
Definition: KVINDRA.cpp:249
virtual KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
Definition: KVINDRA.cpp:639
void SetNamesOfIDTelescopes() const
Definition: KVINDRA.cpp:736
void ReadChIoPressures(KVExpDB *)
Definition: KVINDRA.cpp:870
KVINDRATriggerInfo * GetTriggerInfo()
Definition: KVINDRA.h:288
KVHashList * GetListOfCsI() const
Definition: KVINDRA.h:263
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_dets=0)
Definition: KVINDRA.cpp:1290
virtual UShort_t GetMultiHitFirstStageIDCode()
Definition: KVINDRA.h:143
void SetDetectorParametersForRun(KVDBRun *, const TString &="")
Override base method in order to set ChIo pressures (if defined)
Definition: KVINDRA.cpp:1007
void BuildLayer(const Char_t *name)
Build layer 'name' with infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset]....
Definition: KVINDRA.cpp:224
virtual void BuildGeometry()
Definition: KVINDRA.cpp:163
KVHashList * fPhoswich
List of NE102/NE115 detectors of INDRA.
Definition: KVINDRA.h:84
Bool_t fPHDSet
set to kTRUE if pulse height defect parameters are set
Definition: KVINDRA.h:86
Set of detectors at a similar distance from target (obsolete)
Definition: KVLayer.h:33
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:126
Abstract base class for reading raw (DAQ) data.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Ring in INDRA array (obsolete)
Definition: KVRing.h:20