ROOT logo
#ifndef ALIANAPI0_H
#define ALIANAPI0_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

//_________________________________________________________________________
// Class to fill two-photon invariant mass histograms 
// to be used to extract pi0 raw yield.
// Input is produced by AliAnaPhoton (or any other analysis producing output AliAODPWG4Particles), 
// it will do nothing if executed alone
//
//-- Author: Dmitri Peressounko (RRC "KI")
//-- Adapted to CaloTrackCorr frame by Lamia Benhabib (SUBATECH)
//-- and Gustavo Conesa (INFN-Frascati)

//Root
class TList;
class TH3F ;
class TH2F ;
class TObjString;

//Analysis
#include "AliAnaCaloTrackCorrBaseClass.h"
class AliAODEvent ;
class AliESDEvent ;
class AliAODPWG4Particle ;

class AliAnaPi0 : public AliAnaCaloTrackCorrBaseClass {
  
 public:   
  AliAnaPi0() ; // default ctor
  virtual ~AliAnaPi0() ;//virtual dtor
  
  //-------------------------------
  // General analysis frame methods
  //-------------------------------

  TObjString * GetAnalysisCuts();
  
  TList      * GetCreateOutputObjects(); 
  
  void         Print(const Option_t * opt) const;
  
  void         MakeAnalysisFillHistograms();
  
  void         InitParameters();
  
  //-------------------------------
  // EVENT Bin Methods
  //-------------------------------

  Int_t        GetEventIndex(AliAODPWG4Particle * part, Double_t * vert)  ;  

  //-------------------------------
	//Opening angle pair selection
  //-------------------------------
  void         SwitchOnAngleSelection()         { fUseAngleCut         = kTRUE  ; }
  void         SwitchOffAngleSelection()        { fUseAngleCut         = kFALSE ; }
  
  void         SwitchOnAngleEDepSelection()     { fUseAngleEDepCut     = kTRUE  ; }
  void         SwitchOffAngleEDepSelection()    { fUseAngleEDepCut     = kFALSE ; }
    
  void         SetAngleCut(Float_t a)           { fAngleCut            = a      ; }
  void         SetAngleMaxCut(Float_t a)        { fAngleMaxCut         = a      ; }

  void         SwitchOnFillAngleHisto()         { fFillAngleHisto      = kTRUE  ; }
  void         SwitchOffFillAngleHisto()        { fFillAngleHisto      = kFALSE ; }
  
  //------------------------------------------
  //Do analysis only with clusters in same SM or different combinations of SM
  //------------------------------------------
  void         SwitchOnSameSM()                 { fSameSM              = kTRUE  ; }
  void         SwitchOffSameSM()                { fSameSM              = kFALSE ; }
  
  void         SwitchOnSMCombinations()         { fFillSMCombinations  = kTRUE  ; }
  void         SwitchOffSMCombinations()        { fFillSMCombinations  = kFALSE ; }
  
  //-------------------------------
  //Histogram filling options off by default
  //-------------------------------
  void         SwitchOnInvPtWeight()            { fMakeInvPtPlots      = kTRUE  ; }
  void         SwitchOffInvPtWeight()           { fMakeInvPtPlots      = kFALSE ; }
  
  void         SwitchOnFillBadDistHisto()       { fFillBadDistHisto    = kTRUE  ; }
  void         SwitchOffFillBadDistHisto()      { fFillBadDistHisto    = kFALSE ; }
  
  //-------------------------------------------
  //Cuts for multiple analysis, off by default
  //-------------------------------------------
  void         SwitchOnMultipleCutAnalysis()    { fMultiCutAna         = kTRUE  ; }
  void         SwitchOffMultipleCutAnalysis()   { fMultiCutAna         = kFALSE ; }

  void         SetNPtCuts   (Int_t s)           { if(s <= 10)fNPtCuts    = s    ; }
  void         SetNAsymCuts (Int_t s)           { if(s <= 10)fNAsymCuts  = s    ; }
  void         SetNNCellCuts(Int_t s)           { if(s <= 10)fNCellNCuts = s    ; }
  void         SetNPIDBits  (Int_t s)           { if(s <= 10)fNPIDBits   = s    ; }
  
  void         SetPtCutsAt  (Int_t p,Float_t v) { if(p < 10)fPtCuts[p]   = v    ; }
  void         SetAsymCutsAt(Int_t p,Float_t v) { if(p < 10)fAsymCuts[p] = v    ; }
  void         SetNCellCutsAt(Int_t p,Int_t v)  { if(p < 10)fCellNCuts[p]= v    ; }
  void         SetPIDBitsAt  (Int_t p,Int_t v)  { if(p < 10)fPIDBits[p]  = v    ; }
  
  void         SwitchOnFillSSCombinations()     { fFillSSCombinations  = kTRUE  ; }
  void         SwitchOffFillSSCombinations()    { fFillSSCombinations  = kFALSE ; }
  
  void         SwitchOnFillAsymmetryHisto()     { fFillAsymmetryHisto  = kTRUE  ; }
  void         SwitchOffFillAsymmetryHisto()    { fFillAsymmetryHisto  = kFALSE ; }

  void         SwitchOnFillOriginHisto()        { fFillOriginHisto     = kTRUE  ; }
  void         SwitchOffFillOriginHisto()       { fFillOriginHisto     = kFALSE ; }

  void         SwitchOnFillArmenterosThetaStarHisto()  { fFillArmenterosThetaStar = kTRUE  ; }
  void         SwitchOffFillArmenterosThetaStarHisto() { fFillArmenterosThetaStar = kFALSE ; }
  
  //MC analysis related methods
    
  void         SwitchOnConversionChecker()      { fCheckConversion     = kTRUE  ; }
  void         SwitchOffConversionChecker()     { fCheckConversion     = kFALSE ; }  
  
  void         SwitchOnMultipleCutAnalysisInSimulation()  { fMultiCutAnaSim = kTRUE  ; }
  void         SwitchOffMultipleCutAnalysisInSimulation() { fMultiCutAnaSim = kFALSE ; }
  
  void         SwitchOnCheckAcceptanceInSector() { fCheckAccInSector   = kTRUE  ; }
  void         SwitchOffCheckAcceptanceInSector(){ fCheckAccInSector   = kFALSE ; }
  
  void         FillAcceptanceHistograms();
  void         FillMCVersusRecDataHistograms(Int_t    index1,  Int_t    index2,
                                             Float_t  pt1,     Float_t  pt2,
                                             Int_t    ncells1, Int_t    ncells2,
                                             Double_t mass,    Double_t pt,     Double_t asym,
                                             Double_t deta,    Double_t dphi);
  
  void         FillArmenterosThetaStar(Int_t pdg);

  
  private:

  TList ** fEventsList ;               //![GetNCentrBin()*GetNZvertBin()*GetNRPBin()] Containers for photons in stored events

  Int_t    fNModules ;                 // Number of EMCAL/PHOS modules, set as many histogras as modules 
  
  Bool_t   fUseAngleCut ;              // Select pairs depending on their opening angle
  Bool_t   fUseAngleEDepCut ;          // Select pairs depending on their opening angle
  Float_t  fAngleCut ;                 // Select pairs with opening angle larger than a threshold
  Float_t  fAngleMaxCut ;              // Select pairs with opening angle smaller than a threshold
  
  //Multiple cuts analysis
  Bool_t   fMultiCutAna;               // Do analysis with several or fixed cut
  Bool_t   fMultiCutAnaSim;            // Do analysis with several or fixed cut, in the simulation related part
  Int_t    fNPtCuts;                   // Number of pt cuts
  Float_t  fPtCuts[10];                // Array with different pt cuts
  Int_t    fNAsymCuts;                 // Number of assymmetry cuts
  Float_t  fAsymCuts[10];              // Array with different assymetry cuts
  Int_t    fNCellNCuts;                // Number of cuts with number of cells in cluster
  Int_t    fCellNCuts[10];             // Array with different cell number cluster cuts
  Int_t    fNPIDBits ;		             // Number of possible PID bit combinations
  Int_t    fPIDBits[10];               // Array with different PID bits
  
  //Switchs of different analysis options
  Bool_t   fMakeInvPtPlots;            // D plots with inverse pt weight
  Bool_t   fSameSM;                    // Select only pairs in same SM;
  Bool_t   fFillSMCombinations;        // Fill histograms with different cluster pairs in SM combinations
  Bool_t   fCheckConversion;           // Fill histograms with tagged photons as conversion
  Bool_t   fFillBadDistHisto;          // Do plots for different distances to bad channels
  Bool_t   fFillSSCombinations;        // Do invariant mass for different combination of shower shape clusters
  Bool_t   fFillAngleHisto;            // Fill histograms with pair opening angle
  Bool_t   fFillAsymmetryHisto;        // Fill histograms with asymmetry vs pt
  Bool_t   fFillOriginHisto;           // Fill histograms depending on their origin
  Bool_t   fFillArmenterosThetaStar;   // Fill armenteros histograms
  
  Bool_t   fCheckAccInSector;          // Check that the decay pi0 falls in the same SM or sector
  
  TLorentzVector fPhotonMom1;          //! photon cluster momentum
  TLorentzVector fPhotonMom1Boost;     //! photon cluster momentum
  TLorentzVector fPhotonMom2;          //! photon cluster momentum
  TLorentzVector fPi0Mom;              //! pi0 cluster momentum
  TVector3       fProdVertex;          //! production vertex
  
  //Histograms
  
  //Event characterization
  TH1F *   fhAverTotECluster;          //! Average number of clusters in SM
  TH1F *   fhAverTotECell;             //! Average number of cells    in SM
  TH2F *   fhAverTotECellvsCluster;    //! Average number of cells    in SM
  TH1F *   fhEDensityCluster;          //! Deposited energy in event per cluster
  TH1F *   fhEDensityCell;             //! Deposited energy in event per cell vs cluster
  TH2F *   fhEDensityCellvsCluster;    //! Deposited energy in event per cell vs cluster

  TH2F **  fhReMod ;                   //![fNModules]   REAL  two-photon invariant mass distribution for different calorimeter modules.
  TH2F **  fhReSameSideEMCALMod ;      //![fNModules-2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
  TH2F **  fhReSameSectorEMCALMod ;    //![fNModules/2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
  TH2F **  fhReDiffPHOSMod ;           //![fNModules]   REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
  TH2F **  fhMiMod ;                   //![fNModules]   MIXED two-photon invariant mass distribution for different calorimeter modules.
  TH2F **  fhMiSameSideEMCALMod ;      //![fNModules-2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
  TH2F **  fhMiSameSectorEMCALMod ;    //![fNModules/2] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
  TH2F **  fhMiDiffPHOSMod ;           //![fNModules-1] REAL  two-photon invariant mass distribution for different clusters in different calorimeter modules.
  
  // Pairs with at least one cluster tagged as conversion
  TH2F *   fhReConv ;                  //! REAL  two-photon invariant mass distribution one of the pair was 2 clusters with small mass 
  TH2F *   fhMiConv ;                  //! MIXED two-photon invariant mass distribution one of the pair was 2 clusters with small mass
  TH2F *   fhReConv2 ;                 //! REAL  two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass 
  TH2F *   fhMiConv2 ;                 //! MIXED two-photon invariant mass distribution both pair photons recombined from 2 clusters with small mass

  TH2F **  fhRe1 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
  TH2F **  fhMi1 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
  TH2F **  fhRe2 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
  TH2F **  fhMi2 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry
  TH2F **  fhRe3 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry 
  TH2F **  fhMi3 ;                     //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry

  //Histograms weighted by inverse pT
  TH2F **  fhReInvPt1 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
  TH2F **  fhMiInvPt1 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
  TH2F **  fhReInvPt2 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT 
  TH2F **  fhMiInvPt2 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
  TH2F **  fhReInvPt3 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] REAL  two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
  TH2F **  fhMiInvPt3 ;                //![GetNCentrBin()*fNPIDBits*fNAsymCuts] MIXED two-photon invariant mass distribution for different centralities and Asymmetry, inverse pT
  
  //Multiple cuts: Assymmetry, pt, n cells, PID
  TH2F **  fhRePtNCellAsymCuts ;       //![fNPtCuts*fNAsymCuts*fNCellNCuts*] REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry
  TH2F **  fhMiPtNCellAsymCuts ;       //![fNPtCuts*fNAsymCuts*fNCellNCuts] Mixed two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry
  TH2F **  fhRePtNCellAsymCutsSM[12] ; //![fNPtCuts*fNAsymCuts*fNCellNCutsfNModules] REAL two-photon invariant mass distribution for different pt cut, n cell cuts and assymetry for each module
 
  TH2F **  fhRePIDBits ;               //![fNPIDBits]  REAL two-photon invariant mass distribution for different PID bits
  TH3F **  fhRePtMult ;                //![fNAsymCuts] REAL two-photon invariant mass distribution for different track multiplicity and assymetry cuts
  TH2F *   fhReSS[3] ;                 //! Combine clusters with 3 different cuts on shower shape
  
  // Asymmetry vs pt, in pi0/eta regions
  TH2F *   fhRePtAsym    ;             //! REAL two-photon pt vs asymmetry
  TH2F *   fhRePtAsymPi0 ;             //! REAL two-photon pt vs asymmetry, close to pi0 mass
  TH2F *   fhRePtAsymEta ;             //! REAL two-photon pt vs asymmetry, close to eta mass
  
  //Centrality, Event plane bins
  TH1I *   fhEventBin;                 //! Number of real  pairs in a particular bin (cen,vz,rp)
  TH1I *   fhEventMixBin;              //! Number of mixed pairs in a particular bin (cen,vz,rp)
  TH1F *   fhCentrality;               //! Histogram with centrality bins with at least one pare
  TH1F *   fhCentralityNoPair;         //! Histogram with centrality bins with no pair

  TH2F *   fhEventPlaneResolution;     //! Histogram with Event plane resolution vs centrality
  
  // Pair opening angle
  TH2F *   fhRealOpeningAngle ;        //! Opening angle of pair versus pair energy
  TH2F *   fhRealCosOpeningAngle ;     //! Cosinus of opening angle of pair version pair energy
  TH2F *   fhMixedOpeningAngle ;       //! Opening angle of pair versus pair energy
  TH2F *   fhMixedCosOpeningAngle ;    //! Cosinus of opening angle of pair version pair energy
  
  //MC analysis histograms
  //Pi0 Acceptance
  TH1F *   fhPrimPi0E ;                //! Spectrum of Primary
  TH1F *   fhPrimPi0Pt ;               //! Spectrum of Primary
  TH1F *   fhPrimPi0AccE ;             //! Spectrum of primary with accepted daughters
  TH1F *   fhPrimPi0AccPt ;            //! Spectrum of primary with accepted daughters
  TH2F *   fhPrimPi0Y ;                //! Rapidity distribution of primary particles  vs pT
  TH2F *   fhPrimPi0AccY ;             //! Rapidity distribution of primary with accepted daughters  vs pT
  TH2F *   fhPrimPi0Yeta ;             //! PseudoRapidity distribution of primary particles  vs pT
  TH2F *   fhPrimPi0YetaYcut ;         //! PseudoRapidity distribution of primary particles  vs pT, Y<1
  TH2F *   fhPrimPi0AccYeta ;          //! PseudoRapidity distribution of primary with accepted daughters  vs pT
  TH2F *   fhPrimPi0Phi ;              //! Azimutal distribution of primary particles  vs pT
  TH2F *   fhPrimPi0AccPhi;            //! Azimutal distribution of primary with accepted daughters  vs pT
  TH2F *   fhPrimPi0OpeningAngle ;     //! Opening angle of pair versus pair energy, primaries
  TH2F *   fhPrimPi0OpeningAngleAsym ; //! Opening angle of pair versus pair E asymmetry, pi0 primaries
  TH2F *   fhPrimPi0CosOpeningAngle ;  //! Cosinus of opening angle of pair version pair energy, pi0 primaries
  TH2F *   fhPrimPi0PtCentrality ;     //! primary pi0 reconstructed centrality  vs pT
  TH2F *   fhPrimPi0PtEventPlane ;     //! primary pi0 reconstructed event plane vs pT
  TH2F *   fhPrimPi0AccPtCentrality ;  //! primary pi0 with accepted daughters reconstructed centrality  vs pT
  TH2F *   fhPrimPi0AccPtEventPlane ;  //! primary pi0 with accepted daughters reconstructed event plane vs pT

  //Eta acceptance
  TH1F *   fhPrimEtaE ;                //! Spectrum of Primary
  TH1F *   fhPrimEtaPt ;               //! Spectrum of Primary
  TH1F *   fhPrimEtaAccE ;             //! Spectrum of primary with accepted daughters
  TH1F *   fhPrimEtaAccPt ;            //! Spectrum of primary with accepted daughters
  TH2F *   fhPrimEtaY ;                //! Rapidity distribution of primary particles vs pT
  TH2F *   fhPrimEtaAccY ;             //! Rapidity distribution of primary with accepted daughters  vs pT
  TH2F *   fhPrimEtaYeta ;             //! PseudoRapidity distribution of primary particles vs pT
  TH2F *   fhPrimEtaYetaYcut ;         //! PseudoRapidity distribution of primary particles vs pT, Y<1
  TH2F *   fhPrimEtaAccYeta ;          //! PseudoRapidity distribution of primary with accepted daughters  vs pT
  TH2F *   fhPrimEtaPhi ;              //! Azimutal distribution of primary particles  vs pT
  TH2F *   fhPrimEtaAccPhi;            //! Azimutal distribution of primary with accepted daughters	 vs pT
  TH2F *   fhPrimEtaOpeningAngle ;     //! Opening angle of pair versus pair energy, eta primaries
  TH2F *   fhPrimEtaOpeningAngleAsym ; //! Opening angle of pair versus pair E asymmetry, eta primaries
  TH2F *   fhPrimEtaCosOpeningAngle ;  //! Cosinus of opening angle of pair version pair energy, eta primaries
  TH2F *   fhPrimEtaPtCentrality ;     //! primary eta reconstructed centrality  vs pT
  TH2F *   fhPrimEtaPtEventPlane ;     //! primary eta reconstructed event plane vs pT
  TH2F *   fhPrimEtaAccPtCentrality ;  //! primary eta with accepted daughters reconstructed centrality  vs pT
  TH2F *   fhPrimEtaAccPtEventPlane ;  //! primary eta with accepted daughters reconstructed event plane vs pT
  
  // Primaries origin
  TH2F *   fhPrimPi0PtOrigin ;         //! Spectrum of generated pi0 vs mother
  TH2F *   fhPrimEtaPtOrigin ;         //! Spectrum of generated eta vs mother
  
  //Pair origin
  //Array of histograms ordered as follows: 0-Photon, 1-electron, 2-pi0, 3-eta, 4-a-proton, 5-a-neutron, 6-stable particles, 
  // 7-other decays, 8-string, 9-final parton, 10-initial parton, intermediate, 11-colliding proton, 12-unrelated
  TH2F *   fhMCOrgMass[13];            //! Mass vs pt of real pairs, check common origin of pair
  TH2F *   fhMCOrgAsym[13];            //! Asymmetry vs pt of real pairs, check common origin of pair
  TH2F *   fhMCOrgDeltaEta[13];        //! Delta Eta vs pt of real pairs, check common origin of pair
  TH2F *   fhMCOrgDeltaPhi[13];        //! Delta Phi vs pt of real pairs, check common origin of pair
  
  //Multiple cuts in simulation, origin pi0 or eta
  TH2F **  fhMCPi0MassPtRec;           //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed mass vs reconstructed pt of original pair  
  TH2F **  fhMCPi0MassPtTrue;          //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed mass vs generated pt of original pair  
  TH2F **  fhMCPi0PtTruePtRec;         //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real pi0 pairs, reconstructed pt vs generated pt of pair
  TH2F **  fhMCEtaMassPtRec;           //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed mass vs reconstructed pt of original pair  
  TH2F **  fhMCEtaMassPtTrue;          //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed mass vs generated pt of original pair  
  TH2F **  fhMCEtaPtTruePtRec;         //![fNPtCuts*fNAsymCuts*fNCellNCuts] Real eta pairs, reconstructed pt vs generated pt of pair

  TH2F *   fhMCPi0PtOrigin ;           //! Mass of reoconstructed pi0 pairs  in calorimeter vs mother
  TH2F *   fhMCEtaPtOrigin ;           //! Mass of reoconstructed pi0 pairs  in calorimeter vs mother

  TH2F *   fhMCPi0ProdVertex;          //! Spectrum of selected pi0 vs production vertex
  TH2F *   fhMCEtaProdVertex;          //! Spectrum of selected eta vs production vertex
  TH2F *   fhPrimPi0ProdVertex;        //! Spectrum of primary pi0 vs production vertex
  TH2F *   fhPrimEtaProdVertex;        //! Spectrum of primary eta vs production vertex
  
  TH2F *   fhReMCFromConversion ;      //! Invariant mass of 2 clusters originated in conversions
  TH2F *   fhReMCFromNotConversion ;   //! Invariant mass of 2 clusters not originated in conversions
  TH2F *   fhReMCFromMixConversion ;   //! Invariant mass of 2 clusters one from conversion and the other not

  TH2F *   fhArmPrimPi0[4];            //! Armenteros plots for primary pi0 in 6 energy bins
  TH2F *   fhArmPrimEta[4];            //! Armenteros plots for primary eta in 6 energy bins
  TH2F *   fhCosThStarPrimPi0;         //! cos(theta*) plots vs E for primary pi0, same as asymmetry ...
  TH2F *   fhCosThStarPrimEta;         //! cos(theta*) plots vs E for primary eta, same as asymmetry ...
  
  TH2F *   fhEPairDiffTime;            //! E pair vs Pair of clusters time difference vs E
  
  AliAnaPi0(              const AliAnaPi0 & api0) ; // cpy ctor
  AliAnaPi0 & operator = (const AliAnaPi0 & api0) ; // cpy assignment
  
  ClassDef(AliAnaPi0,29)
} ;


#endif //ALIANAPI0_H



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