Added the class AliFMDGeometryBuilder (and derived
[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 #ifndef ROOT_TObjArray
36 # include <TObjArray.h>
37 #endif
38
39 //____________________________________________________________________
40 class TTree;
41 class TClonesArray;
42 class AliFMDDigit;
43 class AliRawReader;
44 class AliRunLoader;
45 class AliESD;
46
47 //____________________________________________________________________
48 class AliFMDReconstructor: public AliReconstructor 
49 {
50 public:
51   AliFMDReconstructor();
52   AliFMDReconstructor(const AliFMDReconstructor& other);
53   virtual ~AliFMDReconstructor();
54   AliFMDReconstructor& operator=(const AliFMDReconstructor& other);
55
56   virtual void   Init(AliRunLoader* runLoader);
57   virtual Bool_t HasDigitConversion() const { return kTRUE; }
58   virtual void   ConvertDigits(AliRawReader* reader, TTree* digitsTree) const;
59   virtual Bool_t HasLocalReconstruction() const { return kTRUE; }
60   virtual void   Reconstruct(TTree* digitsTree, TTree* clusterTree) const;
61   virtual void   FillESD(TTree* digitsTree, TTree* clusterTree, 
62                          AliESD* esd) const;
63   virtual void   SetESD(AliESD* esd) { fESD = esd; }
64      
65 private:
66   void Reconstruct(AliRawReader*, TTree*) const;
67   void Reconstruct(AliRunLoader*) const;
68   void Reconstruct(AliRunLoader*, AliRawReader*) const;
69   void FillESD(AliRawReader*, TTree*, AliESD*) const;
70   void FillESD(AliRunLoader*, AliESD*) const;
71   void FillESD(AliRunLoader*, AliRawReader*, AliESD*) const;
72   
73 protected:
74   virtual void     ProcessDigits(TClonesArray* digits) const;
75   virtual UShort_t SubtractPedestal(AliFMDDigit* digit) const;
76   
77   TObjArray             fAlgorithms;    // Array of algorithms
78   Float_t               fPedestal;      // Pedestal to subtract
79   Float_t               fPedestalWidth; // Width of pedestal
80   Float_t               fPedestalFactor;// Number of pedestal widths 
81   mutable Float_t       fCurrentVertex; // Z-coordinate of primary vertex
82   AliESD*               fESD;
83   
84   ClassDef(AliFMDReconstructor, 0)  // class for the FMD reconstruction
85 }; 
86 #endif
87 //____________________________________________________________________
88 //
89 // Local Variables:
90 //   mode: C++
91 // End:
92 //
93 // EOF
94 //