]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/MUON/lite/AliAnalysisTaskMuonQA.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGPP / MUON / lite / AliAnalysisTaskMuonQA.h
CommitLineData
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 16class TMap;
17class TList;
94ef1a28 18class TObjArray;
19class AliCounterCollection;
13bb4ca7 20class AliMuonTrackCuts;
94ef1a28 21
22class 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