]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDReconstructor.h
Various small fixes. Make sure Emacs knows it's C++ mode, and the like.
[u/mrichter/AliRoot.git] / FMD / AliFMDReconstructor.h
1 #ifndef ALIFMDRECONSTRUCTOR_H
2 #define ALIFMDRECONSTRUCTOR_H
3 //
4 //  Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
5 //  reserved. 
6 //
7 //  See cxx source for full Copyright notice                               
8 //
9 //  AliFMDReconstructor.h 
10 //  Task Class for making TreeR for FMD                        
11 //
12 //-- Authors: Evgeny Karpechev (INR) and Alla Maevskaia (INR)
13 //   Latest changes by Christian Holm Christensen <cholm@nbi.dk>
14 /*
15     Reconstruct nember of particles in given group of pads for given
16     FMDvolume determine by numberOfVolume ,
17     numberOfMinSector,numberOfMaxSector, numberOfMinRing,
18     numberOfMaxRing Reconstruction method choose dependence on number
19     of empty pads
20   */
21 /* $Id$ */
22
23 //____________________________________________________________________
24 //
25 // Class to do reconstruction of events based on the FMD data.  The
26 // class will do two kinds of reconstruction, one based on energy
27 // deposition, and one using hit patterns. 
28 //
29
30 // Header guards in the header files speeds up the compilation
31 // considerably.  Please leave them in. 
32 #ifndef ALIRECONSTRUCTOR_H
33 # include <AliReconstructor.h>
34 #endif
35
36 //____________________________________________________________________
37 class TTree;
38 class TClonesArray;
39 class AliFMDDigit;
40 class AliRawReader;
41 class AliRunLoader;
42 class AliESD;
43 class AliESDFMD;
44
45 //____________________________________________________________________
46 class AliFMDReconstructor: public AliReconstructor 
47 {
48 public:
49   AliFMDReconstructor();
50   AliFMDReconstructor(const AliFMDReconstructor& other);
51   virtual ~AliFMDReconstructor();
52   AliFMDReconstructor& operator=(const AliFMDReconstructor& other);
53
54   virtual void   Init(AliRunLoader* runLoader);
55   virtual Bool_t HasDigitConversion() const { return kTRUE; }
56   virtual void   ConvertDigits(AliRawReader* reader, TTree* digitsTree) const;
57   virtual Bool_t HasLocalReconstruction() const { return kTRUE; }
58   virtual void   Reconstruct(TTree* digitsTree, TTree* clusterTree) const;
59   virtual void   FillESD(TTree* digitsTree, TTree* clusterTree, 
60                          AliESD* esd) const;
61   virtual void   SetESD(AliESD* esd) { fESD = esd; }
62      
63 private:
64   void Reconstruct(AliRawReader*, TTree*) const;
65   void Reconstruct(AliRunLoader*) const;
66   void Reconstruct(AliRunLoader*, AliRawReader*) const;
67   void FillESD(AliRawReader*, TTree*, AliESD*) const;
68   void FillESD(AliRunLoader*, AliESD*) const;
69   void FillESD(AliRunLoader*, AliRawReader*, AliESD*) const;
70   
71 protected:
72   virtual void     ProcessDigits(TClonesArray* digits) const;
73   virtual UShort_t SubtractPedestal(AliFMDDigit* digit) const;
74   virtual Float_t  Adc2Energy(AliFMDDigit* digit, Float_t eta, 
75                               UShort_t count) const;
76   virtual Float_t  Energy2Multiplicity(AliFMDDigit* digit, Float_t edep) const;
77   virtual void     PhysicalCoordinates(AliFMDDigit* digit, Float_t& eta, 
78                                        Float_t& phi) const;
79   
80   mutable TClonesArray* fMult;          // Cache of RecPoints
81   mutable Int_t         fNMult;         // Number of entries in fMult 
82   mutable TTree*        fTreeR;         // Output tree 
83   mutable Float_t       fCurrentVertex; // Z-coordinate of primary vertex
84   mutable AliESDFMD*    fESDObj;        // ESD output object
85   AliESD*               fESD;
86   
87   ClassDef(AliFMDReconstructor, 0)  // class for the FMD reconstruction
88 }; 
89 #endif
90 //____________________________________________________________________
91 //
92 // Local Variables:
93 //   mode: C++
94 // End:
95 //
96 // EOF
97 //