ROOT logo
#ifndef ALIANALYSISTASKBFPSI_H
#define ALIANALYSISTASKBFPSI_H

// Analysis task for the BF vs Psi code
// Authors: Panos Cristakoglou@cern.ch

class TList;
class TH1F;
class TH2F;
class TH3F; 
class TF1;
class TH3D;

class AliBalancePsi;
class AliESDtrackCuts;
class AliEventPoolManager;


#include "AliAnalysisTaskSE.h"
#include "AliBalancePsi.h"

#include "AliPID.h"  
#include "AliPIDResponse.h"
#include "AliPIDCombined.h"
 
//================================correction
#define kCENTRALITY 101  
//const Double_t centralityArrayForPbPb[kCENTRALITY+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.};
//const TString centralityArrayForPbPb_string[kCENTRALITY] = {"0-5","5-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};
//================================correction

class AliAnalysisTaskBFPsi : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskBFPsi(const char *name = "AliAnalysisTaskBFPsi");
  virtual ~AliAnalysisTaskBFPsi(); 
   
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   FinishTaskOutput();
  virtual void   Terminate(Option_t *);

  //========================correction
  virtual void   SetInputCorrection(TString filename, 
				    Int_t nCentralityBins, 
				    Double_t *centralityArrayForCorrections);
  //========================correction
  // void SetDebugLevel() {fDebugLevel = kTRUE;} //hides overloaded virtual function

  void SetAnalysisObject(AliBalancePsi *const analysis) {
    fBalance         = analysis;
    }
  void SetShufflingObject(AliBalancePsi *const analysisShuffled) {
    fRunShuffling = kTRUE;
    fShuffledBalance = analysisShuffled;
  }
  void SetMixingObject(AliBalancePsi *const analysisMixed) {
    fRunMixing = kTRUE;
    fMixedBalance = analysisMixed;
  }
  void SetMixingWithEventPlane(Bool_t bMixingWithEventPlane = kTRUE) { fRunMixingEventPlane = bMixingWithEventPlane; }
  void SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }
  void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {
    fESDtrackCuts = trackCuts;}
  void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
    fVxMax = vx;
    fVyMax = vy;
    fVzMax = vz;
  }

  //==============AOD analysis==============//
  void SetAODtrackCutBit(Int_t bit){
    fnAODtrackCutBit = bit;
  }

  void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){
    fPtMin  = ptmin;  fPtMax  = ptmax;
    fEtaMin = etamin; fEtaMax = etamax;
  }

  void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){
    fDCAxyCut  = DCAxy;
    fDCAzCut = DCAz;
  }

   void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){
    fTPCchi2Cut      = maxTPCchi2;
    fNClustersTPCCut = minNClustersTPC;
  }

   void SetExtraTPCCutsSharedAOD(Int_t minTPCsharedCut){
    fTPCsharedCut = minTPCsharedCut;
  }

  //==============MC analysis==============//
  void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,
                           Double_t etamin, Double_t etamax){
    fPtMin  = ptmin; fPtMax  = ptmax;
    fEtaMin = etamin; fEtaMax = etamax;
  }
  void UseFlowAfterBurner(TF1 *gDifferentialV2) {
    fDifferentialV2 = gDifferentialV2;
    fUseFlowAfterBurner = kTRUE;
  }
  void ExcludeResonancesInMC() {fExcludeResonancesInMC = kTRUE;}
  void ExcludeElectronsInMC()  {fExcludeElectronsInMC = kTRUE;}

  void SetPDGCode(Int_t gPdgCode) {
    fUseMCPdgCode = kTRUE;
    fPDGCodeToBeAnalyzed = gPdgCode;
  }

  //Centrality
  void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}
  const char* GetCentralityEstimator(void)  const              {return fCentralityEstimator;}
  void SetCentralityPercentileRange(Double_t min, Double_t max) { 
    fUseCentrality = kTRUE;
    fCentralityPercentileMin=min;
    fCentralityPercentileMax=max;
  }
  void SetImpactParameterRange(Double_t min, Double_t max) { 
    fUseCentrality = kTRUE;
    fImpactParameterMin=min;
    fImpactParameterMax=max;
  }

  //multiplicity
  void SetMultiplicityEstimator(const char* multiplicityEstimator) {fMultiplicityEstimator = multiplicityEstimator;}
  const char* GetMultiplicityEstimator(void)  const              {return fMultiplicityEstimator;}
  void SetMultiplicityRange(Double_t min, Double_t max) {
    fUseMultiplicity = kTRUE;
    fNumberOfAcceptedTracksMin = min;
    fNumberOfAcceptedTracksMax = max;}
  
  // additional event cuts (default = kFALSE)
  void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}
  void CheckFirstEventInChunk() {fCheckFirstEventInChunk = kTRUE;}
  void CheckPileUp() {fCheckPileUp = kTRUE;}
  void CheckPrimaryFlagAOD() {fCheckPrimaryFlagAOD = kTRUE;}
  void UseMCforKinematics() {fUseMCforKinematics = kTRUE;}
  void SetCentralityWeights(TH1* hist) { fCentralityWeights = hist; }
  Bool_t AcceptEventCentralityWeight(Double_t centrality);

  
  //Acceptance filter
  void SetAcceptanceParameterization(TF1 *parameterization) {
    fAcceptanceParameterization = parameterization;}

  //pid
  enum kDetectorUsedForPID { kTPCpid, kTOFpid, kTPCTOF }; // default TPC & TOF pid (via GetTPCpid & GetTOFpid)  
  enum kParticleOfInterest { kMuon, kElectron, kPion, kKaon, kProton };

  void SetUseBayesianPID(Double_t gMinProbabilityValue) {
    fUsePID = kTRUE; fUsePIDnSigma = kFALSE; fUsePIDPropabilities = kTRUE;
    fMinAcceptedPIDProbability = gMinProbabilityValue; }

  void SetUseNSigmaPID(Double_t gMaxNSigma) {
    fUsePID = kTRUE; fUsePIDPropabilities = kFALSE; fUsePIDnSigma = kTRUE;
    fPIDNSigma = gMaxNSigma; }

  void SetParticleOfInterest(kParticleOfInterest poi) {
    fParticleOfInterest = poi;}
  void SetDetectorUsedForPID(kDetectorUsedForPID detConfig) {
    fPidDetectorConfig = detConfig;}
    void SetEventClass(TString receivedEventClass){
        fEventClass = receivedEventClass;
    }
    
  void SetCustomBinning(TString receivedCustomBinning) { fCustomBinning = receivedCustomBinning; }


    // electron rejection
    void SetElectronRejection(Double_t gMaxNSigma){
      fElectronRejection = kTRUE;
      fElectronRejectionNSigma = gMaxNSigma;
    }

    void SetElectronOnlyRejection(Double_t gMaxNSigma){
      fElectronRejection       = kTRUE;
      fElectronOnlyRejection   = kTRUE;
      fElectronRejectionNSigma = gMaxNSigma;
    }

    void SetElectronRejectionPt(Double_t minPt,Double_t maxPt){
      fElectronRejectionMinPt  = minPt;
      fElectronRejectionMaxPt  = maxPt;
    }

    void SetVZEROCalibrationFile(const char* filename, const char* lhcPeriod);

 private:
  Double_t    IsEventAccepted(AliVEvent* event);
  Double_t    GetRefMultiOrCentrality(AliVEvent* event);
  Double_t    GetReferenceMultiplicityFromAOD(AliVEvent* event);
  Double_t    GetEventPlane(AliVEvent* event);
  //===============================correction
  Double_t    GetTrackbyTrackCorrectionMatrix(Double_t vEta, 
					      Double_t vPhi, 
					      Double_t vPt, 
					      Short_t vCharge, 
					      Double_t gCentrality);
  //===============================correction
  TObjArray* GetAcceptedTracks(AliVEvent* event, Double_t gCentrality, Double_t gReactionPlane);
  TObjArray* GetShuffledTracks(TObjArray* tracks, Double_t gCentrality);

  Double_t GetChannelEqualizationFactor(Int_t run, Int_t channel);
  Double_t GetEqualizationFactor(Int_t run, const char *side);
 
  Bool_t fDebugLevel; // debug level

  TClonesArray* fArrayMC; //! AOD object  //+++++++++++++++++++++
  AliBalancePsi *fBalance; //BF object
  Bool_t fRunShuffling;//run shuffling or not
  AliBalancePsi *fShuffledBalance; //BF object (shuffled)
  Bool_t fRunMixing;//run mixing or not
  Bool_t fRunMixingEventPlane;//run mixing with Event Plane
  Int_t  fMixingTracks;
  AliBalancePsi *fMixedBalance; //TriggeredBF object (mixed)
  AliEventPoolManager*     fPoolMgr;         //! event pool manager

  TList *fList; //fList object
  TList *fListBF; //fList object
  TList *fListBFS; //fList object
  TList *fListBFM; //fList object
  TList *fHistListPIDQA;  //! list of histograms

  TH2F *fHistEventStats; //event stats
  TH2F *fHistCentStats; //centrality stats
  TH2F *fHistCentStatsUsed; //centrality stats USED
  TH1F *fHistTriggerStats; //trigger stats
  TH1F *fHistTrackStats; //Track filter bit stats
  TH1F *fHistVx; //x coordinate of the primary vertex
  TH1F *fHistVy; //y coordinate of the primary vertex
  TH2F *fHistVz; //z coordinate of the primary vertex

  TH2F *fHistTPCvsVZEROMultiplicity; //VZERO vs TPC reference multiplicity
  TH2F *fHistVZEROSignal; //VZERO channel vs signal

  TH2F *fHistEventPlane; //event plane distribution

  TH2F *fHistClus;//number of clusters (QA histogram)
  TH2F *fHistDCA;//DCA  (QA histogram)
  TH2F *fHistChi2;//track chi2 (QA histogram)
  TH2F *fHistPt;//transverse momentum (QA histogram)
  TH2F *fHistEta;//pseudorapidity (QA histogram)
  TH2F *fHistRapidity;//rapidity (QA histogram)
  TH2F *fHistPhi;//phi (QA histogram)
  TH3F *fHistEtaPhiPos;//eta-phi pos particles (QA histogram) 		 	 
  TH3F *fHistEtaPhiNeg;//eta-phi neg particles (QA histogram)
  TH2F *fHistPhiBefore;//phi before v2 afterburner (QA histogram)
  TH2F *fHistPhiAfter;//phi after v2 afterburner (QA histogram)
  TH2F *fHistPhiPos;//phi for positive particles (QA histogram)
  TH2F *fHistPhiNeg;//phi for negative particles (QA histogram)
  TH2F *fHistV0M;//V0 multiplicities (QA histogram)
  TH2F *fHistRefTracks;//reference track multiplicities (QA histogram)

  //============PID============//
  TH2D *fHistdEdxVsPTPCbeforePID;//TPC dEdx vs momentum before PID cuts (QA histogram)
  TH2D *fHistBetavsPTOFbeforePID;//beta vs momentum before PID cuts (QA histogram)
  TH2D *fHistProbTPCvsPtbeforePID; //TPC probability vs pT before PID cuts (QA histogram)
  TH2D *fHistProbTOFvsPtbeforePID;//TOF probability vs pT before PID cuts (QA histogram)
  TH2D *fHistProbTPCTOFvsPtbeforePID;//TOF/TPC probability vs pT before PID cuts (QA histogram)
  TH2D *fHistNSigmaTPCvsPtbeforePID;//TPC nsigma vs pT before PID cuts (QA histogram)
  TH2D *fHistNSigmaTOFvsPtbeforePID;//TOF nsigma vs pT before PID cuts (QA histogram)
  TH2D *fHistBetaVsdEdXbeforePID;//TPCTOF  before PID cuts (QA histogram)
  TH2D *fHistNSigmaTPCTOFvsPtbeforePID;//TPCTOF  before PID cuts (QA histogram)
  TH3D *fHistNSigmaTPCTOFPbefPID;//+++++++++++++++

  TH2D *fHistdEdxVsPTPCafterPID;//TPC dEdx vs momentum after PID cuts (QA histogram)
  TH2D *fHistBetavsPTOFafterPID;//beta vs momentum after PID cuts (QA histogram)
  TH2D *fHistProbTPCvsPtafterPID; //TPC probability vs pT after PID cuts (QA histogram)
  TH2D *fHistProbTOFvsPtafterPID;//TOF probability vs pT after PID cuts (QA histogram)
  TH2D *fHistProbTPCTOFvsPtafterPID;//TOF/TPC probability vs pT after PID cuts (QA histogram)
  TH2D *fHistNSigmaTPCvsPtafterPID;//TPC nsigma vs pT after PID cuts (QA histogram)
  TH2D *fHistNSigmaTOFvsPtafterPID;//TOF nsigma vs pT after PID cuts (QA histogram)
  TH2D *fHistBetaVsdEdXafterPID;//TPCTOF  before PID cuts (QA histogram)
  TH2D *fHistNSigmaTPCTOFvsPtafterPID;//TPCTOF  before PID cuts (QA histogram)
  TH3D *fHistNSigmaTPCTOFPafterPID; //++++++++++++++++++

  TH2D *fHistdEdxVsPTPCbeforePIDelectron; //!
  TH2D *fHistNSigmaTPCvsPtbeforePIDelectron; //!
  TH2D *fHistdEdxVsPTPCafterPIDelectron; //!
  TH2D *fHistNSigmaTPCvsPtafterPIDelectron; //!
  
  TH3F *fHistCorrectionPlus[kCENTRALITY]; //====correction
  TH3F *fHistCorrectionMinus[kCENTRALITY]; //===correction
  Double_t fCentralityArrayForCorrections[kCENTRALITY];
  Int_t fCentralityArrayBinsForCorrections;

  TH1* fCentralityWeights;		     // for centrality flattening

  AliPIDResponse *fPIDResponse;     //! PID response object
  AliPIDCombined       *fPIDCombined;     //! combined PID object
  
  kParticleOfInterest  fParticleOfInterest;//analyzed particle
  kDetectorUsedForPID   fPidDetectorConfig;//used detector for PID

  Bool_t fUsePID; //flag to use PID 
  Bool_t fUsePIDnSigma;//flag to use nsigma method for PID
  Bool_t fUsePIDPropabilities;//flag to use probability method for PID
  Double_t fPIDNSigma;//nsigma cut for PID
  Double_t fMinAcceptedPIDProbability;//probability cut for PID

  Bool_t   fElectronRejection;//flag to use electron rejection
  Bool_t   fElectronOnlyRejection;//flag to use electron rejection with exclusive electron PID (no other particle in nsigma range)
  Double_t fElectronRejectionNSigma;//nsigma cut for electron rejection
  Double_t fElectronRejectionMinPt;//minimum pt for electron rejection (default = 0.)
  Double_t fElectronRejectionMaxPt;//maximum pt for electron rejection (default = 1000.)
  //============PID============//

  AliESDtrackCuts *fESDtrackCuts; //ESD track cuts

  TString fCentralityEstimator;      //"V0M","TRK","TKL","ZDC","FMD"
  Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)
  Double_t fCentralityPercentileMin;//centrality percentile min
  Double_t fCentralityPercentileMax;//centrality percentile max
  Double_t fImpactParameterMin;//impact parameter min (used for MC)
  Double_t fImpactParameterMax;//impact parameter max (used for MC)

  TString fMultiplicityEstimator;//"V0M","V0A","V0C","TPC"
  Bool_t fUseMultiplicity;//use the multiplicity cuts
  Double_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)
  Double_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)
  TH2F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks
  TH1F *fHistMultiplicity;//hisot to store the number of accepted tracks

  Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection
  Bool_t fCheckFirstEventInChunk;//Usage of the "First Event in Chunk" check (not needed for new productions)
  Bool_t fCheckPileUp;//Usage of the "Pile-Up" event check
  Bool_t fCheckPrimaryFlagAOD;// Usage of check on AliAODtrack::kPrimary (default = OFF)
  Bool_t fUseMCforKinematics;//Usage of MC information for filling the kinematics information of particles (only in MCAODrec mode)

  Double_t fVxMax;//vxmax
  Double_t fVyMax;//vymax
  Double_t fVzMax;//vzmax

  Int_t fnAODtrackCutBit;//track cut bit from track selection (only used for AODs)

  Double_t fPtMin;//only used for AODs
  Double_t fPtMax;//only used for AODs
  Double_t fEtaMin;//only used for AODs
  Double_t fEtaMax;//only used for AODs
  Double_t fPhiMin;//only used for AODs
  Double_t fPhiMax;//only used for AODs 

  Double_t fDCAxyCut;//only used for AODs
  Double_t fDCAzCut;//only used for AODs

  Double_t fTPCchi2Cut;//only used for AODs
  Int_t fNClustersTPCCut;//only used for AODs
  Int_t fTPCsharedCut;//only used for AODs

  TF1 *fAcceptanceParameterization;//acceptance filter used for MC

  TF1 *fDifferentialV2;//pt-differential v2 (from real data)
  Bool_t fUseFlowAfterBurner;//Usage of a flow after burner

  Bool_t fExcludeResonancesInMC;//flag to exclude the resonances' decay products (and conversion) from the MC analysis
  Bool_t fExcludeElectronsInMC;//flag to exclude the electrons from the MC analysis
  Bool_t fUseMCPdgCode; //Boolean to analyze a set of particles in MC
  Int_t fPDGCodeToBeAnalyzed; //Analyze a set of particles in MC
  TString fEventClass; //Can be "EventPlane", "Centrality", "Multiplicity"
  TString fCustomBinning;//for setting customized binning (for output AliTHn of AliBalancePsi)
  
  //VZERO calibration
  TH1F *fHistVZEROAGainEqualizationMap;//VZERO calibration map
  TH1F *fHistVZEROCGainEqualizationMap;//VZERO calibration map
  TH2F *fHistVZEROChannelGainEqualizationMap; //VZERO calibration map

  AliAnalysisTaskBFPsi(const AliAnalysisTaskBFPsi&); // not implemented
  AliAnalysisTaskBFPsi& operator=(const AliAnalysisTaskBFPsi&); // not implemented
  
  ClassDef(AliAnalysisTaskBFPsi, 7); // example of analysis
};



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