]>
Commit | Line | Data |
---|---|---|
b0f5e3fc | 1 | #ifndef ALIITSSIMULATIONSSD_H |
2 | #define ALIITSSIMULATIONSSD_H | |
57817f7c | 3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
4 | * See cxx source for full Copyright notice */ | |
5 | /* $Id$ */ | |
b0f5e3fc | 6 | |
b0f5e3fc | 7 | #include "AliITSsimulation.h" |
b0f5e3fc | 8 | |
fd61217e | 9 | class AliITSMapA2; |
b0f5e3fc | 10 | class AliITSdcsSSD; |
57817f7c | 11 | class AliITSsegmentationSSD; |
b0f5e3fc | 12 | |
13 | class AliITSsimulationSSD: public AliITSsimulation { | |
14 | ||
57817f7c | 15 | public: |
16 | AliITSsimulationSSD(); // Default constructor | |
17 | AliITSsimulationSSD(const AliITSsimulationSSD &source); // copy constructor | |
18 | // operator = | |
19 | AliITSsimulationSSD& operator=(const AliITSsimulationSSD &source); | |
20 | //Standard Constructor | |
21 | AliITSsimulationSSD(AliITSsegmentation *seg,AliITSresponse *resp); | |
22 | //Destructor | |
23 | virtual ~AliITSsimulationSSD(); | |
24 | //Digitizes all of the hits in a module | |
25 | void DigitiseModule(AliITSmodule *mod,Int_t imod,Int_t dummy); | |
26 | //Computes the signal from one hit | |
27 | void HitToDigit(Int_t module,Double_t x0,Double_t y0,Double_t z0, | |
28 | Double_t x,Double_t y,Double_t z,Double_t de, | |
29 | Int_t *indexRange,Bool_t first); | |
30 | // returns the number of steps needed to proplerly distribute the charge | |
31 | // in a step | |
32 | Int_t NumOfSteps(Double_t x,Double_t y,Double_t z, | |
33 | Double_t &dex,Double_t &dey,Double_t &dez); | |
34 | void GetList(Int_t track,Float_t **pList,Int_t *IndexRange); | |
35 | // sets thresholds and fills digits | |
36 | void ChargeToSignal(Float_t **pList); | |
37 | //returns a pointer to the SSD segmentation. | |
38 | AliITSsegmentationSSD *GetSegmentation() { | |
39 | return (AliITSsegmentationSSD*) fSegmentation;} | |
40 | //Returns the ionization energy for Si in GeV. | |
41 | Double_t GetIonizeE() const {return fIonE;} | |
42 | //Sets the ionization energy for Si in GeV. | |
43 | void SetIonizeE(Double_t e=3.62E-09){fIonE = e;} | |
44 | //Returns the Diffusion constant h in cm**2/sec | |
45 | Double_t GetDiffConst(Int_t i) const {return fDifConst[i];} | |
46 | //Sets the Diffusion constant h in cm**2/sec | |
47 | void SetDiffConst(Double_t h=11.0,Double_t e=30.0) | |
48 | {fDifConst[0] = h;fDifConst[1]=e;} | |
49 | //Returns the Drift velocity for the side i | |
50 | Double_t GetDriftVelocity(Int_t i) const {return fDriftVel[i];} | |
51 | //Sets the Drift velocity for the P and N sides | |
52 | void SetDriftVelocity(Double_t v0=0.86E+06,Double_t v1=2.28E+06) | |
53 | {fDriftVel[0] = v0;fDriftVel[1] = v1;} | |
54 | // Standard ascii class print function | |
55 | void Print(ostream *os); | |
56 | // Standard ascii class read function | |
57 | void Read(istream *is); | |
b0f5e3fc | 58 | |
fd61217e | 59 | protected: |
57817f7c | 60 | // Diffuses the charge onto neighboring strips. |
61 | void IntegrateGaussian(Int_t k,Double_t par,Double_t av,Double_t sigma, | |
62 | Double_t inf, Double_t sup, | |
63 | Int_t *indexRange, Bool_t first); | |
64 | void ApplyNoise(); // Applies noise to strips randomly | |
65 | void ApplyCoupling(); // Applies posible signal coupling between strips | |
66 | Float_t F(Float_t av, Float_t x, Float_t s); | |
67 | ||
68 | // Data members | |
fd61217e | 69 | protected: |
57817f7c | 70 | AliITSdcsSSD *fDCS; // Class containing detector controle paramters |
71 | Int_t fNstrips;//! number of strips, gotten from segmentation | |
72 | Float_t fPitch; //! strip pitch spacing gotten from segmentation | |
fd61217e | 73 | |
57817f7c | 74 | private: |
75 | AliITSMapA2 *fMapA2; //! Map of ionization, used localy only | |
76 | Double_t fIonE; // ionization energy of Si in GeV | |
77 | Double_t fDifConst[2]; // Diffusion constants [h,e] in cm**2/sec | |
78 | Double_t fDriftVel[2]; // Drift velocities [P,N sides] cm/sec | |
b0f5e3fc | 79 | |
57817f7c | 80 | ClassDef(AliITSsimulationSSD,2) // SSD signal simulation class |
b0f5e3fc | 81 | |
57817f7c | 82 | }; |
83 | // Input and output functions for standard C++ input/output. | |
84 | ostream &operator<<(ostream &os,AliITSsimulationSSD &source); | |
85 | istream &operator>>(istream &is,AliITSsimulationSSD &source); | |
b0f5e3fc | 86 | #endif |