]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSsimulationSSD.h
Cosmetic changes.
[u/mrichter/AliRoot.git] / ITS / AliITSsimulationSSD.h
CommitLineData
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 9class AliITSMapA2;
b0f5e3fc 10class AliITSdcsSSD;
57817f7c 11class AliITSsegmentationSSD;
b0f5e3fc 12
13class 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.
84ostream &operator<<(ostream &os,AliITSsimulationSSD &source);
85istream &operator>>(istream &is,AliITSsimulationSSD &source);
b0f5e3fc 86#endif