]>
Commit | Line | Data |
---|---|---|
94ef1a28 | 1 | #ifndef ALIANALYSISTASKMUONQA_H |
2 | #define ALIANALYSISTASKMUONQA_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
27de2dfb | 6 | /* $Id$ */ |
7 | ||
94ef1a28 | 8 | /// \ingroup muondep |
9 | /// \class AliAnalysisTaskMuonQA | |
10 | /// \brief Quality assurance of MUON ESDs | |
11 | //Author: Philippe Pillot - SUBATECH Nantes | |
12 | ||
7562d0b8 | 13 | #include "AliAnalysisTaskSE.h" |
13bb4ca7 | 14 | #include "TArrayI.h" |
7562d0b8 | 15 | |
03ac5989 | 16 | class TMap; |
17 | class TList; | |
94ef1a28 | 18 | class TObjArray; |
19 | class AliCounterCollection; | |
13bb4ca7 | 20 | class AliMuonTrackCuts; |
94ef1a28 | 21 | |
22 | class AliAnalysisTaskMuonQA : public AliAnalysisTaskSE { | |
16dc5a7c | 23 | public: |
94ef1a28 | 24 | |
40be9f05 | 25 | AliAnalysisTaskMuonQA(); |
26 | AliAnalysisTaskMuonQA(const char *name); | |
94ef1a28 | 27 | virtual ~AliAnalysisTaskMuonQA(); |
28 | ||
29 | virtual void UserCreateOutputObjects(); | |
30 | virtual void UserExec(Option_t *); | |
31 | virtual void Terminate(Option_t *); | |
13bb4ca7 | 32 | virtual void NotifyRun(); |
94ef1a28 | 33 | |
b4f7418a | 34 | /// Select negative (<0), positive (>0) or all (==0) tracks to fill histograms |
94ef1a28 | 35 | void SelectCharge(Short_t charge = 0) {fSelectCharge = charge;} |
b4f7418a | 36 | |
37 | /// Select events passing the physics selection to fill histograms | |
94ef1a28 | 38 | void SelectPhysics(Bool_t flag = kTRUE) {fSelectPhysics = flag;} |
39 | ||
03ac5989 | 40 | /// Select events belonging to at least one of the trigger classes selected by the mask to fill histograms: |
41 | /// - if the physics selection is used, apply the mask to the trigger word returned by the physics selection | |
42 | /// - if not, apply the mask to the trigger word built by looking for triggers listed in "fSelectTriggerClass" | |
43 | void SelectTrigger(Bool_t flag = kTRUE, UInt_t mask = AliVEvent::kMUON) {fSelectTrigger = flag; fTriggerMask = mask;} | |
16dc5a7c | 44 | |
76e3d5d4 | 45 | /// Select track matching the trigger to fill histograms |
46 | void SelectMatched(Bool_t flag = kTRUE) {fSelectMatched = flag;} | |
47 | ||
417d6f63 | 48 | /// Use only tracks passing the acceptance cuts (Rabs, eta) |
49 | void ApplyAccCut(Bool_t flag = kTRUE) { fApplyAccCut = flag; } | |
50 | ||
13bb4ca7 | 51 | // Set track cuts |
52 | void SetTrackCuts ( AliMuonTrackCuts* trackCuts ); | |
53 | /// Get track cuts | |
54 | AliMuonTrackCuts* GetTrackCuts() { return fTrackCuts; } | |
55 | ||
16dc5a7c | 56 | private: |
94ef1a28 | 57 | |
58 | /// Not implemented | |
59 | AliAnalysisTaskMuonQA(const AliAnalysisTaskMuonQA& rhs); | |
60 | /// Not implemented | |
61 | AliAnalysisTaskMuonQA& operator = (const AliAnalysisTaskMuonQA& rhs); | |
62 | ||
63 | Double_t ChangeThetaRange(Double_t theta); | |
13bb4ca7 | 64 | |
03ac5989 | 65 | UInt_t BuildTriggerWord(TString& FiredTriggerClasses); |
66 | ||
67 | TList* BuildListOfTriggerCases(TString& FiredTriggerClasses); | |
16dc5a7c | 68 | TList* BuildListOfAllTriggerCases(TString& FiredTriggerClasses); |
69 | TList* BuildListOfSelectedTriggerCases(TString& FiredTriggerClasses); | |
70 | ||
71 | private: | |
94ef1a28 | 72 | |
03ac5989 | 73 | enum eList { |
94ef1a28 | 74 | kNTracks = 0, ///< number of tracks |
75 | kMatchTrig = 1, ///< number of tracks matched with trigger | |
76 | kSign = 2, ///< track sign | |
77 | kDCA = 3, ///< DCA distribution | |
78 | kP = 4, ///< P distribution | |
03ac5989 | 79 | kPMuPlus = 5, ///< P distribution of mu+ |
80 | kPMuMinus = 6, ///< P distribution of mu- | |
81 | kPt = 7, ///< Pt distribution | |
82 | kPtMuPlus = 8, ///< Pt distribution of mu+ | |
83 | kPtMuMinus = 9, ///< Pt distribution of mu- | |
84 | kRapidity = 10, ///< rapidity distribution | |
85 | kThetaX = 11, ///< thetaX distribution | |
86 | kThetaY = 12, ///< thetaY distribution | |
87 | kChi2 = 13, ///< normalized chi2 distribution | |
88 | kProbChi2 = 14, ///< distribution of probability of chi2 | |
89 | kNClustersPerTrack = 15, ///< number of clusters per track | |
16dc5a7c | 90 | kNChamberHitPerTrack = 16, ///< number of chamber hit per track |
b8e17107 | 91 | kPtMatchLpt = 17, ///< Pt distribution match Lpt |
92 | kPtMatchHpt = 18, ///< Pt distribution match Hpt | |
93 | kPtMuPlusMatchLpt = 19, ///< Pt distribution of mu+ match Lpt | |
94 | kPtMuPlusMatchHpt = 20, ///< Pt distribution of mu+ match Hpt | |
95 | kPtMuMinusMatchLpt = 21, ///< Pt distribution of mu- match Lpt | |
13bb4ca7 | 96 | kPtMuMinusMatchHpt = 22, ///< Pt distribution of mu- match Hpt |
97 | kMuonTrig = 23 ///< Muon triggers | |
03ac5989 | 98 | }; |
99 | ||
100 | enum eListExpert { | |
101 | kNClustersPerCh = 0, ///< number of clusters per chamber | |
102 | kNClustersPerDE = 1, ///< number of clusters per DE | |
103 | kClusterHitMapInCh = 2, ///< cluster position distribution in chamber i | |
104 | kClusterChargeInCh = 12, ///< cluster charge distribution in chamber i | |
105 | kClusterChargePerDE = 22, ///< cluster charge distribution per DE | |
106 | kClusterSizeInCh = 23, ///< cluster size distribution in chamber i | |
107 | kClusterSizePerDE = 33 ///< cluster size distribution per DE | |
108 | }; | |
109 | ||
110 | enum eListNorm { | |
111 | kClusterChargePerChMean = 0, ///< cluster charge per Ch: mean | |
112 | kClusterChargePerChSigma = 1, ///< cluster charge per Ch: dispersion | |
113 | kClusterChargePerDEMean = 2, ///< cluster charge per DE: mean | |
114 | kClusterChargePerDESigma = 3, ///< cluster charge per DE: dispersion | |
115 | kClusterSizePerChMean = 4, ///< cluster size per Ch: mean | |
116 | kClusterSizePerChSigma = 5, ///< cluster size per Ch: dispersion | |
117 | kClusterSizePerDEMean = 6, ///< cluster size per DE: mean | |
118 | kClusterSizePerDESigma = 7, ///< cluster size per DE: dispersion | |
119 | kNClustersPerChPerTrack = 8, ///< number of clusters per chamber per track | |
120 | kNClustersPerDEPerTrack = 9 ///< number of clusters per DE per track | |
94ef1a28 | 121 | }; |
122 | ||
123 | TObjArray* fList; //!< List of output object for everybody | |
124 | TObjArray* fListExpert; //!< List of output object for experts | |
40be9f05 | 125 | TObjArray* fListNorm; //!< Normalized histograms |
94ef1a28 | 126 | |
127 | AliCounterCollection* fTrackCounters; //!< track statistics | |
128 | AliCounterCollection* fEventCounters; //!< event statistics | |
129 | ||
130 | Short_t fSelectCharge; ///< Fill histograms only with negative/position tracks (0=all) | |
76e3d5d4 | 131 | Bool_t fSelectPhysics; ///< Fill histograms only with events passing the physics selection |
132 | Bool_t fSelectTrigger; ///< Fill histograms only with events passing the trigger selection | |
133 | UInt_t fTriggerMask; ///< Trigger mask to be used when selecting events | |
134 | Bool_t fSelectMatched; ///< Fill histograms only with tracks matching the trigger | |
417d6f63 | 135 | Bool_t fApplyAccCut; ///< use only tracks passing the acceptance cuts (Rabs, eta) |
03ac5989 | 136 | |
137 | TMap* fTriggerClass; //!< map of trigger class name associated to short name | |
138 | TList* fSelectTriggerClass; //!< list of trigger class that can be selected to fill histograms | |
13bb4ca7 | 139 | AliMuonTrackCuts* fTrackCuts; ///< Track cuts |
140 | TArrayI fMuonTrigIndex; ///< Combined muon trigger index | |
94ef1a28 | 141 | |
142 | static const Int_t nCh; ///< number of tracking chambers | |
143 | static const Int_t nDE; ///< number of DE | |
144 | static const Float_t dMax[5]; ///< maximum diameter of each station | |
94ef1a28 | 145 | |
13bb4ca7 | 146 | ClassDef(AliAnalysisTaskMuonQA, 7); |
94ef1a28 | 147 | }; |
148 | ||
149 | #endif | |
150 |