]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONReconstructor.h
Add a protection against division by 0 (which may occur when a track exit from the...
[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 AliMUONTracker;
24 class AliMUONTriggerCircuit;
25 class AliMUONVClusterFinder;
26 class AliMUONVClusterServer;
27 class AliMUONVClusterStore;
28 class AliMUONVDigitStore;
29 class AliMUONVTrackStore;
30 class AliMUONVTriggerStore;
31 class AliMUONTriggerElectronics;
32 class TClonesArray;
33
34 #include "AliMUONRecoParam.h"
35
36 class AliMUONReconstructor : public AliReconstructor
37 {
38 public:
39   AliMUONReconstructor();
40   virtual ~AliMUONReconstructor();
41   
42   virtual Bool_t HasDigitConversion() const;
43
44   virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
45   
46   virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
47   
48   virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
49   
50   virtual AliTracker* CreateTracker() const;
51   
52   /// Get param object
53   static const AliMUONRecoParam* GetRecoParam() { return dynamic_cast<const AliMUONRecoParam*>(AliReconstructor::GetRecoParam(7)); }
54   
55   static AliMUONVClusterFinder* CreateClusterFinder(const char* clusterFinderType);
56
57 private:
58   /// Not implemented
59   AliMUONReconstructor(const AliMUONReconstructor&);
60   /// Not implemented
61   AliMUONReconstructor& operator=(const AliMUONReconstructor&);
62   
63   void ConvertDigits(AliRawReader* rawReader, 
64                      AliMUONVDigitStore* digitStore,
65                      AliMUONVTriggerStore* triggerStore) const;
66   void Calibrate(AliMUONVDigitStore& digitStore) const;
67   void CreateCalibrationData() const;
68   void CreateCalibrator() const;
69   void CreateDigitMaker() const;
70   void CreateTriggerCircuit() const;
71   void CreateClusterServer() const;
72   void FillTreeR(AliMUONVTriggerStore* triggerStore,
73                  TTree& clustersTree) const;
74   
75   AliMUONVDigitStore* DigitStore() const;
76   AliMUONVTriggerStore* TriggerStore() const;
77   void ResponseRemovingChambers(AliMUONVTriggerStore* triggerStore) const;
78   
79 private:
80
81   mutable AliMUONDigitMaker* fDigitMaker; //!< Raw to Digits converter
82   AliMUONGeometryTransformer* fTransformer; //!< Geometry transformer (local<->global)
83   mutable AliMUONVDigitStore* fDigitStore; //!< Digit container
84   mutable AliMUONTriggerCircuit* fTriggerCircuit; //!< Trigger Circuit
85   mutable AliMUONCalibrationData* fCalibrationData; //!< Calibration data
86   mutable AliMUONDigitCalibrator* fDigitCalibrator; //!<  Digit to calibrate digit converter
87   mutable AliMUONVClusterServer* fClusterServer; //!<  Clusterizer
88   mutable AliMUONVTriggerStore* fTriggerStore; //!< Trigger container
89   mutable AliMUONVTrackStore* fTrackStore; //!< Track container
90   mutable AliMUONVClusterStore* fClusterStore; //!< cluster store (when not in combined tracking mode)
91   mutable AliMUONTriggerElectronics* fTriggerProcessor; //!< Processor to recalculate trigger response
92   
93   ClassDef(AliMUONReconstructor,9) // Implementation of AliReconstructor
94 };
95
96 #endif