KaliVeda  1.12/06
Heavy-Ion Analysis Toolkit
KVChIo.cpp
Go to the documentation of this file.
1 #include "Riostream.h"
2 #include "KVChIo.h"
3 #include "TClass.h"
4 
6 //______________________________________________________________________________
7 
8 
9 
11 void KVChIo::init()
12 {
13  fSegment = 0;
14 }
15 
16 
17 
24 
26 {
27  //Default ctor
28  //This ctor (which in turn calls the KVDetector default ctor) must exist in
29  //order for Cloning of detectors to work (as used in KVTelescope::AddDetector).
30  //Do not replace this ctor by giving a default value for the first argument of KVChIo(Float_t,Float_t).
31  //
32  init();
33 }
34 
35 
36 
43 
44 KVChIo::KVChIo(Float_t pressure, Float_t thick): KVINDRADetector("Myl", 2.5 * KVUnits::um)
45 {
46  // Make an INDRA ChIo: 2.5micron mylar windows enclosing 'thick' cm of C3F8,
47  // give gas pressure in mbar
48  // By default 'thick'=5cm
49  // The type of these detectors is "CI"
50 
51  //gas layer
52  KVMaterial* mat = new KVMaterial("C3F8", thick, pressure * KVUnits::mbar);
53  AddAbsorber(mat);
54  SetActiveLayer(mat); //gas is the active layer
55  // mylar for second window
56  mat = new KVMaterial("Myl", 2.5 * KVUnits::um);
57  AddAbsorber(mat);
58 
59  SetType("CI");
60  SetLabel("CI");
61  init();
62 }
63 
64 
65 
66 
68 
69 KVChIo::~KVChIo()
70 {
71 }
72 
73 
74 
76 
78 {
79  if (thickF > 0.)((KVMaterial*)fAbsorbers->At(0))->SetThickness(thickF * KVUnits::um);
80  if (thickF > 0.)((KVMaterial*)fAbsorbers->At(2))->SetThickness(thickB * KVUnits::um);
81 }
82 
83 
84 
88 
90 {
91  //Setup acquistion parameters for this ChIo.
92  //Do not call before ChIo name has been set.
93 
94  AddACQParamType("GG");
95  AddACQParamType("PG");
96  AddACQParamType("T");
97 
98 }
99 
100 
101 
102 
116 
118 {
119  //Based on energy loss in gas, calculates sum of energy losses in mylar windows
120  //from energy loss tables.
121  //If argument 'egas' not given, KVChIo::GetEnergy() is used.
122  //if stopped=kTRUE, we give the correction for a particle which stops in the detector
123  //(by default we assume the particle continues after the detector)
124  //
125  // WARNING: if stopped=kFALSE, and if the residual energy after the detector
126  // is known (i.e. measured in a detector placed after this one), you should
127  // first call
128  // SetEResAfterDetector(Eres);
129  // before calling this method. Otherwise, especially for heavy ions, the
130  // correction may be false for particles which are just above the punch-through energy.
131 
132  egas = ((egas < 0.) ? GetEnergy() : egas);
133  if (egas <= 0.)
134  return 0.0; //check measured (calibrated) energy in gas is reasonable (>0)
135 
136  KVNucleus tmp(z, a);
137  Double_t emylar = GetCorrectedEnergy(&tmp, egas, !stopped) - egas;
138  return emylar;
139 }
140 
141 
142 
143 
148 
150 {
151  // Calculates & returns value of given acquisition parameter corresponding to
152  // given calculated energy loss in the detector
153  // Returns -1 if detector is not calibrated
154 
155  AbstractMethod("GetCalcACQParam");
156  return -1;
157 }
158 
159 
160 
161 
163 
165 {
166 
167  AbstractMethod("DeduceACQParameters");
168 // Double_t volts = GetVoltsFromEnergy(GetEnergy());
169 // Int_t cipg = (Int_t)GetCanalPGFromVolts(volts);
170 // Int_t cigg = (Int_t)GetCanalGGFromVolts(volts);
171 // //cout << "chio: pg = " << cipg << " gg = " << cigg << endl;
172 // GetACQParam("PG")->SetData((UShort_t)TMath::Min(4095, cipg));
173 // GetACQParam("GG")->SetData((UShort_t)TMath::Min(4095, cigg));
174 // GetACQParam("T")->SetData(110);
175 
176 }
177 
178 
unsigned int UInt_t
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
bool Bool_t
short Short_t
double Double_t
float Float_t
GANIL VXI/VME acquisition parameter.
Definition: KVACQParam.h:15
void SetLabel(const Char_t *lab)
Definition: KVBase.h:188
Ionisation chamber detectors of the INDRA multidetector array.
Definition: KVChIo.h:29
KVChIo()
Definition: KVChIo.cpp:25
void init()
Definition: KVChIo.cpp:11
Double_t GetELossMylar(UInt_t z, UInt_t a, Double_t egas=-1.0, Bool_t stopped=kFALSE)
Definition: KVChIo.cpp:117
virtual Short_t GetCalcACQParam(KVACQParam *, Double_t) const
Definition: KVChIo.cpp:149
void SetMylarThicknesses(Float_t thickF, Float_t thickB)
Definition: KVChIo.cpp:77
void SetACQParams()
Definition: KVChIo.cpp:89
void DeduceACQParameters(KVEvent *, KVNumberList &)
Definition: KVChIo.cpp:164
virtual Double_t GetEnergy() const
Definition: KVDetector.h:308
void AddAbsorber(KVMaterial *)
Definition: KVDetector.cpp:753
KVList * fAbsorbers
list of absorbers making up the detector
Definition: KVDetector.h:200
void SetActiveLayer(KVMaterial *actif)
Definition: KVDetector.h:244
virtual Double_t GetCorrectedEnergy(KVNucleus *, Double_t e=-1., Bool_t transmission=kTRUE)
Definition: KVDetector.cpp:949
Base class container for multi-particle events.
Definition: KVEvent.h:176
Base class for detectors of INDRA array.
void SetType(const Char_t *t)
void AddACQParamType(const Char_t *type)
void SetThickness(Double_t thick)
Description of physical materials used to construct detectors; interface to range tables.
Definition: KVMaterial.h:41
KVMaterial()
default ctor
Definition: KVMaterial.cpp:70
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:125
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:83
virtual TObject * At(Int_t idx) const
void AbstractMethod(const char *method) const
Standard units of length, mass, volume, and pressure, and their conversion factors.
const long double um
Definition: KVUnits.h:68
const long double mbar
Definition: KVUnits.h:81
auto * a