KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVChIo.cpp
1#include "Riostream.h"
2#include "KVChIo.h"
3#include "TClass.h"
4
6//______________________________________________________________________________
7
8
9
10
11void 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
44KVChIo::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
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
bool Bool_t
float Float_t
double Double_t
void SetLabel(const Char_t *lab)
Definition KVBase.h:195
Ionisation chamber detectors of the INDRA multidetector array.
Definition KVChIo.h:30
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
virtual ~KVChIo()
Definition KVChIo.cpp:69
void DeduceACQParameters(KVEvent *, KVNumberList &)
Definition KVChIo.cpp:151
virtual Double_t GetEnergy() const
Definition KVDetector.h:349
void AddAbsorber(KVMaterial *)
KVList * fAbsorbers
list of absorbers making up the detector
Definition KVDetector.h:236
void SetActiveLayer(KVMaterial *actif)
Definition KVDetector.h:285
virtual Double_t GetCorrectedEnergy(KVNucleus *, Double_t e=-1., Bool_t transmission=kTRUE)
Abstract base class container for multi-particle events.
Definition KVEvent.h:67
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:94
KVMaterial()
default ctor
Description of properties and kinematics of atomic nuclei.
Definition KVNucleus.h:126
Strings used to represent a set of ranges of values.
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
TArc a
ClassImp(TPyArg)