1 #ifndef ALIITSMODLUESSD_H
2 #define ALIITSMODLUESSD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
10 #include "TClonesArray.h"
12 //#include "AliConst.h"
15 #include "AliITSdigitSSD.h"
17 #include "AliITSmodule.h"
21 //____________________________________________________________________
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
28 // This class keep track of Detector Control System parameters
29 // of one SSD module: invalid (dead) strips, gain, capacitive
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.
37 // created by: A.Boucham, W.Peryt, S.Radomski, P.Skowronski
38 // ver. 1.0 CERN, 16.09.1999
40 //___________________________________________________________________
45 class AliITSmoduleSSD: public AliITSmodule {
50 //________________________________________________________________
52 // Constructors and deconstructor
53 //________________________________________________________________
57 AliITSmoduleSSD(Int_t index);
60 //________________________________________________________________
62 // Data process methods
63 //________________________________________________________________
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
72 //________________________________________________________________
74 //Invalid strips menagement methods
75 //________________________________________________________________
78 // Parameters for invalid strips MonteCarlo
79 // void SetInvalidParam(Float_t mean, Float_t sigma);
80 // void GetInvalParam(Float_t &mean, Float_t &sigma);
82 // Methods for creating invalid strips
83 void SetInvalidMC(Float_t mean, Float_t sigma);
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();
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);
101 //________________________________________________________________
103 //Private methods for geometry
104 //________________________________________________________________
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
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
113 Bool_t GetCrossing(Float_t&, Float_t&); //x, y of strips crossing
115 //________________________________________________________________
117 //Private methods for simulation
118 //________________________________________________________________
122 void ApplyCoupling();
124 Float_t F(Float_t x, Float_t s) {return (TMath::Erf(x*kPitch/s)+1) /2;}
126 // Proceding part should be in SSDgeo ----->
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)
137 // <------------------------------
139 //______________________________________________________________
141 // Parameters for simulation
142 //______________________________________________________________
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;
150 //________________________________________________________________
153 //________________________________________________________________
156 Float_t fSNRatioP; //Signal - Noise Ratio P-side
157 Float_t fSNRatioN; //Signal - Noise RatioNP-side
159 Float_t fGainP; //Charge - ADC conversion parameter P
160 Float_t fGainN; //Charge - ADC conversi parameter N
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
168 //________________________________________________________________
170 // Capacitive coupling parameters
171 //________________________________________________________________
179 //________________________________________________________________
181 // Parameters for invalid strips simulatation
182 //________________________________________________________________
184 Float_t fNInvalid; //Meam number of invalid strips
185 Float_t fISigma; //RMS of invalid strips (Gaussian)
187 //________________________________________________________________
189 // temp for simulation
190 //________________________________________________________________
193 TArrayI *fN; // for signal
196 TArrayI *fNtrack1; // for tracks, signal orgin N-side
200 TArrayI *fPtrack1; // for tracks, signal orgin P-side
205 ClassDef(AliITSmoduleSSD, 1)