]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/AliAnalysisMuMuSingle.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / muon / AliAnalysisMuMuSingle.h
CommitLineData
5376e016
CP
1#ifndef ALIANALYSISMUMUSINGLE_H
2#define ALIANALYSISMUMUSINGLE_H
3
16560e8e 4#include "AliAnalysisMuMuBase.h"
5
5376e016
CP
6/**
7 *
8 * \class AliAnalysisMuMuSingle
16560e8e 9 *
5376e016
CP
10 * \brief Histogramming of single muon tracks.
11 *
12 * \author L. Aphecetche (Subatech)
13 *
14 */
15
16560e8e 16#include "AliAnalysisMuonUtility.h"
5376e016
CP
17
18class AliMuonTrackCuts;
19class TH2F;
20class TObjArray;
21
22class AliAnalysisMuMuSingle : public AliAnalysisMuMuBase
23{
24public:
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
16560e8e 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
5376e016
CP
49 Bool_t IsRabsOK(const AliVParticle& part) const;
50 void NameOfIsRabsOK(TString& name) const { name = "RABS"; }
51
16560e8e 52 Bool_t IsEtaInRange(const AliVParticle& part) const;
53 void NameOfIsEtaInRange(TString& name) const
54 { name = "ETA"; }
5376e016
CP
55
56 void SetRun(const AliInputEventHandler* eventHandler);
57
58protected:
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
68private:
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
91private:
0804b4cc 92
93 /// not implemented on purpose
94 AliAnalysisMuMuSingle& operator=(const AliAnalysisMuMuSingle& rhs);
95 /// not implemented on purpose
96 AliAnalysisMuMuSingle(const AliAnalysisMuMuSingle& rhs);
97
5376e016
CP
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