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 |