KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVINDRA.h
Go to the documentation of this file.
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 
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 };
59  Phos_R = 1,
60  Phos_L, //=2
61  Phos_T, //=3
62 };
63 
70 class KVINDRA: public KVASMultiDetArray {
71 
72 public:
73  static Char_t SignalTypes[16][3];
74 
75 
76 private:
78 
79 protected:
84 
86 
88 
90 
92 
95 
96  virtual void MakeListOfDetectors();
97  virtual void BuildGeometry();
98  virtual void SetGroupsAndIDTelescopes();
102  void BuildLayer(const Char_t* name);
103  KVRing* BuildRing(Int_t number, const Char_t* prefix);
104  KVINDRATelescope* BuildTelescope(const Char_t* prefix, Int_t mod);
107  void SetNamesOfIDTelescopes() const;
108 
110 #ifdef WITH_BUILTIN_GRU
112 #endif
113 #ifdef WITH_MFM
114  Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame&);
115 #ifdef WITH_MESYTEC
116  virtual Bool_t handle_raw_data_event_mfmframe_mesytec_mdpp(const MFMMesytecMDPPFrame&);
117 #endif
118 #endif
120 
121 public:
123 
127  {
130  return IDCodes::NO_IDENTIFICATION;
131  }
133  {
136  return IDCodes::ID_CI_SI_COHERENCY;
137  }
139  {
142  return IDCodes::ID_CI_MULTIHIT;
143  }
145  {
147  return ECodes::NORMAL_CALIBRATION;
148  }
149 
150 public:
151  enum IDCodes {
157  ID_GAMMA = 0,
161  ID_SI_CSI = 3,
164  ID_CI_SI = 4,
165  ID_CI_CSI = 4,
172  };
174  {
176  switch (idc) {
177  case NO_IDENTIFICATION:
178  return "NO_IDENTIFICATION";
180  return "ID_STOPPED_IN_FIRST_STAGE";
181  case ID_GAMMA:
182  return "ID_GAMMA";
183  case ID_NEUTRON:
184  return "ID_NEUTRON";
185  case ID_CSI_PSA:
186  return "ID_CSI_PSA";
187  case ID_SI_CSI:
188  return "ID_SI_CSI";
189  case ID_CI_SI:
190  return "ID_CI_CSI";
191  case ID_CSI_FRAGMENT:
192  return "ID_CSI_FRAGMENT";
194  return "ID_CSI_MASS_OUT_OF_RANGE";
195  default:
196  return Form("(unknown:%d)", idc);
197  }
198  }
199  enum ECodes {
207  BAD_CALIBRATION = 15
208  };
210  {
211  switch (ec) {
213  return "NO_CALIBRATION_ATTEMPTED";
214  case NORMAL_CALIBRATION:
215  return "NORMAL_CALIBRATION";
217  return "SOME_ENERGY_LOSSES_CALCULATED";
219  return "WARNING_CSI_MAX_ENERGY";
220  case BAD_CALIBRATION:
221  return "BAD_CALIBRATION";
222  default:
223  return Form("(unknown:%d)", ec);
224  }
225  }
227  {
228  return IDCodes::ID_STOPPED_IN_FIRST_STAGE;
229  }
230 
231  KVINDRA();
232  virtual ~ KVINDRA();
233 
234  void handle_ebyedat_raw_data_parameter(const char* param_name, uint16_t val);
235 
236  virtual void Build(Int_t run = -1);
237  virtual Bool_t ArePHDSet() const
238  {
239  return fPHDSet;
240  }
241  virtual void PHDSet(Bool_t yes = kTRUE)
242  {
243  fPHDSet = yes;
244  }
245 
247  inline KVHashList* GetListOfChIo() const
248  {
249  return fChIo;
250  };
251  inline KVHashList* GetListOfSi() const
252  {
253  return fSi;
254  };
255  inline KVHashList* GetListOfCsI() const
256  {
257  return fCsI;
258  };
260  {
261  return fPhoswich;
262  };
263 
264  virtual KVChIo* GetChIoOf(const Char_t* detname);
265  virtual void cd(Option_t* option = "");
267  UInt_t type) const;
268 
269  void SetTrigger(UChar_t trig);
271  {
272  return fTrigger;
273  }
274 
275  void SetPinLasersForCsI();
276 
278  virtual void GetDetectorEvent(KVDetectorEvent* detev, const TSeqCollection* fired_dets = 0);
279 
281  {
282  return fSelecteur;
283  };
284 
285  void CreateROOTGeometry();
286 
287  virtual void SetROOTGeometry(Bool_t on = kTRUE);
288  void SetMinimumOKMultiplicity(KVEvent*) const;
292 
293  ClassDef(KVINDRA, 6) //class describing the materials and detectors etc. to build an INDRA multidetector array
294 };
295 
298 
300 inline void KVINDRA::cd(Option_t*)
301 {
302  gIndra = this;
303 }
304 
305 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
R__EXTERN KVINDRA * gIndra
................ global variable
Definition: KVINDRA.h:297
EBaseIndra_type
old BaseIndra type definitions
Definition: KVINDRA.h:41
@ Si_PG
Definition: KVINDRA.h:46
@ ChIo_PG
Definition: KVINDRA.h:43
@ SiLi_GG
Definition: KVINDRA.h:54
@ CsI_L
Definition: KVINDRA.h:49
@ Si75_GG
Definition: KVINDRA.h:51
@ ChIo_T
Definition: KVINDRA.h:44
@ SiLi_T
Definition: KVINDRA.h:56
@ CsI_T
Definition: KVINDRA.h:50
@ SiLi_PG
Definition: KVINDRA.h:55
@ ChIo_GG
Definition: KVINDRA.h:42
@ CsI_R
Definition: KVINDRA.h:48
@ Si75_T
Definition: KVINDRA.h:53
@ Si_GG
Definition: KVINDRA.h:45
@ Si_T
Definition: KVINDRA.h:47
@ Si75_PG
Definition: KVINDRA.h:52
EBaseIndra_typePhos
Definition: KVINDRA.h:58
@ Phos_T
Definition: KVINDRA.h:61
@ Phos_R
Definition: KVINDRA.h:59
@ Phos_L
Definition: KVINDRA.h:60
unsigned short UShort_t
unsigned char UChar_t
char Char_t
bool Bool_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:29
Base class for detector geometry description.
Definition: KVDetector.h:159
Abstract base class container for multi-particle events.
Definition: KVEvent.h:66
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:19
Extended version of ROOT THashList.
Definition: KVHashList.h:28
Base class for all detectors or associations of detectors in array which can identify charged particl...
Definition: KVIDTelescope.h:83
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:70
Bool_t fEbyedatData
set to true when VME/VXI acquisition system is used
Definition: KVINDRA.h:93
virtual void Build(Int_t run=-1)
Definition: KVINDRA.cpp:389
void InitialiseRawDataReading(KVRawDataReader *)
Definition: KVINDRA.cpp:1427
KVHashList * GetListOfSi() const
Definition: KVINDRA.h:251
KVINDRA()
Definition: KVINDRA.cpp:94
virtual KVChIo * GetChIoOf(const Char_t *detname)
Definition: KVINDRA.cpp:573
void handle_ebyedat_raw_data_parameter(const char *param_name, uint16_t val)
Definition: KVINDRA.cpp:797
KVINDRATelescope * BuildTelescope(const Char_t *prefix, Int_t mod)
Definition: KVINDRA.cpp:303
virtual Bool_t handle_raw_data_event_ebyedat(KVGANILDataReader &)
Definition: KVINDRA.cpp:846
void CreateROOTGeometry()
Definition: KVINDRA.cpp:1194
UChar_t GetTrigger() const
Definition: KVINDRA.h:270
KVHashList * fChIo
List Of ChIo of INDRA.
Definition: KVINDRA.h:80
void SetRawDataFromReconEvent(KVNameValueList &)
Definition: KVINDRA.cpp:1374
virtual UChar_t GetNormalCalibrationCode()
Definition: KVINDRA.h:144
void SetPinLasersForCsI()
Definition: KVINDRA.cpp:987
TString GetIDCodeMeaning(Int_t idc) const
Definition: KVINDRA.h:173
void copy_fired_parameters_to_recon_param_list()
Definition: KVINDRA.cpp:825
KVGroupReconstructor * GetReconstructorForGroup(const KVGroup *) const
Definition: KVINDRA.cpp:1332
virtual Int_t GetIDCodeForParticlesStoppingInFirstStageOfTelescopes() const
Definition: KVINDRA.h:226
virtual void SetGroupsAndIDTelescopes()
Definition: KVINDRA.cpp:555
Int_t GetIDTelescopes(KVDetector *, KVDetector *, TCollection *)
Definition: KVINDRA.cpp:712
ECodes
Calibration quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:199
@ NORMAL_CALIBRATION
normal well-calibrated particle with no problems
Definition: KVINDRA.h:204
@ BAD_CALIBRATION
calibration attempted but bad result (negative energies etc.)
Definition: KVINDRA.h:207
@ NO_CALIBRATION_ATTEMPTED
particle stopped in detectors with no available calibration
Definition: KVINDRA.h:203
@ WARNING_CSI_MAX_ENERGY
particle calibration OK, although apparent energy would mean punching through the CsI
Definition: KVINDRA.h:206
@ SOME_ENERGY_LOSSES_CALCULATED
particle calibration OK, with some detector energies calculated
Definition: KVINDRA.h:205
KVHashList * GetListOfPhoswich() const
Definition: KVINDRA.h:259
KVINDRATriggerInfo * fSelecteur
infos from DAQ trigger (le Selecteur)
Definition: KVINDRA.h:87
UChar_t fTrigger
multiplicity trigger used for acquisition
Definition: KVINDRA.h:77
virtual UShort_t GetCoherencyIDCode()
Definition: KVINDRA.h:132
KVLayer * GetChIoLayer()
Definition: KVINDRA.cpp:591
KVHashList * fCsI
List of CsI detectors of INDRA.
Definition: KVINDRA.h:82
virtual void cd(Option_t *option="")
................ inline functions
Definition: KVINDRA.h:300
virtual void SetROOTGeometry(Bool_t on=kTRUE)
Definition: KVINDRA.cpp:1295
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:73
void FillListsOfDetectorsByType()
Fill lists of ChIo, Si, CsI and phoswich.
Definition: KVINDRA.cpp:519
virtual ~ KVINDRA()
Bool_t fMesytecData
set to true when Mesytec acquisition system is used
Definition: KVINDRA.h:94
virtual void MakeListOfDetectors()
Overrides KVASMultiDetArray method to add FillListsOfDetectorsByType()
Definition: KVINDRA.cpp:506
void FillTrajectoryIDTelescopeLists()
Definition: KVINDRA.cpp:350
TString GetECodeMeaning(Int_t ec) const
Definition: KVINDRA.h:209
KVHashList * fSi
List of Si detectors of INDRA.
Definition: KVINDRA.h:81
void SetIDCodeForIDTelescope(KVIDTelescope *) const
Set the INDRA-specific general identification code for the given telescope.
Definition: KVINDRA.cpp:941
KVHashList * GetListOfChIo() const
Definition: KVINDRA.h:247
TEnv fStrucInfos
file containing structure of array
Definition: KVINDRA.h:89
void PerformClosedROOTGeometryOperations()
Definition: KVINDRA.cpp:786
IDCodes
Identification quality codes attributed to particles reconstructed from data.
Definition: KVINDRA.h:151
@ ID_CI_SI75
particle identified in ChIo-Si75 etalon telescope
Definition: KVINDRA.h:166
@ ID_SI_CSI
particle identified in Si-CsI telescope
Definition: KVINDRA.h:161
@ ID_NEUTRON
'neutron' discriminated by coherency between CsI and Si-CsI identifications
Definition: KVINDRA.h:158
@ ID_CI_SI
particle identified in ChIo-Si telescope
Definition: KVINDRA.h:164
@ ID_CI_SI_COHERENCY
particle identified in ChIo-Si telescope in coincidence with light particle identified in CsI
Definition: KVINDRA.h:167
@ ID_STOPPED_IN_FIRST_STAGE
particle stopped in first detector of telescope, only minimum Z can be estimated
Definition: KVINDRA.h:156
@ ID_CSI_PSA
particle identified in CsI detector by pulse shape analysis
Definition: KVINDRA.h:160
@ ID_PHOSWICH
particle identified in phoswich (campaigns 1-3)
Definition: KVINDRA.h:159
@ NO_IDENTIFICATION
no identification either attempted or available for particle
Definition: KVINDRA.h:155
@ ID_CI_COHERENCY
particle stopped in ChIo revealed by coherency tests (Zmin)
Definition: KVINDRA.h:168
@ ID_CI_MULTIHIT
particles stopped in multiple Si (ring<10) or CsI (ring>9) behind same ChIo, bad identification
Definition: KVINDRA.h:169
@ ID_CSI_FRAGMENT
particle partially identified in CsI detector, with Z greater than identifiable
Definition: KVINDRA.h:170
@ ID_GAMMA
'gamma' particle detected in CsI
Definition: KVINDRA.h:157
@ ID_SILI_CSI
particle identified in SiLi-CsI etalon telescope
Definition: KVINDRA.h:163
@ ID_CSI_MASS_OUT_OF_RANGE
particle partially identified in CsI detector, mass out of range of apparent Z (pile-up?...
Definition: KVINDRA.h:171
@ ID_SI75_SILI
particle identified in Si75-SiLi etalon telescope
Definition: KVINDRA.h:162
@ ID_CI_CSI
particle identified in ChIo-CsI telescope
Definition: KVINDRA.h:165
virtual void PHDSet(Bool_t yes=kTRUE)
Definition: KVINDRA.h:241
virtual UShort_t GetBadIDCode()
Definition: KVINDRA.h:126
void SetReconParametersInEvent(KVReconstructedEvent *) const
If "INDRA.EN" parameter has been set, we use it to set the event number.
Definition: KVINDRA.cpp:1358
void SetTrigger(UChar_t trig)
Definition: KVINDRA.cpp:606
virtual Bool_t ArePHDSet() const
Definition: KVINDRA.h:237
KVNameValueList fEbyedatParamDetMap
maps EBYEDAT parameter names to detectors
Definition: KVINDRA.h:91
Bool_t handle_raw_data_event_mfmframe_ebyedat(const MFMEbyedatFrame &)
Definition: KVINDRA.cpp:882
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:254
virtual KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
Definition: KVINDRA.cpp:642
void SetNamesOfIDTelescopes() const
Definition: KVINDRA.cpp:735
KVINDRATriggerInfo * GetTriggerInfo()
Definition: KVINDRA.h:280
KVHashList * GetListOfCsI() const
Definition: KVINDRA.h:255
virtual void GetDetectorEvent(KVDetectorEvent *detev, const TSeqCollection *fired_dets=0)
Definition: KVINDRA.cpp:1114
virtual UShort_t GetMultiHitFirstStageIDCode()
Definition: KVINDRA.h:138
void BuildLayer(const Char_t *name)
Build layer 'name' with infos in file "$KVROOT/KVFiles/data/indra-struct.[dataset]....
Definition: KVINDRA.cpp:229
virtual void BuildGeometry()
Definition: KVINDRA.cpp:169
KVHashList * fPhoswich
List of NE102/NE115 detectors of INDRA.
Definition: KVINDRA.h:83
Bool_t fPHDSet
set to kTRUE if pulse height defect parameters are set
Definition: KVINDRA.h:85
void SetMinimumOKMultiplicity(KVEvent *) const
Definition: KVINDRA.cpp:1316
Set of detectors at a similar distance from target (obsolete)
Definition: KVLayer.h:32
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:125
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:19