X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDReconstructor.h;h=729ebe9a22bb9c60884f868e60b933982948e5e7;hb=5c5d503aeb880dc107412dd3105750a3ac29ea26;hp=1860ec353f6546db92f38f714bbd0468e4a9b366;hpb=00872461b7fb4c9fd2b84cbf7a4a0022bc18eabe;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDReconstructor.h b/TRD/AliTRDReconstructor.h index 1860ec353f6..729ebe9a22b 100644 --- a/TRD/AliTRDReconstructor.h +++ b/TRD/AliTRDReconstructor.h @@ -12,100 +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 AliTRDclusterizer; class AliTRDReconstructor: public AliReconstructor { public: - enum AliTRDsteerParam { + enum ETRDReconstructorSteer { kDigitsConversion= BIT(0) ,kWriteClusters = BIT(1) - ,kSeeding = BIT(2) - ,kSteerPID = BIT(3) - ,kWriteTracklets = BIT(4) - ,kDriftGas = BIT(5) - ,kHLT = BIT(6) - ,kCosmic = BIT(7) + ,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 }; - enum AliTRDReconstructorTask { - kClusterizer = 0 - ,kTracker = 1 - ,kPID = 2 - }; - enum AliTRDpidMethod { - kLQPID = 0, - kNNPID = 1 - }; - enum AliTRDdriftGas { - kXe = 0, - kAr = 1 - }; - enum{ - kNNslices = 8 - ,kLQslices = 3 - }; - AliTRDReconstructor(); - AliTRDReconstructor(const AliTRDReconstructor &r); virtual ~AliTRDReconstructor(); - AliTRDReconstructor& operator = (const AliTRDReconstructor&) { return *this;} 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;} - Int_t GetNdEdxSlices() const { return GetPIDMethod() == kNNPID ? kNNslices : kLQslices;} - AliTRDdriftGas GetDriftGas() const { return fSteerParam&kDriftGas ? kAr : kXe;} - AliTRDpidMethod GetPIDMethod() const { return fSteerParam&kSteerPID ? kNNPID : kLQPID;} - static const AliTRDrecoParam* GetRecoParam() { return dynamic_cast(AliReconstructor::GetRecoParam(2)); } - Int_t GetStreamLevel(AliTRDReconstructorTask task) const { return fStreamLevel[task];} - inline void GetTCParams(Double_t *par) const; - virtual Bool_t HasDigitConversion() const { return fSteerParam&kDigitsConversion; }; + 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 IsCosmic() const { return fSteerParam&kCosmic;} + 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 SetClusters(TClonesArray *clusters) { fgClusters = clusters;} + static void SetTracklets(TClonesArray *tracklets) { fgTracklets = tracklets;} + static void SetTracks(TClonesArray *tracks) { fgTracks = tracks;} void SetOption(Option_t *opt); - inline void SetTCParams(Double_t *par); - void SetStreamLevel(Int_t level, AliTRDReconstructorTask task= kTracker); private: - UChar_t fStreamLevel[5]; // stream level for each reconstruction task - UInt_t fSteerParam; // steering flags - Double_t fTCParams[8]; // Tail Cancellation parameters for drift gases + 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 *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, 1) // Class for the TRD reconstruction + ClassDef(AliTRDReconstructor, 5) // Class for the TRD reconstruction }; -//___________________________________________________ -inline void AliTRDReconstructor::GetTCParams(Double_t *par) const -{ - if(!par) return; - if(GetDriftGas()==kAr) memcpy(par, &fTCParams[4], 4*sizeof(Double_t)); - else memcpy(par, &fTCParams[0], 4*sizeof(Double_t)); -} -//___________________________________________________ -inline void AliTRDReconstructor::SetTCParams(Double_t *par) -{ - if(!par) return; - memcpy(fTCParams, par, 8*sizeof(Double_t)); -} #endif +