1 #ifndef ALIFMDDIGITIZER_H
2 #define ALIFMDDIGITIZER_H
3 /* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights
6 * See cxx source for full Copyright notice
9 # include <AliDigitizer.h>
11 #ifndef ALIRUNDIGITIZER_H
12 # include <AliRunDigitizer.h>
15 # include <AliFMDMap.h>
20 // #ifndef ROOT_TArrayF
21 // # include <TArrayF.h>
24 //====================================================================
30 typedef AliFMDMap<std::pair<Float_t, UShort_t> > AliFMDEdepMap;
32 //====================================================================
33 class AliFMDBaseDigitizer : public AliDigitizer
36 AliFMDBaseDigitizer();
37 AliFMDBaseDigitizer(AliRunDigitizer * manager);
38 AliFMDBaseDigitizer(const Char_t* name, const Char_t* title);
39 virtual ~AliFMDBaseDigitizer();
42 virtual Bool_t Init();
44 // Extra member functions
45 void SetVA1MipRange(UShort_t r=20) { fVA1MipRange = r; }
46 void SetAltroChannelSize(UShort_t s=1024) { fAltroChannelSize = s;}
47 void SetSampleRate(UShort_t r=1) { fSampleRate = (r>2 ? 2 : r); }
48 void SetShapingTime(Float_t t=10) { fShapingTime = t; }
50 UShort_t GetVA1MipRange() const { return fVA1MipRange; }
51 UShort_t GetAltroChannelSize() const { return fAltroChannelSize; }
52 UShort_t GetSampleRate() const { return fSampleRate; }
53 Float_t GetShapingTime() const { return fShapingTime; }
55 virtual void SumContributions(AliFMD* fmd);
56 virtual void DigitizeHits(AliFMD* fmd) const;
57 virtual void ConvertToCount(Float_t edep,
60 TArrayI& counts) const;
61 virtual UShort_t MakePedestal() const { return 0; }
62 virtual Float_t ShapeIntegral(Float_t u, Float_t v) const;
63 virtual void AddNoise(TArrayI&) const {}
64 virtual void AddDigit(AliFMD* /* fmd */,
65 UShort_t /* detector */,
67 UShort_t /* sector */,
70 UShort_t /* count1 */,
72 Short_t /* count3 */) const {}
74 AliRunLoader* fRunLoader;
75 AliFMDEdepMap fEdep; // Cache of Energy from hits
76 UShort_t fVA1MipRange; // How many MIPs the pre-amp can do
77 UShort_t fAltroChannelSize; // Largest # to store in 1 ADC chan.
78 UShort_t fSampleRate; // Times the ALTRO samples pre-amp.
79 Float_t fShapingTime; // Shaping profile parameter
87 ClassDef(AliFMDBaseDigitizer,0) // Base class for FMD digitizers
90 //====================================================================
91 class AliFMDDigitizer : public AliFMDBaseDigitizer
95 AliFMDDigitizer(AliRunDigitizer * manager);
96 virtual ~AliFMDDigitizer() {}
97 virtual void Exec(Option_t* option=0);
100 // Extra member functions
101 void SetPedestal(Float_t mean=10, Float_t width=.5);
102 void GetPedestal(Float_t& mean, Float_t& width) const;
104 virtual void AddDigit(AliFMD* fmd,
112 Short_t count3) const;
113 virtual UShort_t MakePedestal() const;
114 virtual void CheckDigit(Float_t edep,
116 const TArrayI& counts);
117 Float_t fPedestal; // Mean of pedestal
118 Float_t fPedestalWidth; // Width of pedestal
119 ClassDef(AliFMDDigitizer,0) // Make Digits from Hits
121 //____________________________________________________________________
123 AliFMDDigitizer::SetPedestal(Float_t mean, Float_t width)
126 fPedestalWidth = width;
129 //____________________________________________________________________
131 AliFMDDigitizer::GetPedestal(Float_t& mean, Float_t& width) const
134 width = fPedestalWidth;
138 //====================================================================
139 class AliFMDSDigitizer : public AliFMDBaseDigitizer
143 AliFMDSDigitizer(const Char_t* headerFile, const Char_t* sdigFile="");
144 virtual ~AliFMDSDigitizer();
145 virtual void Exec(Option_t* option=0);
147 virtual void AddDigit(AliFMD* fmd,
155 Short_t count3) const;
156 ClassDef(AliFMDSDigitizer,0) // Make Summable Digits from Hits
162 //____________________________________________________________________