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