2 #ifndef ALIFMDDIGITIZER_H
3 #define ALIFMDDIGITIZER_H
4 /* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights
7 * See cxx source for full Copyright notice
10 # include <AliDigitizer.h>
12 #ifndef ALIRUNDIGITIZER_H
13 # include <AliRunDigitizer.h>
16 # include <AliFMDMap.h>
21 // #ifndef ROOT_TArrayF
22 // # include <TArrayF.h>
25 //====================================================================
31 typedef AliFMDMap<std::pair<Float_t, UShort_t> > AliFMDEdepMap;
33 //====================================================================
34 class AliFMDBaseDigitizer : public AliDigitizer
37 AliFMDBaseDigitizer();
38 AliFMDBaseDigitizer(AliRunDigitizer * manager);
39 AliFMDBaseDigitizer(const Char_t* name, const Char_t* title);
40 virtual ~AliFMDBaseDigitizer();
43 virtual Bool_t Init();
45 // Extra member functions
46 void SetVA1MipRange(UShort_t r=20) { fVA1MipRange = r; }
47 void SetAltroChannelSize(UShort_t s=1024) { fAltroChannelSize = s;}
48 void SetSampleRate(UShort_t r=1) { fSampleRate = (r>2 ? 2 : r); }
49 void SetShapingTime(Float_t t=10) { fShapingTime = t; }
51 UShort_t GetVA1MipRange() const { return fVA1MipRange; }
52 UShort_t GetAltroChannelSize() const { return fAltroChannelSize; }
53 UShort_t GetSampleRate() const { return fSampleRate; }
54 Float_t GetShapingTime() const { return fShapingTime; }
56 virtual void SumContributions(AliFMD* fmd);
57 virtual void DigitizeHits(AliFMD* fmd) const;
58 virtual void ConvertToCount(Float_t edep,
61 TArrayI& counts) const;
62 virtual UShort_t MakePedestal() const { return 0; }
63 virtual Float_t ShapeIntegral(Float_t u, Float_t v) const;
64 virtual void AddNoise(TArrayI&) const {}
65 virtual void AddDigit(AliFMD* /* fmd */,
66 UShort_t /* detector */,
68 UShort_t /* sector */,
71 UShort_t /* count1 */,
73 Short_t /* count3 */) const {}
75 AliRunLoader* fRunLoader;
76 AliFMDEdepMap fEdep; // Cache of Energy from hits
77 UShort_t fVA1MipRange; // How many MIPs the pre-amp can do
78 UShort_t fAltroChannelSize; // Largest # to store in 1 ADC chan.
79 UShort_t fSampleRate; // Times the ALTRO samples pre-amp.
80 Float_t fShapingTime; // Shaping profile parameter
88 ClassDef(AliFMDBaseDigitizer,0) // Base class for FMD digitizers
91 //====================================================================
92 class AliFMDDigitizer : public AliFMDBaseDigitizer
96 AliFMDDigitizer(AliRunDigitizer * manager);
97 virtual ~AliFMDDigitizer() {}
98 virtual void Exec(Option_t* option=0);
101 // Extra member functions
102 void SetPedestal(Float_t mean=10, Float_t width=.5);
103 void GetPedestal(Float_t& mean, Float_t& width) const;
105 virtual void AddDigit(AliFMD* fmd,
113 Short_t count3) const;
114 virtual UShort_t MakePedestal() const;
115 virtual void CheckDigit(Float_t edep,
117 const TArrayI& counts);
118 Float_t fPedestal; // Mean of pedestal
119 Float_t fPedestalWidth; // Width of pedestal
120 ClassDef(AliFMDDigitizer,0) // Make Digits from Hits
122 //____________________________________________________________________
124 AliFMDDigitizer::SetPedestal(Float_t mean, Float_t width)
127 fPedestalWidth = width;
130 //____________________________________________________________________
132 AliFMDDigitizer::GetPedestal(Float_t& mean, Float_t& width) const
135 width = fPedestalWidth;
139 //====================================================================
140 class AliFMDSDigitizer : public AliFMDBaseDigitizer
144 AliFMDSDigitizer(const Char_t* headerFile, const Char_t* sdigFile="");
145 virtual ~AliFMDSDigitizer();
146 virtual void Exec(Option_t* option=0);
148 virtual void AddDigit(AliFMD* fmd,
156 Short_t count3) const;
157 ClassDef(AliFMDSDigitizer,0) // Make Summable Digits from Hits
163 //____________________________________________________________________