]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muon/AliAnalysisMuMuSingle.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / muon / AliAnalysisMuMuSingle.h
1 #ifndef ALIANALYSISMUMUSINGLE_H
2 #define ALIANALYSISMUMUSINGLE_H
3
4 #include "AliAnalysisMuMuBase.h"
5
6 /**
7  *
8  * \class AliAnalysisMuMuSingle
9  *
10  * \brief Histogramming of single muon tracks.
11  *
12  * \author L. Aphecetche (Subatech)
13  *
14  */
15
16 #include "AliAnalysisMuonUtility.h"
17
18 class AliMuonTrackCuts;
19 class TH2F;
20 class TObjArray;
21
22 class AliAnalysisMuMuSingle : public AliAnalysisMuMuBase
23 {
24 public:
25   
26   AliAnalysisMuMuSingle();
27   virtual ~AliAnalysisMuMuSingle();
28   
29   virtual void ShouldSeparatePlusAndMinus(Bool_t value) { fShouldSeparatePlusAndMinus = value; }
30   
31   virtual Bool_t ShouldSeparatePlusAndMinus() const { return fShouldSeparatePlusAndMinus; }
32
33   AliMuonTrackCuts* MuonTrackCuts();
34   
35   void SetMuonTrackCuts(const AliMuonTrackCuts& trackCuts);
36   
37   Bool_t IsPDCAOK(const AliVParticle& part);
38   void NameOfIsPDCAOK(TString& name) const { name = "PDCA";}
39   
40   Bool_t IsMatchingTriggerAnyPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 1 ); }
41   void NameOfIsMatchingTriggerAnyPt(TString& name) const { name = "MATCHANY";}
42   
43   Bool_t IsMatchingTriggerLowPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 2 ); }
44   void NameOfIsMatchingTriggerLowPt(TString& name) const { name = "MATCHLOW";}
45   
46   Bool_t IsMatchingTriggerHighPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 3 ); }
47   void NameOfIsMatchingTriggerHighPt(TString& name) const { name = "MATCHHIGH";}
48   
49   Bool_t IsRabsOK(const AliVParticle& part) const;
50   void NameOfIsRabsOK(TString& name) const { name = "RABS"; }
51
52   Bool_t IsEtaInRange(const AliVParticle& part) const;
53   void NameOfIsEtaInRange(TString& name) const
54   { name = "ETA"; }
55
56   void SetRun(const AliInputEventHandler* eventHandler);
57
58 protected:
59   
60   void DefineHistogramCollection(const char* eventSelection, const char* triggerClassName,
61                                  const char* centrality);
62
63   virtual void FillHistosForTrack(const char* eventSelection, const char* triggerClassName,
64                                   const char* centrality,
65                                   const char* trackCutName,
66                                   const AliVParticle& part);
67
68 private:
69   
70   void CreateTrackHisto(const char* eventSelection,
71                         const char* triggerClassName,
72                         const char* centrality,
73                         const char* hname, const char* htitle,
74                         Int_t nbinsx, Double_t xmin, Double_t xmax,
75                         Int_t nbinsy=-1, Double_t ymin=0.0, Double_t ymax=0.0,
76                         Bool_t separatePlusAndMinus=kFALSE) const;
77
78   Double_t GetTrackTheta(const AliVParticle& particle) const;
79   
80   /* methods prefixed with EA should really not exist at all. They are there
81    only because the some of our base interfaces are shamelessly incomplete or
82    inadequate...
83    */
84   
85   Int_t EAGetNumberOfMuonTracks() const;
86   
87 //  Int_t EAGetNumberOfSelectMuonTracks() const;
88   
89   Double_t EAGetTrackDCA(const AliVParticle& particle) const;
90      
91 private:
92   
93   /// not implemented on purpose
94   AliAnalysisMuMuSingle& operator=(const AliAnalysisMuMuSingle& rhs);
95   /// not implemented on purpose
96   AliAnalysisMuMuSingle(const AliAnalysisMuMuSingle& rhs);
97   
98   AliMuonTrackCuts* fMuonTrackCuts; //! common cuts for muon tracks (from Diego)
99   Bool_t fShouldSeparatePlusAndMinus; // whether or not to histogram mu+ and mu- separately
100   TH2F* fAccEffHisto; // dimuon acc x eff (y vs pt)
101   
102   ClassDef(AliAnalysisMuMuSingle,1) // implementation of AliAnalysisMuMuBase for single mu analysis
103 };
104
105 #endif