ROOT logo
#ifndef ALIANALYSISMUMUNCH_H
#define ALIANALYSISMUMUNCH_H

/**
 *
 * \class AliAnalysisMuMuNch
 * \brief Charged particle multiplicity analysis (for plotting muon variables against it)
 * \author L. Aphecetche and J. Martin Blanco (Subatech)
 */

#include "AliAnalysisMuMuBase.h"
#include "TRandom3.h"
#include "TMap.h"

class TH2F;
class TH2;
class AliVEvent;
class AliAODTracklets;
class TAxis;
class TF1;
class AliAODVertex;

class AliAnalysisMuMuNch : public AliAnalysisMuMuBase
{
public:
  
  AliAnalysisMuMuNch(TH2F* spdCorrection=0x0, TProfile* spdMeanCorrection = 0x0, Double_t meanTrRef=-1., Double_t etaMin=-0.5, Double_t etaMax=0.5
                     , Double_t zmin=-10., Double_t zmax=10., Bool_t disableHistos=kFALSE ,Bool_t computeResolution=kFALSE);
  
  AliAnalysisMuMuNch(TProfile* spdMeanCorrection, TProfile* spdMeanCorrectionToCompare, Double_t meanTrRef=-1., Double_t etaMin=-1.0,
                     Double_t etaMax=1.0, Double_t zMin=-10., Double_t zMax=10., Double_t etaMinToCompare=-0.5, Double_t etaMaxToCompare=0.5,Bool_t disableHistos=kFALSE, Bool_t computeResolution=kFALSE);
  
  AliAnalysisMuMuNch(TObjArray* spdCorrectionList, Double_t meanTrRef=-1., Double_t etaMin=-0.5, Double_t etaMax=0.5
                                         , Double_t zmin=-10, Double_t zmax=10, Bool_t disableHistos=kFALSE ,Bool_t computeResolution=kFALSE);

  virtual ~AliAnalysisMuMuNch();
  
  void DefineGeneratorName(const char* genName);
  
  Bool_t HasAtLeastNTrackletsInEtaRange(const AliVEvent& event, Int_t n,
                                        Double_t& etaMin, Double_t& etaMax) const;

  void NameOfHasAtLeastNTrackletsInEtaRange(TString& name, Int_t n,
                                            Double_t& etaMin, Double_t& etaMax) const;
  
  virtual void SetEvent(AliVEvent* event, AliMCEvent* mcEvent=0x0);
  
  void SetRun(const AliInputEventHandler* eventHandler);
  
  virtual void Terminate(Option_t *);

protected:

  void AddHisto(const char* eventSelection,
                const char* triggerClassName,
                const char* centrality,
                const char* histoname,
                Double_t z,
                TH1* h,
                Bool_t isMC=kFALSE);
  
  void AttachSPDAcceptance(UInt_t dataType,
                           const char* eventSelection,
                           const char* triggerClassName,
                           const char* centrality,const char* histoname);


  void FillHistosForMCEvent(const char* eventSelection, const char* triggerClassName,
              const char* centrality);
  

  void FillHistosForEvent(const char* eventSelection, const char* triggerClassName,
                          const char* centrality);
  
  virtual void DefineHistogramCollection(const char* eventSelection, const char* triggerClassName,
                                         const char* centrality);

  void DefineSPDAcceptance();
  
  Bool_t GetEtaRangeSPD(Double_t spdZVertex, Double_t etaRange[]);

  Double_t GetSPDCorrection(Double_t zvert, Double_t eta) const;
  
  Double_t GetTrackletsMeanCorrection(Double_t zvert, Int_t nTracklets,Bool_t corrToCompare=kFALSE) const;
  
  AliAODTracklets* GetTracklets(AliVEvent* event);
  
  Bool_t IsMCtrackFromGenerator(Int_t indexMC) const;
  
private:
  
  Double_t NumberOfTrackletsInEtaRange(const AliVEvent& event, Double_t& etamin,
                                       Double_t& etamax, Bool_t corrected=kFALSE) const;
  
  void DefineSPDCorrectionMap(TObjArray* spdCorrectionList);
  
private:
  TH2F* fSPDOneOverAccxEff; // Nch/Tracklets_SPD (eta vs z). SPD AccxEffCorrection for tracklets
  TMap* fSPDCorrectionMap; // Map for the SPD AccxEffCorrections or Mean Tracklets corrections for different subperiods
  TObjArray* fSPDCorrectionList; // List of SPD AccxEffCorrections or Mean Tracklets corrections for different subperiods
  TProfile* fSPDMeanTracklets; // <Tracklets_SPD> vs zvtx. 'mean' correction for tracklets
  TProfile* fSPDMeanTrackletsCorrToCompare; // <Tracklets_SPD> vs zvtx. 'mean' correction for tracklets in the range for comparison with the main range
  TAxis* fEtaAxis; // Eta axis used for the histos
  TAxis* fZAxis;  // Z vertex axis used for the histos
  AliVEvent* fCurrentEvent; //! cache of the current event
  Double_t fMeanTrRef; // Mean reference number of tracklets for mean tracklets correction
  Double_t fEtaMin; // Minimum tracklet eta value 
  Double_t fEtaMax; // Maximum tracklet eta value
  Double_t fEtaMinToCompare; // Minimum tracklet eta value for the comparison
  Double_t fEtaMaxToCompare; // Maximum tracklet eta value for the comparison
  Double_t fetaRange[2];
  Double_t fZMin; // Minimum z vertex value 
  Double_t fZMax; // Maximum z vertex value 
  Bool_t fResolution; // Flag to set the resolution computation
  TRandom3* frand;
  TString* fGeneratorHeaderClass; // Class of the header MC generator
  
  TF1* fSPD1LR; // SPD acceptance shape
  TF1* fSPD1LL; // SPD acceptance shape
  TF1* fSPD2LR; // SPD acceptance shape
  TF1* fSPD2LL; // SPD acceptance shape
  
  ClassDef(AliAnalysisMuMuNch,4) // implementation of AliAnalysisMuMuBase for Nch analysis
};

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