X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDReconstructor.h;h=2d78a37ed2d298335e10ae8b1580e9630a6a0c48;hb=e1b97289b87f1c5927ec86a85ade32d23c882efc;hp=eb00bb2a58c966188e6e79a85dcd26a372c4d560;hpb=eb38ed5512725bf5500f21fc6faab0b529da8fb3;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDReconstructor.h b/TRD/AliTRDReconstructor.h index eb00bb2a58c..2d78a37ed2d 100644 --- a/TRD/AliTRDReconstructor.h +++ b/TRD/AliTRDReconstructor.h @@ -12,48 +12,86 @@ /////////////////////////////////////////////////////////////////////////////// #include "AliReconstructor.h" - +#include "AliRecoParam.h" +#include "AliDetectorRecoParam.h" +#include "AliTRDpidUtil.h" +#include "AliTRDrecoParam.h" +#include "AliTRDdigitsParam.h" + +class TClonesArray; +class TTreeSRedirector; class AliRawReader; -class AliTRDrecoParam; +class AliTRDclusterizer; class AliTRDReconstructor: public AliReconstructor { - - public: - - AliTRDReconstructor():AliReconstructor() { }; - AliTRDReconstructor(const AliTRDReconstructor &r):AliReconstructor(r) { }; +public: + enum ETRDReconstructorSteer { + kDigitsConversion= BIT(0) + ,kWriteClusters = BIT(1) + ,kWriteTracklets = BIT(2) + ,kSeeding = BIT(3) + ,kHLT = BIT(4) + ,kProcTracklets = BIT(5) // process online tracklets + ,kDebug = BIT(6) + ,kOwner = BIT(7) + ,kNsteer = 7 // number of tasks + }; + AliTRDReconstructor(); virtual ~AliTRDReconstructor(); - AliTRDReconstructor& operator = (const AliTRDReconstructor& /*r*/) - { return *this; }; - - virtual Bool_t HasDigitConversion() const { return kFALSE; }; - virtual void ConvertDigits(AliRawReader *rawReader, TTree *digitsTree) const; - - virtual void Reconstruct(AliRawReader *rawReader, TTree *clusterTree) const; - virtual void Reconstruct(TTree *digitsTree, TTree *clusterTree) const; - static AliTRDrecoParam *RecoParam() { return fgRecoParam; } - virtual AliTracker *CreateTracker() const; - - virtual void FillESD(AliRawReader */*rawReader*/, TTree *clusterTree, AliESDEvent *esd) const - { FillESD((TTree * )NULL - , clusterTree - , esd); } - virtual void FillESD(TTree *digitsTree, TTree *clusterTree, AliESDEvent *esd) const; + + virtual void Init(); + + virtual void ConvertDigits(AliRawReader *rawReader, TTree *digitsTree) const; + virtual AliTracker* CreateTracker() const; + TTreeSRedirector* GetDebugStream(AliTRDrecoParam::ETRDReconstructionTask task) const { return task < AliTRDrecoParam::kTRDreconstructionTasks ? fDebugStream[task] : 0x0; } + + virtual void FillESD(AliRawReader *, TTree *clusterTree, AliESDEvent *esd) const { FillESD((TTree * )NULL, clusterTree, esd); } + virtual void FillESD(TTree *digitsTree, TTree *clusterTree, AliESDEvent *esd) const; + static TClonesArray* GetClusters() {return fgClusters;} + static TClonesArray* GetTracklets() {return fgTracklets;} + static Int_t GetNTimeBins() {return fgNTimeBins;} + Int_t GetNdEdxSlices() const { return (Int_t)AliTRDpidUtil::GetNdEdxSlices(GetPIDMethod());} + AliTRDpidUtil::ETRDPIDMethod GetPIDMethod() const { return GetRecoParam()->IsPIDNeuralNetwork() ? AliTRDpidUtil::kNN : AliTRDpidUtil::kLQ;} + static const AliTRDrecoParam* GetRecoParam() { return dynamic_cast(AliReconstructor::GetRecoParam(2)); } + + virtual Bool_t HasDigitConversion() const { return fSteerParam&kDigitsConversion; }; + Bool_t IsCosmic() const { return GetRecoParam()->GetEventSpecie() & AliRecoParam::kCosmic;} + Bool_t IsWritingClusters() const { return fSteerParam&kWriteClusters;} + Bool_t IsWritingTracklets() const { return fSteerParam&kWriteTracklets;} + Bool_t IsHLT() const { return fSteerParam&kHLT;} + Bool_t IsSeeding() const { return fSteerParam&kSeeding;} + Bool_t IsProcessingTracklets() const { return fSteerParam&kProcTracklets;} + Bool_t IsDebugStreaming() const { return fSteerParam&kDebug;} + + static void Options(UInt_t steer=0); + virtual void Reconstruct(AliRawReader *rawReader, TTree *clusterTree) const; + virtual void Reconstruct(TTree *digitsTree, TTree *clusterTree) const; + + static void SetClusters(TClonesArray *clusters) { fgClusters = clusters;} + static void SetTracklets(TClonesArray *tracklets) { fgTracklets = tracklets;} + void SetOption(Option_t *opt); + +private: + AliTRDReconstructor(const AliTRDReconstructor &r); //Not implemented + AliTRDReconstructor& operator = (const AliTRDReconstructor&); //Not implemented + + static Char_t const *fgSteerNames[kNsteer];//! steering names + static Char_t const *fgSteerFlags[kNsteer];//! steering flags + static Char_t const *fgTaskNames[AliTRDrecoParam::kTRDreconstructionTasks]; //! tasks names + static Char_t const *fgTaskFlags[AliTRDrecoParam::kTRDreconstructionTasks]; //! tasks flags + UInt_t fSteerParam; // steering bits + TTreeSRedirector *fDebugStream[AliTRDrecoParam::kTRDreconstructionTasks];// Debug Streamer container; + + static TClonesArray *fgClusters; // list of clusters for local reconstructor + static TClonesArray *fgTracklets; // list of online tracklets for local reconstructor + static Int_t fgNTimeBins; // number of time bins as given by the clusterizer + AliTRDclusterizer *fClusterizer; //! instance of TRD clusterizer + + ClassDef(AliTRDReconstructor, 4) // Class for the TRD reconstruction - static void SetSeedingOn(Bool_t seeding) { fgkSeedingOn = seeding; } - static void SetStreamLevel(Int_t level) { fgStreamLevel = level; } - - static Bool_t SeedingOn() { return fgkSeedingOn; } - static Int_t StreamLevel() { return fgStreamLevel; } - - private: - - static Bool_t fgkSeedingOn; // Set flag for seeding during reconstruction - static Int_t fgStreamLevel; // Flag for streaming - static AliTRDrecoParam *fgRecoParam; // Reconstruction parameters +}; - ClassDef(AliTRDReconstructor,0) // Class for the TRD reconstruction -}; #endif +