Avoid warnings on non-ansi compiler HP-UX CC
[u/mrichter/AliRoot.git] / ITS / AliITSmoduleSSD.h
CommitLineData
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
45class AliITSmoduleSSD: public AliITSmodule {
46
47
48public:
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
99protected:
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
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)
136
137 // <------------------------------
138
139 //______________________________________________________________
140 //
141 // Parameters for simulation
142 //______________________________________________________________
143
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;
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
204public:
205 ClassDef(AliITSmoduleSSD, 1)
206};
207
208#endif