Do not save CVS subdirectories
[u/mrichter/AliRoot.git] / TRD / AliTRDv2.h
CommitLineData
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
9class AliTRDv2 : public AliTRD {
10
11public:
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
22protected:
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
36private:
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