KaliVeda  1.13/01
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 //void KVChIo::SetACQParams()
85 //{
86 // //Setup acquistion parameters for this ChIo.
87 // //Do not call before ChIo name has been set.
88 
89 // AddACQParamType("GG");
90 // AddACQParamType("PG");
91 // AddACQParamType("T");
92 
93 //}
94 
95 
96 
110 
112 {
113  //Based on energy loss in gas, calculates sum of energy losses in mylar windows
114  //from energy loss tables.
115  //If argument 'egas' not given, KVChIo::GetEnergy() is used.
116  //if stopped=kTRUE, we give the correction for a particle which stops in the detector
117  //(by default we assume the particle continues after the detector)
118  //
119  // WARNING: if stopped=kFALSE, and if the residual energy after the detector
120  // is known (i.e. measured in a detector placed after this one), you should
121  // first call
122  // SetEResAfterDetector(Eres);
123  // before calling this method. Otherwise, especially for heavy ions, the
124  // correction may be false for particles which are just above the punch-through energy.
125 
126  egas = ((egas < 0.) ? GetEnergy() : egas);
127  if (egas <= 0.)
128  return 0.0; //check measured (calibrated) energy in gas is reasonable (>0)
129 
130  KVNucleus tmp(z, a);
131  Double_t emylar = GetCorrectedEnergy(&tmp, egas, !stopped) - egas;
132  return emylar;
133 }
134 
135 
136 
137 //Short_t KVChIo::GetCalcACQParam(KVACQParam*, Double_t) const
138 //{
139 // // Calculates & returns value of given acquisition parameter corresponding to
140 // // given calculated energy loss in the detector
141 // // Returns -1 if detector is not calibrated
142 
143 // AbstractMethod("GetCalcACQParam");
144 // return -1;
145 //}
146 
147 
148 
150 
152 {
153 
154  AbstractMethod("DeduceACQParameters");
155 // Double_t volts = GetVoltsFromEnergy(GetEnergy());
156 // Int_t cipg = (Int_t)GetCanalPGFromVolts(volts);
157 // Int_t cigg = (Int_t)GetCanalGGFromVolts(volts);
158 // //cout << "chio: pg = " << cipg << " gg = " << cigg << endl;
159 // GetACQParam("PG")->SetData((UShort_t)TMath::Min(4095, cipg));
160 // GetACQParam("GG")->SetData((UShort_t)TMath::Min(4095, cigg));
161 // GetACQParam("T")->SetData(110);
162 
163 }
164 
165 
unsigned int UInt_t
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
bool Bool_t
double Double_t
float Float_t
void SetLabel(const Char_t *lab)
Definition: KVBase.h:194
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)
void SetACQParams();
Definition: KVChIo.cpp:111
void SetMylarThicknesses(Float_t thickF, Float_t thickB)
Definition: KVChIo.cpp:77
void DeduceACQParameters(KVEvent *, KVNumberList &)
Definition: KVChIo.cpp:151
virtual Double_t GetEnergy() const
Definition: KVDetector.h:348
void AddAbsorber(KVMaterial *)
Definition: KVDetector.cpp:629
KVList * fAbsorbers
list of absorbers making up the detector
Definition: KVDetector.h:235
void SetActiveLayer(KVMaterial *actif)
Definition: KVDetector.h:284
virtual Double_t GetCorrectedEnergy(KVNucleus *, Double_t e=-1., Bool_t transmission=kTRUE)
Definition: KVDetector.cpp:810
Abstract base class container for multi-particle events.
Definition: KVEvent.h:66
Base class for detectors of INDRA array.
void SetType(const Char_t *t)
void SetThickness(Double_t thick)
Description of physical materials used to construct detectors & targets; interface to range tables.
Definition: KVMaterial.h:93
KVMaterial()
default ctor
Definition: KVMaterial.cpp:77
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