Make code compliant to coding conventions
[u/mrichter/AliRoot.git] / TRD / AliTRDdigitizer.h
1 #ifndef ALITRDDIGITIZER_h
2 #define ALITRDDIGITIZER_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 #include <TNamed.h>
9 #include <TFile.h>
10 #include <TF1.h>
11
12 #include "AliHit.h" 
13 #include "AliTRDdigit.h"
14 #include "AliTRDconst.h"
15 #include "AliTRDgeometry.h"
16
17 class AliTRDdigitsManager;
18
19 ///////////////////////////////////////////////////////
20 //  Produces digits from the hits information        //
21 ///////////////////////////////////////////////////////
22
23 class AliTRDdigitizer : public TNamed {
24
25  public:
26
27   AliTRDdigitizer();
28   AliTRDdigitizer(const Text_t* name, const Text_t* title);
29   AliTRDdigitizer(AliTRDdigitizer &d);
30   virtual ~AliTRDdigitizer();
31
32   virtual void         Copy(AliTRDdigitizer &d);
33   virtual void         Init();
34   virtual Bool_t       Open(const Char_t *name, Int_t nEvent = 0);
35   virtual Bool_t       MakeDigits();
36   virtual Bool_t       WriteDigits();
37
38   virtual void         SetGasGain(Float_t gasgain)     { fGasGain       = gasgain;  };
39   virtual void         SetNoise(Float_t noise)         { fNoise         = noise;    };
40   virtual void         SetChipGain(Float_t chipgain)   { fChipGain      = chipgain; };
41   virtual void         SetADCoutRange(Float_t range)   { fADCoutRange   = range;    };
42   virtual void         SetADCinRange(Float_t range)    { fADCinRange    = range;    };
43   virtual void         SetADCthreshold(Int_t thresh)   { fADCthreshold  = thresh;   };
44   virtual void         SetDiffusion(Int_t diffOn = 1)  { fDiffusionOn   = diffOn;   };
45   virtual void         SetDiffusionT(Float_t diff)     { fDiffusionT    = diff;     };
46   virtual void         SetDiffusionL(Float_t diff)     { fDiffusionL    = diff;     };
47   virtual void         SetElAttach(Int_t elOn = 1)     { fElAttachOn    = elOn;     };
48   virtual void         SetElAttachProp(Float_t prop)   { fElAttachProp  = prop;     };
49   virtual void         SetExB(Int_t exbOn = 1)         { fExBOn         = exbOn;    };
50   virtual void         SetLorentzAngle(Float_t angle)  { fLorentzAngle  = angle;    };
51   virtual void         SetPadResponse(TF1 *PRF)        { if (fPRF) delete fPRF;
52                                                          fPRF           = PRF;      };
53
54   AliTRDdigitsManager *Digits()                        { return fDigits;        };
55
56   virtual Float_t      GetGasGain()                    { return fGasGain;       };
57   virtual Float_t      GetNoise()                      { return fNoise;         };
58   virtual Float_t      GetChipGain()                   { return fChipGain;      };
59   virtual Float_t      GetADCoutRange()                { return fADCoutRange;   };
60   virtual Float_t      GetADCinRange()                 { return fADCinRange;    };
61   virtual Int_t        GetADCthreshold()               { return fADCthreshold;  };
62   virtual Float_t      GetDiffusionT()                 { return fDiffusionT;    };
63   virtual Float_t      GetDiffusionL()                 { return fDiffusionL;    };
64   virtual Float_t      GetElAttachProp()               { return fElAttachProp;  };
65   virtual Float_t      GetLorentzAngle()               { return fLorentzAngle;  };
66   virtual TF1         *GetPadResponse()                { return fPRF;           };
67
68   inline  AliTRDdigitizer &operator=(AliTRDdigitizer &d);
69
70  protected:
71
72   TFile               *fInputFile;       //! ALIROOT-filename
73   AliTRDdigitsManager *fDigits;          //! TRD digits manager
74   AliTRD              *fTRD;             //! TRD detector class
75   AliTRDgeometry      *fGeo;             //! TRD geometry
76   
77   Int_t                fEvent;           //! Event number
78
79   Float_t              fGasGain;         // Gas gain
80   Float_t              fNoise;           // Electronics noise
81   Float_t              fChipGain;        // Electronics gain
82   Float_t              fADCoutRange;     // ADC output range (number of channels)
83   Float_t              fADCinRange;      // ADC input range (input charge)
84   Int_t                fADCthreshold;    // ADC threshold in ADC channel
85   Int_t                fDiffusionOn;     // Switch for the diffusion
86   Float_t              fDiffusionT;      // Diffusion in transverse direction
87   Float_t              fDiffusionL;      // Diffusion in longitudinal direction
88   Int_t                fElAttachOn;      // Switch for the electron attachment
89   Float_t              fElAttachProp;    // Propability for electron attachment (for 1m)
90   Int_t                fExBOn;           // Switch for the ExB effects
91   Float_t              fLorentzAngle;    // Lorentz angle 
92   Float_t              fLorentzFactor;   // Factor due to Lorentz force
93   TF1                 *fPRF;             // Pad response function
94
95  private:
96
97   virtual Int_t       Diffusion(Float_t driftlength, Float_t *xyz);
98   virtual Int_t       ExB(Float_t driftlength, Float_t *xyz);  
99   
100   ClassDef(AliTRDdigitizer,1)            // Produces TRD-Digits
101
102 };
103
104 //_____________________________________________________________________________
105 AliTRDdigitizer &AliTRDdigitizer::operator=(AliTRDdigitizer &d)
106 {
107   //
108   // Assignment operator
109   //
110
111   if (this != &d) d.Copy(*this);
112   return *this;
113
114 }
115
116 #endif