]>
Commit | Line | Data |
---|---|---|
121a60bd | 1 | #ifndef ALITRDRECONSTRUCTOR_H |
2 | #define ALITRDRECONSTRUCTOR_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
3bc9d03e | 6 | /* $Id$ */ |
7 | ||
121a60bd | 8 | /////////////////////////////////////////////////////////////////////////////// |
9 | // // | |
3bc9d03e | 10 | // Class for TRD reconstruction // |
121a60bd | 11 | // // |
12 | /////////////////////////////////////////////////////////////////////////////// | |
13 | ||
121a60bd | 14 | #include "AliReconstructor.h" |
a2fbb6ec | 15 | #include "AliRecoParam.h" |
7e88424f | 16 | #include "AliDetectorRecoParam.h" |
0d83b3a5 | 17 | #include "AliTRDpidUtil.h" |
d39401ad | 18 | #include "AliTRDrecoParam.h" |
828c6f80 | 19 | #include "AliTRDdigitsParam.h" |
c4daee41 | 20 | #include "AliESDTrdTrigger.h" |
7e88424f | 21 | |
66f6bfd9 | 22 | class TClonesArray; |
29f95561 | 23 | class TTreeSRedirector; |
3a039a31 | 24 | class AliRawReader; |
5127281e | 25 | class AliTRDclusterizer; |
eb38ed55 | 26 | class AliTRDReconstructor: public AliReconstructor |
27 | { | |
3a039a31 | 28 | public: |
89971837 | 29 | enum ETRDReconstructorSteer { |
00872461 | 30 | kDigitsConversion= BIT(0) |
a2fbb6ec | 31 | ,kWriteClusters = BIT(1) |
32 | ,kWriteTracklets = BIT(2) | |
33 | ,kSeeding = BIT(3) | |
34 | ,kHLT = BIT(4) | |
35 | ,kProcTracklets = BIT(5) // process online tracklets | |
36 | ,kDebug = BIT(6) | |
8fc736d7 | 37 | ,kClRadialCorr = BIT(7) // toggle radial correction in clusters |
38 | ,kOwner = BIT(8) | |
39 | ,kNsteer = 8 // number of tasks | |
3a039a31 | 40 | }; |
3a039a31 | 41 | AliTRDReconstructor(); |
48f8adf3 | 42 | virtual ~AliTRDReconstructor(); |
acd241e9 | 43 | |
44 | virtual void Init(); | |
3bc9d03e | 45 | |
3a039a31 | 46 | virtual void ConvertDigits(AliRawReader *rawReader, TTree *digitsTree) const; |
47 | virtual AliTracker* CreateTracker() const; | |
8fc736d7 | 48 | TTreeSRedirector* GetDebugStream(AliTRDrecoParam::ETRDReconstructionTask task) const { return task < AliTRDrecoParam::kTRDreconstructionTasks ? fDebugStream[task] : NULL; } |
25ca55ce | 49 | |
3a039a31 | 50 | virtual void FillESD(AliRawReader *, TTree *clusterTree, AliESDEvent *esd) const { FillESD((TTree * )NULL, clusterTree, esd); } |
51 | virtual void FillESD(TTree *digitsTree, TTree *clusterTree, AliESDEvent *esd) const; | |
952051c5 | 52 | static TClonesArray* GetClusters() {return fgClusters;} |
53 | static TClonesArray* GetTracklets() { return fgTracklets;} | |
cb8b99ee | 54 | static TClonesArray* GetTracks() { return fgTracks;} |
952051c5 | 55 | static Int_t GetNTimeBins() { return fgNTimeBins;} |
0d83b3a5 | 56 | Int_t GetNdEdxSlices() const { return (Int_t)AliTRDpidUtil::GetNdEdxSlices(GetPIDMethod());} |
a2fbb6ec | 57 | AliTRDpidUtil::ETRDPIDMethod GetPIDMethod() const { return GetRecoParam()->IsPIDNeuralNetwork() ? AliTRDpidUtil::kNN : AliTRDpidUtil::kLQ;} |
952051c5 | 58 | static const AliTRDrecoParam* GetRecoParam() { return dynamic_cast<const AliTRDrecoParam*>(AliReconstructor::GetRecoParam(2)); } |
59 | static Float_t GetMinClustersInTrack() { return fgkMinClustersInTrack;} | |
60 | static Float_t GetLabelFraction() { return fgkLabelFraction;} | |
61 | static Double_t GetMaxChi2() { return fgkMaxChi2;} | |
62 | static Double_t GetMaxSnp() { return fgkMaxSnp;} | |
63 | static Double_t GetMaxStep() { return fgkMaxStep;} | |
64 | static Double_t GetEpsilon() { return fgkEpsilon;} | |
a0446ff1 | 65 | |
b72f4eaf | 66 | virtual Bool_t HasDigitConversion() const { return fSteerParam&kDigitsConversion; }; |
952051c5 | 67 | Bool_t IsCosmic() const { return GetRecoParam()->GetEventSpecie() & AliRecoParam::kCosmic;} |
3a039a31 | 68 | Bool_t IsWritingClusters() const { return fSteerParam&kWriteClusters;} |
69 | Bool_t IsWritingTracklets() const { return fSteerParam&kWriteTracklets;} | |
4302c900 | 70 | Bool_t IsHLT() const { return fSteerParam&kHLT;} |
3a039a31 | 71 | Bool_t IsSeeding() const { return fSteerParam&kSeeding;} |
a5b99acd | 72 | Bool_t IsProcessingTracklets() const { return fSteerParam&kProcTracklets;} |
952051c5 | 73 | Bool_t IsDebugStreaming() const { return fSteerParam&kDebug;} |
8fc736d7 | 74 | Bool_t UseClusterRadialCorrection() const { return fSteerParam&kClRadialCorr;} |
a2fbb6ec | 75 | |
76 | static void Options(UInt_t steer=0); | |
3a039a31 | 77 | virtual void Reconstruct(AliRawReader *rawReader, TTree *clusterTree) const; |
78 | virtual void Reconstruct(TTree *digitsTree, TTree *clusterTree) const; | |
3bc9d03e | 79 | |
828c6f80 | 80 | static void SetClusters(TClonesArray *clusters) { fgClusters = clusters;} |
81 | static void SetTracklets(TClonesArray *tracklets) { fgTracklets = tracklets;} | |
cb8b99ee | 82 | static void SetTracks(TClonesArray *tracks) { fgTracks = tracks;} |
3a039a31 | 83 | void SetOption(Option_t *opt); |
3bc9d03e | 84 | |
3a039a31 | 85 | private: |
3abc001d | 86 | AliTRDReconstructor(const AliTRDReconstructor &r); //Not implemented |
87 | AliTRDReconstructor& operator = (const AliTRDReconstructor&); //Not implemented | |
88 | ||
828c6f80 | 89 | static Char_t const *fgSteerNames[kNsteer];//! steering names |
90 | static Char_t const *fgSteerFlags[kNsteer];//! steering flags | |
91 | static Char_t const *fgTaskNames[AliTRDrecoParam::kTRDreconstructionTasks]; //! tasks names | |
92 | static Char_t const *fgTaskFlags[AliTRDrecoParam::kTRDreconstructionTasks]; //! tasks flags | |
b72f4eaf | 93 | UInt_t fSteerParam; // steering bits |
952051c5 | 94 | // configuration vars for tracking |
95 | static const Double_t fgkMaxChi2; // Max increment in track chi2 | |
96 | static const Float_t fgkMinClustersInTrack; // Min number of clusters in track | |
97 | static const Float_t fgkLabelFraction; // Min fraction of same label | |
98 | static const Double_t fgkMaxSnp; // Maximal snp for tracking | |
99 | static const Double_t fgkMaxStep; // Maximal step for tracking | |
100 | static const Double_t fgkEpsilon; // Precision of radial coordinate | |
101 | ||
a2fbb6ec | 102 | TTreeSRedirector *fDebugStream[AliTRDrecoParam::kTRDreconstructionTasks];// Debug Streamer container; |
3a039a31 | 103 | |
5127281e | 104 | static TClonesArray *fgClusters; // list of clusters for local reconstructor |
105 | static TClonesArray *fgTracklets; // list of online tracklets for local reconstructor | |
cb8b99ee | 106 | static TClonesArray *fgTracks; // list of GTU tracks for local reconstructor |
5127281e | 107 | static Int_t fgNTimeBins; // number of time bins as given by the clusterizer |
108 | AliTRDclusterizer *fClusterizer; //! instance of TRD clusterizer | |
c4daee41 | 109 | static AliESDTrdTrigger fgTriggerFlags; // L1 trigger flags |
3bc9d03e | 110 | |
cb8b99ee | 111 | ClassDef(AliTRDReconstructor, 5) // Class for the TRD reconstruction |
3bc9d03e | 112 | |
121a60bd | 113 | }; |
114 | ||
3a039a31 | 115 | |
3a039a31 | 116 | |
121a60bd | 117 | #endif |
5127281e | 118 |