ROOT logo
 /**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//_________________________________________________________________________
// Class that contains methods to select candidate pairs to neutral meson 
// 2 main selections, invariant mass around pi0 (also any other mass),
// apperture angle to distinguish from combinatorial.
//-- Author: Gustavo Conesa (INFN-LNF)

// --- ROOT system ---
#include <TLorentzVector.h>
#include <TH2.h>
#include <TList.h>

//---- AliRoot system ----
#include "AliNeutralMesonSelection.h" 

ClassImp(AliNeutralMesonSelection)
  
  
//______________________________________________________
  AliNeutralMesonSelection::AliNeutralMesonSelection() : 
    TObject(),             fAsymmetryCut(1),                
    fUseAsymmetryCut(0),   fM(0),                 
    fInvMassMaxCut(0.),    fInvMassMinCut(0.),   
    fLeftBandMinCut(0.),   fLeftBandMaxCut(0.),            
    fRightBandMinCut(0.),  fRightBandMaxCut(0.),              
    fAngleMaxParam(),      fUseAngleCut(0),       
    fKeepNeutralMesonHistos(0),
    fParticle(""),         fDecayBit(0),
    // histograms
    fhAnglePairNoCut(0),          fhAnglePairOpeningAngleCut(0),   
    fhAnglePairAsymmetryCut(0),   fhAnglePairAllCut(0), 
    fhInvMassPairNoCut(0),        fhInvMassPairOpeningAngleCut(0), 
    fhInvMassPairAsymmetryCut(0), fhInvMassPairAllCut(0),
    fhAsymmetryNoCut(0),          fhAsymmetryOpeningAngleCut(0),   
    fhAsymmetryAllCut(0),
    // histogram ranges and bins
    fHistoNEBins(0),       fHistoEMax(0.),                  fHistoEMin(0.),
    fHistoNAngleBins(0),   fHistoAngleMax(0.),              fHistoAngleMin(0.),
    fHistoNIMBins(0),      fHistoIMMax(0.),                 fHistoIMMin(0.)
{
  //Default Ctor
  
  //Initialize parameters
  InitParameters();
}

//_________________________________________________________
TList *  AliNeutralMesonSelection::GetCreateOutputObjects()
{  
  // Create histograms to be saved in output file and 
  // store them in outputContainer of the analysis class that calls this class.
  
  TList * outputContainer = new TList() ; 
  outputContainer->SetName("MesonDecayHistos") ; 
  
  if(fKeepNeutralMesonHistos){
	  
	  outputContainer->SetOwner(kFALSE);
	  
	  fhAnglePairNoCut  = new TH2F
	  ("AnglePairNoCut",
	   "Angle between all #gamma pair vs E_{#pi^{0}}",fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNAngleBins,fHistoAngleMin,fHistoAngleMax); 
	  fhAnglePairNoCut->SetYTitle("Angle (rad)");
	  fhAnglePairNoCut->SetXTitle("E_{ #pi^{0}} (GeV)");
	      
    fhAsymmetryNoCut  = new TH2F
	  ("AsymmetryNoCut","Asymmetry of all #gamma pair vs E_{#pi^{0}}",
	   fHistoNEBins,fHistoEMin,fHistoEMax,100,0,1); 
	  fhAsymmetryNoCut->SetYTitle("Asymmetry");
	  fhAsymmetryNoCut->SetXTitle("E_{ #pi^{0}} (GeV)");    
    
    fhInvMassPairNoCut  = new TH2F
	  ("InvMassPairNoCut","Invariant Mass of all #gamma pair vs E_{#pi^{0}}",
	   fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNIMBins,fHistoIMMin,fHistoIMMax); 
	  fhInvMassPairNoCut->SetYTitle("Invariant Mass (GeV/c^{2})");
	  fhInvMassPairNoCut->SetXTitle("E_{ #pi^{0}} (GeV)");    
    
    outputContainer->Add(fhAnglePairNoCut) ; 
	  outputContainer->Add(fhAsymmetryNoCut) ; 
    outputContainer->Add(fhInvMassPairNoCut) ; 

    if(fUseAngleCut) {
      fhAnglePairOpeningAngleCut  = new TH2F
      ("AnglePairOpeningAngleCut",
       "Angle between all #gamma pair (opening angle) vs E_{#pi^{0}}"
       ,fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNAngleBins,fHistoAngleMin,fHistoAngleMax); 
      fhAnglePairOpeningAngleCut->SetYTitle("Angle (rad)");
      fhAnglePairOpeningAngleCut->SetXTitle("E_{ #pi^{0}} (GeV)");
      
      fhAsymmetryOpeningAngleCut  = new TH2F
      ("AsymmetryOpeningAngleCut",
       "Asymmetry of #gamma pair (angle cut) vs E_{#pi^{0}}",
       fHistoNEBins,fHistoEMin,fHistoEMax,100,0,1); 
      fhAsymmetryOpeningAngleCut->SetYTitle("Asymmetry");
      fhAsymmetryOpeningAngleCut->SetXTitle(" E_{#pi^{0}}(GeV)");   
      
      fhInvMassPairOpeningAngleCut  = new TH2F
      ("InvMassPairOpeningAngleCut",
       "Invariant Mass of #gamma pair (angle cut) vs E_{#pi^{0}}",
       fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNIMBins,fHistoIMMin,fHistoIMMax); 
      fhInvMassPairOpeningAngleCut->SetYTitle("Invariant Mass (GeV/c^{2})");
      fhInvMassPairOpeningAngleCut->SetXTitle(" E_{#pi^{0}}(GeV)");
      
      outputContainer->Add(fhAnglePairOpeningAngleCut) ;
      outputContainer->Add(fhAsymmetryOpeningAngleCut) ;
      outputContainer->Add(fhInvMassPairOpeningAngleCut) ;
    }
    
	  if(fUseAsymmetryCut) {
      fhAnglePairAsymmetryCut  = new TH2F
      ("AnglePairAsymmetryCut",
       "Angle between all #gamma pair (opening angle + asymetry cut) vs E_{#pi^{0}}"
       ,fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNAngleBins,fHistoAngleMin,fHistoAngleMax); 
      fhAnglePairAsymmetryCut->SetYTitle("Angle (rad)");
      fhAnglePairAsymmetryCut->SetXTitle("E_{ #pi^{0}} (GeV)");
      
      fhInvMassPairAsymmetryCut  = new TH2F
      ("InvMassPairAsymmetryCut",
       "Invariant Mass of #gamma pair (opening angle + asymmetry) vs E_{#pi^{0}}",
       fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNIMBins,fHistoIMMin,fHistoIMMax); 
      fhInvMassPairAsymmetryCut->SetYTitle("Invariant Mass (GeV/c^{2})");
      fhInvMassPairAsymmetryCut->SetXTitle("E_{#pi^{0}}(GeV)");      
      
      outputContainer->Add(fhAnglePairAsymmetryCut) ;
      outputContainer->Add(fhInvMassPairAsymmetryCut) ;
      
    }
    
	  fhAnglePairAllCut  = new TH2F
	  ("AnglePairAllCut",
	   "Angle between all #gamma pair (opening angle + asymmetry + inv mass cut) vs E_{#pi^{0}}"
	   ,fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNAngleBins,fHistoAngleMin,fHistoAngleMax); 
	  fhAnglePairAllCut->SetYTitle("Angle (rad)");
	  fhAnglePairAllCut->SetXTitle("E_{ #pi^{0}} (GeV)");    
        
	  fhInvMassPairAllCut  = new TH2F
	  ("InvMassPairAllCut",
	   "Invariant Mass of #gamma pair (opening angle + asymmetry + invmass cut) vs E_{#pi^{0}}",
	   fHistoNEBins,fHistoEMin,fHistoEMax,fHistoNIMBins,fHistoIMMin,fHistoIMMax); 
	  fhInvMassPairAllCut->SetYTitle("Invariant Mass (GeV/c^{2})");
	  fhInvMassPairAllCut->SetXTitle("E_{#pi^{0}}(GeV)");
	  
	  fhAsymmetryAllCut  = new TH2F
	  ("AsymmetryAllCut",
	   "Asymmetry of #gamma pair (opening angle+invmass cut) vs E_{#pi^{0}}",
	   fHistoNEBins,fHistoEMin,fHistoEMax,100,0,1); 
	  fhAsymmetryAllCut->SetYTitle("Asymmetry");
	  fhAsymmetryAllCut->SetXTitle("E_{#pi^{0}}(GeV)");
    
    outputContainer->Add(fhAnglePairAllCut) ; 
	  outputContainer->Add(fhAsymmetryAllCut) ; 
    outputContainer->Add(fhInvMassPairAllCut) ;     

  }
  
  return outputContainer;

}

//_____________________________________________
void AliNeutralMesonSelection::InitParameters()
{
  
  //Initialize the parameters of the analysis.
  fAngleMaxParam.Set(4) ;
  fAngleMaxParam.Reset(0.);

  SetParticle("Pi0");
  
  //Histogrammes settings
  fHistoNEBins     = 200 ;
  fHistoEMax       = 50  ;
  fHistoEMin       = 0.  ;  

  fHistoNAngleBins = 200 ;
  fHistoAngleMax   = 0.5 ;
  fHistoAngleMin   = 0.  ;

}

//______________________________________________________________________________
Bool_t AliNeutralMesonSelection::IsAngleInWindow(Float_t angle, Float_t e) const
{
 
  // Check if the opening angle of the candidate pairs is inside 
  // our selection window
  // Attention, only valid for Pi0, if needed for Eta need to revise max angle function or change parameters
  	
  Double_t max =  fAngleMaxParam.At(0)*TMath::Exp(fAngleMaxParam.At(1)*e)
    +fAngleMaxParam.At(2)+fAngleMaxParam.At(3)*e;
  Double_t arg = (e*e-2*fM*fM)/(e*e);
  Double_t min = 100. ;
  if(arg>0.)
    min = TMath::ACos(arg)+fShiftMinAngle[0]+fShiftMinAngle[1]*e;
  
  if((angle<max)&&(angle>=min)) return kTRUE  ;
  else                          return kFALSE ;

}

//_________________________________________________________________
Bool_t  AliNeutralMesonSelection::SelectPair(TLorentzVector gammai, 
                                             TLorentzVector gammaj, 
                                             Int_t calo)
{  
  
  //Search for the neutral pion within selection cuts
  
  //  Double_t pt  = (gammai+gammaj).Pt();
  Double_t phi = (gammai+gammaj).Phi();
  if(phi < 0)
    phi+=TMath::TwoPi();
  
  Double_t invmass = (gammai+gammaj).M();
  Double_t angle   = gammaj.Angle(gammai.Vect());
  Double_t e       = (gammai+gammaj).E();
  Double_t asy     = TMath::Abs((gammai-gammaj).E())/(gammai+gammaj).E();

  //Fill histograms with no cuts applied.
  if(fKeepNeutralMesonHistos)
  {
	  fhAnglePairNoCut  ->Fill(e,angle);
	  fhInvMassPairNoCut->Fill(e,invmass);
	  fhAsymmetryNoCut  ->Fill(e,asy);
  }
  
  //Cut on the aperture of the pair
  if(fUseAngleCut)
  {
    if(IsAngleInWindow(angle,e))
    {
      if(fKeepNeutralMesonHistos )
      {
        fhAnglePairOpeningAngleCut  ->Fill(e,angle);
        fhInvMassPairOpeningAngleCut->Fill(e,invmass);
        fhAsymmetryOpeningAngleCut  ->Fill(e,asy);
      }
      //AliDebug(2,Form("Angle cut: pt %f, phi %f",pt,phi));
    } else return kFALSE;
  }
  
  // Asymmetry cut
  if(fUseAsymmetryCut)
  {
    if(fAsymmetryCut > asy)
    {
      if(fKeepNeutralMesonHistos)
      {
        fhInvMassPairAsymmetryCut->Fill(e,invmass);
        fhAnglePairAsymmetryCut  ->Fill(e,angle);
      }
    } else return kFALSE;
  }
  
  
  //Cut on the invariant mass of the pair
  
  Float_t invmassmaxcut = fInvMassMaxCut;
  Float_t invmassRightBandMinCut = fRightBandMinCut;
  Float_t invmassRightBandMixCut = fRightBandMaxCut;

  // kEMCAL=0, kPHOS=1
  if(calo==0 && e > 6.)
  { // for EMCAL, pi0s, mass depends strongly with energy for e > 6, loose max cut
  
    invmassmaxcut = (fInvMassMaxCutParam[0]+fInvMassMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
    invmassRightBandMinCut = (fInvMassMaxCutParam[0]+fRightBandMinCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
    invmassRightBandMixCut = (fInvMassMaxCutParam[0]+fRightBandMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;

    //printf("e %f, max cut %f, p00 %f,p0 %f,p1 %f,p2 %f\n",
    //       e,invmassmaxcut,fInvMassMaxCut,fInvMassMaxCutParam[0],fInvMassMaxCutParam[1],fInvMassMaxCutParam[2]);
  }
  
  // normal case, invariant mass selection around pi0/eta peak
  if( !fParticle.Contains("SideBand") )
  {
    if( invmass > fInvMassMinCut && invmass < invmassmaxcut )
    { 
      if(fKeepNeutralMesonHistos)
      {
        fhInvMassPairAllCut->Fill(e,invmass);
        fhAnglePairAllCut  ->Fill(e,angle);
        fhAsymmetryAllCut  ->Fill(e,asy);
      }      
      
      //AliDebug(2,Form("IM cut: pt %f, phi %f",pt,phi));
      return kTRUE;
      
    }//(invmass>0.125) && (invmass<0.145)
    else 
    {
      return kFALSE;
    }
  }// normal selection
 
  else // select a band around pi0/eta
  {
    if((invmass > fLeftBandMinCut  && invmass < fLeftBandMaxCut ) ||  
       (invmass > invmassRightBandMinCut && invmass < invmassRightBandMixCut))
    { 
      if(fKeepNeutralMesonHistos)
      {
        fhInvMassPairAllCut->Fill(e,invmass);
        fhAnglePairAllCut  ->Fill(e,angle);
        fhAsymmetryAllCut  ->Fill(e,asy);
      }      
      
      //AliDebug(2,Form("IM cut: pt %f, phi %f",pt,phi));
      return kTRUE;
      
    }//(invmass>0.125) && (invmass<0.145)
    else 
    {
      return kFALSE;
    }
  }
  
}

//_______________________________________________________________
void  AliNeutralMesonSelection::SetParticle(TString particleName)
{
  // Set some default parameters for selection of pi0 or eta

  fParticle = particleName ;
  fDecayBit = kPi0;

  if(particleName.Contains("Pi0"))
  {
    fHistoNIMBins          = 150 ;
    fHistoIMMax            = 0.3 ;
    fHistoIMMin            = 0.  ;  
    
    fM                     = 0.135 ; // GeV
    fInvMassMaxCut         = 0.16  ; // GeV
    fInvMassMinCut         = 0.11  ; // GeV

    fLeftBandMinCut        = 0.05  ; // GeV
    fLeftBandMaxCut        = 0.09  ; // GeV
    fRightBandMinCut       = 0.160 ; // GeV
    fRightBandMaxCut       = 0.165 ; // GeV

    fInvMassMaxCutParam[0] = 0.0   ;
    fInvMassMaxCutParam[1] =-7.e-5 ;
    fInvMassMaxCutParam[2] = 8.e-5 ;    
         
    fShiftMinAngle[0]      =-0.03  ;
    fShiftMinAngle[1]      = 0.0025;
    
    fAngleMaxParam.AddAt( 0.8,  0) ;
    fAngleMaxParam.AddAt(-1,    1) ;
    fAngleMaxParam.AddAt( 0.09, 2) ; //for pi0 shift, for eta maybe 0.09 
    fAngleMaxParam.AddAt(-2.e-3,3) ;
    
    fDecayBit = kPi0;
    if(particleName.Contains("Side")) fDecayBit = kPi0Side;
  
  }  
  else if(particleName.Contains("Eta"))
  {
    fHistoNIMBins          = 200  ; // GeV
    fHistoIMMax            = 0.75 ; // GeV
    fHistoIMMin            = 0.35 ; // GeV 
  
    fM                     = 0.547 ; // GeV
    fInvMassMaxCut         = 0.590 ; // GeV
    fInvMassMinCut         = 0.510 ; // GeV
    
    fLeftBandMinCut        = 0.450 ; // GeV
    fLeftBandMaxCut        = 0.500 ; // GeV
    fRightBandMinCut       = 0.600 ; // GeV
    fRightBandMaxCut       = 0.650 ; // GeV
    
    fInvMassMaxCutParam[0] = 0.00 ;
    fInvMassMaxCutParam[1] = 0.00 ;
    fInvMassMaxCutParam[2] = 0.00 ;
    
    fShiftMinAngle[0]      =-0.03 ;
    fShiftMinAngle[0]      = 0.00 ;
    
    fAngleMaxParam.AddAt( 0.80,  0) ; // Same as pi0
    fAngleMaxParam.AddAt(-0.25,  1) ; // Same as pi0
    fAngleMaxParam.AddAt( 0.12,  2) ; // Shifted with respect to pi0
    fAngleMaxParam.AddAt(-5.e-4, 3) ; // Same as pi0
    
    fDecayBit = kEta;
    if(particleName.Contains("Side")) fDecayBit = kEtaSide;
  }
  else 
    printf("AliAnaNeutralMesonSelection::SetParticle(%s) *** Particle NOT defined (Pi0 or Eta), Pi0 settings by default *** \n",particleName.Data());
  
}

//______________________________________________________________
void AliNeutralMesonSelection::Print(const Option_t * opt) const
{

  //Print some relevant parameters set for the analysis
  if(! opt)
    return;
  
  printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;

  printf("Particle %s, bit %d, mass : %f  \n", fParticle.Data(), fDecayBit, fM );
  printf("Invariant mass limits : %f < m < %f \n", fInvMassMinCut , fInvMassMinCut );
  
  printf("Use asymmetry cut? : %d ; A < %f \n", fUseAngleCut, fAsymmetryCut );
  
  printf("Use angle cut? : %d  \n", fUseAngleCut );
  if(fUseAngleCut)
  {
    printf("Angle selection param: \n");
    printf("p0 :     %f\n", fAngleMaxParam.At(0));
    printf("p1 :     %f\n", fAngleMaxParam.At(1));
    printf("p2 :     %f\n", fAngleMaxParam.At(2));
    printf("p3 :     %f\n", fAngleMaxParam.At(3));
    printf("Min angle shift : p0 = %1.3f, p1 = %1.3f,\n", fShiftMinAngle[0],fShiftMinAngle[1]);
  }
  
  printf("Keep Neutral Meson Histos = %d\n",fKeepNeutralMesonHistos);
  
  if(fKeepNeutralMesonHistos)
  {
    printf("Histograms: %3.1f < E  < %3.1f,  Nbin = %d\n",   fHistoEMin,     fHistoEMax,     fHistoNEBins);
    printf("Histograms: %3.1f < angle < %3.1f, Nbin = %d\n", fHistoAngleMin, fHistoAngleMax, fHistoNAngleBins);
    printf("Histograms: %3.1f < IM < %3.1f, Nbin = %d\n",    fHistoIMMin,    fHistoIMMax,    fHistoNIMBins);    
  }
  
} 
 AliNeutralMesonSelection.cxx:1
 AliNeutralMesonSelection.cxx:2
 AliNeutralMesonSelection.cxx:3
 AliNeutralMesonSelection.cxx:4
 AliNeutralMesonSelection.cxx:5
 AliNeutralMesonSelection.cxx:6
 AliNeutralMesonSelection.cxx:7
 AliNeutralMesonSelection.cxx:8
 AliNeutralMesonSelection.cxx:9
 AliNeutralMesonSelection.cxx:10
 AliNeutralMesonSelection.cxx:11
 AliNeutralMesonSelection.cxx:12
 AliNeutralMesonSelection.cxx:13
 AliNeutralMesonSelection.cxx:14
 AliNeutralMesonSelection.cxx:15
 AliNeutralMesonSelection.cxx:16
 AliNeutralMesonSelection.cxx:17
 AliNeutralMesonSelection.cxx:18
 AliNeutralMesonSelection.cxx:19
 AliNeutralMesonSelection.cxx:20
 AliNeutralMesonSelection.cxx:21
 AliNeutralMesonSelection.cxx:22
 AliNeutralMesonSelection.cxx:23
 AliNeutralMesonSelection.cxx:24
 AliNeutralMesonSelection.cxx:25
 AliNeutralMesonSelection.cxx:26
 AliNeutralMesonSelection.cxx:27
 AliNeutralMesonSelection.cxx:28
 AliNeutralMesonSelection.cxx:29
 AliNeutralMesonSelection.cxx:30
 AliNeutralMesonSelection.cxx:31
 AliNeutralMesonSelection.cxx:32
 AliNeutralMesonSelection.cxx:33
 AliNeutralMesonSelection.cxx:34
 AliNeutralMesonSelection.cxx:35
 AliNeutralMesonSelection.cxx:36
 AliNeutralMesonSelection.cxx:37
 AliNeutralMesonSelection.cxx:38
 AliNeutralMesonSelection.cxx:39
 AliNeutralMesonSelection.cxx:40
 AliNeutralMesonSelection.cxx:41
 AliNeutralMesonSelection.cxx:42
 AliNeutralMesonSelection.cxx:43
 AliNeutralMesonSelection.cxx:44
 AliNeutralMesonSelection.cxx:45
 AliNeutralMesonSelection.cxx:46
 AliNeutralMesonSelection.cxx:47
 AliNeutralMesonSelection.cxx:48
 AliNeutralMesonSelection.cxx:49
 AliNeutralMesonSelection.cxx:50
 AliNeutralMesonSelection.cxx:51
 AliNeutralMesonSelection.cxx:52
 AliNeutralMesonSelection.cxx:53
 AliNeutralMesonSelection.cxx:54
 AliNeutralMesonSelection.cxx:55
 AliNeutralMesonSelection.cxx:56
 AliNeutralMesonSelection.cxx:57
 AliNeutralMesonSelection.cxx:58
 AliNeutralMesonSelection.cxx:59
 AliNeutralMesonSelection.cxx:60
 AliNeutralMesonSelection.cxx:61
 AliNeutralMesonSelection.cxx:62
 AliNeutralMesonSelection.cxx:63
 AliNeutralMesonSelection.cxx:64
 AliNeutralMesonSelection.cxx:65
 AliNeutralMesonSelection.cxx:66
 AliNeutralMesonSelection.cxx:67
 AliNeutralMesonSelection.cxx:68
 AliNeutralMesonSelection.cxx:69
 AliNeutralMesonSelection.cxx:70
 AliNeutralMesonSelection.cxx:71
 AliNeutralMesonSelection.cxx:72
 AliNeutralMesonSelection.cxx:73
 AliNeutralMesonSelection.cxx:74
 AliNeutralMesonSelection.cxx:75
 AliNeutralMesonSelection.cxx:76
 AliNeutralMesonSelection.cxx:77
 AliNeutralMesonSelection.cxx:78
 AliNeutralMesonSelection.cxx:79
 AliNeutralMesonSelection.cxx:80
 AliNeutralMesonSelection.cxx:81
 AliNeutralMesonSelection.cxx:82
 AliNeutralMesonSelection.cxx:83
 AliNeutralMesonSelection.cxx:84
 AliNeutralMesonSelection.cxx:85
 AliNeutralMesonSelection.cxx:86
 AliNeutralMesonSelection.cxx:87
 AliNeutralMesonSelection.cxx:88
 AliNeutralMesonSelection.cxx:89
 AliNeutralMesonSelection.cxx:90
 AliNeutralMesonSelection.cxx:91
 AliNeutralMesonSelection.cxx:92
 AliNeutralMesonSelection.cxx:93
 AliNeutralMesonSelection.cxx:94
 AliNeutralMesonSelection.cxx:95
 AliNeutralMesonSelection.cxx:96
 AliNeutralMesonSelection.cxx:97
 AliNeutralMesonSelection.cxx:98
 AliNeutralMesonSelection.cxx:99
 AliNeutralMesonSelection.cxx:100
 AliNeutralMesonSelection.cxx:101
 AliNeutralMesonSelection.cxx:102
 AliNeutralMesonSelection.cxx:103
 AliNeutralMesonSelection.cxx:104
 AliNeutralMesonSelection.cxx:105
 AliNeutralMesonSelection.cxx:106
 AliNeutralMesonSelection.cxx:107
 AliNeutralMesonSelection.cxx:108
 AliNeutralMesonSelection.cxx:109
 AliNeutralMesonSelection.cxx:110
 AliNeutralMesonSelection.cxx:111
 AliNeutralMesonSelection.cxx:112
 AliNeutralMesonSelection.cxx:113
 AliNeutralMesonSelection.cxx:114
 AliNeutralMesonSelection.cxx:115
 AliNeutralMesonSelection.cxx:116
 AliNeutralMesonSelection.cxx:117
 AliNeutralMesonSelection.cxx:118
 AliNeutralMesonSelection.cxx:119
 AliNeutralMesonSelection.cxx:120
 AliNeutralMesonSelection.cxx:121
 AliNeutralMesonSelection.cxx:122
 AliNeutralMesonSelection.cxx:123
 AliNeutralMesonSelection.cxx:124
 AliNeutralMesonSelection.cxx:125
 AliNeutralMesonSelection.cxx:126
 AliNeutralMesonSelection.cxx:127
 AliNeutralMesonSelection.cxx:128
 AliNeutralMesonSelection.cxx:129
 AliNeutralMesonSelection.cxx:130
 AliNeutralMesonSelection.cxx:131
 AliNeutralMesonSelection.cxx:132
 AliNeutralMesonSelection.cxx:133
 AliNeutralMesonSelection.cxx:134
 AliNeutralMesonSelection.cxx:135
 AliNeutralMesonSelection.cxx:136
 AliNeutralMesonSelection.cxx:137
 AliNeutralMesonSelection.cxx:138
 AliNeutralMesonSelection.cxx:139
 AliNeutralMesonSelection.cxx:140
 AliNeutralMesonSelection.cxx:141
 AliNeutralMesonSelection.cxx:142
 AliNeutralMesonSelection.cxx:143
 AliNeutralMesonSelection.cxx:144
 AliNeutralMesonSelection.cxx:145
 AliNeutralMesonSelection.cxx:146
 AliNeutralMesonSelection.cxx:147
 AliNeutralMesonSelection.cxx:148
 AliNeutralMesonSelection.cxx:149
 AliNeutralMesonSelection.cxx:150
 AliNeutralMesonSelection.cxx:151
 AliNeutralMesonSelection.cxx:152
 AliNeutralMesonSelection.cxx:153
 AliNeutralMesonSelection.cxx:154
 AliNeutralMesonSelection.cxx:155
 AliNeutralMesonSelection.cxx:156
 AliNeutralMesonSelection.cxx:157
 AliNeutralMesonSelection.cxx:158
 AliNeutralMesonSelection.cxx:159
 AliNeutralMesonSelection.cxx:160
 AliNeutralMesonSelection.cxx:161
 AliNeutralMesonSelection.cxx:162
 AliNeutralMesonSelection.cxx:163
 AliNeutralMesonSelection.cxx:164
 AliNeutralMesonSelection.cxx:165
 AliNeutralMesonSelection.cxx:166
 AliNeutralMesonSelection.cxx:167
 AliNeutralMesonSelection.cxx:168
 AliNeutralMesonSelection.cxx:169
 AliNeutralMesonSelection.cxx:170
 AliNeutralMesonSelection.cxx:171
 AliNeutralMesonSelection.cxx:172
 AliNeutralMesonSelection.cxx:173
 AliNeutralMesonSelection.cxx:174
 AliNeutralMesonSelection.cxx:175
 AliNeutralMesonSelection.cxx:176
 AliNeutralMesonSelection.cxx:177
 AliNeutralMesonSelection.cxx:178
 AliNeutralMesonSelection.cxx:179
 AliNeutralMesonSelection.cxx:180
 AliNeutralMesonSelection.cxx:181
 AliNeutralMesonSelection.cxx:182
 AliNeutralMesonSelection.cxx:183
 AliNeutralMesonSelection.cxx:184
 AliNeutralMesonSelection.cxx:185
 AliNeutralMesonSelection.cxx:186
 AliNeutralMesonSelection.cxx:187
 AliNeutralMesonSelection.cxx:188
 AliNeutralMesonSelection.cxx:189
 AliNeutralMesonSelection.cxx:190
 AliNeutralMesonSelection.cxx:191
 AliNeutralMesonSelection.cxx:192
 AliNeutralMesonSelection.cxx:193
 AliNeutralMesonSelection.cxx:194
 AliNeutralMesonSelection.cxx:195
 AliNeutralMesonSelection.cxx:196
 AliNeutralMesonSelection.cxx:197
 AliNeutralMesonSelection.cxx:198
 AliNeutralMesonSelection.cxx:199
 AliNeutralMesonSelection.cxx:200
 AliNeutralMesonSelection.cxx:201
 AliNeutralMesonSelection.cxx:202
 AliNeutralMesonSelection.cxx:203
 AliNeutralMesonSelection.cxx:204
 AliNeutralMesonSelection.cxx:205
 AliNeutralMesonSelection.cxx:206
 AliNeutralMesonSelection.cxx:207
 AliNeutralMesonSelection.cxx:208
 AliNeutralMesonSelection.cxx:209
 AliNeutralMesonSelection.cxx:210
 AliNeutralMesonSelection.cxx:211
 AliNeutralMesonSelection.cxx:212
 AliNeutralMesonSelection.cxx:213
 AliNeutralMesonSelection.cxx:214
 AliNeutralMesonSelection.cxx:215
 AliNeutralMesonSelection.cxx:216
 AliNeutralMesonSelection.cxx:217
 AliNeutralMesonSelection.cxx:218
 AliNeutralMesonSelection.cxx:219
 AliNeutralMesonSelection.cxx:220
 AliNeutralMesonSelection.cxx:221
 AliNeutralMesonSelection.cxx:222
 AliNeutralMesonSelection.cxx:223
 AliNeutralMesonSelection.cxx:224
 AliNeutralMesonSelection.cxx:225
 AliNeutralMesonSelection.cxx:226
 AliNeutralMesonSelection.cxx:227
 AliNeutralMesonSelection.cxx:228
 AliNeutralMesonSelection.cxx:229
 AliNeutralMesonSelection.cxx:230
 AliNeutralMesonSelection.cxx:231
 AliNeutralMesonSelection.cxx:232
 AliNeutralMesonSelection.cxx:233
 AliNeutralMesonSelection.cxx:234
 AliNeutralMesonSelection.cxx:235
 AliNeutralMesonSelection.cxx:236
 AliNeutralMesonSelection.cxx:237
 AliNeutralMesonSelection.cxx:238
 AliNeutralMesonSelection.cxx:239
 AliNeutralMesonSelection.cxx:240
 AliNeutralMesonSelection.cxx:241
 AliNeutralMesonSelection.cxx:242
 AliNeutralMesonSelection.cxx:243
 AliNeutralMesonSelection.cxx:244
 AliNeutralMesonSelection.cxx:245
 AliNeutralMesonSelection.cxx:246
 AliNeutralMesonSelection.cxx:247
 AliNeutralMesonSelection.cxx:248
 AliNeutralMesonSelection.cxx:249
 AliNeutralMesonSelection.cxx:250
 AliNeutralMesonSelection.cxx:251
 AliNeutralMesonSelection.cxx:252
 AliNeutralMesonSelection.cxx:253
 AliNeutralMesonSelection.cxx:254
 AliNeutralMesonSelection.cxx:255
 AliNeutralMesonSelection.cxx:256
 AliNeutralMesonSelection.cxx:257
 AliNeutralMesonSelection.cxx:258
 AliNeutralMesonSelection.cxx:259
 AliNeutralMesonSelection.cxx:260
 AliNeutralMesonSelection.cxx:261
 AliNeutralMesonSelection.cxx:262
 AliNeutralMesonSelection.cxx:263
 AliNeutralMesonSelection.cxx:264
 AliNeutralMesonSelection.cxx:265
 AliNeutralMesonSelection.cxx:266
 AliNeutralMesonSelection.cxx:267
 AliNeutralMesonSelection.cxx:268
 AliNeutralMesonSelection.cxx:269
 AliNeutralMesonSelection.cxx:270
 AliNeutralMesonSelection.cxx:271
 AliNeutralMesonSelection.cxx:272
 AliNeutralMesonSelection.cxx:273
 AliNeutralMesonSelection.cxx:274
 AliNeutralMesonSelection.cxx:275
 AliNeutralMesonSelection.cxx:276
 AliNeutralMesonSelection.cxx:277
 AliNeutralMesonSelection.cxx:278
 AliNeutralMesonSelection.cxx:279
 AliNeutralMesonSelection.cxx:280
 AliNeutralMesonSelection.cxx:281
 AliNeutralMesonSelection.cxx:282
 AliNeutralMesonSelection.cxx:283
 AliNeutralMesonSelection.cxx:284
 AliNeutralMesonSelection.cxx:285
 AliNeutralMesonSelection.cxx:286
 AliNeutralMesonSelection.cxx:287
 AliNeutralMesonSelection.cxx:288
 AliNeutralMesonSelection.cxx:289
 AliNeutralMesonSelection.cxx:290
 AliNeutralMesonSelection.cxx:291
 AliNeutralMesonSelection.cxx:292
 AliNeutralMesonSelection.cxx:293
 AliNeutralMesonSelection.cxx:294
 AliNeutralMesonSelection.cxx:295
 AliNeutralMesonSelection.cxx:296
 AliNeutralMesonSelection.cxx:297
 AliNeutralMesonSelection.cxx:298
 AliNeutralMesonSelection.cxx:299
 AliNeutralMesonSelection.cxx:300
 AliNeutralMesonSelection.cxx:301
 AliNeutralMesonSelection.cxx:302
 AliNeutralMesonSelection.cxx:303
 AliNeutralMesonSelection.cxx:304
 AliNeutralMesonSelection.cxx:305
 AliNeutralMesonSelection.cxx:306
 AliNeutralMesonSelection.cxx:307
 AliNeutralMesonSelection.cxx:308
 AliNeutralMesonSelection.cxx:309
 AliNeutralMesonSelection.cxx:310
 AliNeutralMesonSelection.cxx:311
 AliNeutralMesonSelection.cxx:312
 AliNeutralMesonSelection.cxx:313
 AliNeutralMesonSelection.cxx:314
 AliNeutralMesonSelection.cxx:315
 AliNeutralMesonSelection.cxx:316
 AliNeutralMesonSelection.cxx:317
 AliNeutralMesonSelection.cxx:318
 AliNeutralMesonSelection.cxx:319
 AliNeutralMesonSelection.cxx:320
 AliNeutralMesonSelection.cxx:321
 AliNeutralMesonSelection.cxx:322
 AliNeutralMesonSelection.cxx:323
 AliNeutralMesonSelection.cxx:324
 AliNeutralMesonSelection.cxx:325
 AliNeutralMesonSelection.cxx:326
 AliNeutralMesonSelection.cxx:327
 AliNeutralMesonSelection.cxx:328
 AliNeutralMesonSelection.cxx:329
 AliNeutralMesonSelection.cxx:330
 AliNeutralMesonSelection.cxx:331
 AliNeutralMesonSelection.cxx:332
 AliNeutralMesonSelection.cxx:333
 AliNeutralMesonSelection.cxx:334
 AliNeutralMesonSelection.cxx:335
 AliNeutralMesonSelection.cxx:336
 AliNeutralMesonSelection.cxx:337
 AliNeutralMesonSelection.cxx:338
 AliNeutralMesonSelection.cxx:339
 AliNeutralMesonSelection.cxx:340
 AliNeutralMesonSelection.cxx:341
 AliNeutralMesonSelection.cxx:342
 AliNeutralMesonSelection.cxx:343
 AliNeutralMesonSelection.cxx:344
 AliNeutralMesonSelection.cxx:345
 AliNeutralMesonSelection.cxx:346
 AliNeutralMesonSelection.cxx:347
 AliNeutralMesonSelection.cxx:348
 AliNeutralMesonSelection.cxx:349
 AliNeutralMesonSelection.cxx:350
 AliNeutralMesonSelection.cxx:351
 AliNeutralMesonSelection.cxx:352
 AliNeutralMesonSelection.cxx:353
 AliNeutralMesonSelection.cxx:354
 AliNeutralMesonSelection.cxx:355
 AliNeutralMesonSelection.cxx:356
 AliNeutralMesonSelection.cxx:357
 AliNeutralMesonSelection.cxx:358
 AliNeutralMesonSelection.cxx:359
 AliNeutralMesonSelection.cxx:360
 AliNeutralMesonSelection.cxx:361
 AliNeutralMesonSelection.cxx:362
 AliNeutralMesonSelection.cxx:363
 AliNeutralMesonSelection.cxx:364
 AliNeutralMesonSelection.cxx:365
 AliNeutralMesonSelection.cxx:366
 AliNeutralMesonSelection.cxx:367
 AliNeutralMesonSelection.cxx:368
 AliNeutralMesonSelection.cxx:369
 AliNeutralMesonSelection.cxx:370
 AliNeutralMesonSelection.cxx:371
 AliNeutralMesonSelection.cxx:372
 AliNeutralMesonSelection.cxx:373
 AliNeutralMesonSelection.cxx:374
 AliNeutralMesonSelection.cxx:375
 AliNeutralMesonSelection.cxx:376
 AliNeutralMesonSelection.cxx:377
 AliNeutralMesonSelection.cxx:378
 AliNeutralMesonSelection.cxx:379
 AliNeutralMesonSelection.cxx:380
 AliNeutralMesonSelection.cxx:381
 AliNeutralMesonSelection.cxx:382
 AliNeutralMesonSelection.cxx:383
 AliNeutralMesonSelection.cxx:384
 AliNeutralMesonSelection.cxx:385
 AliNeutralMesonSelection.cxx:386
 AliNeutralMesonSelection.cxx:387
 AliNeutralMesonSelection.cxx:388
 AliNeutralMesonSelection.cxx:389
 AliNeutralMesonSelection.cxx:390
 AliNeutralMesonSelection.cxx:391
 AliNeutralMesonSelection.cxx:392
 AliNeutralMesonSelection.cxx:393
 AliNeutralMesonSelection.cxx:394
 AliNeutralMesonSelection.cxx:395
 AliNeutralMesonSelection.cxx:396
 AliNeutralMesonSelection.cxx:397
 AliNeutralMesonSelection.cxx:398
 AliNeutralMesonSelection.cxx:399
 AliNeutralMesonSelection.cxx:400
 AliNeutralMesonSelection.cxx:401
 AliNeutralMesonSelection.cxx:402
 AliNeutralMesonSelection.cxx:403
 AliNeutralMesonSelection.cxx:404
 AliNeutralMesonSelection.cxx:405
 AliNeutralMesonSelection.cxx:406
 AliNeutralMesonSelection.cxx:407
 AliNeutralMesonSelection.cxx:408
 AliNeutralMesonSelection.cxx:409
 AliNeutralMesonSelection.cxx:410
 AliNeutralMesonSelection.cxx:411
 AliNeutralMesonSelection.cxx:412
 AliNeutralMesonSelection.cxx:413
 AliNeutralMesonSelection.cxx:414
 AliNeutralMesonSelection.cxx:415
 AliNeutralMesonSelection.cxx:416
 AliNeutralMesonSelection.cxx:417
 AliNeutralMesonSelection.cxx:418
 AliNeutralMesonSelection.cxx:419
 AliNeutralMesonSelection.cxx:420
 AliNeutralMesonSelection.cxx:421
 AliNeutralMesonSelection.cxx:422
 AliNeutralMesonSelection.cxx:423
 AliNeutralMesonSelection.cxx:424
 AliNeutralMesonSelection.cxx:425
 AliNeutralMesonSelection.cxx:426
 AliNeutralMesonSelection.cxx:427
 AliNeutralMesonSelection.cxx:428
 AliNeutralMesonSelection.cxx:429
 AliNeutralMesonSelection.cxx:430
 AliNeutralMesonSelection.cxx:431
 AliNeutralMesonSelection.cxx:432
 AliNeutralMesonSelection.cxx:433
 AliNeutralMesonSelection.cxx:434
 AliNeutralMesonSelection.cxx:435
 AliNeutralMesonSelection.cxx:436
 AliNeutralMesonSelection.cxx:437
 AliNeutralMesonSelection.cxx:438
 AliNeutralMesonSelection.cxx:439
 AliNeutralMesonSelection.cxx:440
 AliNeutralMesonSelection.cxx:441
 AliNeutralMesonSelection.cxx:442
 AliNeutralMesonSelection.cxx:443