ROOT logo
#ifndef ALIANALYSISMUMUSINGLE_H
#define ALIANALYSISMUMUSINGLE_H

#include "AliAnalysisMuMuBase.h"

/**
 *
 * \class AliAnalysisMuMuSingle
 *
 * \brief Histogramming of single muon tracks.
 *
 * \author L. Aphecetche (Subatech)
 *
 */

#include "AliAnalysisMuonUtility.h"

class AliMuonTrackCuts;
class TH2F;
class TObjArray;

class AliAnalysisMuMuSingle : public AliAnalysisMuMuBase
{
public:
  
  AliAnalysisMuMuSingle();
  virtual ~AliAnalysisMuMuSingle();
  
  virtual void ShouldSeparatePlusAndMinus(Bool_t value) { fShouldSeparatePlusAndMinus = value; }
  
  virtual Bool_t ShouldSeparatePlusAndMinus() const { return fShouldSeparatePlusAndMinus; }

  AliMuonTrackCuts* MuonTrackCuts();
  
  void SetMuonTrackCuts(const AliMuonTrackCuts& trackCuts);
  
  Bool_t IsPDCAOK(const AliVParticle& part);
  void NameOfIsPDCAOK(TString& name) const { name = "PDCA";}
  
  Bool_t IsMatchingTriggerAnyPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 1 ); }
  void NameOfIsMatchingTriggerAnyPt(TString& name) const { name = "MATCHANY";}
  
  Bool_t IsMatchingTriggerLowPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 2 ); }
  void NameOfIsMatchingTriggerLowPt(TString& name) const { name = "MATCHLOW";}
  
  Bool_t IsMatchingTriggerHighPt(const AliVParticle& part) const { return ( AliAnalysisMuonUtility::GetMatchTrigger(&part) >= 3 ); }
  void NameOfIsMatchingTriggerHighPt(TString& name) const { name = "MATCHHIGH";}
  
  Bool_t IsRabsOK(const AliVParticle& part) const;
  void NameOfIsRabsOK(TString& name) const { name = "RABS"; }

  Bool_t IsEtaInRange(const AliVParticle& part) const;
  void NameOfIsEtaInRange(TString& name) const
  { name = "ETA"; }

  void SetRun(const AliInputEventHandler* eventHandler);

protected:
  
  void DefineHistogramCollection(const char* eventSelection, const char* triggerClassName,
                                 const char* centrality);

  virtual void FillHistosForTrack(const char* eventSelection, const char* triggerClassName,
                                  const char* centrality,
                                  const char* trackCutName,
                                  const AliVParticle& part);

private:
  
  void CreateTrackHisto(const char* eventSelection,
                        const char* triggerClassName,
                        const char* centrality,
                        const char* hname, const char* htitle,
                        Int_t nbinsx, Double_t xmin, Double_t xmax,
                        Int_t nbinsy=-1, Double_t ymin=0.0, Double_t ymax=0.0,
                        Bool_t separatePlusAndMinus=kFALSE) const;

  Double_t GetTrackTheta(const AliVParticle& particle) const;
  
  /* methods prefixed with EA should really not exist at all. They are there
   only because the some of our base interfaces are shamelessly incomplete or
   inadequate...
   */
  
  Int_t EAGetNumberOfMuonTracks() const;
  
//  Int_t EAGetNumberOfSelectMuonTracks() const;
  
  Double_t EAGetTrackDCA(const AliVParticle& particle) const;
     
private:
  
  /// not implemented on purpose
  AliAnalysisMuMuSingle& operator=(const AliAnalysisMuMuSingle& rhs);
  /// not implemented on purpose
  AliAnalysisMuMuSingle(const AliAnalysisMuMuSingle& rhs);
  
  AliMuonTrackCuts* fMuonTrackCuts; //! common cuts for muon tracks (from Diego)
  Bool_t fShouldSeparatePlusAndMinus; // whether or not to histogram mu+ and mu- separately
  TH2F* fAccEffHisto; // dimuon acc x eff (y vs pt)
  
  ClassDef(AliAnalysisMuMuSingle,1) // implementation of AliAnalysisMuMuBase for single mu analysis
};

#endif
 AliAnalysisMuMuSingle.h:1
 AliAnalysisMuMuSingle.h:2
 AliAnalysisMuMuSingle.h:3
 AliAnalysisMuMuSingle.h:4
 AliAnalysisMuMuSingle.h:5
 AliAnalysisMuMuSingle.h:6
 AliAnalysisMuMuSingle.h:7
 AliAnalysisMuMuSingle.h:8
 AliAnalysisMuMuSingle.h:9
 AliAnalysisMuMuSingle.h:10
 AliAnalysisMuMuSingle.h:11
 AliAnalysisMuMuSingle.h:12
 AliAnalysisMuMuSingle.h:13
 AliAnalysisMuMuSingle.h:14
 AliAnalysisMuMuSingle.h:15
 AliAnalysisMuMuSingle.h:16
 AliAnalysisMuMuSingle.h:17
 AliAnalysisMuMuSingle.h:18
 AliAnalysisMuMuSingle.h:19
 AliAnalysisMuMuSingle.h:20
 AliAnalysisMuMuSingle.h:21
 AliAnalysisMuMuSingle.h:22
 AliAnalysisMuMuSingle.h:23
 AliAnalysisMuMuSingle.h:24
 AliAnalysisMuMuSingle.h:25
 AliAnalysisMuMuSingle.h:26
 AliAnalysisMuMuSingle.h:27
 AliAnalysisMuMuSingle.h:28
 AliAnalysisMuMuSingle.h:29
 AliAnalysisMuMuSingle.h:30
 AliAnalysisMuMuSingle.h:31
 AliAnalysisMuMuSingle.h:32
 AliAnalysisMuMuSingle.h:33
 AliAnalysisMuMuSingle.h:34
 AliAnalysisMuMuSingle.h:35
 AliAnalysisMuMuSingle.h:36
 AliAnalysisMuMuSingle.h:37
 AliAnalysisMuMuSingle.h:38
 AliAnalysisMuMuSingle.h:39
 AliAnalysisMuMuSingle.h:40
 AliAnalysisMuMuSingle.h:41
 AliAnalysisMuMuSingle.h:42
 AliAnalysisMuMuSingle.h:43
 AliAnalysisMuMuSingle.h:44
 AliAnalysisMuMuSingle.h:45
 AliAnalysisMuMuSingle.h:46
 AliAnalysisMuMuSingle.h:47
 AliAnalysisMuMuSingle.h:48
 AliAnalysisMuMuSingle.h:49
 AliAnalysisMuMuSingle.h:50
 AliAnalysisMuMuSingle.h:51
 AliAnalysisMuMuSingle.h:52
 AliAnalysisMuMuSingle.h:53
 AliAnalysisMuMuSingle.h:54
 AliAnalysisMuMuSingle.h:55
 AliAnalysisMuMuSingle.h:56
 AliAnalysisMuMuSingle.h:57
 AliAnalysisMuMuSingle.h:58
 AliAnalysisMuMuSingle.h:59
 AliAnalysisMuMuSingle.h:60
 AliAnalysisMuMuSingle.h:61
 AliAnalysisMuMuSingle.h:62
 AliAnalysisMuMuSingle.h:63
 AliAnalysisMuMuSingle.h:64
 AliAnalysisMuMuSingle.h:65
 AliAnalysisMuMuSingle.h:66
 AliAnalysisMuMuSingle.h:67
 AliAnalysisMuMuSingle.h:68
 AliAnalysisMuMuSingle.h:69
 AliAnalysisMuMuSingle.h:70
 AliAnalysisMuMuSingle.h:71
 AliAnalysisMuMuSingle.h:72
 AliAnalysisMuMuSingle.h:73
 AliAnalysisMuMuSingle.h:74
 AliAnalysisMuMuSingle.h:75
 AliAnalysisMuMuSingle.h:76
 AliAnalysisMuMuSingle.h:77
 AliAnalysisMuMuSingle.h:78
 AliAnalysisMuMuSingle.h:79
 AliAnalysisMuMuSingle.h:80
 AliAnalysisMuMuSingle.h:81
 AliAnalysisMuMuSingle.h:82
 AliAnalysisMuMuSingle.h:83
 AliAnalysisMuMuSingle.h:84
 AliAnalysisMuMuSingle.h:85
 AliAnalysisMuMuSingle.h:86
 AliAnalysisMuMuSingle.h:87
 AliAnalysisMuMuSingle.h:88
 AliAnalysisMuMuSingle.h:89
 AliAnalysisMuMuSingle.h:90
 AliAnalysisMuMuSingle.h:91
 AliAnalysisMuMuSingle.h:92
 AliAnalysisMuMuSingle.h:93
 AliAnalysisMuMuSingle.h:94
 AliAnalysisMuMuSingle.h:95
 AliAnalysisMuMuSingle.h:96
 AliAnalysisMuMuSingle.h:97
 AliAnalysisMuMuSingle.h:98
 AliAnalysisMuMuSingle.h:99
 AliAnalysisMuMuSingle.h:100
 AliAnalysisMuMuSingle.h:101
 AliAnalysisMuMuSingle.h:102
 AliAnalysisMuMuSingle.h:103
 AliAnalysisMuMuSingle.h:104
 AliAnalysisMuMuSingle.h:105