1 #ifndef ALIITSMODLUESSD_H
2 #define ALIITSMODLUESSD_H
6 #include "TClonesArray.h"
8 //#include "AliConst.h"
11 #include "AliITSdigitSSD.h"
13 #include "AliITSmodule.h"
17 //____________________________________________________________________
19 // Class AliITSmoduleSSD
20 // describes one SSD module
21 // The main function of modules is to simulate DIGITS from
22 // GEANT HITS and produce POINTS from DIGITS
24 // This class keep track of Detector Control System parameters
25 // of one SSD module: invalid (dead) strips, gain, capacitive
28 // In this release it make only simulation, and is not completly
29 // tuned - up. Simulation will be improved after tests of SSD
30 // modules on SPS. Improved simulation and reconstruction will
31 // appear in next releas.
33 // created by: A.Boucham, W.Peryt, S.Radomski, P.Skowronski
34 // ver. 1.0 CERN, 16.09.1999
36 //___________________________________________________________________
41 class AliITSmoduleSSD: public AliITSmodule {
46 //________________________________________________________________
48 // Constructors and deconstructor
49 //________________________________________________________________
53 AliITSmoduleSSD(Int_t index);
56 //________________________________________________________________
58 // Data process methods
59 //________________________________________________________________
62 void AddDigit(Int_t, Int_t, Bool_t);
63 void HitToDigit(); // Process all hits in module
64 void HitToDigit(Int_t); // Proces one hit
65 void DigitToPoint() {}; // Not impemented yet
66 void HitToPoint() {}; // Not impemented y
68 //________________________________________________________________
70 //Invalid strips menagement methods
71 //________________________________________________________________
74 // Parameters for invalid strips MonteCarlo
75 // void SetInvalidParam(Float_t mean, Float_t sigma);
76 // void GetInvalParam(Float_t &mean, Float_t &sigma);
78 // Methods for creating invalid strips
79 void SetInvalidMC(Float_t mean, Float_t sigma);
82 // Testing if strip is valid
83 Bool_t IsValidN(Int_t strip); //True if strip work properly
84 Bool_t IsValidP(Int_t strip);
85 // TArrayI GetInvalidP(); //Array of invalid strips
86 // TArrayI GetInvalidN();
87 // Int_t GetNInvalidP(); //Number of invalid srtips
88 // Int_t GrtNInvalidN();
90 // Creating invalid strips
91 void SetInvalidP(Int_t strip, Bool_t side); //Set invalid if true
92 // void SetInvalidN(Int_t strip, Bool_t side);
97 //________________________________________________________________
99 //Private methods for geometry
100 //________________________________________________________________
103 Int_t GetStripN(Float_t x, Float_t z); // Nearest strip number P-side
104 Int_t GetStripP(Float_t x, Float_t z); // Nearest strip number N-side
106 Float_t Get2StripN(Float_t, Float_t); // Ditance do the nearest strip P
107 Float_t Get2StripP(Float_t, Float_t); // Ditance do the nearest strip N
109 Bool_t GetCrossing(Float_t&, Float_t&); //x, y of strips crossing
111 //________________________________________________________________
113 //Private methods for simulation
114 //________________________________________________________________
118 void ApplyCoupling();
120 Float_t F(Float_t x, Float_t s) {return (TMath::Erf(x*kPitch/s)+1) /2;}
122 // Proceding part should be in SSDgeo ----->
124 //Technical parameters of detector
125 static const Float_t kStereo = 0.0175; //Stereo Angle 17.5 mrad
126 static const Float_t kTan = 0.0175;
127 static const Int_t kNStrips = 768; //Number of strips on each side
128 static const Float_t kPitch = 0.095; //Distance strip - strip (mm)
129 static const Float_t kX = 72.96; //X size (mm)
130 static const Float_t kY = 0.3; //Y size (mm)
131 static const Float_t kZ = 40; //Thickness (mm)
133 // <------------------------------
135 //______________________________________________________________
137 // Parameters for simulation
138 //______________________________________________________________
140 static const Float_t kSigmaP = 0.003; //Gaussian sigm
141 static const Float_t kSigmaN = 0.002;
142 static const Int_t kSteps = 10; //Number of steps
143 static const Int_t kTresholdP = 1500;
144 static const Int_t kTresholdN = 2500;
146 //________________________________________________________________
149 //________________________________________________________________
152 Float_t fSNRatioP; //Signal - Noise Ratio P-side
153 Float_t fSNRatioN; //Signal - Noise RatioNP-side
155 Float_t fGainP; //Charge - ADC conversion parameter P
156 Float_t fGainN; //Charge - ADC conversi parameter N
158 Int_t fNInvalidP; //Number of invalid strips P
159 TArrayS *fInvalidP; //Invalid strips P-side
160 Int_t fNInvalidN; //Number of invalid strips N
161 TArrayS *fInvalidN; //Invalid strips N-side
164 //________________________________________________________________
166 // Capacitive coupling parameters
167 //________________________________________________________________
175 //________________________________________________________________
177 // Parameters for invalid strips simulatation
178 //________________________________________________________________
180 Float_t fNInvalid; //Meam number of invalid strips
181 Float_t fISigma; //RMS of invalid strips (Gaussian)
183 //________________________________________________________________
185 // temp for simulation
186 //________________________________________________________________
189 TArrayI *fN; // for signal
192 TArrayI *fNtrack1; // for tracks, signal orgin N-side
196 TArrayI *fPtrack1; // for tracks, signal orgin P-side
201 ClassDef(AliITSmoduleSSD, 1)