]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDparameter.h
Coding conventions.
[u/mrichter/AliRoot.git] / TRD / AliTRDparameter.h
CommitLineData
17b26de4 1#ifndef ALITRDPARAMETER_H
2#define ALITRDPARAMETER_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
0a29d0f1 8///////////////////////////////////////////////////////////////////////////////
9// //
10// TRD parameter class //
11// //
12///////////////////////////////////////////////////////////////////////////////
13
17b26de4 14#include "TNamed.h"
15
16class AliTRDgeometry;
17
18class AliTRDparameter : public TNamed {
19
20 public:
21
22 enum { kNplan = 6, kNcham = 5, kNsect = 18, kNdet = 540 };
23
24 AliTRDparameter();
25 AliTRDparameter(const Text_t* name, const Text_t* title);
26 AliTRDparameter(const AliTRDparameter &p);
27 virtual ~AliTRDparameter();
28 AliTRDparameter &operator=(const AliTRDparameter &p);
29
30 virtual void Copy(TObject &p);
31 virtual void Init();
32 virtual void ReInit();
33
34 virtual void SetNRowPad();
afc51ac2 35 virtual void SetNRowPad(Int_t p, Int_t c, Int_t npad);
36 virtual void SetColPadSize(Int_t p, Float_t s);
37 virtual void SetNTimeBin(Int_t nbin);
38 virtual void SetExpandTimeBin(Int_t nbefore, Int_t nafter)
17b26de4 39 { fTimeBefore = nbefore;
40 fTimeAfter = nafter; };
41
42 virtual void SetGasGain(Float_t gasgain) { fGasGain = gasgain; };
43 virtual void SetNoise(Float_t noise) { fNoise = noise; };
44 virtual void SetChipGain(Float_t chipgain) { fChipGain = chipgain; };
45 virtual void SetADCoutRange(Float_t range) { fADCoutRange = range; };
46 virtual void SetADCinRange(Float_t range) { fADCinRange = range; };
47 virtual void SetADCthreshold(Int_t thresh) { fADCthreshold = thresh; };
7e582e9f 48 virtual void SetADCbaseline(Int_t basel) { fADCbaseline = basel; };
17b26de4 49 virtual void SetDiffusion(Int_t diffOn = 1) { fDiffusionOn = diffOn; };
50 virtual void SetElAttach(Int_t elOn = 1) { fElAttachOn = elOn; };
51 virtual void SetElAttachProp(Float_t prop) { fElAttachProp = prop; };
52 virtual void SetExB(Int_t exbOn = 1) { fExBOn = exbOn; };
53 virtual void SetPadResponse(Int_t prfOn = 1) { fPRFOn = prfOn; };
54 virtual void SetTimeResponse(Int_t trfOn = 1) { fTRFOn = trfOn;
55 ReInit(); };
56 virtual void SetCrossTalk(Int_t ctOn = 1) { fCTOn = ctOn;
57 ReInit(); };
58 virtual void SetTailCancelation(Int_t tcOn = 1) { fTCOn = tcOn; };
59 virtual void SetNexponential(Int_t nexp) { fTCnexp = nexp; };
60 virtual void SetDriftVelocity(Float_t v) { fDriftVelocity = v;
61 ReInit(); };
62 virtual void SetPadCoupling(Float_t v) { fPadCoupling = v; };
63 virtual void SetTimeCoupling(Float_t v) { fTimeCoupling = v; };
64 virtual void SetTiltingAngle(Float_t v);
65
66 virtual void SetLUT(Int_t lutOn = 1) { fLUTOn = lutOn; };
67 virtual void SetClusMaxThresh(Int_t thresh) { fClusMaxThresh = thresh; };
68 virtual void SetClusSigThresh(Int_t thresh) { fClusSigThresh = thresh; };
a328fff9 69
70 virtual void SetTimeStruct(Int_t timestrOn = 1) { fTimeStructOn = timestrOn;
71 ReInit(); };
72 virtual void SetStaggering(Int_t staggOn = 1) { fStaggeringOn = staggOn;
73 ReInit(); };
74 virtual void SetAnodeWireOffset(Float_t offset = 0.25) { fAnodeWireOffset = offset;};
17b26de4 75
afc51ac2 76 Int_t GetRowMax(Int_t p, Int_t c, Int_t s)
17b26de4 77 const { return fRowMax[p][c][s]; };
a328fff9 78 Int_t GetColMax(Int_t p) const { return fColMax[p]; };
17b26de4 79 Int_t GetTimeMax() const { return fTimeMax; };
80 Int_t GetTimeBefore() const { return fTimeBefore; };
81 Int_t GetTimeAfter() const { return fTimeAfter; };
82 Int_t GetTimeTotal() const { return fTimeMax
83 + fTimeBefore
84 + fTimeAfter; };
85
afc51ac2 86 Float_t GetRow0(Int_t p, Int_t c, Int_t s)
17b26de4 87 const { return fRow0[p][c][s]; };
a328fff9 88 Float_t GetCol0(Int_t p) const { return fCol0[p]; };
89 Float_t GetTime0(Int_t p) const { return fTime0[p]; };
17b26de4 90
afc51ac2 91 Float_t GetRowPadSize(Int_t p, Int_t c, Int_t s)
17b26de4 92 const { return fRowPadSize[p][c][s]; };
a328fff9 93 Float_t GetColPadSize(Int_t p) const { return fColPadSize[p]; };
17b26de4 94 Float_t GetTimeBinSize() const { return fTimeBinSize; };
95
a328fff9 96 Float_t GetGasGain() const { return fGasGain; };
97 Float_t GetNoise() const { return fNoise; };
98 Float_t GetChipGain() const { return fChipGain; };
99 Float_t GetADCoutRange() const { return fADCoutRange; };
100 Float_t GetADCinRange() const { return fADCinRange; };
101 Int_t GetADCthreshold() const { return fADCthreshold; };
102 Int_t GetADCbaseline() const { return fADCbaseline; };
103 Float_t GetDiffusionT() const { return fDiffusionT; };
104 Float_t GetDiffusionL() const { return fDiffusionL; };
105 Float_t GetElAttachProp() const { return fElAttachProp; };
106 Float_t GetOmegaTau() const { return fOmegaTau; };
107 Float_t GetDriftVelocity() const { return fDriftVelocity; };
108 Float_t GetPadCoupling() const { return fPadCoupling; };
109 Float_t GetTimeCoupling() const { return fTimeCoupling; };
110 Float_t GetTimeBinWidth() const { return fTimeBinWidth; };
111 Float_t GetTRFlo() const { return fTRFlo; };
112 Float_t GetTRFhi() const { return fTRFhi; };
113 Float_t GetLorentzFactor() const { return fLorentzFactor; };
114 Float_t GetAnodeWireOffset() const { return fAnodeWireOffset; };
115 Int_t GetTCnexp() const { return fTCnexp; };
17b26de4 116 Float_t GetTiltingAngle() const;
117 virtual Float_t GetDiffusionL(Float_t vd, Float_t b);
118 virtual Float_t GetDiffusionT(Float_t vd, Float_t b);
119 virtual Float_t GetOmegaTau(Float_t vd, Float_t b);
120
121 virtual Int_t GetClusMaxThresh() const { return fClusMaxThresh; };
122 virtual Int_t GetClusSigThresh() const { return fClusSigThresh; };
123
124 Int_t ExBOn() const { return fExBOn; };
125 Int_t PRFOn() const { return fPRFOn; };
126 Int_t TRFOn() const { return fTRFOn; };
127 Int_t ElAttachOn() const { return fElAttachOn; };
128 Int_t DiffusionOn() const { return fDiffusionOn; };
129 Int_t CTOn() const { return fCTOn; };
130 Int_t TCOn() const { return fTCOn; };
131 Int_t LUTOn() const { return fLUTOn; };
a328fff9 132 Int_t TimeStructOn() const { return fTimeStructOn; };
133 Int_t StaggeringOn() const { return fStaggeringOn; };
17b26de4 134
135 virtual Int_t Diffusion(Float_t driftlength, Float_t *xyz);
0a29d0f1 136 virtual Int_t ExB(Float_t driftlength, Float_t *xyz) const;
17b26de4 137 virtual Float_t Col0Tilted(Float_t col0, Float_t rowOffset, Int_t plane);
0a29d0f1 138 virtual Int_t PadResponse(Float_t signal, Float_t dist, Int_t plane, Float_t *pad) const;
139 virtual Float_t CrossTalk(Float_t time) const;
140 virtual Float_t TimeResponse(Float_t time) const;
a328fff9 141 virtual Int_t TimeStruct(Float_t time, Float_t z, Float_t *xyz) const;
0a29d0f1 142 virtual Double_t LUTposition(Int_t iplane, Double_t ampL, Double_t ampC, Double_t ampR) const;
17b26de4 143
144 protected:
145
146 AliTRDgeometry *fGeo; //! TRD geometry
147
148 // Pad plane geometry
149 Int_t fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows
150 Int_t fColMax[kNplan]; // Number of pad-columns
151 Int_t fTimeMax; // Number of timebins in the drift region
152 Int_t fTimeBefore; // Number of timebins before the drift region
153 Int_t fTimeAfter; // Number of timebins after the drift region
154
155 Float_t fRow0[kNplan][kNcham][kNsect]; // Row-position of pad 0
156 Float_t fCol0[kNplan]; // Column-position of pad 0
157 Float_t fTime0[kNplan]; // Time-position of pad 0
158
159 Float_t fRowPadSize[kNplan][kNcham][kNsect]; // Pad size in z-direction
160 Float_t fColPadSize[kNplan]; // Pad size in rphi-direction
161 Float_t fTimeBinSize; // Size of the time buckets
162
163 // Digitization parameter
164 Float_t fField; // Magnetic field
165 Float_t fGasGain; // Gas gain
166 Float_t fNoise; // Electronics noise
167 Float_t fChipGain; // Electronics gain
168 Float_t fADCoutRange; // ADC output range (number of channels)
169 Float_t fADCinRange; // ADC input range (input charge)
170 Int_t fADCthreshold; // ADC threshold in ADC channel
7e582e9f 171 Int_t fADCbaseline; // ADC baseline in ADC chann
17b26de4 172 Int_t fDiffusionOn; // Switch for the diffusion
173 Float_t fDiffusionT; // Diffusion in transverse direction
174 Float_t fDiffusionL; // Diffusion in longitudinal direction
175 Int_t fElAttachOn; // Switch for the electron attachment
176 Float_t fElAttachProp; // Propability for electron attachment (for 1m)
177 Int_t fExBOn; // Switch for the ExB effects
178 Float_t fOmegaTau; // Tangens of the Lorentz angle
179 Float_t fLorentzFactor; // Factor due to Lorentz force
180 Int_t fPRFOn; // Switch for the pad response
181 Float_t *fPRFsmp; //! Sampled pad response
182 Int_t fPRFbin; // Number of bins for the PRF
183 Float_t fPRFlo; // Lower boundary of the PRF
184 Float_t fPRFhi; // Higher boundary of the PRF
185 Float_t fPRFwid; // Bin width of the sampled PRF
186 Int_t fPRFpad; // Distance to next pad in PRF
187 Int_t fTRFOn; // Switch for the time response
188 Float_t *fTRFsmp; //! Integrated time response
189 Int_t fTRFbin; // Number of bins for the TRF
190 Float_t fTRFlo; // Lower boundary of the TRF
191 Float_t fTRFhi; // Higher boundary of the TRF
192 Float_t fTRFwid; // Bin width of the integrated TRF
193 Int_t fCTOn; // Switch for cross talk
194 Float_t *fCTsmp; //! Integrated cross talk
195 Int_t fTCOn; // Switch for the tail cancelation
196 Int_t fTCnexp; // Number of exponential of the digital filter
a328fff9 197 Int_t fStaggeringOn; // Staggering of wire planes
198 Float_t *fTimeStruct; //! Time Structure of Drift Cells
199 Int_t fTimeStructOn; // Switch for cell time structure
200 Float_t fAnodeWireOffset; // Distance of first anode wire from pad edge
201
17b26de4 202 Float_t fDriftVelocity; // Drift velocity (cm / mus)
203 Float_t fTimeBinWidth; // Time bin width in ns
204 Float_t fPadCoupling; // Pad coupling factor
205 Float_t fTimeCoupling; // Time coupling factor (image charge of moving ions)
206 Float_t fTiltingAngle; // Tilting angle of the readout pads
207
208 // Clusterization parameter
209 Int_t fClusMaxThresh; // Threshold value for cluster maximum
210 Int_t fClusSigThresh; // Threshold value for cluster signal
211 Int_t fLUTOn; // Switch for the lookup table method
212 Int_t fLUTbin; // Number of bins of the LUT
213 Float_t *fLUT; //! The lookup table
214
215 private:
216
217 virtual void SamplePRF();
218 virtual void SampleTRF();
219 virtual void FillLUT();
a328fff9 220 virtual void SampleTimeStruct();
17b26de4 221
a328fff9 222 ClassDef(AliTRDparameter,4) // TRD parameter class
17b26de4 223
224};
225
226#endif