remoe duplicate QA initialisation and do ESD QA for same detectors as RecPoint QA
[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 AliMUONDigitMaker;
20 class AliMUONVDigitStore;
21 class AliMUONVTriggerStore;
22
23 class AliMUONGeometryTransformer;
24
25 class AliMUONTriggerCrateStore;
26 class AliMUONTriggerCircuit;
27 class TClonesArray;
28 class AliMUONVTriggerStore;
29
30 class AliMUONDigitCalibrator;
31 class AliMUONCalibrationData;
32
33 class AliMUONTracker;
34 class AliMUONVTrackStore;
35
36 class AliMUONRecoParam;
37
38 class AliMUONVClusterFinder;
39
40 class AliMUONVClusterServer;
41
42 class AliMUONReconstructor : public AliReconstructor
43 {
44 public:
45   AliMUONReconstructor();
46   virtual ~AliMUONReconstructor();
47   
48   virtual Bool_t HasDigitConversion() const;
49
50   virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
51   
52   virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
53   
54   virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
55   
56   virtual AliTracker* CreateTracker() const;
57   
58   static const AliMUONRecoParam* GetRecoParam();
59   
60   static AliMUONVClusterFinder* CreateClusterFinder(const char* clusterFinderType);
61
62 private:
63   /// Not implemented
64   AliMUONReconstructor(const AliMUONReconstructor&);
65   /// Not implemented
66   AliMUONReconstructor& operator=(const AliMUONReconstructor&);
67   
68   void ConvertDigits(AliRawReader* rawReader, 
69                      AliMUONVDigitStore* digitStore,
70                      AliMUONVTriggerStore* triggerStore) const;
71   void Calibrate(AliMUONVDigitStore& digitStore) const;
72   AliMUONTriggerCrateStore* CrateManager() const;
73   void CreateCalibrator() const;
74   void CreateDigitMaker() const;
75   void CreateTriggerCircuit() const;
76   void CreateClusterServer() const;
77   void FillTreeR(AliMUONVTriggerStore* triggerStore,
78                  TTree& clustersTree) const;
79   
80   AliMUONVDigitStore* DigitStore() const;
81   AliMUONVTriggerStore* TriggerStore() const;
82   
83 private:
84   mutable AliMUONTriggerCrateStore* fCrateManager; //!< Trigger Crate manager
85   mutable AliMUONDigitMaker* fDigitMaker; //!< Raw to Digits converter
86   AliMUONGeometryTransformer* fTransformer; //!< Geometry transformer (local<->global)
87   mutable AliMUONVDigitStore* fDigitStore; //!< Digit container
88   mutable AliMUONTriggerCircuit* fTriggerCircuit; //!< Trigger Circuit
89   mutable AliMUONCalibrationData* fCalibrationData; //!< Calibration data
90   mutable AliMUONDigitCalibrator* fDigitCalibrator; //!<  Digit to calibrate digit converter
91   mutable AliMUONVClusterServer* fClusterServer; //!<  Clusterizer
92   mutable AliMUONVTriggerStore* fTriggerStore; //!< Trigger container
93   mutable AliMUONVTrackStore* fTrackStore; //!< Track container
94   
95   static AliMUONRecoParam* fgRecoParam; //!< parameters used to tune the MUON reconstruction
96   
97   ClassDef(AliMUONReconstructor,6) // Implementation of AliReconstructor
98 };
99
100 #endif