]>
Commit | Line | Data |
---|---|---|
58005f18 | 1 | #ifndef ALIITSMODLUESSD_H |
2 | #define ALIITSMODLUESSD_H | |
3da30618 | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
58005f18 | 7 | |
8 | #include "TObject.h" | |
9 | #include "TArrayS.h" | |
10 | #include "TClonesArray.h" | |
11 | #include "TRandom.h" | |
12 | //#include "AliConst.h" | |
13 | #include "TMath.h" | |
14 | ||
15 | #include "AliITSdigitSSD.h" | |
16 | #include "AliITS.h" | |
17 | #include "AliITSmodule.h" | |
18 | ||
19 | ||
20 | ||
21 | //____________________________________________________________________ | |
22 | // | |
23 | // Class AliITSmoduleSSD | |
24 | // describes one SSD module | |
25 | // The main function of modules is to simulate DIGITS from | |
26 | // GEANT HITS and produce POINTS from DIGITS | |
27 | // | |
28 | // This class keep track of Detector Control System parameters | |
29 | // of one SSD module: invalid (dead) strips, gain, capacitive | |
30 | // coupling. | |
31 | // | |
32 | // In this release it make only simulation, and is not completly | |
33 | // tuned - up. Simulation will be improved after tests of SSD | |
34 | // modules on SPS. Improved simulation and reconstruction will | |
35 | // appear in next releas. | |
36 | // | |
37 | // created by: A.Boucham, W.Peryt, S.Radomski, P.Skowronski | |
38 | // ver. 1.0 CERN, 16.09.1999 | |
39 | // | |
40 | //___________________________________________________________________ | |
41 | // | |
42 | ||
43 | ||
44 | ||
45 | class AliITSmoduleSSD: public AliITSmodule { | |
46 | ||
47 | ||
48 | public: | |
49 | ||
50 | //________________________________________________________________ | |
51 | // | |
52 | // Constructors and deconstructor | |
53 | //________________________________________________________________ | |
54 | // | |
55 | ||
56 | AliITSmoduleSSD(); | |
57 | AliITSmoduleSSD(Int_t index); | |
58 | ~AliITSmoduleSSD(); | |
59 | ||
60 | //________________________________________________________________ | |
61 | // | |
62 | // Data process methods | |
63 | //________________________________________________________________ | |
64 | // | |
65 | ||
66 | void AddDigit(Int_t, Int_t, Bool_t); | |
67 | void HitToDigit(); // Process all hits in module | |
68 | void HitToDigit(Int_t); // Proces one hit | |
69 | void DigitToPoint() {}; // Not impemented yet | |
70 | void HitToPoint() {}; // Not impemented y | |
71 | ||
72 | //________________________________________________________________ | |
73 | // | |
74 | //Invalid strips menagement methods | |
75 | //________________________________________________________________ | |
76 | // | |
77 | ||
78 | // Parameters for invalid strips MonteCarlo | |
79 | // void SetInvalidParam(Float_t mean, Float_t sigma); | |
80 | // void GetInvalParam(Float_t &mean, Float_t &sigma); | |
81 | ||
82 | // Methods for creating invalid strips | |
83 | void SetInvalidMC(Float_t mean, Float_t sigma); | |
84 | void SetInvalidMC(); | |
85 | ||
86 | // Testing if strip is valid | |
87 | Bool_t IsValidN(Int_t strip); //True if strip work properly | |
88 | Bool_t IsValidP(Int_t strip); | |
89 | // TArrayI GetInvalidP(); //Array of invalid strips | |
90 | // TArrayI GetInvalidN(); | |
91 | // Int_t GetNInvalidP(); //Number of invalid srtips | |
92 | // Int_t GrtNInvalidN(); | |
93 | ||
94 | // Creating invalid strips | |
95 | void SetInvalidP(Int_t strip, Bool_t side); //Set invalid if true | |
96 | // void SetInvalidN(Int_t strip, Bool_t side); | |
97 | ||
98 | ||
99 | protected: | |
100 | ||
101 | //________________________________________________________________ | |
102 | // | |
103 | //Private methods for geometry | |
104 | //________________________________________________________________ | |
105 | // | |
106 | ||
107 | Int_t GetStripN(Float_t x, Float_t z); // Nearest strip number P-side | |
108 | Int_t GetStripP(Float_t x, Float_t z); // Nearest strip number N-side | |
109 | ||
110 | Float_t Get2StripN(Float_t, Float_t); // Ditance do the nearest strip P | |
111 | Float_t Get2StripP(Float_t, Float_t); // Ditance do the nearest strip N | |
112 | ||
113 | Bool_t GetCrossing(Float_t&, Float_t&); //x, y of strips crossing | |
114 | ||
115 | //________________________________________________________________ | |
116 | // | |
117 | //Private methods for simulation | |
118 | //________________________________________________________________ | |
119 | // | |
120 | ||
121 | void ApplyNoise(); | |
122 | void ApplyCoupling(); | |
123 | ||
124 | Float_t F(Float_t x, Float_t s) {return (TMath::Erf(x*kPitch/s)+1) /2;} | |
125 | ||
126 | // Proceding part should be in SSDgeo -----> | |
127 | ||
128 | //Technical parameters of detector | |
ad0e60d9 | 129 | static const Float_t kStereo ;// = 0.0175; //Stereo Angle 17.5 mrad |
130 | static const Float_t kTan ;// = 0.0175; | |
131 | static const Int_t kNStrips ;// = 768; //Number of strips on each side | |
132 | static const Float_t kPitch ;// = 0.095; //Distance strip - strip (mm) | |
133 | static const Float_t kX ;// = 72.96; //X size (mm) | |
134 | static const Float_t kY ;// = 0.3; //Y size (mm) | |
135 | static const Float_t kZ ;// = 40; //Thickness (mm) | |
58005f18 | 136 | |
137 | // <------------------------------ | |
138 | ||
139 | //______________________________________________________________ | |
140 | // | |
141 | // Parameters for simulation | |
142 | //______________________________________________________________ | |
143 | ||
ad0e60d9 | 144 | static const Float_t kSigmaP ;// = 0.003; //Gaussian sigm |
145 | static const Float_t kSigmaN ;// = 0.002; | |
146 | static const Int_t kSteps ;// = 10; //Number of steps | |
147 | static const Int_t kTresholdP ;// = 1500; | |
148 | static const Int_t kTresholdN ;// = 2500; | |
58005f18 | 149 | |
150 | //________________________________________________________________ | |
151 | // | |
152 | // DCS Parameters | |
153 | //________________________________________________________________ | |
154 | // | |
155 | ||
156 | Float_t fSNRatioP; //Signal - Noise Ratio P-side | |
157 | Float_t fSNRatioN; //Signal - Noise RatioNP-side | |
158 | ||
159 | Float_t fGainP; //Charge - ADC conversion parameter P | |
160 | Float_t fGainN; //Charge - ADC conversi parameter N | |
161 | ||
162 | Int_t fNInvalidP; //Number of invalid strips P | |
163 | TArrayS *fInvalidP; //Invalid strips P-side | |
164 | Int_t fNInvalidN; //Number of invalid strips N | |
165 | TArrayS *fInvalidN; //Invalid strips N-side | |
166 | ||
167 | ||
168 | //________________________________________________________________ | |
169 | // | |
170 | // Capacitive coupling parameters | |
171 | //________________________________________________________________ | |
172 | // | |
173 | ||
174 | Float_t fCouplingPR; | |
175 | Float_t fCouplingPL; | |
176 | Float_t fCouplingNR; | |
177 | Float_t fCouplingNL; | |
178 | ||
179 | //________________________________________________________________ | |
180 | // | |
181 | // Parameters for invalid strips simulatation | |
182 | //________________________________________________________________ | |
183 | ||
184 | Float_t fNInvalid; //Meam number of invalid strips | |
185 | Float_t fISigma; //RMS of invalid strips (Gaussian) | |
186 | ||
187 | //________________________________________________________________ | |
188 | // | |
189 | // temp for simulation | |
190 | //________________________________________________________________ | |
191 | // | |
192 | ||
193 | TArrayI *fN; // for signal | |
194 | TArrayI *fP; | |
195 | ||
196 | TArrayI *fNtrack1; // for tracks, signal orgin N-side | |
197 | TArrayI *fNtrack2; | |
198 | TArrayI *fNtrack3; | |
199 | ||
200 | TArrayI *fPtrack1; // for tracks, signal orgin P-side | |
201 | TArrayI *fPtrack2; | |
202 | TArrayI *fPtrack3; | |
203 | ||
204 | public: | |
205 | ClassDef(AliITSmoduleSSD, 1) | |
206 | }; | |
207 | ||
208 | #endif |