00001 #ifndef ALIFMDRECONSTRUCTOR_H
00002 #define ALIFMDRECONSTRUCTOR_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef ALIRECONSTRUCTOR_H
00020 # include <AliReconstructor.h>
00021 #endif
00022
00023
00024 class TTree;
00025 class TClonesArray;
00026 class AliFMDDigit;
00027 class AliRawReader;
00028 class AliRunLoader;
00029 class AliESD;
00030 class AliESDFMD;
00031
00033
00040 class AliFMDReconstructor: public AliReconstructor
00041 {
00042 public:
00044 AliFMDReconstructor();
00046 virtual ~AliFMDReconstructor();
00047
00056 virtual void Init(AliRunLoader* runLoader);
00059 virtual Bool_t HasDigitConversion() const { return kTRUE; }
00066 virtual void ConvertDigits(AliRawReader* reader, TTree* digitsTree) const;
00069 virtual Bool_t HasLocalReconstruction() const { return kTRUE; }
00077 virtual void Reconstruct(TTree* digitsTree, TTree* clusterTree) const;
00085 virtual void FillESD(TTree* digitsTree, TTree* clusterTree,
00086 AliESD* esd) const;
00088 virtual void SetESD(AliESD* esd) { fESD = esd; }
00089
00090 private:
00092 void Reconstruct(AliRawReader*, TTree*) const;
00094 void Reconstruct(AliRunLoader*) const;
00096 void Reconstruct(AliRunLoader*, AliRawReader*) const;
00098 void FillESD(AliRawReader*, TTree*, AliESD*) const;
00100 void FillESD(AliRunLoader*, AliESD*) const;
00102 void FillESD(AliRunLoader*, AliRawReader*, AliESD*) const;
00103
00104 protected:
00107 AliFMDReconstructor(const AliFMDReconstructor& other);
00111 AliFMDReconstructor& operator=(const AliFMDReconstructor& other);
00117 virtual void ProcessDigits(TClonesArray* digits) const;
00121 virtual UShort_t SubtractPedestal(AliFMDDigit* digit) const;
00133 virtual Float_t Adc2Energy(AliFMDDigit* digit, Float_t eta,
00134 UShort_t count) const;
00146 virtual Float_t Energy2Multiplicity(AliFMDDigit* digit, Float_t edep) const;
00155 virtual void PhysicalCoordinates(AliFMDDigit* digit, Float_t& eta,
00156 Float_t& phi) const;
00157
00158 mutable TClonesArray* fMult;
00159 mutable Int_t fNMult;
00160 mutable TTree* fTreeR;
00161 mutable Float_t fCurrentVertex;
00162 mutable AliESDFMD* fESDObj;
00163 AliESD* fESD;
00164
00165 ClassDef(AliFMDReconstructor, 0)
00166 };
00167 #endif
00168
00169
00170
00171
00172
00173
00174
00175