Correct improper use of negative parameters
[u/mrichter/AliRoot.git] / TRD / AliTRDv2.h
1 #ifndef TRDv2_H
2 #define TRDv2_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////////////
9 //  Manager and hits classes for set:TRD version 2    //
10 ////////////////////////////////////////////////////////
11  
12 #include <TF1.h> 
13 #include "AliTRD.h"
14
15 // Energy spectrum of the delta-rays 
16 Double_t Ermilova(Double_t *x, Double_t *par);
17
18 class AliTRDv2 : public AliTRD {
19
20 public:
21   AliTRDv2() {}
22   AliTRDv2(const char *name, const char *title);
23   virtual        ~AliTRDv2();
24   virtual void    CreateGeometry();
25   virtual void    CreateMaterials();
26   virtual Int_t   IsVersion() const {return 2;}
27   virtual void    MakeBranch(Option_t* option);
28   virtual void    StepManager();
29   virtual void    SetSensPlane(Int_t iplane = 0);
30   virtual void    SetSensChamber(Int_t ichamber = 0);
31   virtual void    SetSensSector(Int_t isector = 0);
32   virtual void    Init();
33   virtual void    Hits2Digits(); 
34
35   virtual void    SetRowPadSize(Float_t size)         { fRowPadSize   = size;     };
36   virtual void    SetColPadSize(Float_t size)         { fColPadSize   = size;     };
37   virtual void    SetTimeBinSize(Float_t size)        { fTimeBinSize  = size;     };
38
39   virtual void    SetGasGain(Float_t gasgain)         { fGasGain      = gasgain;  };
40   virtual void    SetNoise(Float_t noise)             { fNoise        = noise;    };
41   virtual void    SetChipGain(Float_t chipgain)       { fChipGain     = chipgain; };
42   virtual void    SetADCoutRange(Float_t range)       { fADCoutRange  = range;    };
43   virtual void    SetADCinRange(Float_t range)        { fADCinRange   = range;    };
44   virtual void    SetADCthreshold(Int_t thresh)       { fADCthreshold = thresh;   };
45   virtual void    SetDiffusionT(Float_t diff)         { fDiffusionT   = diff;     };
46   virtual void    SetDiffusionL(Float_t diff)         { fDiffusionL   = diff;     };
47
48   virtual Float_t GetRowPadSize()                     { return fRowPadSize;   };
49   virtual Float_t GetColPadSize()                     { return fColPadSize;   };
50   virtual Float_t GetTimeBinSize()                    { return fTimeBinSize;  };
51
52   virtual Float_t GetGasGain()                        { return fGasGain;      };
53   virtual Float_t GetNoise()                          { return fNoise;        };
54   virtual Float_t GetChipGain()                       { return fChipGain;     };
55   virtual Float_t GetADCoutRange()                    { return fADCoutRange;  };
56   virtual Float_t GetADCinRange()                     { return fADCinRange;   };
57   virtual Int_t   GetADCthreshold()                   { return fADCthreshold; };
58   virtual Float_t GetDiffusionT()                     { return fDiffusionT;   };
59   virtual Float_t GetDiffusionL()                     { return fDiffusionL;   };
60
61   virtual Int_t   GetRowMax(Int_t iplan, Int_t icham) { return fRowMax[iplan-1][icham-1]; };
62   virtual Int_t   GetColMax(Int_t iplan)              { return fColMax[iplan-1];          };
63   virtual Int_t   GetTimeMax()                        { return fTimeMax;                  };
64
65 protected:
66   Int_t        fIdSens;                 // Sensitive volume identifier
67
68   Int_t        fIdSpace1;               // Spaceframe volume identifier
69   Int_t        fIdSpace2;               // 
70   Int_t        fIdSpace3;               // 
71
72   Int_t        fIdChamber1;             // Driftchamber volume identifier
73   Int_t        fIdChamber2;             // 
74   Int_t        fIdChamber3;             // 
75
76   Int_t        fSensSelect;             // Switch to select only parts of the detector
77   Int_t        fSensPlane;              // Sensitive detector plane
78   Int_t        fSensChamber;            // Sensitive detector chamber
79   Int_t        fSensSector;             // Sensitive detector sector
80
81   Int_t        fRowMax[kNplan][kNcham]; // Number of pad-rows
82   Int_t        fColMax[kNplan];         // Number of pad-columns
83   Int_t        fTimeMax;                // Number of time buckets
84
85   Float_t      fRowPadSize;             // Pad size in z-direction
86   Float_t      fColPadSize;             // Pad size in rphi-direction
87   Float_t      fTimeBinSize;            // Size of the time buckets
88
89   Float_t      fGasGain;                // Gas gain
90   Float_t      fNoise;                  // Electronics noise
91   Float_t      fChipGain;               // Electronics gain
92   Float_t      fADCoutRange;            // ADC output range (number of channels)
93   Float_t      fADCinRange;             // ADC input range (input charge)
94   Int_t        fADCthreshold;           // ADC threshold in ADC channel
95   Float_t      fDiffusionT;             // Diffusion in transverse direction
96   Float_t      fDiffusionL;             // Diffusion in logitudinal direction
97
98 private:
99   virtual Double_t BetheBloch(Double_t bg);
100   virtual void     Diffusion(Float_t driftlength, Float_t *xyz);
101   virtual Float_t  PadResponse(Float_t x);
102
103   TF1         *fDeltaE;                 // Energy distribution of the delta-electrons
104    
105   ClassDef(AliTRDv2,1)                  // Transition Radiation Detector version 2 (slow simulator)
106
107 };
108
109 #endif