KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVSilicon.cpp
1/***************************************************************************
2$Id: KVSilicon.cpp,v 1.55 2009/04/15 09:49:19 ebonnet Exp $
3 kvsilicon.cpp - description
4 -------------------
5 begin : Thu May 16 2002
6 copyright : (C) 2002 by J.D. Frankland
7 email : frankland@ganil.fr
8 ***************************************************************************/
9
10/***************************************************************************
11 * *
12 * This program is free software; you can redistribute it and/or modify *
13 * it under the terms of the GNU General Public License as published by *
14 * the Free Software Foundation; either version 2 of the License, or *
15 * (at your option) any later version. *
16 * *
17 ***************************************************************************/
18#include "Riostream.h"
19#include "KVSilicon.h"
20#include "TClass.h"
21
23
24
25
26
27
28void KVSilicon::init()
29{
30 fSegment = 1;
31}
32
33
34
35
42
44{
45 //Default ctor
46 //This ctor (which in turn calls the KVDetector default ctor) must exist in
47 //order for Cloning of detectors to work (as used in KVTelescope::AddDetector).
48 //Do not replace this ctor by giving default arguments to KVSilicon(Float_t).
49 //
50 init();
51}
52
53
54
58
60{
61 // constructor for silicon detector, thickness in microns
62 // Type of detector: "SI"
63 SetType("SI");
64 SetLabel("SI");//for use with KVReconNucTrajectory
65 init();
66}
67
68
69
70
72
76
77
78//void KVSilicon::SetACQParams()
79//{
80// //Setup acquistion parameters for this Silicon.
81// //Do not call before ChIo name has been set.
82
83// AddACQParamType("GG");
84// AddACQParamType("PG");
85// AddACQParamType("T");
86
87//}
88
89
90
96
98{
99 //Calculate Pulse Height Defect in MeV for a given energy loss dE(MeV) and Z.
100 //The formula of Moulton is used (see class KVPulseHeightDefect).
101 //
102 //Returns 0 if PHD is not defined.
103
104 AbstractMethod("GetPHD");
105 return 0;
106}
107
108
109
110
122
124{
125 //Sets parameters of Moulton formula used to calculate PHD for particles
126 //stopping in this detector. The parameters are as in the following:
127 //
128 // log_10(PHD) = b(Z) + a(Z)*log_10(E)
129 //
130 // with a(Z) = a_1*(Z**2/1000) + a_2
131 // b(Z) = b_1*(100/Z) + b_2
132 // E = energy lost by particle
133 //
134 //See class KVPulseHeightDefect
135
136 AbstractMethod("SetMoultonPHDParameters");
137}
138
139
140
141//Short_t KVSilicon::GetCalcACQParam(KVACQParam*, Double_t) const
142//{
143// // Calculates & returns value of given acquisition parameter corresponding to
144// // given calculated energy loss in the detector
145// // Returns -1 if detector is not calibrated
146
147// AbstractMethod("GetCalcACQParam");
148// return -1;
149//}
150
151
152
164
166{
167 // Overrides KVDetector::GetELossFunction
168 // If the pulse height deficit (PHD) has been set for this detector,
169 // we return an energy loss function which takes into account the PHD,
170 // i.e. for an incident energy E we calculate
171 //
172 // dEphd(E,Z,A) = dE(E,Z,A) - PHD(dE,Z)
173 //
174 // If no PHD is set, we return the usual KVDetector::GetELossFunction
175 // which calculates dE(E,Z,A)
176
177 //if (fPHD && fPHD->GetStatus()) return fPHD->GetELossFunction(Z, A);
178
179 return KVDetector::GetELossFunction(Z, A);
180}
181
182
183
185
187{
188
189 AbstractMethod("DeduceACQParameters");
190// Double_t volts = GetVoltsFromEnergy(GetEnergy());
191// Int_t cipg = (Int_t)GetCanalPGFromVolts(volts);
192// Int_t cigg = (Int_t)GetCanalGGFromVolts(volts);
193// //cout << "chio: pg = " << cipg << " gg = " << cigg << endl;
194// GetACQParam("PG")->SetData((UShort_t)TMath::Min(4095, cipg));
195// GetACQParam("GG")->SetData((UShort_t)TMath::Min(4095, cigg));
196// GetACQParam("T")->SetData(110);
197}
198
199
200
205
207{
208 // Overrides KVDetector::GetDeltaE
209 // If no PHD is set, we use the optimized KVMaterial::GetDeltaE
210
211 //if (fPHD && fPHD->GetStatus()) return fPHD->GetELossFunction(Z, A)->Eval(Einc);
212
213 return KVDetector::GetDeltaE(Z, A, Einc);
214}
215
216
217
218
220//Etalon telescope detector Si75
221//(actually an 80 micron thick silicon detector)
222//Type of detector: "SI75"
223//Array naming convention: "SI75_RR" with RR=ring number
224
225
226
229
231{
232 //Default ctor
233 //For cloning
234}
235
236
237
241
243{
244 //Default ctor
245 //80 micron silicon detector with type "SI75"
246 SetType("SI75");
247 SetLabel("SI75");
248}
249
250
251
254
256{
257 //default dtor
258}
259
260
261
265
267{
268 //Redefinition of KVDetector method.
269 //Name given as SI75_xx with xx=Ring number
270
271 fFName = Form("SI75_%02d", GetRingNumber());
272 return fFName.Data();
273}
274
275
276
278//Etalon telescope detector Si(Li)
279//Nominal thickness: 2mm active layer + 40um dead layer (both silicon)
280//Type of detector: "SILI"
281//Array naming convention: "SILI_RR" with RR=ring number
282
283
284
287
289{
290 //Default ctor
291 //For cloning
292}
293
294
295
300
302{
303 //Default ctor
304 // first layer (active) : 2mm silicon (nominal)
305 // second layer (dead) : 40um silicon (nominal)
306 AddAbsorber(new KVMaterial("Si", 40.0 * KVUnits::um));
307 SetType("SILI");
308 SetLabel("SILI");
309}
310
311
312
315
317{
318 //default dtor
319}
320
321
322
326
328{
329 //Redefinition of KVDetector method.
330 //Name given as SILI_xx with xx=Ring number
331
332 fFName = Form("SILI_%02d", GetRingNumber());
333 return fFName.Data();
334}
335
336
int Int_t
unsigned int UInt_t
char Char_t
float Float_t
double Double_t
char * Form(const char *fmt,...)
void SetLabel(const Char_t *lab)
Definition KVBase.h:195
void AddAbsorber(KVMaterial *)
virtual TF1 * GetELossFunction(Int_t Z, Int_t A)
virtual Double_t GetDeltaE(Int_t Z, Int_t A, Double_t Einc)
TString fFName
dynamically generated full name of detector
Definition KVDetector.h:233
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)
UInt_t GetRingNumber() const
Description of physical materials used to construct detectors & targets; interface to range tables.
Definition KVMaterial.h:94
Strings used to represent a set of ranges of values.
80um silicon detector for INDRA etalon telescopes
Definition KVSilicon.h:61
const Char_t * GetArrayName()
virtual ~KVSi75()
default dtor
2mm + 40um dead zone Si(Li) detector for INDRA etalon telescopes
Definition KVSilicon.h:79
virtual ~KVSiLi()
default dtor
const Char_t * GetArrayName()
Silicon detectors of the INDRA array.
Definition KVSilicon.h:19
void init()
Definition KVSilicon.cpp:28
Double_t GetDeltaE(Int_t Z, Int_t A, Double_t Einc)
virtual ~KVSilicon()
Definition KVSilicon.cpp:73
Double_t GetPHD(Double_t dE, UInt_t Z)
void SetACQParams();
Definition KVSilicon.cpp:97
void SetMoultonPHDParameters(Double_t a1, Double_t a2, Double_t b1, Double_t b2)
void DeduceACQParameters(KVEvent *, KVNumberList &)
virtual TF1 * GetELossFunction(Int_t Z, Int_t A)
void AbstractMethod(const char *method) const
const char * Data() const
Standard units of length, mass, volume, and pressure, and their conversion factors.
const long double um
Definition KVUnits.h:68
ClassImp(TPyArg)