1 #ifndef ALIANALYSISMUMUSINGLE_H
2 #define ALIANALYSISMUMUSINGLE_H
4 #include "AliAnalysisMuMuBase.h"
8 * \class AliAnalysisMuMuSingle
10 * \brief Histogramming of single muon tracks.
12 * \author L. Aphecetche (Subatech)
16 #include "AliAnalysisMuonUtility.h"
18 class AliMuonTrackCuts;
22 class AliAnalysisMuMuSingle : public AliAnalysisMuMuBase
26 AliAnalysisMuMuSingle();
27 virtual ~AliAnalysisMuMuSingle();
29 virtual void ShouldSeparatePlusAndMinus(Bool_t value) { fShouldSeparatePlusAndMinus = value; }
31 virtual Bool_t ShouldSeparatePlusAndMinus() const { return fShouldSeparatePlusAndMinus; }
33 AliMuonTrackCuts* MuonTrackCuts();
35 void SetMuonTrackCuts(const AliMuonTrackCuts& trackCuts);
37 Bool_t IsPDCAOK(const AliVParticle& part);
38 void NameOfIsPDCAOK(TString& name) const { name = "PDCA";}
40 Bool_t IsMatchingTriggerAnyPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 1 ); }
41 void NameOfIsMatchingTriggerAnyPt(TString& name) const { name = "MATCHANY";}
43 Bool_t IsMatchingTriggerLowPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 2 ); }
44 void NameOfIsMatchingTriggerLowPt(TString& name) const { name = "MATCHLOW";}
46 Bool_t IsMatchingTriggerHighPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 3 ); }
47 void NameOfIsMatchingTriggerHighPt(TString& name) const { name = "MATCHHIGH";}
49 Bool_t IsRabsOK(const AliVParticle& part) const;
50 void NameOfIsRabsOK(TString& name) const { name = "RABS"; }
52 Bool_t IsEtaInRange(const AliVParticle& part) const;
53 void NameOfIsEtaInRange(TString& name) const
56 void SetRun(const AliInputEventHandler* eventHandler);
60 void DefineHistogramCollection(const char* eventSelection, const char* triggerClassName,
61 const char* centrality);
63 virtual void FillHistosForTrack(const char* eventSelection, const char* triggerClassName,
64 const char* centrality,
65 const char* trackCutName,
66 const AliVParticle& part);
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;
78 Double_t GetTrackTheta(const AliVParticle& particle) const;
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
85 Int_t EAGetNumberOfMuonTracks() const;
87 // Int_t EAGetNumberOfSelectMuonTracks() const;
89 Double_t EAGetTrackDCA(const AliVParticle& particle) const;
93 /// not implemented on purpose
94 AliAnalysisMuMuSingle& operator=(const AliAnalysisMuMuSingle& rhs);
95 /// not implemented on purpose
96 AliAnalysisMuMuSingle(const AliAnalysisMuMuSingle& rhs);
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)
102 ClassDef(AliAnalysisMuMuSingle,1) // implementation of AliAnalysisMuMuBase for single mu analysis