]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AliAnalysisTaskMuonQA.h
Include CINT5 and CMUS5 trigger. Add the possibility to select tracks matching the...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskMuonQA.h
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
6 /// \ingroup muondep
7 /// \class AliAnalysisTaskMuonQA
8 /// \brief Quality assurance of MUON ESDs
9 //Author: Philippe Pillot - SUBATECH Nantes
10
11 class TMap;
12 class TList;
13 class TObjArray;
14 class AliCounterCollection;
15
16 class AliAnalysisTaskMuonQA : public AliAnalysisTaskSE {
17 public:
18   
19   AliAnalysisTaskMuonQA();
20   AliAnalysisTaskMuonQA(const char *name);
21   virtual ~AliAnalysisTaskMuonQA();
22   
23   virtual void   UserCreateOutputObjects();
24   virtual void   UserExec(Option_t *);
25   virtual void   Terminate(Option_t *);
26   
27   /// Select negative (<0), positive (>0) or all (==0) tracks to fill histograms
28   void SelectCharge(Short_t charge = 0) {fSelectCharge = charge;}
29   
30   /// Select events passing the physics selection to fill histograms
31   void SelectPhysics(Bool_t flag = kTRUE) {fSelectPhysics = flag;}
32   
33   /// Select events belonging to at least one of the trigger classes selected by the mask to fill histograms:
34   /// - if the physics selection is used, apply the mask to the trigger word returned by the physics selection
35   /// - if not, apply the mask to the trigger word built by looking for triggers listed in "fSelectTriggerClass"
36   void SelectTrigger(Bool_t flag = kTRUE, UInt_t mask = AliVEvent::kMUON) {fSelectTrigger = flag; fTriggerMask = mask;}
37   
38   /// Select track matching the trigger to fill histograms
39   void SelectMatched(Bool_t flag = kTRUE) {fSelectMatched = flag;}
40   
41 private:
42   
43   /// Not implemented
44   AliAnalysisTaskMuonQA(const AliAnalysisTaskMuonQA& rhs);
45   /// Not implemented
46   AliAnalysisTaskMuonQA& operator = (const AliAnalysisTaskMuonQA& rhs);
47   
48   Double_t ChangeThetaRange(Double_t theta);
49   
50   UInt_t BuildTriggerWord(TString& FiredTriggerClasses);
51   
52   TList* BuildListOfTriggerCases(TString& FiredTriggerClasses);
53   
54 private:
55   
56   enum eList {
57     kNTracks                 = 0,  ///< number of tracks
58     kMatchTrig               = 1,  ///< number of tracks matched with trigger
59     kSign                    = 2,  ///< track sign
60     kDCA                     = 3,  ///< DCA distribution
61     kP                       = 4,  ///< P distribution
62     kPMuPlus                 = 5,  ///< P distribution of mu+
63     kPMuMinus                = 6,  ///< P distribution of mu-
64     kPt                      = 7,  ///< Pt distribution
65     kPtMuPlus                = 8,  ///< Pt distribution of mu+
66     kPtMuMinus               = 9,  ///< Pt distribution of mu-
67     kRapidity                = 10, ///< rapidity distribution
68     kThetaX                  = 11, ///< thetaX distribution
69     kThetaY                  = 12, ///< thetaY distribution
70     kChi2                    = 13, ///< normalized chi2 distribution
71     kProbChi2                = 14, ///< distribution of probability of chi2
72     kNClustersPerTrack       = 15, ///< number of clusters per track
73     kNChamberHitPerTrack     = 16  ///< number of chamber hit per track
74   };
75   
76   enum eListExpert {
77     kNClustersPerCh          = 0,  ///< number of clusters per chamber
78     kNClustersPerDE          = 1,  ///< number of clusters per DE
79     kClusterHitMapInCh       = 2,  ///< cluster position distribution in chamber i
80     kClusterChargeInCh       = 12, ///< cluster charge distribution in chamber i
81     kClusterChargePerDE      = 22, ///< cluster charge distribution per DE
82     kClusterSizeInCh         = 23, ///< cluster size distribution in chamber i
83     kClusterSizePerDE        = 33  ///< cluster size distribution per DE
84   };
85   
86   enum eListNorm {
87     kClusterChargePerChMean  = 0,  ///< cluster charge per Ch: mean
88     kClusterChargePerChSigma = 1,  ///< cluster charge per Ch: dispersion
89     kClusterChargePerDEMean  = 2,  ///< cluster charge per DE: mean
90     kClusterChargePerDESigma = 3,  ///< cluster charge per DE: dispersion
91     kClusterSizePerChMean    = 4,  ///< cluster size per Ch: mean
92     kClusterSizePerChSigma   = 5,  ///< cluster size per Ch: dispersion
93     kClusterSizePerDEMean    = 6,  ///< cluster size per DE: mean
94     kClusterSizePerDESigma   = 7,  ///< cluster size per DE: dispersion
95     kNClustersPerChPerTrack  = 8,  ///< number of clusters per chamber per track
96     kNClustersPerDEPerTrack  = 9   ///< number of clusters per DE per track
97   };
98   
99   TObjArray*  fList;       //!< List of output object for everybody
100   TObjArray*  fListExpert; //!< List of output object for experts
101   TObjArray*  fListNorm;   //!< Normalized histograms
102   
103   AliCounterCollection* fTrackCounters; //!< track statistics
104   AliCounterCollection* fEventCounters; //!< event statistics
105   
106   Short_t fSelectCharge;  ///< Fill histograms only with negative/position tracks (0=all)
107   Bool_t  fSelectPhysics; ///< Fill histograms only with events passing the physics selection
108   Bool_t  fSelectTrigger; ///< Fill histograms only with events passing the trigger selection
109   UInt_t  fTriggerMask;   ///< Trigger mask to be used when selecting events
110   Bool_t  fSelectMatched; ///< Fill histograms only with tracks matching the trigger
111   
112   TMap*  fTriggerClass;       //!< map of trigger class name associated to short name
113   TList* fSelectTriggerClass; //!< list of trigger class that can be selected to fill histograms
114   
115   static const Int_t nCh;       ///< number of tracking chambers
116   static const Int_t nDE;       ///< number of DE
117   static const Float_t dMax[5]; ///< maximum diameter of each station
118   
119   ClassDef(AliAnalysisTaskMuonQA, 5);
120 };
121
122 #endif
123