X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDReconstructor.h;h=729ebe9a22bb9c60884f868e60b933982948e5e7;hb=2bf46337a64073c10c80e20b626da602bb973a86;hp=b887ecf4e9d6346ca5c3208ebd18cd21b8ffe627;hpb=d20df6fcfae893dc566bc6e74585136316d7c1d7;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDReconstructor.h b/TRD/AliTRDReconstructor.h index b887ecf4e9d..729ebe9a22b 100644 --- a/TRD/AliTRDReconstructor.h +++ b/TRD/AliTRDReconstructor.h @@ -12,43 +12,107 @@ /////////////////////////////////////////////////////////////////////////////// #include "AliReconstructor.h" - +#include "AliRecoParam.h" +#include "AliDetectorRecoParam.h" +#include "AliTRDpidUtil.h" +#include "AliTRDrecoParam.h" +#include "AliTRDdigitsParam.h" +#include "AliESDTrdTrigger.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) + ,kClRadialCorr = BIT(7) // toggle radial correction in clusters + ,kOwner = BIT(8) + ,kNsteer = 8 // 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] : NULL; } + + 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 TClonesArray* GetTracks() { return fgTracks;} + 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)); } + static Float_t GetMinClustersInTrack() { return fgkMinClustersInTrack;} + static Float_t GetLabelFraction() { return fgkLabelFraction;} + static Double_t GetMaxChi2() { return fgkMaxChi2;} + static Double_t GetMaxSnp() { return fgkMaxSnp;} + static Double_t GetMaxStep() { return fgkMaxStep;} + static Double_t GetEpsilon() { return fgkEpsilon;} + + 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;} + Bool_t UseClusterRadialCorrection() const { return fSteerParam&kClRadialCorr;} + + 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;} + static void SetTracks(TClonesArray *tracks) { fgTracks = tracks;} + 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 + // configuration vars for tracking + static const Double_t fgkMaxChi2; // Max increment in track chi2 + static const Float_t fgkMinClustersInTrack; // Min number of clusters in track + static const Float_t fgkLabelFraction; // Min fraction of same label + static const Double_t fgkMaxSnp; // Maximal snp for tracking + static const Double_t fgkMaxStep; // Maximal step for tracking + static const Double_t fgkEpsilon; // Precision of radial coordinate + + 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 TClonesArray *fgTracks; // list of GTU tracks for local reconstructor + static Int_t fgNTimeBins; // number of time bins as given by the clusterizer + AliTRDclusterizer *fClusterizer; //! instance of TRD clusterizer + static AliESDTrdTrigger fgTriggerFlags; // L1 trigger flags + + ClassDef(AliTRDReconstructor, 5) // Class for the TRD reconstruction - static void SetRecoParam(AliTRDrecoParam *reco) { fgRecoParam = reco; } - - - private: - - static AliTRDrecoParam *fgRecoParam; // Reconstruction parameters +}; - ClassDef(AliTRDReconstructor,0) // Class for the TRD reconstruction -}; #endif +