00001 #ifndef ALIFMDDIGITIZER_H
00002 #define ALIFMDDIGITIZER_H
00003
00004
00005
00006
00007
00008 #ifndef ALIDIGITIZER_H
00009 # include <AliDigitizer.h>
00010 #endif
00011 #ifndef ALIRUNDIGITIZER_H
00012 # include <AliRunDigitizer.h>
00013 #endif
00014 #ifndef ALIFMDEdepMAP_H
00015 # include "AliFMDEdepMap.h"
00016 #endif
00017 #ifndef __UTILITY__
00018 # include <utility>
00019 #endif
00020
00021
00022
00023
00024
00025 class TClonesArray;
00026 class AliFMD;
00027 class AliLoader;
00028 class AliRunLoader;
00029 class AliFMDDigit;
00030
00031
00032
00140 class AliFMDBaseDigitizer : public AliDigitizer
00141 {
00142 public:
00144 AliFMDBaseDigitizer();
00147 AliFMDBaseDigitizer(AliRunDigitizer * manager);
00151 AliFMDBaseDigitizer(const Char_t* name, const Char_t* title);
00153 virtual ~AliFMDBaseDigitizer();
00154
00156 virtual Bool_t Init();
00157
00168 void SetShapingTime(Float_t B=10) { fShapingTime = B; }
00170 Float_t GetShapingTime() const { return fShapingTime; }
00171 protected:
00174 virtual void SumContributions(AliFMD* fmd);
00179 virtual void DigitizeHits(AliFMD* fmd) const;
00189 virtual void ConvertToCount(Float_t edep,
00190 Float_t last,
00191 UShort_t detector,
00192 Char_t ring,
00193 UShort_t sector,
00194 UShort_t strip,
00195 TArrayI& counts) const;
00202 virtual UShort_t MakePedestal(UShort_t detector,
00203 Char_t ring,
00204 UShort_t sector,
00205 UShort_t strip) const;
00207 virtual void AddNoise(TArrayI&) const {}
00209 virtual void AddDigit(AliFMD* ,
00210 UShort_t ,
00211 Char_t ,
00212 UShort_t ,
00213 UShort_t ,
00214 Float_t ,
00215 UShort_t ,
00216 Short_t ,
00217 Short_t ) const {}
00218
00219 AliRunLoader* fRunLoader;
00220 AliFMDEdepMap fEdep;
00221 Float_t fShapingTime;
00222
00225 AliFMDBaseDigitizer(const AliFMDBaseDigitizer& o)
00226 : AliDigitizer(o) {}
00229 AliFMDBaseDigitizer& operator=(const AliFMDBaseDigitizer&) { return *this; }
00230 ClassDef(AliFMDBaseDigitizer,2)
00231 };
00232
00233
00239 class AliFMDDigitizer : public AliFMDBaseDigitizer
00240 {
00241 public:
00243 AliFMDDigitizer();
00246 AliFMDDigitizer(AliRunDigitizer * manager);
00248 virtual ~AliFMDDigitizer() {}
00251 virtual void Exec(Option_t* option=0);
00252 protected:
00263 virtual void AddDigit(AliFMD* fmd,
00264 UShort_t detector,
00265 Char_t ring,
00266 UShort_t sector,
00267 UShort_t strip,
00268 Float_t edep,
00269 UShort_t count1,
00270 Short_t count2,
00271 Short_t count3) const;
00278 virtual UShort_t MakePedestal(UShort_t detector,
00279 Char_t ring,
00280 UShort_t sector,
00281 UShort_t strip) const;
00286 virtual void CheckDigit(AliFMDDigit* digit,
00287 UShort_t nhits,
00288 const TArrayI& counts);
00289 ClassDef(AliFMDDigitizer,1)
00290 };
00291
00292
00298 class AliFMDSDigitizer : public AliFMDBaseDigitizer
00299 {
00300 public:
00302 AliFMDSDigitizer();
00306 AliFMDSDigitizer(const Char_t* headerFile, const Char_t* sdigFile="");
00308 virtual ~AliFMDSDigitizer();
00311 virtual void Exec(Option_t* option=0);
00312 protected:
00323 virtual void AddDigit(AliFMD* fmd,
00324 UShort_t detector,
00325 Char_t ring,
00326 UShort_t sector,
00327 UShort_t strip,
00328 Float_t edep,
00329 UShort_t count1,
00330 Short_t count2,
00331 Short_t count3) const;
00332 ClassDef(AliFMDSDigitizer,0)
00333 };
00334
00335
00336
00337 #endif
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347