ROOT logo
#ifndef AlidNdPtAnalysisPbPbAOD_H
#define AlidNdPtAnalysisPbPbAOD_H


//------------------------------------------------------------------------------
// AlidNdPtAnalysisPbPbAOD class used for dNdPt analysis in PbPb collision
// via AODs 
// 
// Author: P. Luettig, 15.05.2013
// last modified: 10.06.2014
//------------------------------------------------------------------------------



class iostream;

#include "AliAnalysisTaskSE.h"
#include "TObject.h"
#include "TList.h"
#include "TFile.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "THnSparse.h"
#include "THn.h"
#include "TClonesArray.h"
#include "TString.h"
#include "TProfile.h"
#include "TVector2.h"

#include "TParticlePDG.h"
#include "TDatabasePDG.h"

#include "AliLog.h"
#include "AliCentrality.h"
#include "AliAODEvent.h"
#include "AliVEvent.h"

#include "AliInputEventHandler.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisManager.h"
#include "AliMCEventHandler.h"
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"
#include "AliGenHijingEventHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliExternalTrackParam.h"
#include "AliESDtrack.h"
#include "AliEventplane.h"

#include "TSystem.h"
#include "TROOT.h"

class AlidNdPtAnalysisPbPbAOD : public AliAnalysisTaskSE {
  public :
    enum CheckQuantity { cqCrossedRows = 0, cqNcluster = 1, cqChi = 2, cqLength = 3, cqRowsOverFindable = 4 };
    enum KinematicQuantity { kqPt = 0, kqEta = 1, kqPhi = 2 };
    enum MaxCheckQuantity { cqMax = 5 };
    enum MaxKinematicQuantity { kqMax = 3 };
    
    AlidNdPtAnalysisPbPbAOD(const char *name = "dNdPtPbPbAOD");
    ~AlidNdPtAnalysisPbPbAOD();
    
    virtual void UserCreateOutputObjects();
    virtual void UserExec(Option_t *option);
    virtual void Terminate(Option_t *);
    
    // Set binning for Histograms (if not set default binning is used)
    void SetBinsMult(Int_t nbins, Double_t* edges) 			{ Printf("[I] Setting Mult Bins"); fMultNbins = nbins; fBinsMult = GetArrayClone(nbins,edges); }
    void SetBinsPt(Int_t nbins, Double_t* edges) 			{ Printf("[I] Setting pT Bins"); fPtNbins = nbins; fBinsPt = GetArrayClone(nbins,edges); }
    void SetBinsPtCorr(Int_t nbins, Double_t* edges) 		{ Printf("[I] Setting pTcorr Bins"); fPtCorrNbins = nbins; fBinsPtCorr = GetArrayClone(nbins,edges); }
    void SetBinsPtCheck(Int_t nbins, Double_t* edges) 		{ Printf("[I] Setting pTcheck Bins"); fPtCheckNbins = nbins; fBinsPtCheck = GetArrayClone(nbins,edges); }
    void SetBinsEta(Int_t nbins, Double_t* edges) 			{ Printf("[I] Setting Eta Bins"); fEtaNbins = nbins; fBinsEta = GetArrayClone(nbins,edges); }
    void SetBinsEtaCheck(Int_t nbins, Double_t* edges) 		{ Printf("[I] Setting EtaCheck Bins"); fEtaCheckNbins = nbins; fBinsEtaCheck = GetArrayClone(nbins,edges); }
    void SetBinsZv(Int_t nbins, Double_t* edges) 			{ Printf("[I] Setting Zv Bins"); fZvNbins = nbins; fBinsZv= GetArrayClone(nbins,edges); }
    void SetBinsCentrality(Int_t nbins, Double_t* edges) 	{ Printf("[I] Setting Cent Bins"); fCentralityNbins = nbins; fBinsCentrality = GetArrayClone(nbins,edges); }
    void SetBinsPhi(Int_t nbins, Double_t* edges) 			{ Printf("[I] Setting Phi Bins"); fPhiNbins = nbins; fBinsPhi = GetArrayClone(nbins,edges); }
    void SetBinsDeltaphi(Int_t nbins, Double_t* edges) 		{ Printf("[I] Setting Deltaphi Bins"); fDeltaphiNbins = nbins; fBinsDeltaphi = GetArrayClone(nbins,edges); }
    void SetBinsRunNumber(Int_t nbins, Double_t* edges) 	{ Printf("[I] Setting RunNumber Bins"); fRunNumberNbins = nbins; fBinsRunNumber = GetArrayClone(nbins,edges); }
    
    // set event cut variables
    void SetCutMaxZVertex( Double_t d)					    { fCutMaxZVertex = d; }
    Double_t GetCutMaxZVertex()						        { return fCutMaxZVertex; }
    
    // set track kinematic cut parameters
    void SetCutPtRange(Double_t ptmin, Double_t ptmax)		{ fCutPtMin = ptmin; fCutPtMax = ptmax; }
    Double_t GetCutPtMin()						            { return fCutPtMin; }
    Double_t GetCutPtMax()						            { return fCutPtMax; }
    
    void SetCutEtaRange(Double_t etamin, Double_t etamax)	{ fCutEtaMin = etamin; fCutEtaMax = etamax; }
    Double_t GetCutEtaMin()						            { return fCutEtaMin; }
    Double_t GetCutEtaMax()						            { return fCutEtaMax; }
    
    void EnableRelativeCuts()								{ Printf("[I] Relative Cuts enabled"); fUseRelativeCuts = kTRUE; }
    Bool_t AreRelativeCutsEnabled()							{ return fUseRelativeCuts; }
    
    // setter and getter track quality cut parameters
    void SetFilterBit(Int_t b)								{ fFilterBit = b; };
    Int_t GetFilterBit()									{ return fFilterBit; }
    
    void SetCutRequireTPCRefit(Bool_t *b) 					{ fCutRequireTPCRefit = b; } 
    Bool_t IsTPCRefitRequired() 							{ return fCutRequireTPCRefit; } 
    
    void SetCutRequireITSRefit(Bool_t *b) 					{ fCutRequireITSRefit = b; } 
    Bool_t IsITSRefitRequired() 							{ return fCutRequireITSRefit; } 
    
    void SetCutMinNClustersTPC(Double_t d)					{ fCutMinNumberOfClusters = d; }
    Double_t GetCutMinNClustersTPC()						{ return fCutMinNumberOfClusters; }
    
    void SetCutPercMinNClustersTPC(Double_t d)				{ Printf("[I] Take only %.2f%% tracks with most clusters", d*100.); fCutPercMinNumberOfClusters = d; }
    Double_t GetCutPercMinNClustersTPC()					{ return fCutPercMinNumberOfClusters; }
    
    void SetCutMinNCrossedRowsTPC(Double_t d) 				{ fCutMinNumberOfCrossedRows = d; }    
    Double_t GetCutMinNCrossedRowsTPC()						{ return fCutMinNumberOfCrossedRows; }
    
    void SetCutPercMinNCrossedRowsTPC(Double_t d) 			{ Printf("[I] Take only %.2f%% tracks with most crossedRows", d*100.); fCutPercMinNumberOfCrossedRows = d; }    
    Double_t GetCutPercMinNCrossedRowsTPC()					{ return fCutPercMinNumberOfCrossedRows; }
    
    void SetCutMinRatioCrossedRowsOverFindableClustersTPC(Double_t d) 	{ fCutMinRatioCrossedRowsOverFindableClustersTPC = d; }
    Double_t GetCutMinRatioCrossedRowsOverFindableClustersTPC()			{ return fCutMinRatioCrossedRowsOverFindableClustersTPC; }
    
    void SetCutLengthInTPCPtDependent(Bool_t b)				{ fCutLengthInTPCPtDependent = b; }
    Bool_t DoCutLengthInTPCPtDependent()					{ return fCutLengthInTPCPtDependent; }
    
    void SetPrefactorLengthInTPCPtDependent(Double_t d)		{ fPrefactorLengthInTPCPtDependent = d; }
    Double_t GetPrefactorLengthInTPCPtDependent()			{ return fPrefactorLengthInTPCPtDependent; }
     
    void SetCutMaxChi2PerClusterTPC(Double_t d) 			{ fCutMaxChi2PerClusterTPC = d; }
    void SetCutMaxFractionSharedTPCClusters(Double_t d) 	{ fCutMaxFractionSharedTPCClusters = d; }
    void SetCutMaxDCAToVertexZ(Double_t d) 					{ fCutMaxDCAToVertexZ = d; }
    void SetCutMaxDCAToVertexXY(Double_t d) 				{ fCutMaxDCAToVertexXY = d; }
    void SetCutMaxChi2PerClusterITS(Double_t d) 			{ fCutMaxChi2PerClusterITS = d; }
    void SetCutDCAToVertex2D(Bool_t *b) 					{ fCutDCAToVertex2D = b; } 
    void SetCutRequireSigmaToVertex(Bool_t *b) 				{ fCutRequireSigmaToVertex = b; } 
    void SetCutMaxDCAToVertexXYPtDep(Double_t d0, Double_t d1, Double_t d2)
    {
      fCutMaxDCAToVertexXYPtDepPar0 = d0;
      fCutMaxDCAToVertexXYPtDepPar1 = d1;
      fCutMaxDCAToVertexXYPtDepPar2 = d2;
    }
    void SetCutAcceptKinkDaughters(Bool_t *b) 				{ fCutAcceptKinkDaughters = b; } 
    void SetCutMaxChi2TPCConstrainedGlobal(Double_t d) 		{ fCutMaxChi2TPCConstrainedGlobal = d; }
       
    // fill function for cross check histos
    Bool_t FillDebugHisto(Double_t *dCrossCheckVar, Double_t *dKineVar, Double_t dCentrality, Bool_t bIsAccepted);
    
    // fill function for cut settings
    void StoreCutSettingsToHistogram();
    
    // getter for DCA
    Bool_t GetDCA(const AliAODTrack *track, AliAODEvent *evt, Double_t d0z0[2]);
    
    THnSparseF * GetHistZvPtEtaCent() const { return fZvPtEtaCent; }
    TH1F * GetHistEventStatistics() const { return fEventStatistics; }
    
    const char * GetParticleName(Int_t pdg);
    
    AliGenHijingEventHeader* GetHijingEventHeader(AliAODMCHeader *header);
    AliGenPythiaEventHeader* GetPythiaEventHeader(AliAODMCHeader *header);
    
	Double_t RotatePhi(Double_t phiTrack, Double_t phiEP, Double_t dMaxDeltaPhi);
// 	Double_t MoveEventplane(Double_t dMCEP);
    
    Bool_t SetRelativeCuts(AliAODEvent *event);
    
    Bool_t IsTrackAccepted(AliAODTrack *tr, Double_t dCentrality, Double_t bMagZ);
    Bool_t IsMCTrackAccepted(AliAODMCParticle *part);
    
    Bool_t IsHijingParticle(const AliAODMCParticle *part, AliGenHijingEventHeader* hijingGenHeader);
    Bool_t IsPythiaParticle(const AliAODMCParticle *part, AliGenPythiaEventHeader* pythiaGenHeader);
    
    static Double_t* GetArrayClone(Int_t n, Double_t* source);
	
	void SetEventplaneSelector(char *c) { fEPselector = c; }
	TString GetEventplaneSelector() { return fEPselector; }
    
  private :
    
    // Output List
    TList		*fOutputList;
    
    // Histograms
    TH1F	    *fPt; // simple pT histogramm
    TH1F	    *fMCPt; // simple pT truth histogramm
    THnSparseF 	*fZvPtEtaCent; //-> Zv:Pt:Eta:Cent
    THnSparseF 	*fDeltaphiPtEtaPhiCent; //-> DeltaPhi:Pt:Eta:Phi:Cent, was fDeltaphiPtEtaCent
    THnSparseF 	*fPtResptCent; //-> 1/pt:ResolutionPt:Cent
    THnSparseF 	*fMCRecPrimZvPtEtaCent; //-> MC Zv:Pt:Eta:Cent
    THnSparseF 	*fMCGenZvPtEtaCent; //-> MC Zv:Pt:Eta:Cent
    THnSparseF 	*fMCRecSecZvPtEtaCent; //-> MC Zv:Pt:Eta:Cent, only secondaries
    THnF		*fMCPtEtaPhiCent; //-> MC Pt:Eta:Phi:Cent
    THnF 		*fMCRecPrimPtEtaPhiCent; //-> MC Pt:Eta:Phi:Cent, was fMCRecPrimDeltaphiPtEtaCent
    THnF 		*fMCGenPtEtaPhiCent; //-> MC Pt:Eta:Phi:Cent, was fMCGenDeltaphiPtEtaCent
    THnF 		*fMCRecSecPtEtaPhiCent; //-> MC Pt:Eta:Phi:Cent, only secondaries, was fMCRecSecDeltaphiPtEtaCent
    TH1F	    *fEventStatistics; // contains statistics of number of events after each cut
    TH1F        *fEventStatisticsCentrality; // contains number of events vs centrality, events need to have a track in kinematic range
    TH1F	    *fMCEventStatisticsCentrality; // contains MC number of events vs centrality, events need to have a track in kinematic range
    TH1F	    *fAllEventStatisticsCentrality; // contains number of events vs centrality, events need to be triggered
    TH2F	    *fEventStatisticsCentralityTrigger; // contains number of events vs centrality in 1% bins vs trigger
    THnSparseF	*fZvMultCent; // Zv:Mult:Cent
    TH1F	    *fTriggerStatistics; // contains number of events per trigger
    TH1F	    *fCharge; // charge distribution in data
    TH1F	    *fMCCharge; // charge distribution in MC
    THnSparseF	*fDCAPtAll; //control histo: DCAz:DCAxy:pT:eta:phi for all reconstructed tracks
    THnSparseF	*fDCAPtAccepted; //control histo: DCAz:DCAxy:pT:eta:phi for all accepted reco tracks
    THnSparseF	*fMCDCAPtSecondary; //control histo: DCAz:DCAxy:pT:eta:phi for all accepted reco track, which are secondaries (using MC info)
    THnSparseF	*fMCDCAPtPrimary; //control histo: DCAz:DCAxy:pT:eta:phi for all accepted reco track, which are primaries (using MC info)
    THnF	    *fCrossCheckAll[5]; //control histo: {CrossedRows,Ncluster,Chi,Length,CrossedRows/Findable} vs pT,eta,phi,Centrality for all tracks
    THnF	    *fCrossCheckAcc[5]; //control histo: {CrossedRows,Ncluster,Chi,Length,CrossedRows/Findable} vs pT,eta,phi,Centrality after cuts
    TH1F	    *fCutPercClusters; // control histo: number of clusters, where the relative cut has been set e-by-e
    TH1F	    *fCutPercCrossed; // control histo: number of crossed rows, where the relative cut has been set e-by-e
    TH2F	    *fCrossCheckRowsLength; // control histo: number of crossed rows vs length in TPC
    TH2F	    *fCrossCheckClusterLength; // control histo: number of clusters vs length in TPC
    TH2F	    *fCrossCheckRowsLengthAcc; // control histo: number of crossed rows vs length in TPC for all accepted tracks
    TH2F	    *fCrossCheckClusterLengthAcc; // control histo: number of clusters vs length in TPC for all accepted tracks
    TH2F		*fCrossCheckPtresLength; // control histo: relative pt resolution in 1/pt vs lenght in TPC
    TH2F		*fCrossCheckPtresRows; // control histo: relative pt resolution in 1/pt vs number of crossed rows in TPC
    TH1F        *fCutSettings; // control histo: cut settings
    
    TH1F		*fEventplaneDist; // event plane distribution in phi
    TH2F		*fEventplaneRunDist; // event plane distribution in phi
    TH1F		*fMCEventplaneDist; // MC event plane distribution in phi
    TH2F		*fCorrelEventplaneMCDATA; // correlation between data and MC eventplane
    THnSparseF	*fCorrelEventplaneDefaultCorrected; // correlation between default and corrected (== subtraction of current track) eventplane
    TH2F		*fEventplaneSubtractedPercentage; // percentage of subtracted tracks

	// cross check for event plane resolution
	TH2F		*fEPDistCent; // event plane distribution vs centrality
	TH2F		*fPhiCent;	// particle phi distribution vs centrality
	TProfile	*fPcosEPCent; // < cos 2 psi_ep > vs centrality
	TProfile	*fPsinEPCent; // < sin 2 psi_ep > vs centrality
	TProfile	*fPcosPhiCent; // < cos 2 phi > vs centrality
	TProfile	*fPsinPhiCent; // < sin 2 phi > vs centrality

	// cross check for event plane determination
	TH2F		*fDeltaPhiCent; // DeltaPhi:Cent - DeltaPhi in the range from -pi to pi
	
	THnSparseF	*fCrossCheckFilterBitPhiCent; // FilterBit:Phi:Centrality

	// global variables
    Bool_t fIsMonteCarlo;
	
	TString fEPselector;
    
    // event cut variables
    Double_t fCutMaxZVertex;
    
    // track kinematic cut variables
    Double_t fCutPtMin;
    Double_t fCutPtMax;
    Double_t fCutEtaMin;
    Double_t fCutEtaMax;
    
    // track quality cut variables
    Int_t	    fFilterBit;
    Bool_t 	    fUseRelativeCuts;
    Bool_t  	fCutRequireTPCRefit;
    Bool_t 	    fCutRequireITSRefit;
    Double_t	fCutMinNumberOfClusters;
    Double_t	fCutPercMinNumberOfClusters;
    Double_t 	fCutMinNumberOfCrossedRows;
    Double_t 	fCutPercMinNumberOfCrossedRows;
    Double_t 	fCutMinRatioCrossedRowsOverFindableClustersTPC;
    Double_t 	fCutMaxChi2PerClusterTPC;
    Double_t 	fCutMaxFractionSharedTPCClusters;
    Double_t 	fCutMaxDCAToVertexZ;
    Double_t 	fCutMaxDCAToVertexXY;
    Double_t 	fCutMaxChi2PerClusterITS;
    Bool_t  	fCutDCAToVertex2D;
    Bool_t 	    fCutRequireSigmaToVertex;
    Double_t 	fCutMaxDCAToVertexXYPtDepPar0;
    Double_t 	fCutMaxDCAToVertexXYPtDepPar1;
    Double_t 	fCutMaxDCAToVertexXYPtDepPar2;
    Bool_t 	    fCutAcceptKinkDaughters;
    Double_t 	fCutMaxChi2TPCConstrainedGlobal;
    Bool_t	    fCutLengthInTPCPtDependent;
    Double_t	fPrefactorLengthInTPCPtDependent;
    
    //binning for THNsparse
    Int_t       fMultNbins;
    Int_t       fPtNbins;
    Int_t       fPtCorrNbins;
    Int_t       fPtCheckNbins;
    Int_t       fEtaNbins;
    Int_t       fEtaCheckNbins;
    Int_t       fZvNbins;
    Int_t       fCentralityNbins;
    Int_t       fPhiNbins;
	Int_t       fDeltaphiNbins;
	Int_t		fRunNumberNbins;
    Double_t*   fBinsMult; //[fMultNbins]
    Double_t*   fBinsPt; //[fPtNbins]
    Double_t*   fBinsPtCorr; //[fPtCorrNbins]
    Double_t*   fBinsPtCheck; //[fPtCheckNbins]
    Double_t*   fBinsEta; //[fEtaNbins]
    Double_t*   fBinsEtaCheck; //[fEtaCheckNbins]
    Double_t*   fBinsZv; //[fZvNbins]
    Double_t*   fBinsCentrality; //[fCentralityNbins]
    Double_t*   fBinsPhi; //[fPhiNbins]
    Double_t*   fBinsDeltaphi; //[fPhiNbins]
    Double_t*	fBinsRunNumber; //[fRunNumberNbins]
    
    AlidNdPtAnalysisPbPbAOD(const AlidNdPtAnalysisPbPbAOD&); // not implemented
    AlidNdPtAnalysisPbPbAOD& operator=(const AlidNdPtAnalysisPbPbAOD&); // not implemented  
    
    ClassDef(AlidNdPtAnalysisPbPbAOD,13); // has to be at least 1, otherwise not streamable...
};

#endif
 AlidNdPtAnalysisPbPbAOD.h:1
 AlidNdPtAnalysisPbPbAOD.h:2
 AlidNdPtAnalysisPbPbAOD.h:3
 AlidNdPtAnalysisPbPbAOD.h:4
 AlidNdPtAnalysisPbPbAOD.h:5
 AlidNdPtAnalysisPbPbAOD.h:6
 AlidNdPtAnalysisPbPbAOD.h:7
 AlidNdPtAnalysisPbPbAOD.h:8
 AlidNdPtAnalysisPbPbAOD.h:9
 AlidNdPtAnalysisPbPbAOD.h:10
 AlidNdPtAnalysisPbPbAOD.h:11
 AlidNdPtAnalysisPbPbAOD.h:12
 AlidNdPtAnalysisPbPbAOD.h:13
 AlidNdPtAnalysisPbPbAOD.h:14
 AlidNdPtAnalysisPbPbAOD.h:15
 AlidNdPtAnalysisPbPbAOD.h:16
 AlidNdPtAnalysisPbPbAOD.h:17
 AlidNdPtAnalysisPbPbAOD.h:18
 AlidNdPtAnalysisPbPbAOD.h:19
 AlidNdPtAnalysisPbPbAOD.h:20
 AlidNdPtAnalysisPbPbAOD.h:21
 AlidNdPtAnalysisPbPbAOD.h:22
 AlidNdPtAnalysisPbPbAOD.h:23
 AlidNdPtAnalysisPbPbAOD.h:24
 AlidNdPtAnalysisPbPbAOD.h:25
 AlidNdPtAnalysisPbPbAOD.h:26
 AlidNdPtAnalysisPbPbAOD.h:27
 AlidNdPtAnalysisPbPbAOD.h:28
 AlidNdPtAnalysisPbPbAOD.h:29
 AlidNdPtAnalysisPbPbAOD.h:30
 AlidNdPtAnalysisPbPbAOD.h:31
 AlidNdPtAnalysisPbPbAOD.h:32
 AlidNdPtAnalysisPbPbAOD.h:33
 AlidNdPtAnalysisPbPbAOD.h:34
 AlidNdPtAnalysisPbPbAOD.h:35
 AlidNdPtAnalysisPbPbAOD.h:36
 AlidNdPtAnalysisPbPbAOD.h:37
 AlidNdPtAnalysisPbPbAOD.h:38
 AlidNdPtAnalysisPbPbAOD.h:39
 AlidNdPtAnalysisPbPbAOD.h:40
 AlidNdPtAnalysisPbPbAOD.h:41
 AlidNdPtAnalysisPbPbAOD.h:42
 AlidNdPtAnalysisPbPbAOD.h:43
 AlidNdPtAnalysisPbPbAOD.h:44
 AlidNdPtAnalysisPbPbAOD.h:45
 AlidNdPtAnalysisPbPbAOD.h:46
 AlidNdPtAnalysisPbPbAOD.h:47
 AlidNdPtAnalysisPbPbAOD.h:48
 AlidNdPtAnalysisPbPbAOD.h:49
 AlidNdPtAnalysisPbPbAOD.h:50
 AlidNdPtAnalysisPbPbAOD.h:51
 AlidNdPtAnalysisPbPbAOD.h:52
 AlidNdPtAnalysisPbPbAOD.h:53
 AlidNdPtAnalysisPbPbAOD.h:54
 AlidNdPtAnalysisPbPbAOD.h:55
 AlidNdPtAnalysisPbPbAOD.h:56
 AlidNdPtAnalysisPbPbAOD.h:57
 AlidNdPtAnalysisPbPbAOD.h:58
 AlidNdPtAnalysisPbPbAOD.h:59
 AlidNdPtAnalysisPbPbAOD.h:60
 AlidNdPtAnalysisPbPbAOD.h:61
 AlidNdPtAnalysisPbPbAOD.h:62
 AlidNdPtAnalysisPbPbAOD.h:63
 AlidNdPtAnalysisPbPbAOD.h:64
 AlidNdPtAnalysisPbPbAOD.h:65
 AlidNdPtAnalysisPbPbAOD.h:66
 AlidNdPtAnalysisPbPbAOD.h:67
 AlidNdPtAnalysisPbPbAOD.h:68
 AlidNdPtAnalysisPbPbAOD.h:69
 AlidNdPtAnalysisPbPbAOD.h:70
 AlidNdPtAnalysisPbPbAOD.h:71
 AlidNdPtAnalysisPbPbAOD.h:72
 AlidNdPtAnalysisPbPbAOD.h:73
 AlidNdPtAnalysisPbPbAOD.h:74
 AlidNdPtAnalysisPbPbAOD.h:75
 AlidNdPtAnalysisPbPbAOD.h:76
 AlidNdPtAnalysisPbPbAOD.h:77
 AlidNdPtAnalysisPbPbAOD.h:78
 AlidNdPtAnalysisPbPbAOD.h:79
 AlidNdPtAnalysisPbPbAOD.h:80
 AlidNdPtAnalysisPbPbAOD.h:81
 AlidNdPtAnalysisPbPbAOD.h:82
 AlidNdPtAnalysisPbPbAOD.h:83
 AlidNdPtAnalysisPbPbAOD.h:84
 AlidNdPtAnalysisPbPbAOD.h:85
 AlidNdPtAnalysisPbPbAOD.h:86
 AlidNdPtAnalysisPbPbAOD.h:87
 AlidNdPtAnalysisPbPbAOD.h:88
 AlidNdPtAnalysisPbPbAOD.h:89
 AlidNdPtAnalysisPbPbAOD.h:90
 AlidNdPtAnalysisPbPbAOD.h:91
 AlidNdPtAnalysisPbPbAOD.h:92
 AlidNdPtAnalysisPbPbAOD.h:93
 AlidNdPtAnalysisPbPbAOD.h:94
 AlidNdPtAnalysisPbPbAOD.h:95
 AlidNdPtAnalysisPbPbAOD.h:96
 AlidNdPtAnalysisPbPbAOD.h:97
 AlidNdPtAnalysisPbPbAOD.h:98
 AlidNdPtAnalysisPbPbAOD.h:99
 AlidNdPtAnalysisPbPbAOD.h:100
 AlidNdPtAnalysisPbPbAOD.h:101
 AlidNdPtAnalysisPbPbAOD.h:102
 AlidNdPtAnalysisPbPbAOD.h:103
 AlidNdPtAnalysisPbPbAOD.h:104
 AlidNdPtAnalysisPbPbAOD.h:105
 AlidNdPtAnalysisPbPbAOD.h:106
 AlidNdPtAnalysisPbPbAOD.h:107
 AlidNdPtAnalysisPbPbAOD.h:108
 AlidNdPtAnalysisPbPbAOD.h:109
 AlidNdPtAnalysisPbPbAOD.h:110
 AlidNdPtAnalysisPbPbAOD.h:111
 AlidNdPtAnalysisPbPbAOD.h:112
 AlidNdPtAnalysisPbPbAOD.h:113
 AlidNdPtAnalysisPbPbAOD.h:114
 AlidNdPtAnalysisPbPbAOD.h:115
 AlidNdPtAnalysisPbPbAOD.h:116
 AlidNdPtAnalysisPbPbAOD.h:117
 AlidNdPtAnalysisPbPbAOD.h:118
 AlidNdPtAnalysisPbPbAOD.h:119
 AlidNdPtAnalysisPbPbAOD.h:120
 AlidNdPtAnalysisPbPbAOD.h:121
 AlidNdPtAnalysisPbPbAOD.h:122
 AlidNdPtAnalysisPbPbAOD.h:123
 AlidNdPtAnalysisPbPbAOD.h:124
 AlidNdPtAnalysisPbPbAOD.h:125
 AlidNdPtAnalysisPbPbAOD.h:126
 AlidNdPtAnalysisPbPbAOD.h:127
 AlidNdPtAnalysisPbPbAOD.h:128
 AlidNdPtAnalysisPbPbAOD.h:129
 AlidNdPtAnalysisPbPbAOD.h:130
 AlidNdPtAnalysisPbPbAOD.h:131
 AlidNdPtAnalysisPbPbAOD.h:132
 AlidNdPtAnalysisPbPbAOD.h:133
 AlidNdPtAnalysisPbPbAOD.h:134
 AlidNdPtAnalysisPbPbAOD.h:135
 AlidNdPtAnalysisPbPbAOD.h:136
 AlidNdPtAnalysisPbPbAOD.h:137
 AlidNdPtAnalysisPbPbAOD.h:138
 AlidNdPtAnalysisPbPbAOD.h:139
 AlidNdPtAnalysisPbPbAOD.h:140
 AlidNdPtAnalysisPbPbAOD.h:141
 AlidNdPtAnalysisPbPbAOD.h:142
 AlidNdPtAnalysisPbPbAOD.h:143
 AlidNdPtAnalysisPbPbAOD.h:144
 AlidNdPtAnalysisPbPbAOD.h:145
 AlidNdPtAnalysisPbPbAOD.h:146
 AlidNdPtAnalysisPbPbAOD.h:147
 AlidNdPtAnalysisPbPbAOD.h:148
 AlidNdPtAnalysisPbPbAOD.h:149
 AlidNdPtAnalysisPbPbAOD.h:150
 AlidNdPtAnalysisPbPbAOD.h:151
 AlidNdPtAnalysisPbPbAOD.h:152
 AlidNdPtAnalysisPbPbAOD.h:153
 AlidNdPtAnalysisPbPbAOD.h:154
 AlidNdPtAnalysisPbPbAOD.h:155
 AlidNdPtAnalysisPbPbAOD.h:156
 AlidNdPtAnalysisPbPbAOD.h:157
 AlidNdPtAnalysisPbPbAOD.h:158
 AlidNdPtAnalysisPbPbAOD.h:159
 AlidNdPtAnalysisPbPbAOD.h:160
 AlidNdPtAnalysisPbPbAOD.h:161
 AlidNdPtAnalysisPbPbAOD.h:162
 AlidNdPtAnalysisPbPbAOD.h:163
 AlidNdPtAnalysisPbPbAOD.h:164
 AlidNdPtAnalysisPbPbAOD.h:165
 AlidNdPtAnalysisPbPbAOD.h:166
 AlidNdPtAnalysisPbPbAOD.h:167
 AlidNdPtAnalysisPbPbAOD.h:168
 AlidNdPtAnalysisPbPbAOD.h:169
 AlidNdPtAnalysisPbPbAOD.h:170
 AlidNdPtAnalysisPbPbAOD.h:171
 AlidNdPtAnalysisPbPbAOD.h:172
 AlidNdPtAnalysisPbPbAOD.h:173
 AlidNdPtAnalysisPbPbAOD.h:174
 AlidNdPtAnalysisPbPbAOD.h:175
 AlidNdPtAnalysisPbPbAOD.h:176
 AlidNdPtAnalysisPbPbAOD.h:177
 AlidNdPtAnalysisPbPbAOD.h:178
 AlidNdPtAnalysisPbPbAOD.h:179
 AlidNdPtAnalysisPbPbAOD.h:180
 AlidNdPtAnalysisPbPbAOD.h:181
 AlidNdPtAnalysisPbPbAOD.h:182
 AlidNdPtAnalysisPbPbAOD.h:183
 AlidNdPtAnalysisPbPbAOD.h:184
 AlidNdPtAnalysisPbPbAOD.h:185
 AlidNdPtAnalysisPbPbAOD.h:186
 AlidNdPtAnalysisPbPbAOD.h:187
 AlidNdPtAnalysisPbPbAOD.h:188
 AlidNdPtAnalysisPbPbAOD.h:189
 AlidNdPtAnalysisPbPbAOD.h:190
 AlidNdPtAnalysisPbPbAOD.h:191
 AlidNdPtAnalysisPbPbAOD.h:192
 AlidNdPtAnalysisPbPbAOD.h:193
 AlidNdPtAnalysisPbPbAOD.h:194
 AlidNdPtAnalysisPbPbAOD.h:195
 AlidNdPtAnalysisPbPbAOD.h:196
 AlidNdPtAnalysisPbPbAOD.h:197
 AlidNdPtAnalysisPbPbAOD.h:198
 AlidNdPtAnalysisPbPbAOD.h:199
 AlidNdPtAnalysisPbPbAOD.h:200
 AlidNdPtAnalysisPbPbAOD.h:201
 AlidNdPtAnalysisPbPbAOD.h:202
 AlidNdPtAnalysisPbPbAOD.h:203
 AlidNdPtAnalysisPbPbAOD.h:204
 AlidNdPtAnalysisPbPbAOD.h:205
 AlidNdPtAnalysisPbPbAOD.h:206
 AlidNdPtAnalysisPbPbAOD.h:207
 AlidNdPtAnalysisPbPbAOD.h:208
 AlidNdPtAnalysisPbPbAOD.h:209
 AlidNdPtAnalysisPbPbAOD.h:210
 AlidNdPtAnalysisPbPbAOD.h:211
 AlidNdPtAnalysisPbPbAOD.h:212
 AlidNdPtAnalysisPbPbAOD.h:213
 AlidNdPtAnalysisPbPbAOD.h:214
 AlidNdPtAnalysisPbPbAOD.h:215
 AlidNdPtAnalysisPbPbAOD.h:216
 AlidNdPtAnalysisPbPbAOD.h:217
 AlidNdPtAnalysisPbPbAOD.h:218
 AlidNdPtAnalysisPbPbAOD.h:219
 AlidNdPtAnalysisPbPbAOD.h:220
 AlidNdPtAnalysisPbPbAOD.h:221
 AlidNdPtAnalysisPbPbAOD.h:222
 AlidNdPtAnalysisPbPbAOD.h:223
 AlidNdPtAnalysisPbPbAOD.h:224
 AlidNdPtAnalysisPbPbAOD.h:225
 AlidNdPtAnalysisPbPbAOD.h:226
 AlidNdPtAnalysisPbPbAOD.h:227
 AlidNdPtAnalysisPbPbAOD.h:228
 AlidNdPtAnalysisPbPbAOD.h:229
 AlidNdPtAnalysisPbPbAOD.h:230
 AlidNdPtAnalysisPbPbAOD.h:231
 AlidNdPtAnalysisPbPbAOD.h:232
 AlidNdPtAnalysisPbPbAOD.h:233
 AlidNdPtAnalysisPbPbAOD.h:234
 AlidNdPtAnalysisPbPbAOD.h:235
 AlidNdPtAnalysisPbPbAOD.h:236
 AlidNdPtAnalysisPbPbAOD.h:237
 AlidNdPtAnalysisPbPbAOD.h:238
 AlidNdPtAnalysisPbPbAOD.h:239
 AlidNdPtAnalysisPbPbAOD.h:240
 AlidNdPtAnalysisPbPbAOD.h:241
 AlidNdPtAnalysisPbPbAOD.h:242
 AlidNdPtAnalysisPbPbAOD.h:243
 AlidNdPtAnalysisPbPbAOD.h:244
 AlidNdPtAnalysisPbPbAOD.h:245
 AlidNdPtAnalysisPbPbAOD.h:246
 AlidNdPtAnalysisPbPbAOD.h:247
 AlidNdPtAnalysisPbPbAOD.h:248
 AlidNdPtAnalysisPbPbAOD.h:249
 AlidNdPtAnalysisPbPbAOD.h:250
 AlidNdPtAnalysisPbPbAOD.h:251
 AlidNdPtAnalysisPbPbAOD.h:252
 AlidNdPtAnalysisPbPbAOD.h:253
 AlidNdPtAnalysisPbPbAOD.h:254
 AlidNdPtAnalysisPbPbAOD.h:255
 AlidNdPtAnalysisPbPbAOD.h:256
 AlidNdPtAnalysisPbPbAOD.h:257
 AlidNdPtAnalysisPbPbAOD.h:258
 AlidNdPtAnalysisPbPbAOD.h:259
 AlidNdPtAnalysisPbPbAOD.h:260
 AlidNdPtAnalysisPbPbAOD.h:261
 AlidNdPtAnalysisPbPbAOD.h:262
 AlidNdPtAnalysisPbPbAOD.h:263
 AlidNdPtAnalysisPbPbAOD.h:264
 AlidNdPtAnalysisPbPbAOD.h:265
 AlidNdPtAnalysisPbPbAOD.h:266
 AlidNdPtAnalysisPbPbAOD.h:267
 AlidNdPtAnalysisPbPbAOD.h:268
 AlidNdPtAnalysisPbPbAOD.h:269
 AlidNdPtAnalysisPbPbAOD.h:270
 AlidNdPtAnalysisPbPbAOD.h:271
 AlidNdPtAnalysisPbPbAOD.h:272
 AlidNdPtAnalysisPbPbAOD.h:273
 AlidNdPtAnalysisPbPbAOD.h:274
 AlidNdPtAnalysisPbPbAOD.h:275
 AlidNdPtAnalysisPbPbAOD.h:276
 AlidNdPtAnalysisPbPbAOD.h:277
 AlidNdPtAnalysisPbPbAOD.h:278
 AlidNdPtAnalysisPbPbAOD.h:279
 AlidNdPtAnalysisPbPbAOD.h:280
 AlidNdPtAnalysisPbPbAOD.h:281
 AlidNdPtAnalysisPbPbAOD.h:282
 AlidNdPtAnalysisPbPbAOD.h:283
 AlidNdPtAnalysisPbPbAOD.h:284
 AlidNdPtAnalysisPbPbAOD.h:285
 AlidNdPtAnalysisPbPbAOD.h:286
 AlidNdPtAnalysisPbPbAOD.h:287
 AlidNdPtAnalysisPbPbAOD.h:288
 AlidNdPtAnalysisPbPbAOD.h:289
 AlidNdPtAnalysisPbPbAOD.h:290
 AlidNdPtAnalysisPbPbAOD.h:291
 AlidNdPtAnalysisPbPbAOD.h:292
 AlidNdPtAnalysisPbPbAOD.h:293
 AlidNdPtAnalysisPbPbAOD.h:294
 AlidNdPtAnalysisPbPbAOD.h:295
 AlidNdPtAnalysisPbPbAOD.h:296
 AlidNdPtAnalysisPbPbAOD.h:297
 AlidNdPtAnalysisPbPbAOD.h:298
 AlidNdPtAnalysisPbPbAOD.h:299
 AlidNdPtAnalysisPbPbAOD.h:300
 AlidNdPtAnalysisPbPbAOD.h:301
 AlidNdPtAnalysisPbPbAOD.h:302
 AlidNdPtAnalysisPbPbAOD.h:303
 AlidNdPtAnalysisPbPbAOD.h:304
 AlidNdPtAnalysisPbPbAOD.h:305
 AlidNdPtAnalysisPbPbAOD.h:306
 AlidNdPtAnalysisPbPbAOD.h:307
 AlidNdPtAnalysisPbPbAOD.h:308
 AlidNdPtAnalysisPbPbAOD.h:309