Temporary solution to set RecoParam for the reconstruction
[u/mrichter/AliRoot.git] / MUON / AliMUONReconstructor.h
1 #ifndef ALIMUONRECONSTRUCTOR_H
2 #define ALIMUONRECONSTRUCTOR_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup rec
10 /// \class AliMUONReconstructor
11 /// \brief Implementation of AliReconstructor for MUON (both tracker and trigger)
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ALIRECONSTRUCTOR_H
16 #  include "AliReconstructor.h"
17 #endif
18
19 class AliMUONCalibrationData;
20 class AliMUONDigitCalibrator;
21 class AliMUONDigitMaker;
22 class AliMUONGeometryTransformer;
23 class AliMUONRecoParam;
24 class AliMUONTracker;
25 class AliMUONTriggerCircuit;
26 class AliMUONVClusterFinder;
27 class AliMUONVClusterServer;
28 class AliMUONVClusterStore;
29 class AliMUONVDigitStore;
30 class AliMUONVTrackStore;
31 class AliMUONVTriggerStore;
32 class AliMUONVTriggerStore;
33 class TClonesArray;
34
35 class AliMUONReconstructor : public AliReconstructor
36 {
37 public:
38   AliMUONReconstructor();
39   virtual ~AliMUONReconstructor();
40   
41   virtual Bool_t HasDigitConversion() const;
42
43   virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
44   
45   virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
46   
47   virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
48   
49   virtual AliTracker* CreateTracker() const;
50   
51   static void                    SetRecoParam(AliMUONRecoParam* recoParam) {fgRecoParam = recoParam;}
52   static const AliMUONRecoParam* GetRecoParam();
53   
54   static AliMUONVClusterFinder* CreateClusterFinder(const char* clusterFinderType);
55
56 private:
57   /// Not implemented
58   AliMUONReconstructor(const AliMUONReconstructor&);
59   /// Not implemented
60   AliMUONReconstructor& operator=(const AliMUONReconstructor&);
61   
62   void ConvertDigits(AliRawReader* rawReader, 
63                      AliMUONVDigitStore* digitStore,
64                      AliMUONVTriggerStore* triggerStore) const;
65   void Calibrate(AliMUONVDigitStore& digitStore) const;
66   void CreateCalibrator() const;
67   void CreateDigitMaker() const;
68   void CreateTriggerCircuit() const;
69   void CreateClusterServer() const;
70   void FillTreeR(AliMUONVTriggerStore* triggerStore,
71                  TTree& clustersTree) const;
72   
73   AliMUONVDigitStore* DigitStore() const;
74   AliMUONVTriggerStore* TriggerStore() const;
75   
76 private:
77
78   mutable AliMUONDigitMaker* fDigitMaker; //!< Raw to Digits converter
79   AliMUONGeometryTransformer* fTransformer; //!< Geometry transformer (local<->global)
80   mutable AliMUONVDigitStore* fDigitStore; //!< Digit container
81   mutable AliMUONTriggerCircuit* fTriggerCircuit; //!< Trigger Circuit
82   mutable AliMUONCalibrationData* fCalibrationData; //!< Calibration data
83   mutable AliMUONDigitCalibrator* fDigitCalibrator; //!<  Digit to calibrate digit converter
84   mutable AliMUONVClusterServer* fClusterServer; //!<  Clusterizer
85   mutable AliMUONVTriggerStore* fTriggerStore; //!< Trigger container
86   mutable AliMUONVTrackStore* fTrackStore; //!< Track container
87   mutable AliMUONVClusterStore* fClusterStore; //!< cluster store (when not in combined tracking mode)
88   
89   static AliMUONRecoParam* fgRecoParam; //!< parameters used to tune the MUON reconstruction
90     
91   ClassDef(AliMUONReconstructor,7) // Implementation of AliReconstructor
92 };
93
94 #endif