#ifndef ALIMUONRECONSTRUCTOR_H
#define ALIMUONRECONSTRUCTOR_H
+
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
+* See cxx source for full Copyright notice */
-/* $Id$ */
-// Revision of includes 07/05/2004
+// $Id$
/// \ingroup rec
/// \class AliMUONReconstructor
-/// \brief Class for the MUON reconstruction
+/// \brief Implementation of AliReconstructor for MUON (both tracker and trigger)
+///
+// Author Laurent Aphecetche, Subatech
-#include "AliReconstructor.h"
+#ifndef ALIRECONSTRUCTOR_H
+# include "AliReconstructor.h"
+#endif
-class AliMUONCalibrationData;
-class AliMUONData;
class AliMUONDigitMaker;
-class AliMUONTriggerCrateStore;
+class AliMUONVDigitStore;
+class AliMUONVTriggerStore;
+
class AliMUONGeometryTransformer;
-class AliMUONClusterReconstructor;
-class AliMUONSegmentation;
-class TTask;
+class AliMUONTriggerCrateStore;
+class AliMUONTriggerCircuit;
class TClonesArray;
+class AliMUONVTriggerStore;
-class AliMUONReconstructor: public AliReconstructor
-{
- public:
- AliMUONReconstructor();
- virtual ~AliMUONReconstructor();
-
- virtual void Init(AliRunLoader* runLoader);
-
- virtual void Reconstruct(TTree* /*digitsTree*/,
- TTree* /*clustersTree*/) const {return;}
- virtual void Reconstruct(AliRawReader* /*rawReader*/,
- TTree* /*clustersTree*/) const {return;}
- virtual void Reconstruct(AliRunLoader* runLoader) const;
- virtual void Reconstruct(AliRunLoader* runLoader,
- AliRawReader* rawReader) const;
-
- virtual void FillESD(TTree* /*digitsTree*/, TTree* /*clustersTree*/,
- AliESD* /*esd*/) const {return;}
- virtual void FillESD(AliRawReader* /*rawReader*/, TTree* /*clustersTree*/,
- AliESD* /*esd*/) const {return;}
- virtual void FillESD(AliRunLoader* runLoader, AliESD* esd) const;
- virtual void FillESD(AliRunLoader* runLoader,
- AliRawReader* /*rawReader*/, AliESD* esd) const;
-
- enum {kNone, kOriginal, kKalman, kCombi};
+class AliMUONDigitCalibrator;
+class AliMUONCalibrationData;
-private:
+class AliMUONClusterReconstructor;
+class AliMUONVClusterStore;
- TTask* GetCalibrationTask(AliMUONData* data) const;
- AliMUONClusterReconstructor* CreateClusterReconstructor(AliMUONData*) const;
-
- AliMUONReconstructor(const AliMUONReconstructor& right);
- AliMUONReconstructor& operator = (const AliMUONReconstructor& right);
+class AliMUONTracker;
+class AliMUONVTrackStore;
-private:
- AliRunLoader* fRunLoader; //!< pointer to runloader
- AliMUONDigitMaker* fDigitMaker; //!< pointer to the digit maker class
+class AliMUONTriggerChamberEff;
- mutable AliMUONCalibrationData* fCalibrationData; //!< pointer to calibration data
-
- AliMUONTriggerCrateStore* fCrateManager; //!< Crate array
+class AliMUONRecoParam;
- TClonesArray* fTriggerCircuit; //!< trigger circuit
-
- AliMUONGeometryTransformer* fTransformer; //!< pointer to transformation
- AliMUONSegmentation* fSegmentation; //!< pointer to segmentation
+class AliMUONReconstructor : public AliReconstructor
+{
+public:
+ AliMUONReconstructor();
+ virtual ~AliMUONReconstructor();
+
+ virtual Bool_t HasDigitConversion() const;
+
+ virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
+
+ virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
+
+ virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
+
+ virtual AliTracker* CreateTracker() const;
+
+ static void SetRecoParam(AliMUONRecoParam *param);
+ /// return reconstruction parametres
+ static const AliMUONRecoParam* GetRecoParam() {return fgRecoParam;}
+
+private:
+ /// Not implemented
+ AliMUONReconstructor(const AliMUONReconstructor&);
+ /// Not implemented
+ AliMUONReconstructor& operator=(const AliMUONReconstructor&);
+
+ void ConvertDigits(AliRawReader* rawReader,
+ AliMUONVDigitStore* digitStore,
+ AliMUONVTriggerStore* triggerStore) const;
+ void Calibrate(AliMUONVDigitStore& digitStore) const;
+ void Clusterize(const AliMUONVDigitStore& digitStore, AliMUONVClusterStore& clusterStore) const;
+ AliMUONTriggerCrateStore* CrateManager() const;
+ void CreateCalibrator() const;
+ void CreateDigitMaker() const;
+ void CreateTriggerCircuit() const;
+ void CreateClusterReconstructor() const;
+ void CreateTriggerChamberEff() const;
+ void FillTreeR(AliMUONVTriggerStore* triggerStore,
+ AliMUONVClusterStore* clusterStore,
+ TTree& clustersTree) const;
+
+ AliMUONVDigitStore* DigitStore() const;
+ AliMUONVClusterStore* ClusterStore() const;
+ AliMUONVTriggerStore* TriggerStore() const;
- ClassDef(AliMUONReconstructor, 0) // class for the MUON reconstruction
+private:
+ mutable AliMUONTriggerCrateStore* fCrateManager; //!< Trigger Crate manager
+ mutable AliMUONDigitMaker* fDigitMaker; //!< Raw to Digits converter
+ AliMUONGeometryTransformer* fTransformer; //!< Geometry transformer (local<->global)
+ mutable AliMUONVDigitStore* fDigitStore; //!< Digit container
+ mutable AliMUONTriggerCircuit* fTriggerCircuit; //!< Trigger Circuit
+ mutable AliMUONCalibrationData* fCalibrationData; //!< Calibration data
+ mutable AliMUONDigitCalibrator* fDigitCalibrator; //!< Digit to calibrate digit converter
+ mutable AliMUONClusterReconstructor* fClusterReconstructor; //!< Clusterizer
+ mutable AliMUONVClusterStore* fClusterStore; //!< Cluster container
+ mutable AliMUONVTriggerStore* fTriggerStore; //!< Trigger container
+ mutable AliMUONVTrackStore* fTrackStore; //!< Track container
+ mutable AliMUONTriggerChamberEff* fTrigChamberEff; //!< pointer to trigger chamber efficiency class
+
+ static AliMUONRecoParam* fgRecoParam; //!< parameters used to tune the MUON reconstruction
+
+ ClassDef(AliMUONReconstructor,3) // Implementation of AliReconstructor
};
#endif