]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDDigitizer.h
Incrementing class versions
[u/mrichter/AliRoot.git] / FMD / AliFMDDigitizer.h
1 #ifndef ALIFMDDIGITIZER_H
2 #define ALIFMDDIGITIZER_H
3 /* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * See cxx source for full Copyright notice                               
7  */
8 #ifndef ALIDIGITIZER_H
9 # include <AliDigitizer.h>
10 #endif
11 #ifndef ALIRUNDIGITIZER_H
12 # include <AliRunDigitizer.h>
13 #endif
14 #ifndef ALIFMDEdepMAP_H
15 # include "AliFMDEdepMap.h"
16 #endif
17 #ifndef __UTILITY__
18 # include <utility>
19 #endif
20 // #ifndef ROOT_TArrayF
21 // # include <TArrayF.h>
22 // #endif
23
24 //====================================================================
25 class TClonesArray;
26 class AliFMD;
27 class AliLoader;
28 class AliRunLoader;
29
30
31 //====================================================================
32 class AliFMDBaseDigitizer : public AliDigitizer 
33 {
34 public:
35   AliFMDBaseDigitizer();
36   AliFMDBaseDigitizer(AliRunDigitizer * manager);
37   AliFMDBaseDigitizer(const Char_t* name, const Char_t* title);
38   virtual ~AliFMDBaseDigitizer();
39    
40   // Do the main work
41   virtual Bool_t Init();
42
43   // Extra member functions 
44   void     SetVA1MipRange(UShort_t r=20) { fVA1MipRange = r; }
45   void     SetAltroChannelSize(UShort_t s=1024) { fAltroChannelSize = s;}
46   void     SetSampleRate(UShort_t r=1) { fSampleRate = (r>2 ? 2 : r); }
47   void     SetShapingTime(Float_t t=10) { fShapingTime = t;  }
48   
49   UShort_t GetVA1MipRange()      const { return fVA1MipRange; }
50   UShort_t GetAltroChannelSize() const { return fAltroChannelSize; }
51   UShort_t GetSampleRate()       const { return fSampleRate; }
52   Float_t  GetShapingTime()      const { return fShapingTime; }
53 protected:
54   virtual void     SumContributions(AliFMD* fmd);
55   virtual void     DigitizeHits(AliFMD* fmd) const;
56   virtual void     ConvertToCount(Float_t   edep, 
57                                   Float_t   last,
58                                   Float_t   siThickness, 
59                                   Float_t   siDensity, 
60                                   TArrayI&  counts) const;
61   virtual UShort_t MakePedestal() const { return 0; }
62   virtual void     AddNoise(TArrayI&) const {}
63   virtual void     AddDigit(AliFMD*  /* fmd      */,
64                             UShort_t /* detector */, 
65                             Char_t   /* ring     */,
66                             UShort_t /* sector   */, 
67                             UShort_t /* strip    */, 
68                             Float_t  /* edep     */, 
69                             UShort_t /* count1   */, 
70                             Short_t  /* count2   */, 
71                             Short_t  /* count3   */) const {}
72
73   AliRunLoader* fRunLoader;        // Run loader
74   AliFMDEdepMap fEdep;             // Cache of Energy from hits 
75   UShort_t      fVA1MipRange;      // How many MIPs the pre-amp can do    
76   UShort_t      fAltroChannelSize; // Largest # to store in 1 ADC chan.
77   UShort_t      fSampleRate;       // Times the ALTRO samples pre-amp.
78   Float_t       fShapingTime;      // Shaping profile parameter
79   
80   AliFMDBaseDigitizer(const AliFMDBaseDigitizer& o) 
81     : AliDigitizer(o) {}
82   AliFMDBaseDigitizer& operator=(const AliFMDBaseDigitizer&) { return *this; }
83   ClassDef(AliFMDBaseDigitizer,0) // Base class for FMD digitizers
84 };
85
86 //====================================================================
87 class AliFMDDigitizer : public AliFMDBaseDigitizer 
88 {
89 public:
90   AliFMDDigitizer();
91   AliFMDDigitizer(AliRunDigitizer * manager);
92   virtual ~AliFMDDigitizer() {}
93   virtual void  Exec(Option_t* option=0);
94   
95    
96   // Extra member functions 
97   void     SetPedestal(Float_t mean=10, Float_t width=.5);
98   void     GetPedestal(Float_t& mean,   Float_t& width) const;
99 protected:
100   virtual void     AddDigit(AliFMD*  fmd,
101                             UShort_t detector, 
102                             Char_t   ring,
103                             UShort_t sector, 
104                             UShort_t strip, 
105                             Float_t  edep, 
106                             UShort_t count1, 
107                             Short_t  count2, 
108                             Short_t  count3) const;
109   virtual UShort_t MakePedestal() const;
110   virtual void     CheckDigit(Float_t         edep, 
111                               UShort_t        nhits,
112                               const TArrayI&  counts);
113   Float_t       fPedestal;         // Mean of pedestal 
114   Float_t       fPedestalWidth;    // Width of pedestal 
115   ClassDef(AliFMDDigitizer,0) // Make Digits from Hits
116 };
117 //____________________________________________________________________
118 inline void 
119 AliFMDDigitizer::SetPedestal(Float_t mean, Float_t width) 
120 {
121   fPedestal      = mean;
122   fPedestalWidth = width;
123 }
124
125 //____________________________________________________________________
126 inline void 
127 AliFMDDigitizer::GetPedestal(Float_t& mean, Float_t& width)  const
128 {
129   mean  = fPedestal;
130   width = fPedestalWidth;
131 }
132
133
134 //====================================================================
135 class AliFMDSDigitizer : public AliFMDBaseDigitizer 
136 {
137 public:
138   AliFMDSDigitizer();
139   AliFMDSDigitizer(const Char_t* headerFile, const Char_t* sdigFile="");
140   virtual ~AliFMDSDigitizer();
141   virtual void  Exec(Option_t* option=0);
142 protected:
143   virtual void     AddDigit(AliFMD*  fmd,
144                             UShort_t detector, 
145                             Char_t   ring,
146                             UShort_t sector, 
147                             UShort_t strip, 
148                             Float_t  edep, 
149                             UShort_t count1, 
150                             Short_t  count2, 
151                             Short_t  count3) const;
152   ClassDef(AliFMDSDigitizer,0) // Make Summable Digits from Hits
153 };
154
155
156
157 #endif
158 //____________________________________________________________________
159 //
160 // Local Variables:
161 //   mode: C++
162 // End:
163 //
164 //
165 // EOF
166 //
167