/* $Id$ */
+//
+// base class for reconstruction algorithm
+// Derived classes should implement a default constructor and
+// the virtual methods
+//
+
#include <TObject.h>
+#include <TString.h>
-class AliRunLoader;
+class TTree;
+class AliRawReader;
class AliVertexer;
class AliTracker;
-class AliESD;
+class AliESDEvent;
+class AliDetectorRecoParam;
+#include "AliReconstruction.h"
class AliReconstructor: public TObject {
public:
- virtual void Reconstruct(AliRunLoader* runLoader) const = 0;
- virtual AliVertexer* CreateVertexer(AliRunLoader* /*runLoader*/) const
+ AliReconstructor(): TObject(), fOption() {};
+ virtual ~AliReconstructor() {};
+
+ virtual void Init() {};
+
+ virtual Bool_t HasDigitConversion() const {return kFALSE;};
+ virtual void ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
+
+ virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
+ virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
+
+ virtual AliVertexer* CreateVertexer() const
+ {return NULL;}
+ virtual AliTracker* CreateTracker() const
{return NULL;}
- virtual AliTracker* CreateTracker(AliRunLoader* /*runLoader*/) const
+ virtual AliTracker* CreateTrackleter() const
{return NULL;}
- virtual void FillESD(AliRunLoader* runLoader, AliESD* esd) const = 0;
+
+ virtual void FillESD(TTree* digitsTree, TTree* clustersTree,
+ AliESDEvent* esd) const;
+ virtual void FillESD(AliRawReader* rawReader, TTree* clustersTree,
+ AliESDEvent* esd) const;
+
+ virtual const char* GetDetectorName() const;
+
+ void SetOption(Option_t* option) {fOption = option;};
+ virtual Option_t* GetOption() const {return fOption.Data();};
+
+ void SetRecoParam(const AliDetectorRecoParam *par);
+ static const AliDetectorRecoParam* GetRecoParam(Int_t iDet);
+
+private:
+ TString fOption; //! option for reconstruction
+ static const AliDetectorRecoParam* fgRecoParam[AliReconstruction::kNDetectors]; //! event reconstruction parameters for all detectors
ClassDef(AliReconstructor, 0) // base class for reconstruction algorithms
};