]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | #ifndef TRDv2_H |
2 | #define TRDv2_H | |
3 | //////////////////////////////////////////////////////// | |
4 | // Manager and hits classes for set:TRD version 2 // | |
5 | //////////////////////////////////////////////////////// | |
6 | ||
7 | #include "AliTRD.h" | |
8 | ||
9 | class AliTRDv2 : public AliTRD { | |
10 | ||
11 | public: | |
12 | AliTRDv2() {} | |
13 | AliTRDv2(const char *name, const char *title); | |
14 | virtual ~AliTRDv2() {} | |
15 | virtual void CreateGeometry(); | |
16 | virtual void CreateMaterials(); | |
17 | virtual Int_t IsVersion() const {return 2;} | |
18 | virtual void StepManager(); | |
19 | virtual void Init(); | |
05e51f55 | 20 | virtual void DrawModule(); |
fe4da5cc | 21 | |
22 | protected: | |
23 | Int_t fIdSenO1; // Sensitive volume identifier for outer chambers | |
24 | Int_t fIdSenO2; // Sensitive volume identifier for outer chambers | |
25 | Int_t fIdSenO3; // Sensitive volume identifier for outer chambers | |
26 | Int_t fIdSenO4; // Sensitive volume identifier for outer chambers | |
27 | Int_t fIdSenO5; // Sensitive volume identifier for outer chambers | |
28 | Int_t fIdSenO6; // Sensitive volume identifier for outer chambers | |
29 | Int_t fIdSenI1; // Sensitive volume identifier for inner chambers | |
30 | Int_t fIdSenI2; // Sensitive volume identifier for inner chambers | |
31 | Int_t fIdSenI3; // Sensitive volume identifier for inner chambers | |
32 | Int_t fIdSenI4; // Sensitive volume identifier for inner chambers | |
33 | Int_t fIdSenI5; // Sensitive volume identifier for inner chambers | |
34 | Int_t fIdSenI6; // Sensitive volume identifier for inner chambers | |
35 | ||
36 | private: | |
37 | // Inline functions for AliTRDv2 | |
38 | ||
39 | inline Float_t Eloss(Float_t rndm) | |
40 | { | |
41 | // | |
42 | // Calculates the energy loss | |
43 | // 1/E^2. distribution for the fluctuations | |
44 | // | |
45 | // Exponent of the distribution for the energy loss | |
46 | // 2.0 is the apropriate value for Argon, 2.2 would be for Neon, | |
47 | // and how about Xenon? We take the Argon value for the time being. | |
48 | const Float_t kEexp = 2.0; | |
49 | // First ionization potential for the gas mixture (90% Xe + 10% CO2) | |
50 | // taken from: Ionization Measurements in High Energy Physics, Springer | |
51 | const Float_t kPoti = 12.3E-9; | |
52 | // Maximum energy (10 keV); | |
53 | const Float_t kEend = 10.0E-6; | |
54 | ||
55 | Float_t ex = 1. - kEexp; | |
56 | Float_t xpot = TMath::Power(kPoti,ex); | |
57 | Float_t xend = TMath::Power(kEend,ex); | |
58 | Float_t elos = (1. - rndm)*xpot + rndm*xend; | |
59 | ||
60 | return(TMath::Power(elos,(1./ex)) - kPoti); | |
61 | ||
62 | } | |
63 | ||
64 | inline Float_t BetheBloch(Float_t xx) | |
65 | { | |
66 | // | |
67 | // Parametrization of the Bethe-Bloch-curve | |
68 | // The parametrization is the same as for the TPC and is taken from | |
69 | // Lehrhaus. | |
70 | // The parameters have been adjusted to Xe-data found in: | |
71 | // Allison & Cobb, Ann. Rev. Nucl. Sci. (1980), 30, 253 | |
72 | // | |
73 | const Float_t kP1 = 0.76176E-1; | |
74 | const Float_t kP2 = 10.632; | |
75 | const Float_t kP3 = 3.17983E-6; | |
76 | const Float_t kP4 = 1.8631; | |
77 | const Float_t kP5 = 1.9479; | |
78 | ||
79 | Float_t yy = xx / TMath::Sqrt(1. + xx*xx); | |
80 | Float_t aa = TMath::Power(yy,kP4); | |
81 | Float_t bb = TMath::Power((1./xx),kP5); | |
82 | bb = TMath::Log(kP3 + bb); | |
83 | ||
84 | return((kP2 - aa - bb)*kP1 / aa); | |
85 | ||
86 | } | |
87 | ||
88 | ClassDef(AliTRDv2,1) // Transition Radiation Detector version 2 | |
89 | }; | |
90 | ||
91 | #endif |