Update of Single Muon analysis to be included in the official ESD->AOD analysis train...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskSingleMu.h
1 /// \ingroup "PWG3muon"
2 /// \class AliAnalysisTaskSingleMu
3 /// \brief Analysis task for single muons in the spectrometer
4 ///
5 //  Author Diego Stocco
6
7 class TList;
8 class AliMCParticle;
9 class AluMCEvent;
10
11 class AliAnalysisTaskSingleMu : public AliAnalysisTaskSE {
12  public:
13   AliAnalysisTaskSingleMu(const char *name = "AliAnalysisTaskSingleMu");
14   virtual ~AliAnalysisTaskSingleMu();
15
16   AliAnalysisTaskSingleMu(const AliAnalysisTaskSingleMu&);
17   AliAnalysisTaskSingleMu& operator=(const AliAnalysisTaskSingleMu&);
18   
19   virtual void   UserCreateOutputObjects();
20   virtual void   UserExec(Option_t *option);
21   virtual void   Terminate(Option_t *option);
22   
23  private:
24
25   void SetFlagsFromHandler ();
26
27   enum {
28     kNoMatchTrig,  // No match with trigger
29     kAllPtTrig,    // Match All Pt
30     kLowPtTrig,    // Match Low Pt
31     kHighPtTrig,   // Match High Pt
32     kNtrigCuts     // Total number of trigger types
33   };
34   
35   // Histograms for data
36   enum {
37     // 1D histos
38     kHistoPt,        ///< Pt distribution
39     kHistoDCA,       ///< DCA distribution
40     kHistoVz,        ///< Interaction vertex distribution
41     kHistoEta,       ///< Eta distribution
42     kHistoRapidity,  ///< Rapidity distribution
43     // 2D histos
44     kHistoPtDCA,     ///< DCA vs Pt distribution
45     kHistoPtVz,      ///< Interaction vertex vs Pt distribution
46     kHistoPtRapidity ///< Rapidity vs Pt distribution
47   };
48
49   // Histograms for MC
50   enum {
51     kHistoPtResolution, ///< Pt resolution
52     kHistoPtDCAType,    ///< DCA vs Pt distribution
53     kHistoPtVzType      ///< Interaction vertex vs Pt distribution
54   };
55
56   enum {
57     kCharmMu,       ///< Mu from charm
58     kBeautyMu,      ///< Mu from beauty
59     kPrimaryMu,     ///< Primary mu
60     kSecondaryMu,   ///< Secondary mu
61     kRecoHadron,    ///< Reconstructed hadron
62     kUnknownPart,   ///< Particle that fails matching kine
63     kNtrackSources  ///< Total number of track sources
64   };
65
66   Int_t GetHistoIndex(Int_t histoTypeIndex, Int_t trigIndex, Int_t srcIndex = -1);
67
68   void FillTriggerHistos(Int_t histoIndex, Int_t matchTrig, Int_t motherType,
69                          Float_t var1, Float_t var2 = 0. , Float_t var3 = 0.);
70   
71   Int_t RecoTrackMother(AliMCParticle* mcTrack, AliMCEvent* mcEvent);
72
73   Bool_t fUseMC;  //!< Flag indicating that Monte Carlo information is available
74   TList* fHistoList;   //!< List of histograms for data
75   TList* fHistoListMC; //!< List of histograms for MC
76
77   ClassDef(AliAnalysisTaskSingleMu, 1); // Single muon analysis
78 };
79