ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2010, 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.                  *
 **************************************************************************/

/* $Id$ */

/////////////////////////////////////////////////////////////
//
// Base class for cuts on AOD reconstructed heavy-flavour decay
//
// Author: A.Dainese, andrea.dainese@pd.infn.it
/////////////////////////////////////////////////////////////
#include <Riostream.h>

#include "AliVEvent.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliVVertex.h"
#include "AliESDVertex.h"
#include "AliLog.h"
#include "AliAODVertex.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"
#include "AliESDtrackCuts.h"
#include "AliCentrality.h"
#include "AliAODRecoDecayHF.h"
#include "AliAnalysisVertexingHF.h"
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"
#include "AliVertexerTracks.h"
#include "AliRDHFCuts.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "AliPIDResponse.h"
#include "AliAnalysisUtils.h"
#include "TRandom.h"
#include <TF1.h>

using std::cout;
using std::endl;

ClassImp(AliRDHFCuts)

//--------------------------------------------------------------------------
AliRDHFCuts::AliRDHFCuts(const Char_t* name, const Char_t* title) : 
AliAnalysisCuts(name,title),
fMinVtxType(3),
fMinVtxContr(1),
fMaxVtxRedChi2(1e6),
fMaxVtxZ(10.),
fMinSPDMultiplicity(0),
fTriggerMask(AliVEvent::kAnyINT),
fUseOnlyOneTrigger(kFALSE),
fTrackCuts(0),
fnPtBins(1),
fnPtBinLimits(1),
fPtBinLimits(0),
fnVars(1),
fVarNames(0),
fnVarsForOpt(0),
fVarsForOpt(0),
fGlobalIndex(1),
fCutsRD(0),
fIsUpperCut(0),
fUsePID(kFALSE),
fUseAOD049(kFALSE),
fPidHF(0),
fWhyRejection(0),
fEvRejectionBits(0),
fRemoveDaughtersFromPrimary(kFALSE),
fUseMCVertex(kFALSE),
fUsePhysicsSelection(kTRUE),
fOptPileup(0),
fMinContrPileup(3),
fMinDzPileup(0.6),
fUseCentrality(0),
fMinCentrality(0.),
fMaxCentrality(100.),
fFixRefs(kFALSE),
fIsSelectedCuts(0),
fIsSelectedPID(0),
fMinPtCand(-1.),
fMaxPtCand(100000.),
fMaxRapidityCand(-999.),
fKeepSignalMC(kFALSE),
fIsCandTrackSPDFirst(kFALSE),
fMaxPtCandTrackSPDFirst(0.),
fApplySPDDeadPbPb2011(kFALSE),
fApplySPDMisalignedPP2012(kFALSE),
fMaxDiffTRKV0Centr(-1.),
fRemoveTrackletOutliers(kFALSE),
fCutOnzVertexSPD(0),
fKinkReject(kFALSE),
fUseTrackSelectionWithFilterBits(kTRUE),
fUseCentrFlatteningInMC(kFALSE),
fHistCentrDistr(0x0),
fCutRatioClsOverCrossRowsTPC(0),
fCutRatioSignalNOverCrossRowsTPC(0),
fCutMinCrossedRowsTPCPtDep(""),
f1CutMinNCrossedRowsTPCPtDep(0x0)
{
  //
  // Default Constructor
  //
  fTriggerClass[0]="CINT1"; fTriggerClass[1]="";
}
//--------------------------------------------------------------------------
AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) :
  AliAnalysisCuts(source),
  fMinVtxType(source.fMinVtxType),
  fMinVtxContr(source.fMinVtxContr),
  fMaxVtxRedChi2(source.fMaxVtxRedChi2),
  fMaxVtxZ(source.fMaxVtxZ),
  fMinSPDMultiplicity(source.fMinSPDMultiplicity),
  fTriggerMask(source.fTriggerMask),
  fUseOnlyOneTrigger(source.fUseOnlyOneTrigger),
  fTriggerClass(),
  fTrackCuts(0),
  fnPtBins(source.fnPtBins),
  fnPtBinLimits(source.fnPtBinLimits),
  fPtBinLimits(0),
  fnVars(source.fnVars),
  fVarNames(0),
  fnVarsForOpt(source.fnVarsForOpt),
  fVarsForOpt(0),
  fGlobalIndex(source.fGlobalIndex),
  fCutsRD(0),
  fIsUpperCut(0),
  fUsePID(source.fUsePID),
  fUseAOD049(source.fUseAOD049),
  fPidHF(0),
  fWhyRejection(source.fWhyRejection),
  fEvRejectionBits(source.fEvRejectionBits),
  fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary),
  fUseMCVertex(source.fUseMCVertex),
  fUsePhysicsSelection(source.fUsePhysicsSelection),
  fOptPileup(source.fOptPileup),
  fMinContrPileup(source.fMinContrPileup),
  fMinDzPileup(source.fMinDzPileup),
  fUseCentrality(source.fUseCentrality),
  fMinCentrality(source.fMinCentrality),
  fMaxCentrality(source.fMaxCentrality),
  fFixRefs(source.fFixRefs),
  fIsSelectedCuts(source.fIsSelectedCuts),
  fIsSelectedPID(source.fIsSelectedPID),
  fMinPtCand(source.fMinPtCand),
  fMaxPtCand(source.fMaxPtCand),
  fMaxRapidityCand(source.fMaxRapidityCand),
  fKeepSignalMC(source.fKeepSignalMC),
  fIsCandTrackSPDFirst(source.fIsCandTrackSPDFirst),
  fMaxPtCandTrackSPDFirst(source.fMaxPtCandTrackSPDFirst),
  fApplySPDDeadPbPb2011(source.fApplySPDDeadPbPb2011),
  fApplySPDMisalignedPP2012(source.fApplySPDMisalignedPP2012),
  fMaxDiffTRKV0Centr(source.fMaxDiffTRKV0Centr),
  fRemoveTrackletOutliers(source.fRemoveTrackletOutliers),
  fCutOnzVertexSPD(source.fCutOnzVertexSPD),
  fKinkReject(source.fKinkReject),
  fUseTrackSelectionWithFilterBits(source.fUseTrackSelectionWithFilterBits),
  fUseCentrFlatteningInMC(source.fUseCentrFlatteningInMC),
  fHistCentrDistr(0x0),
  fCutRatioClsOverCrossRowsTPC(source.fCutRatioClsOverCrossRowsTPC),
  fCutRatioSignalNOverCrossRowsTPC(source.fCutRatioSignalNOverCrossRowsTPC),
  fCutMinCrossedRowsTPCPtDep(""),
  f1CutMinNCrossedRowsTPCPtDep(0x0)
{
  //
  // Copy constructor
  //
  cout<<"Copy constructor"<<endl;
  fTriggerClass[0] = source.fTriggerClass[0]; 
  fTriggerClass[1] = source.fTriggerClass[1];
  if(source.GetTrackCuts()) AddTrackCuts(source.GetTrackCuts());
  if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
  if(source.fVarNames) SetVarNames(source.fnVars,source.fVarNames,source.fIsUpperCut);
  if(source.fCutsRD) SetCuts(source.fGlobalIndex,source.fCutsRD);
  if(source.fVarsForOpt) SetVarsForOpt(source.fnVarsForOpt,source.fVarsForOpt);
  if(source.fPidHF) SetPidHF(source.fPidHF);
  if(source.fHistCentrDistr) fHistCentrDistr=(TH1F*)(source.fHistCentrDistr->Clone());
  if(source.fCutMinCrossedRowsTPCPtDep) fCutMinCrossedRowsTPCPtDep=source.fCutMinCrossedRowsTPCPtDep;
  if(source.f1CutMinNCrossedRowsTPCPtDep) f1CutMinNCrossedRowsTPCPtDep=new TFormula(*(source.f1CutMinNCrossedRowsTPCPtDep));
  PrintAll();

}
//--------------------------------------------------------------------------
AliRDHFCuts &AliRDHFCuts::operator=(const AliRDHFCuts &source)
{
  //
  // assignment operator
  //
  if(&source == this) return *this;

  AliAnalysisCuts::operator=(source);

  fMinVtxType=source.fMinVtxType;
  fMinVtxContr=source.fMinVtxContr;
  fMaxVtxRedChi2=source.fMaxVtxRedChi2;
  fMaxVtxZ=source.fMaxVtxZ;
  fMinSPDMultiplicity=source.fMinSPDMultiplicity;
  fTriggerMask=source.fTriggerMask;
  fUseOnlyOneTrigger=source.fUseOnlyOneTrigger;
  fTriggerClass[0]=source.fTriggerClass[0];
  fTriggerClass[1]=source.fTriggerClass[1];
  fnPtBins=source.fnPtBins;
  fnPtBinLimits=source.fnPtBinLimits;
  fnVars=source.fnVars;
  fGlobalIndex=source.fGlobalIndex;
  fnVarsForOpt=source.fnVarsForOpt;
  fUsePID=source.fUsePID;
  fUseAOD049=source.fUseAOD049;
  if(fPidHF) delete fPidHF;
  fPidHF=new AliAODPidHF(*(source.GetPidHF()));
  fWhyRejection=source.fWhyRejection;
  fEvRejectionBits=source.fEvRejectionBits;
  fRemoveDaughtersFromPrimary=source.fRemoveDaughtersFromPrimary;
  fUseMCVertex=source.fUseMCVertex;
  fUsePhysicsSelection=source.fUsePhysicsSelection;
  fOptPileup=source.fOptPileup;
  fMinContrPileup=source.fMinContrPileup;
  fMinDzPileup=source.fMinDzPileup;
  fUseCentrality=source.fUseCentrality;
  fMinCentrality=source.fMinCentrality;
  fMaxCentrality=source.fMaxCentrality;
  fFixRefs=source.fFixRefs;
  fIsSelectedCuts=source.fIsSelectedCuts;
  fIsSelectedPID=source.fIsSelectedPID;
  fMinPtCand=source.fMinPtCand;
  fMaxPtCand=source.fMaxPtCand;
  fMaxRapidityCand=source.fMaxRapidityCand;
  fKeepSignalMC=source.fKeepSignalMC;
  fIsCandTrackSPDFirst=source.fIsCandTrackSPDFirst;
  fMaxPtCandTrackSPDFirst=source.fMaxPtCandTrackSPDFirst;
  fApplySPDDeadPbPb2011=source.fApplySPDDeadPbPb2011;
  fApplySPDMisalignedPP2012=source.fApplySPDMisalignedPP2012;
  fMaxDiffTRKV0Centr=source.fMaxDiffTRKV0Centr;
  fRemoveTrackletOutliers=source.fRemoveTrackletOutliers;
  fCutOnzVertexSPD=source.fCutOnzVertexSPD;
  fKinkReject=source.fKinkReject;
  fUseTrackSelectionWithFilterBits=source.fUseTrackSelectionWithFilterBits;
  if(fHistCentrDistr) delete fHistCentrDistr;
  fUseCentrFlatteningInMC=source.fUseCentrFlatteningInMC;
  if(source.fHistCentrDistr)fHistCentrDistr=(TH1F*)(source.fHistCentrDistr->Clone());

  if(source.GetTrackCuts()) {delete fTrackCuts; fTrackCuts=new AliESDtrackCuts(*(source.GetTrackCuts()));}
  if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
  if(source.fVarNames) SetVarNames(source.fnVars,source.fVarNames,source.fIsUpperCut);
  if(source.fCutsRD) SetCuts(source.fGlobalIndex,source.fCutsRD);
  if(source.fVarsForOpt) SetVarsForOpt(source.fnVarsForOpt,source.fVarsForOpt);
  
  if(fCutMinCrossedRowsTPCPtDep) fCutMinCrossedRowsTPCPtDep=source.fCutMinCrossedRowsTPCPtDep;
  if(f1CutMinNCrossedRowsTPCPtDep) delete f1CutMinNCrossedRowsTPCPtDep;
  if(source.f1CutMinNCrossedRowsTPCPtDep) f1CutMinNCrossedRowsTPCPtDep=new TFormula(*(source.f1CutMinNCrossedRowsTPCPtDep));
  fCutRatioClsOverCrossRowsTPC=source.fCutRatioClsOverCrossRowsTPC;
  fCutRatioSignalNOverCrossRowsTPC=source.fCutRatioSignalNOverCrossRowsTPC;
  PrintAll();

  return *this;
}
//--------------------------------------------------------------------------
AliRDHFCuts::~AliRDHFCuts() {
  //  
  // Default Destructor
  //
  if(fTrackCuts) { delete fTrackCuts; fTrackCuts=0; }
  if(fPtBinLimits) {delete [] fPtBinLimits; fPtBinLimits=0;}
  if(fVarNames) {delete [] fVarNames; fVarNames=0;}
  if(fVarsForOpt) {delete [] fVarsForOpt; fVarsForOpt=0;}
  if(fCutsRD) {
    delete [] fCutsRD;
    fCutsRD=0;
  }
  if(fIsUpperCut) {delete [] fIsUpperCut; fIsUpperCut=0;}
  if(fPidHF){ 
    delete fPidHF;
    fPidHF=0;
  }
  if(fHistCentrDistr)delete fHistCentrDistr;

  if(f1CutMinNCrossedRowsTPCPtDep) {
    delete f1CutMinNCrossedRowsTPCPtDep;
    f1CutMinNCrossedRowsTPCPtDep = 0;
  }

}
//---------------------------------------------------------------------------
Int_t AliRDHFCuts::IsEventSelectedInCentrality(AliVEvent *event) {
  //
  // Centrality selection
  //
  if(fUseCentrality<kCentOff||fUseCentrality>=kCentInvalid){    
    AliWarning("Centrality estimator not valid");    
    return 3;  
  }else{    
    Float_t centvalue=GetCentrality((AliAODEvent*)event);          
    if (centvalue<-998.){//-999 if no centralityP
      return 0;    
    }else{      
      if (centvalue<fMinCentrality || centvalue>fMaxCentrality){
	return 2;      
      }
      // selection to flatten the centrality distribution
      if(fHistCentrDistr){
	if(!IsEventSelectedForCentrFlattening(centvalue))return 4;     
      }
    } 
  }  
  return 0;
}


//-------------------------------------------------
void AliRDHFCuts::SetHistoForCentralityFlattening(TH1F *h,Double_t minCentr,Double_t maxCentr,Double_t centrRef,Int_t switchTRand){
  // set the histo for centrality flattening 
  // the centrality is flatten in the range minCentr,maxCentr
  // if centrRef is zero, the minimum in h within (minCentr,maxCentr) defines the reference 
  //                positive, the value of h(centrRef) defines the reference (-> the centrality distribution might be not flat in the whole desired range)
  //                negative, h(bin with max in range)*centrRef is used to define the reference (-> defines the maximum loss of events, also in this case the distribution might be not flat) 
  // switchTRand is used to set the unerflow bin of the histo: if it is < -1 in the analysis the random event selection will be done on using TRandom 
  
  if(maxCentr<minCentr){
    AliWarning("AliRDHFCuts::Wrong centralities values while setting the histogram for centrality flattening");
  }
  
  if(fHistCentrDistr)delete fHistCentrDistr;
  fHistCentrDistr=(TH1F*)h->Clone("hCentralityFlat");
  fHistCentrDistr->SetTitle("Reference histo for centrality flattening");
  Int_t minbin=fHistCentrDistr->FindBin(minCentr*1.00001); // fast if fix bin width
  Int_t maxbin=fHistCentrDistr->FindBin(maxCentr*0.9999);
  fHistCentrDistr->GetXaxis()->SetRange(minbin,maxbin);
  Double_t ref=0.,bincont=0.,binrefwidth=1.;
  Int_t binref=0;
  if(TMath::Abs(centrRef)<0.0001){
    binref=fHistCentrDistr->GetMinimumBin();
    binrefwidth=fHistCentrDistr->GetBinWidth(binref);
    ref=fHistCentrDistr->GetBinContent(binref)/binrefwidth;   
  }
  else if(centrRef>0.){
    binref=h->FindBin(centrRef);
    if(binref<1||binref>h->GetNbinsX()){
      AliWarning("AliRDHFCuts::Wrong centrality reference value while setting the histogram for centrality flattening");
    }
    binrefwidth=fHistCentrDistr->GetBinWidth(binref);
    ref=fHistCentrDistr->GetBinContent(binref)/binrefwidth;
  }
  else{
    if(centrRef<-1) AliWarning("AliRDHFCuts: with this centrality reference no flattening will be applied");
    binref=fHistCentrDistr->GetMaximumBin();
    binrefwidth=fHistCentrDistr->GetBinWidth(binref);
    ref=fHistCentrDistr->GetMaximum()*TMath::Abs(centrRef)/binrefwidth;   
  }
  
  for(Int_t j=1;j<=h->GetNbinsX();j++){// Now set the "probabilities"
    if(h->GetBinLowEdge(j)*1.0001>=minCentr&&h->GetBinLowEdge(j+1)*0.9999<=maxCentr){
      bincont=h->GetBinContent(j);
      fHistCentrDistr->SetBinContent(j,ref/bincont*h->GetBinWidth(j));
      fHistCentrDistr->SetBinError(j,h->GetBinError(j)*ref/bincont);
    }
    else{
      h->SetBinContent(j,1.1);// prob > 1 to assure that events will not be rejected
    }
  }

  fHistCentrDistr->SetBinContent(0,switchTRand);
  return;

}

//-------------------------------------------------
Bool_t AliRDHFCuts::IsEventSelectedForCentrFlattening(Float_t centvalue){
  //
  //  Random event selection, based on fHistCentrDistr, to flatten the centrality distribution
  //  Can be faster if it was required that fHistCentrDistr covers
  //  exactly the desired centrality range (e.g. part of the lines below should be done during the 
  // setting of the histo) and TH1::SetMinimum called 
  //

  if(!fHistCentrDistr) return kTRUE;
  // Int_t maxbin=fHistCentrDistr->FindBin(fMaxCentrality*0.9999);
  //   if(maxbin>fHistCentrDistr->GetNbinsX()){
  //     AliWarning("AliRDHFCuts: The maximum centrality exceeds the x-axis limit of the histogram for centrality flattening");
  //   }
  
  Int_t bin=fHistCentrDistr->FindBin(centvalue); // Fast if the histo has a fix bin
  Double_t bincont=fHistCentrDistr->GetBinContent(bin);
  Double_t centDigits=centvalue-(Int_t)(centvalue*100.)/100.;// this is to extract a random number between 0 and 0.01
  
  if(fHistCentrDistr->GetBinContent(0)<-0.9999){
    if(gRandom->Uniform(1.)<bincont)return kTRUE;
    return kFALSE;
  }

  if(centDigits*100.<bincont)return kTRUE;
  return kFALSE;   

}
//---------------------------------------------------------------------------
void AliRDHFCuts::SetupPID(AliVEvent *event) {
  // Set the PID response object in the AliAODPidHF
  // in case of old PID sets the TPC dE/dx BB parameterization

  if(fPidHF){
    if(fPidHF->GetPidResponse()==0x0){
      AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
      AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
      AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
      fPidHF->SetPidResponse(pidResp);
    }
    if(fPidHF->GetUseCombined()) fPidHF->SetUpCombinedPID();
    if(fPidHF->GetOldPid()) {

      Bool_t isMC=kFALSE;
      TClonesArray *mcArray = (TClonesArray*)((AliAODEvent*)event)->GetList()->FindObject(AliAODMCParticle::StdBranchName());
      if(mcArray) {isMC=kTRUE;fUseAOD049=kFALSE;}

      // pp, from LHC10d onwards
      if((event->GetRunNumber()>121693 && event->GetRunNumber()<136851) ||
	 event->GetRunNumber()>139517) fPidHF->SetOnePad(kTRUE);
      // pp, 2011 low energy run
      if((event->GetRunNumber()>=146686 && event->GetRunNumber()<=146860)){
	fPidHF->SetppLowEn2011(kTRUE);
	fPidHF->SetOnePad(kFALSE);
      }
      // PbPb LHC10h
      if(event->GetRunNumber()>=136851 && event->GetRunNumber()<=139517) fPidHF->SetPbPb(kTRUE);
      // MC
      if(isMC) fPidHF->SetMC(kTRUE);
      if(isMC && (event->GetRunNumber()>=146686 && event->GetRunNumber()<=146860))
	fPidHF->SetMClowenpp2011(kTRUE);
      fPidHF->SetBetheBloch();
    }else{
      // check that AliPIDResponse object was properly set in case of using OADB
      if(fPidHF->GetPidResponse()==0x0) AliFatal("AliPIDResponse object not set");
    }
  }
}
//---------------------------------------------------------------------------
Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) {
  //
  // Event selection
  // 
  //if(fTriggerMask && event->GetTriggerMask()!=fTriggerMask) return kFALSE;



  fWhyRejection=0;
  fEvRejectionBits=0;
  Bool_t accept=kTRUE;


  // check if it's MC
  Bool_t isMC=kFALSE;
  TClonesArray *mcArray = (TClonesArray*)((AliAODEvent*)event)->GetList()->FindObject(AliAODMCParticle::StdBranchName());
  if(mcArray) {isMC=kTRUE;fUseAOD049=kFALSE;}


  SetupPID(event);

  // trigger class
  TString firedTriggerClasses=((AliAODEvent*)event)->GetFiredTriggerClasses();
  // don't do for MC and for PbPb 2010 data
  if(!isMC && (event->GetRunNumber()<136851 || event->GetRunNumber()>139517)) {
    if(!firedTriggerClasses.Contains(fTriggerClass[0].Data()) && 
       (fTriggerClass[1].CompareTo("")==0 || !firedTriggerClasses.Contains(fTriggerClass[1].Data())) ) {
      fWhyRejection=5;
      fEvRejectionBits+=1<<kNotSelTrigger;
      accept=kFALSE;
    }
  }

  // TEMPORARY FIX FOR GetEvent
  Int_t nTracks=((AliAODEvent*)event)->GetNumberOfTracks();
  for(Int_t itr=0; itr<nTracks; itr++){
    AliAODTrack* tr=(AliAODTrack*)((AliAODEvent*)event)->GetTrack(itr);
    tr->SetAODEvent((AliAODEvent*)event);
  }

  // TEMPORARY FIX FOR REFERENCES
  // Fix references to daughter tracks
  //  if(fFixRefs) {
  //    AliAnalysisVertexingHF *fixer = new AliAnalysisVertexingHF();
  //    fixer->FixReferences((AliAODEvent*)event);
  //    delete fixer;
  //  }
  //


  // physics selection requirements
  if(fUsePhysicsSelection){
    Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & fTriggerMask);
    if(!isSelected) {
      if(accept) fWhyRejection=7;
      fEvRejectionBits+=1<<kPhysicsSelection;
      accept=kFALSE;
    }else{
      if(fUseOnlyOneTrigger){
	if(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()!=fTriggerMask){
	  if(accept) fWhyRejection=7;
	  fEvRejectionBits+=1<<kPhysicsSelection;
	  accept=kFALSE;
	}
      }
    }
  }

  // vertex requirements
   
  const AliVVertex *vertex = event->GetPrimaryVertex();

  if(!vertex){
    accept=kFALSE;
    fEvRejectionBits+=1<<kNoVertex;
  }else{
    TString title=vertex->GetTitle();
    if(title.Contains("Z") && fMinVtxType>1){
      accept=kFALSE;
      fEvRejectionBits+=1<<kNoVertex;
    }
    else if(title.Contains("3D") && fMinVtxType>2){
      accept=kFALSE;
      fEvRejectionBits+=1<<kNoVertex;
    }
    if(vertex->GetNContributors()<fMinVtxContr){
      accept=kFALSE;
      fEvRejectionBits+=1<<kTooFewVtxContrib;
    }
    if(TMath::Abs(vertex->GetZ())>fMaxVtxZ) {
      fEvRejectionBits+=1<<kZVtxOutFid;
      if(accept) fWhyRejection=6;
      accept=kFALSE;
    } 
  }

  if(fCutOnzVertexSPD>0){
    const AliVVertex *vSPD = ((AliAODEvent*)event)->GetPrimaryVertexSPD();
    if(!vSPD || (vSPD && vSPD->GetNContributors()<fMinVtxContr)){
      accept=kFALSE;
      fEvRejectionBits+=1<<kBadSPDVertex;
    }else{
      if(fCutOnzVertexSPD==1 && TMath::Abs(vSPD->GetZ())>12.) {
	fEvRejectionBits+=1<<kZVtxSPDOutFid;
	if(accept) fWhyRejection=6;
	accept=kFALSE;
      } 
      if(fCutOnzVertexSPD==2 && vertex){
	if(TMath::Abs(vSPD->GetZ()-vertex->GetZ())>0.5) {
	  fEvRejectionBits+=1<<kZVtxSPDOutFid;
	  if(accept) fWhyRejection=6;
	  accept=kFALSE;
	} 
      }
    }
  }

  // pile-up rejection
  if(fOptPileup==kRejectPileupEvent){
    Int_t cutc=(Int_t)fMinContrPileup;
    Double_t cutz=(Double_t)fMinDzPileup;
    if(event->IsPileupFromSPD(cutc,cutz,3.,2.,10.)) {
      if(accept) fWhyRejection=1;
      fEvRejectionBits+=1<<kPileup;
      accept=kFALSE;
    }
  }
  else if(fOptPileup==kRejectMVPileupEvent){
    AliAnalysisUtils utils;
    Bool_t isPUMV = utils.IsPileUpMV(event);
    if(isPUMV) {
      if(accept) fWhyRejection=1;
      fEvRejectionBits+=1<<kPileup;
      accept=kFALSE;
    }
  }

  // centrality selection
  if (fUseCentrality!=kCentOff) {  
    Int_t rejection=IsEventSelectedInCentrality(event);    
    Bool_t okCent=kFALSE;
    if(rejection==0) okCent=kTRUE;
    if(isMC && rejection==4 && !fUseCentrFlatteningInMC) okCent=kTRUE;
    if(!okCent){      
      if(accept) fWhyRejection=rejection;      
      if(fWhyRejection==4)fEvRejectionBits+=1<<kCentralityFlattening;
      else fEvRejectionBits+=1<<kOutsideCentrality;
      accept=kFALSE;
    }
   
  }

  // PbPb2011 outliers in tracklets vs. VZERO and centTRK vs. centV0
  if(event->GetRunNumber()>=167693 && event->GetRunNumber()<=170593){
    if(fRemoveTrackletOutliers){
      Double_t v0cent=GetCentrality((AliAODEvent*)event,kCentV0M);
      Double_t ntracklets=((AliAODEvent*)event)->GetTracklets()->GetNumberOfTracklets();
      Double_t cutval=60.-0.08*ntracklets+1./50000.*ntracklets*ntracklets;
      if(ntracklets<1000. && v0cent<cutval){
	if(accept) fWhyRejection=2;      
	fEvRejectionBits+=1<<kOutsideCentrality;
	 accept=kFALSE;
      }
    }
    if(fMaxDiffTRKV0Centr>0.){
      Double_t v0cent=GetCentrality((AliAODEvent*)event,kCentV0M);
      Double_t trkcent=GetCentrality((AliAODEvent*)event,kCentTRK);
      if(TMath::Abs(trkcent-v0cent)>fMaxDiffTRKV0Centr){
	if(accept) fWhyRejection=1;
	fEvRejectionBits+=1<<kBadTrackV0Correl;
	accept=kFALSE;	
      }
    }
  }

  // Correcting PP2012 flag to remoce tracks crossing SPD misaligned staves for periods 12def
  if(fApplySPDMisalignedPP2012 && !(event->GetRunNumber()>=195681 && event->GetRunNumber()<=197388)) fApplySPDMisalignedPP2012=false;

  return accept;
}
//---------------------------------------------------------------------------
Bool_t AliRDHFCuts::AreDaughtersSelected(AliAODRecoDecayHF *d) const{
  //
  // Daughter tracks selection
  // 
  if(!fTrackCuts) return kTRUE;
 
  Int_t ndaughters = d->GetNDaughters();
  AliAODVertex *vAOD = d->GetPrimaryVtx();
  Double_t pos[3],cov[6];
  vAOD->GetXYZ(pos);
  vAOD->GetCovarianceMatrix(cov);
  const AliESDVertex vESD(pos,cov,100.,100);
  
  Bool_t retval=kTRUE;
  
  for(Int_t idg=0; idg<ndaughters; idg++) {
    AliAODTrack *dgTrack = (AliAODTrack*)d->GetDaughter(idg);
    if(!dgTrack) {retval = kFALSE; continue;}
    //printf("charge %d\n",dgTrack->Charge());
    if(dgTrack->Charge()==0) continue; // it's not a track, but a V0

    if(fIsCandTrackSPDFirst && d->Pt()<fMaxPtCandTrackSPDFirst)
      { if(!dgTrack->HasPointOnITSLayer(0)) { retval = kFALSE; continue; } }

    if(!IsDaughterSelected(dgTrack,&vESD,fTrackCuts)) retval = kFALSE;
  }
  
  return retval;
}
//---------------------------------------------------------------------------
Bool_t AliRDHFCuts::CheckPtDepCrossedRows(TString rows,Bool_t print) const {
  //
  // Check the correctness of the string syntax
  //
  Bool_t retval=kTRUE;

  if(!rows.Contains("pt")) {
    if(print) AliError("string must contain \"pt\"");
    retval= kFALSE;
  }
  return retval;
}
//---------------------------------------------------------------------------
void AliRDHFCuts::SetMinCrossedRowsTPCPtDep(const char *rows){
  //
  //Create the TFormula from TString for TPC crossed rows pT dependent cut 
  //


  // setting data member that describes the TPC crossed rows pT dependent cut 
  fCutMinCrossedRowsTPCPtDep = rows;

  // creating TFormula from TString
   if(f1CutMinNCrossedRowsTPCPtDep){
     delete f1CutMinNCrossedRowsTPCPtDep;
     // resetting TFormula
     f1CutMinNCrossedRowsTPCPtDep = 0;
   }
   if(!CheckPtDepCrossedRows(rows,kTRUE))return;   
   
   TString tmp(rows);
   tmp.ReplaceAll("pt","x");
   f1CutMinNCrossedRowsTPCPtDep = new TFormula("f1CutMinNCrossedRowsTPCPtDep",tmp.Data());

   
}
//---------------------------------------------------------------------------
Bool_t AliRDHFCuts::IsDaughterSelected(AliAODTrack *track,const AliESDVertex *primary,AliESDtrackCuts *cuts) const{
  //
  // Convert to ESDtrack, relate to vertex and check cuts
  //
  if(!cuts) return kTRUE;

  if(cuts->GetFlagCutTOFdistance()) cuts->SetFlagCutTOFdistance(kFALSE);


  // convert to ESD track here
  AliESDtrack esdTrack(track);
  // set the TPC cluster info
  esdTrack.SetTPCClusterMap(track->GetTPCClusterMap());
  esdTrack.SetTPCSharedMap(track->GetTPCSharedMap());
  esdTrack.SetTPCPointsF(track->GetTPCNclsF());
  // needed to calculate the impact parameters
  esdTrack.RelateToVertex(primary,0.,3.);

  //applying ESDtrackCut
  if(!cuts->IsSelected(&esdTrack)) return kFALSE; 

  //appliyng kink rejection
  if(fKinkReject){
   AliAODVertex *maybeKink=track->GetProdVertex();
   if(maybeKink->GetType()==AliAODVertex::kKink) return kFALSE;
  }

  //appliyng TPC crossed rows pT dependent cut
  if(f1CutMinNCrossedRowsTPCPtDep){
    Float_t nCrossedRowsTPC = esdTrack.GetTPCCrossedRows();
    if(nCrossedRowsTPC<f1CutMinNCrossedRowsTPCPtDep->Eval(esdTrack.Pt())) return kFALSE;
  }
  
  //appliyng NTPCcls/NTPCcrossedRows cut
  if(fCutRatioClsOverCrossRowsTPC){
    Float_t nCrossedRowsTPC = esdTrack.GetTPCCrossedRows();
    Float_t nClustersTPC = esdTrack.GetTPCNcls();
    if(nCrossedRowsTPC!=0){ 
      Float_t ratio = nClustersTPC/nCrossedRowsTPC;
      if(ratio<fCutRatioClsOverCrossRowsTPC) return kFALSE;
    }
    else return kFALSE;
  }

  //appliyng TPCsignalN/NTPCcrossedRows cut
  if(fCutRatioSignalNOverCrossRowsTPC){
    Float_t nCrossedRowsTPC = esdTrack.GetTPCCrossedRows();
    Float_t nTPCsignal = esdTrack.GetTPCsignalN();
    if(nCrossedRowsTPC!=0){
      Float_t ratio = nTPCsignal/nCrossedRowsTPC;
      if(ratio<fCutRatioSignalNOverCrossRowsTPC) return kFALSE;
    }
    else return kFALSE;
  }

 
  if(fOptPileup==kRejectTracksFromPileupVertex){
    // to be implemented
    // we need either to have here the AOD Event, 
    // or to have the pileup vertex object
  }

  if(fApplySPDDeadPbPb2011){
    Bool_t deadSPDLay1PbPb2011[20][4]={
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE}
    };
    Bool_t deadSPDLay2PbPb2011[40][4]={
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kTRUE,kTRUE,kFALSE,kFALSE},
      {kTRUE,kTRUE,kTRUE,kTRUE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE},
      {kFALSE,kFALSE,kFALSE,kFALSE}     
    };
    Double_t xyz1[3],xyz2[3];
    esdTrack.GetXYZAt(3.9,0.,xyz1);
    esdTrack.GetXYZAt(7.6,0.,xyz2);
    Double_t phi1=TMath::ATan2(xyz1[1],xyz1[0]);
    if(phi1<0) phi1+=2*TMath::Pi();
    Int_t lad1=(Int_t)(phi1/(2.*TMath::Pi()/20.));
    Double_t phi2=TMath::ATan2(xyz2[1],xyz2[0]);
    if(phi2<0) phi2+=2*TMath::Pi();
    Int_t lad2=(Int_t)(phi2/(2.*TMath::Pi()/40.));
    Int_t mod1=(Int_t)((xyz1[2]+14)/7.);
    Int_t mod2=(Int_t)((xyz2[2]+14)/7.);
    Bool_t lay1ok=kFALSE;
    if(mod1>=0 && mod1<4 && lad1<20){
      lay1ok=deadSPDLay1PbPb2011[lad1][mod1];
    }
    Bool_t lay2ok=kFALSE;
    if(mod2>=0 && mod2<4 && lad2<40){
      lay2ok=deadSPDLay2PbPb2011[lad2][mod2];
    }
    if(!lay1ok && !lay2ok) return kFALSE;
  }

  if(fApplySPDMisalignedPP2012) {
    // Cut tracks crossing the SPD at 5.6<phi<2pi
    Double_t xyz1[3],xyz2[3];
    esdTrack.GetXYZAt(3.9,0.,xyz1);
    esdTrack.GetXYZAt(7.6,0.,xyz2);
    Double_t phi1=TMath::ATan2(xyz1[1],xyz1[0]);
    if(phi1<0) phi1+=2*TMath::Pi();
    Double_t phi2=TMath::ATan2(xyz2[1],xyz2[0]);
    if(phi2<0) phi2+=2*TMath::Pi();
    Bool_t lay1ok=kTRUE;
    if(phi1>5.6 && phi1<2.*TMath::Pi()) lay1ok=kFALSE;
    Bool_t lay2ok=kTRUE;
    if(phi2>5.6 && phi2<2.*TMath::Pi()) lay2ok=kFALSE;
    if(!lay1ok || !lay2ok) return kFALSE;
  }

  return kTRUE; 
}
//---------------------------------------------------------------------------
void AliRDHFCuts::SetPtBins(Int_t nPtBinLimits,Float_t *ptBinLimits) {
  // Set the pt bins

  if(fPtBinLimits) {
    delete [] fPtBinLimits;
    fPtBinLimits = NULL;
    printf("Changing the pt bins\n");
  }

  if(nPtBinLimits != fnPtBins+1){
    cout<<"Warning: ptBinLimits dimention "<<nPtBinLimits<<" != nPtBins+1 ("<<fnPtBins+1<<")\nSetting nPtBins to "<<nPtBinLimits-1<<endl;
    SetNPtBins(nPtBinLimits-1);
  }

  fnPtBinLimits = nPtBinLimits;
  SetGlobalIndex();
  //cout<<"Changing also Global Index -> "<<fGlobalIndex<<endl;
  fPtBinLimits = new Float_t[fnPtBinLimits];
  for(Int_t ib=0; ib<nPtBinLimits; ib++) fPtBinLimits[ib]=ptBinLimits[ib];

  return;
}
//---------------------------------------------------------------------------
void AliRDHFCuts::SetVarNames(Int_t nVars,TString *varNames,Bool_t *isUpperCut){
  // Set the variable names

  if(fVarNames) {
    delete [] fVarNames;
    fVarNames = NULL;
    //printf("Changing the variable names\n");
  }
  if(nVars!=fnVars){
    printf("Wrong number of variables: it has to be %d\n",fnVars);
    return;
  }
  //fnVars=nVars;
  fVarNames = new TString[nVars];
  fIsUpperCut = new Bool_t[nVars];
  for(Int_t iv=0; iv<nVars; iv++) {
    fVarNames[iv] = varNames[iv];
    fIsUpperCut[iv] = isUpperCut[iv];
  }

  return;
}
//---------------------------------------------------------------------------
void AliRDHFCuts::SetVarsForOpt(Int_t nVars,Bool_t *forOpt) {
  // Set the variables to be used for cuts optimization

  if(fVarsForOpt) {
    delete [] fVarsForOpt;
    fVarsForOpt = NULL;
    //printf("Changing the variables for cut optimization\n");
  }
  
  if(nVars==0){//!=fnVars) {
    printf("%d not accepted as number of variables: it has to be %d\n",nVars,fnVars);
    return;
  } 
  
  fnVarsForOpt = 0;
  fVarsForOpt = new Bool_t[fnVars];
  for(Int_t iv=0; iv<fnVars; iv++) {
    fVarsForOpt[iv]=forOpt[iv];
    if(fVarsForOpt[iv]) fnVarsForOpt++;
  }

  return;
}

//---------------------------------------------------------------------------
void AliRDHFCuts::SetUseCentrality(Int_t flag) {
  //
  // set centrality estimator  
  //
  fUseCentrality=flag;
  if(fUseCentrality<kCentOff||fUseCentrality>=kCentInvalid) AliWarning("Centrality estimator not valid");
 
  return;
}


//---------------------------------------------------------------------------
void AliRDHFCuts::SetCuts(Int_t nVars,Int_t nPtBins,Float_t **cutsRD) {
  //
  // store the cuts
  //
  if(nVars!=fnVars) {
    printf("Wrong number of variables: it has to be %d\n",fnVars);
    AliFatal("exiting");
  } 
  if(nPtBins!=fnPtBins) {
    printf("Wrong number of pt bins: it has to be %d\n",fnPtBins);
    AliFatal("exiting");
  } 

  if(!fCutsRD)  fCutsRD = new Float_t[fGlobalIndex];
  

  for(Int_t iv=0; iv<fnVars; iv++) {

    for(Int_t ib=0; ib<fnPtBins; ib++) {

      //check
      if(GetGlobalIndex(iv,ib)>=fGlobalIndex) {
	cout<<"Overflow, exit..."<<endl;
	return;
      }

      fCutsRD[GetGlobalIndex(iv,ib)] = cutsRD[iv][ib];

    }
  }
  return;
}
//---------------------------------------------------------------------------
void AliRDHFCuts::SetCuts(Int_t glIndex,Float_t* cutsRDGlob){
  //
  // store the cuts
  //
  if(glIndex != fGlobalIndex){
    cout<<"Wrong array size: it has to be "<<fGlobalIndex<<endl;
    AliFatal("exiting");
  }
  if(!fCutsRD)  fCutsRD = new Float_t[fGlobalIndex];

  for(Int_t iGl=0;iGl<fGlobalIndex;iGl++){
    fCutsRD[iGl] = cutsRDGlob[iGl];
  }
  return;
}
//---------------------------------------------------------------------------
void AliRDHFCuts::PrintAll() const {
  //
  // print all cuts values
  // 

  printf("Minimum vtx type %d\n",fMinVtxType);
  printf("Minimum vtx contr %d\n",fMinVtxContr);
  printf("Max vtx red chi2 %f\n",fMaxVtxRedChi2);
  printf("Min SPD mult %d\n",fMinSPDMultiplicity);
  printf("Use PID %d  OldPid=%d\n",(Int_t)fUsePID,fPidHF ? fPidHF->GetOldPid() : -1);
  printf("Remove daughters from vtx %d\n",(Int_t)fRemoveDaughtersFromPrimary);
  printf("Physics selection: %s\n",fUsePhysicsSelection ? "Yes" : "No");
  printf("Pileup rejection: %s\n",(fOptPileup > 0) ? "Yes" : "No");
  if(fOptPileup==1) printf(" -- Reject pileup event");
  if(fOptPileup==2) printf(" -- Reject tracks from pileup vtx");
  if(fUseCentrality>0) {
    TString estimator="";
    if(fUseCentrality==1) estimator = "V0";
    if(fUseCentrality==2) estimator = "Tracks";
    if(fUseCentrality==3) estimator = "Tracklets";
    if(fUseCentrality==4) estimator = "SPD clusters outer"; 
    if(fUseCentrality==5) estimator = "ZNA"; 
    if(fUseCentrality==6) estimator = "ZPA"; 
    if(fUseCentrality==7) estimator = "V0A"; 
    printf("Centrality class considered: %.1f-%.1f, estimated with %s\n",fMinCentrality,fMaxCentrality,estimator.Data());
  }
  if(fIsCandTrackSPDFirst) printf("Check for candidates with pt < %2.2f, that daughters fullfill kFirst criteria\n",fMaxPtCandTrackSPDFirst);

  if(fCutRatioClsOverCrossRowsTPC) printf("N TPC Clusters > %f N TPC Crossed Rows\n", fCutRatioClsOverCrossRowsTPC);
  if(fCutRatioSignalNOverCrossRowsTPC) printf("N TPC Points for dE/dx > %f N TPC Crossed Rows\n", fCutRatioSignalNOverCrossRowsTPC);
  if(f1CutMinNCrossedRowsTPCPtDep) printf("N TPC Crossed Rows pT-dependent cut: %s\n", fCutMinCrossedRowsTPCPtDep.Data());

  if(fVarNames){
    cout<<"Array of variables"<<endl;
    for(Int_t iv=0;iv<fnVars;iv++){
      cout<<fVarNames[iv]<<"\t";
    }
    cout<<endl;
  }
  if(fVarsForOpt){
    cout<<"Array of optimization"<<endl;
    for(Int_t iv=0;iv<fnVars;iv++){
      cout<<fVarsForOpt[iv]<<"\t";
    }
    cout<<endl;
  }
  if(fIsUpperCut){
    cout<<"Array of upper/lower cut"<<endl;
   for(Int_t iv=0;iv<fnVars;iv++){
     cout<<fIsUpperCut[iv]<<"\t";
   }
   cout<<endl;
  }
  if(fPtBinLimits){
    cout<<"Array of ptbin limits"<<endl;
    for(Int_t ib=0;ib<fnPtBinLimits;ib++){
      cout<<fPtBinLimits[ib]<<"\t";
    }
    cout<<endl;
  }
  if(fCutsRD){
    cout<<"Matrix of cuts"<<endl;
   for(Int_t iv=0;iv<fnVars;iv++){
     for(Int_t ib=0;ib<fnPtBins;ib++){
       cout<<"fCutsRD["<<iv<<"]["<<ib<<"] = "<<fCutsRD[GetGlobalIndex(iv,ib)]<<"\t";
     } 
     cout<<endl;
   }
   cout<<endl;
  }
  if(fPidHF) fPidHF->PrintAll();
  return;
}

//--------------------------------------------------------------------------
void AliRDHFCuts::PrintTrigger() const{
  // print the trigger selection 

  printf("Selected trigger classes: %s %s\n",fTriggerClass[0].Data(),fTriggerClass[1].Data());

  cout<<" Trigger selection pattern: ";
  if( fTriggerMask & AliVEvent::kAny ) cout<<" kAny ";
  if( fTriggerMask & AliVEvent::kAnyINT ) cout<<" kAnyINT ";
  if( fTriggerMask & AliVEvent::kINT7 ) cout<<" kINT7 ";
  if( fTriggerMask & AliVEvent::kMB ) cout<<" kMB ";
  if( fTriggerMask & AliVEvent::kCINT5 ) cout<<" kCINT5 ";
  if( fTriggerMask & AliVEvent::kCentral ) cout<<" kCentral ";
  if( fTriggerMask & AliVEvent::kSemiCentral ) cout<<" kSemiCentral ";
  if( fTriggerMask & AliVEvent::kEMCEGA ) cout<<" kEMCEGA ";
  if( fTriggerMask & AliVEvent::kHighMult ) cout<<" kHighMult ";
  if( fTriggerMask & AliVEvent::kFastOnly ) cout<<" kFastOnly ";
  cout << endl<< endl;

}

//---------------------------------------------------------------------------
void AliRDHFCuts::GetCuts(Float_t**& cutsRD) const{
  //
  // get the cuts
  //

  //cout<<"Give back a "<<fnVars<<"x"<<fnPtBins<<" matrix."<<endl;


  Int_t iv,ib;
  if(!cutsRD) {
    //cout<<"Initialization..."<<endl;
    cutsRD=new Float_t*[fnVars];
    for(iv=0; iv<fnVars; iv++) {
      cutsRD[iv] = new Float_t[fnPtBins];
    }
  }
  
  for(Int_t iGlobal=0; iGlobal<fGlobalIndex; iGlobal++) {
    GetVarPtIndex(iGlobal,iv,ib);
    cutsRD[iv][ib] = fCutsRD[iGlobal];
  }

  return;
}

//---------------------------------------------------------------------------
Int_t AliRDHFCuts::GetGlobalIndex(Int_t iVar,Int_t iPtBin) const{
  //
  // give the global index from variable and pt bin
  //
  return iPtBin*fnVars+iVar;
}

//---------------------------------------------------------------------------
void AliRDHFCuts::GetVarPtIndex(Int_t iGlob, Int_t& iVar, Int_t& iPtBin) const {
  //
  //give the index of the variable and of the pt bin from the global index
  //
  iPtBin=(Int_t)iGlob/fnVars;
  iVar=iGlob%fnVars;

  return;
}

//---------------------------------------------------------------------------
Int_t AliRDHFCuts::PtBin(Double_t pt) const {
  //
  //give the pt bin where the pt lies.
  //
  Int_t ptbin=-1;
  if(pt<fPtBinLimits[0])return ptbin;
  for (Int_t i=0;i<fnPtBins;i++){
    if(pt<fPtBinLimits[i+1]) {
      ptbin=i;
      break;
    }
  }
  return ptbin;
}
//-------------------------------------------------------------------
Float_t AliRDHFCuts::GetCutValue(Int_t iVar,Int_t iPtBin) const {
  // 
  // Give the value of cut set for the variable iVar and the pt bin iPtBin
  //
  if(!fCutsRD){
    cout<<"Cuts not iniziaisez yet"<<endl;
    return 0;
  }
  return fCutsRD[GetGlobalIndex(iVar,iPtBin)];
}
//-------------------------------------------------------------------
Float_t AliRDHFCuts::GetCentrality(AliAODEvent* aodEvent,AliRDHFCuts::ECentrality estimator) {
  //
  // Get centrality percentile
  //

  TClonesArray *mcArray = (TClonesArray*)((AliAODEvent*)aodEvent)->GetList()->FindObject(AliAODMCParticle::StdBranchName());
  if(mcArray) {fUseAOD049=kFALSE;}

  AliAODHeader *header=dynamic_cast<AliAODHeader*>(aodEvent->GetHeader());
  if(!header) AliFatal("Not a standard AOD");
  AliCentrality *centrality=header->GetCentralityP();
  Float_t cent=-999.;
  Bool_t isSelRun=kFALSE;
  Int_t selRun[5]={138364, 138826, 138828, 138836, 138871};
  if(!centrality) return cent;
  else{
    if (estimator==kCentV0M){
      cent=(Float_t)(centrality->GetCentralityPercentile("V0M"));
      if(cent<0){
	Int_t quality = centrality->GetQuality();
	if(quality<=1){ // fQuality==1 means rejected by zVertex cut that we apply a part and we want to keep separate (Giacomo)
	  cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0M");
	}else{
	  Int_t runnum=aodEvent->GetRunNumber();
	  for(Int_t ir=0;ir<5;ir++){
	    if(runnum==selRun[ir]){
	      isSelRun=kTRUE;
	      break;
	    }
	  }
	  if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0M");
	}
      }

      //temporary fix for AOD049 outliers
      if(fUseAOD049&&cent>=0){
	Float_t v0=0;
	AliAODVZERO* aodV0 = aodEvent->GetVZEROData();
	v0+=aodV0->GetMTotV0A();
	v0+=aodV0->GetMTotV0C();
	if(cent==0&&v0<19500)return -1;//filtering issue
	Float_t tkl = (Float_t)(aodEvent->GetTracklets()->GetNumberOfTracklets());
	Float_t val= 1.30552 +  0.147931 * v0;
	Float_t tklSigma[101]={176.644, 156.401, 153.789, 153.015, 142.476, 137.951, 136.127, 129.852, 127.436, 124.86, 120.788, 115.611, 113.172, 110.496, 109.127, 104.421, 102.479, 99.9766, 97.5152, 94.0654, 92.4602, 89.3364, 87.1342, 83.3497, 82.6216, 81.1084, 78.0793, 76.1234, 72.9434, 72.1334, 68.0056, 68.2755, 66.0376, 62.9666, 62.4274, 59.65, 58.3776, 56.6361, 54.5184, 53.4224, 51.932, 50.8922, 48.2848, 47.912, 46.5717, 43.4114, 43.2083, 41.3065, 40.1863, 38.5255, 37.2851, 37.5396, 34.4949, 33.8366, 31.8043, 31.7412, 30.8392, 30.0274, 28.8793, 27.6398, 26.6488, 25.0183, 25.1489, 24.4185, 22.9107, 21.2002, 21.6977, 20.1242, 20.4963, 19.0235, 19.298, 17.4103, 16.868, 15.2939, 15.2939, 16.0295, 14.186, 14.186, 15.2173, 12.9504, 12.9504, 12.9504, 15.264, 12.3674, 12.3674, 12.3674, 12.3674, 12.3674, 18.3811, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544};
	if ( TMath::Abs(tkl-val) > 6.*tklSigma[(Int_t)cent] )return -1;//outlier
      }
    }
    else {
       if (estimator==kCentTRK) {
	cent=(Float_t)(centrality->GetCentralityPercentile("TRK"));
	if(cent<0){
	  Int_t quality = centrality->GetQuality();
	  if(quality<=1){
	    cent=(Float_t)centrality->GetCentralityPercentileUnchecked("TRK");
	  }else{
	    Int_t runnum=aodEvent->GetRunNumber();
	    for(Int_t ir=0;ir<5;ir++){
	      if(runnum==selRun[ir]){
		isSelRun=kTRUE;
		break;
	      }
	    }
	    if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("TRK");
	  }
	}
       }
      else{
	if (estimator==kCentTKL){
	  cent=(Float_t)(centrality->GetCentralityPercentile("TKL"));
	  if(cent<0){
	    Int_t quality = centrality->GetQuality();
	    if(quality<=1){
	      cent=(Float_t)centrality->GetCentralityPercentileUnchecked("TKL");
	    }else{
	      Int_t runnum=aodEvent->GetRunNumber();
	      for(Int_t ir=0;ir<5;ir++){
		if(runnum==selRun[ir]){
		  isSelRun=kTRUE;
		  break;
	    }
	      }
	      if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("TKL");
	    }   
	  }
	}
	else{
	  if (estimator==kCentCL1){
	    cent=(Float_t)(centrality->GetCentralityPercentile("CL1"));
	    if(cent<0){
	      Int_t quality = centrality->GetQuality();
	      if(quality<=1){
		cent=(Float_t)centrality->GetCentralityPercentileUnchecked("CL1");
	      }else{
		Int_t runnum=aodEvent->GetRunNumber();
		for(Int_t ir=0;ir<5;ir++){
		  if(runnum==selRun[ir]){
		    isSelRun=kTRUE;
		    break;
		  }
		}
		if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("CL1");
	      }
	    }
	  }
	else{
	  if (estimator==kCentZNA){
	    cent=(Float_t)(centrality->GetCentralityPercentile("ZNA"));
	    if(cent<0){
	      Int_t quality = centrality->GetQuality();
	      if(quality<=1){
		cent=(Float_t)centrality->GetCentralityPercentileUnchecked("ZNA");
	      }else{
		Int_t runnum=aodEvent->GetRunNumber();
		for(Int_t ir=0;ir<5;ir++){
		  if(runnum==selRun[ir]){
		    isSelRun=kTRUE;
		    break;
		  }
		}
		if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("ZNA");
	      }
	    }
	  }
	else{
	  if (estimator==kCentZPA){
	    cent=(Float_t)(centrality->GetCentralityPercentile("ZPA"));
	    if(cent<0){
	      Int_t quality = centrality->GetQuality();
	      if(quality<=1){
		cent=(Float_t)centrality->GetCentralityPercentileUnchecked("ZPA");
	      }else{
		Int_t runnum=aodEvent->GetRunNumber();
		for(Int_t ir=0;ir<5;ir++){
		  if(runnum==selRun[ir]){
		    isSelRun=kTRUE;
		    break;
		  }
		}
		if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("ZPA");
	      }
	    }
	  }
	else{
	  if (estimator==kCentV0A){
	    cent=(Float_t)(centrality->GetCentralityPercentile("V0A"));
	    if(cent<0){
	      Int_t quality = centrality->GetQuality();
	      if(quality<=1){
		cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0A");
	      }else{
		Int_t runnum=aodEvent->GetRunNumber();
		for(Int_t ir=0;ir<5;ir++){
		  if(runnum==selRun[ir]){
		    isSelRun=kTRUE;
		    break;
		  }
		}
		if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0A");
	      }
	    }
	  }
	  else {
	    AliWarning("Centrality estimator not valid");
	    
	  }
	}
    }
    }
    }
    }
    }
  }
  return cent;
}
//-------------------------------------------------------------------
Bool_t AliRDHFCuts::CompareCuts(const AliRDHFCuts *obj) const {
  //
  // Compare two cuts objects
  //

  Bool_t areEqual=kTRUE;

  if(fMinVtxType!=obj->fMinVtxType) { printf("Minimum vtx type %d  %d\n",fMinVtxType,obj->fMinVtxType); areEqual=kFALSE;}

  if(fMinVtxContr!=obj->fMinVtxContr) { printf("Minimum vtx contr %d  %d\n",fMinVtxContr,obj->fMinVtxContr); areEqual=kFALSE;}

  if(TMath::Abs(fMaxVtxRedChi2-obj->fMaxVtxRedChi2)>1.e-10) {   printf("Max vtx red chi2 %f  %f\n",fMaxVtxRedChi2,obj->fMaxVtxRedChi2);areEqual=kFALSE;}

  if(fMinSPDMultiplicity!=obj->fMinSPDMultiplicity) {  printf("Min SPD mult %d\n  %d",fMinSPDMultiplicity,obj->fMinSPDMultiplicity);areEqual=kFALSE;}

  if(fUsePID!=obj->fUsePID) { printf("Use PID %d  %d\n",(Int_t)fUsePID,(Int_t)obj->fUsePID); areEqual=kFALSE;}

  if(fRemoveDaughtersFromPrimary!=obj->fRemoveDaughtersFromPrimary) {printf("Remove daughters from vtx %d  %d\n",(Int_t)fRemoveDaughtersFromPrimary,(Int_t)obj->fRemoveDaughtersFromPrimary); areEqual=kFALSE;}
  if(fTrackCuts){
    if(fTrackCuts->GetMinNClusterTPC()!=obj->fTrackCuts->GetMinNClusterTPC()) {printf("MinNClsTPC %d  %d\n",fTrackCuts->GetMinNClusterTPC(),obj->fTrackCuts->GetMinNClusterTPC()); areEqual=kFALSE;}

    if(fTrackCuts->GetMinNClustersITS()!=obj->fTrackCuts->GetMinNClustersITS()) {printf("MinNClsITS %d  %d\n",fTrackCuts->GetMinNClustersITS(),obj->fTrackCuts->GetMinNClustersITS()); areEqual=kFALSE;}

    if(TMath::Abs(fTrackCuts->GetMaxChi2PerClusterTPC()-obj->fTrackCuts->GetMaxChi2PerClusterTPC())>1.e-10) {printf("MaxChi2ClsTPC %f  %f\n",fTrackCuts->GetMaxChi2PerClusterTPC(),obj->fTrackCuts->GetMaxChi2PerClusterTPC()); areEqual=kFALSE;}

    if(fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)!=obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)) {printf("ClusterReq SPD %d  %d\n",fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD),obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)); areEqual=kFALSE;}
  }

  if(fCutsRD) {
   for(Int_t iv=0;iv<fnVars;iv++) {
     for(Int_t ib=0;ib<fnPtBins;ib++) {
       if(TMath::Abs(fCutsRD[GetGlobalIndex(iv,ib)]-obj->fCutsRD[GetGlobalIndex(iv,ib)])>1.e-10) {
	 cout<<"fCutsRD["<<iv<<"]["<<ib<<"] = "<<fCutsRD[GetGlobalIndex(iv,ib)]<<"   "<<obj->fCutsRD[GetGlobalIndex(iv,ib)]<<"\n";
	 areEqual=kFALSE;
       }
     }
   }
  }

  return areEqual;
}
//---------------------------------------------------------------------------
void AliRDHFCuts::MakeTable() const {
  //
  // print cuts values in table format
  // 

	TString ptString = "pT range";
	if(fVarNames && fPtBinLimits && fCutsRD){
		TString firstLine(Form("*       %-15s",ptString.Data()));
		for (Int_t ivar=0; ivar<fnVars; ivar++){
			firstLine+=Form("*    %-15s  ",fVarNames[ivar].Data());
			if (ivar == fnVars){
				firstLine+="*\n";
			}
		}
		Printf("%s",firstLine.Data());
		
		for (Int_t ipt=0; ipt<fnPtBins; ipt++){
			TString line;
			if (ipt==fnPtBins-1){
				line=Form("*  %5.1f < pt < inf    ",fPtBinLimits[ipt]);
			}
			else{
				line=Form("*  %5.1f < pt < %4.1f   ",fPtBinLimits[ipt],fPtBinLimits[ipt+1]);
			}
			for (Int_t ivar=0; ivar<fnVars; ivar++){
				line+=Form("*     %-15f ",fCutsRD[GetGlobalIndex(ivar,ipt)]);
			}
			Printf("%s",line.Data());
		}

	}


  return;
}
//--------------------------------------------------------------------------
Bool_t AliRDHFCuts::RecalcOwnPrimaryVtx(AliAODRecoDecayHF *d,
					AliAODEvent *aod) const
{
  //
  // Recalculate primary vertex without daughters
  //

  if(!aod) {
    AliError("Can not remove daughters from vertex without AOD event");
    return 0;
  }   

  AliAODVertex *recvtx=d->RemoveDaughtersFromPrimaryVtx(aod);
  if(!recvtx){
    AliDebug(2,"Removal of daughter tracks failed");
    return kFALSE;
  }


  //set recalculed primary vertex
  d->SetOwnPrimaryVtx(recvtx);
  delete recvtx;

  return kTRUE;
}
//--------------------------------------------------------------------------
Bool_t AliRDHFCuts::SetMCPrimaryVtx(AliAODRecoDecayHF *d,AliAODEvent *aod) const
{
  //
  // Recalculate primary vertex without daughters
  //

  if(!aod) {
    AliError("Can not get MC vertex without AOD event");
    return kFALSE;
  }   

  // load MC header
  AliAODMCHeader *mcHeader = 
    (AliAODMCHeader*)aod->GetList()->FindObject(AliAODMCHeader::StdBranchName());
  if(!mcHeader) {
    AliError("Can not get MC vertex without AODMCHeader event");
    return kFALSE;
  }
  Double_t pos[3];
  Double_t covmatrix[6]={0.,0.,0.,0.,0.,0.};
  mcHeader->GetVertex(pos);
  AliAODVertex *recvtx=new AliAODVertex(pos,covmatrix);

  if(!recvtx){
    AliDebug(2,"Removal of daughter tracks failed");
    return kFALSE;
  }

  //set recalculed primary vertex
  d->SetOwnPrimaryVtx(recvtx);

  d->RecalculateImpPars(recvtx,aod);

  delete recvtx;

  return kTRUE;
}
//--------------------------------------------------------------------------
void AliRDHFCuts::CleanOwnPrimaryVtx(AliAODRecoDecayHF *d,
				     AliAODEvent *aod,
				     AliAODVertex *origownvtx) const
{
  //
  // Clean-up own primary vertex if needed
  //

  if(fRemoveDaughtersFromPrimary || fUseMCVertex) {
    d->UnsetOwnPrimaryVtx();
    if(origownvtx) {
      d->SetOwnPrimaryVtx(origownvtx);
      delete origownvtx; origownvtx=NULL;
    }
    d->RecalculateImpPars(d->GetPrimaryVtx(),aod);
  } else {
    if(origownvtx) {
      delete origownvtx; origownvtx=NULL;
    }
  }
  return;
}
//--------------------------------------------------------------------------
Bool_t AliRDHFCuts::IsSignalMC(AliAODRecoDecay *d,AliAODEvent *aod,Int_t pdg) const 
{
  //
  // Checks if this candidate is matched to MC signal
  // 

  if(!aod) return kFALSE;

  // get the MC array
  TClonesArray *mcArray = (TClonesArray*)((AliAODEvent*)aod)->GetList()->FindObject(AliAODMCParticle::StdBranchName());

  if(!mcArray) return kFALSE;

  // try to match  
  Int_t label = d->MatchToMC(pdg,mcArray);
  
  if(label>=0) {
    //printf("MATCH!\n");
    return kTRUE;
  }

  return kFALSE;
}


//--------------------------------------------------------------------------
Bool_t AliRDHFCuts::RecomputePrimaryVertex(AliAODEvent* event) const{
  // recompute event primary vertex from AOD tracks

   AliVertexerTracks *vertexer = new AliVertexerTracks(event->GetMagneticField());
   vertexer->SetITSMode();
   vertexer->SetMinClusters(3);

   AliAODVertex* pvtx=event->GetPrimaryVertex(); 
   if(strstr(pvtx->GetTitle(),"VertexerTracksWithConstraint")) {
     Float_t diamondcovxy[3];
     event->GetDiamondCovXY(diamondcovxy);
     Double_t pos[3]={event->GetDiamondX(),event->GetDiamondY(),0.};
     Double_t cov[6]={diamondcovxy[0],diamondcovxy[1],diamondcovxy[2],0.,0.,10.*10.};
     AliESDVertex *diamond = new AliESDVertex(pos,cov,1.,1);
     vertexer->SetVtxStart(diamond);
     delete diamond; diamond=NULL;
   }

   AliESDVertex* vertexESD = (AliESDVertex*)vertexer->FindPrimaryVertex(event); 
   if(!vertexESD) return kFALSE;
   if(vertexESD->GetNContributors()<=0) { 
     //AliDebug(2,"vertexing failed"); 
     delete vertexESD; vertexESD=NULL;
     return kFALSE;
   }
   delete vertexer; vertexer=NULL;

   // convert to AliAODVertex
   Double_t pos[3],cov[6],chi2perNDF;
   vertexESD->GetXYZ(pos); // position
   vertexESD->GetCovMatrix(cov); //covariance matrix
   chi2perNDF = vertexESD->GetChi2toNDF();
   delete vertexESD; vertexESD=NULL;
   
   pvtx->SetPosition(pos[0],pos[1],pos[2]);
   pvtx->SetChi2perNDF(chi2perNDF);
   pvtx->SetCovMatrix(cov);

   return kTRUE;
}
 AliRDHFCuts.cxx:1
 AliRDHFCuts.cxx:2
 AliRDHFCuts.cxx:3
 AliRDHFCuts.cxx:4
 AliRDHFCuts.cxx:5
 AliRDHFCuts.cxx:6
 AliRDHFCuts.cxx:7
 AliRDHFCuts.cxx:8
 AliRDHFCuts.cxx:9
 AliRDHFCuts.cxx:10
 AliRDHFCuts.cxx:11
 AliRDHFCuts.cxx:12
 AliRDHFCuts.cxx:13
 AliRDHFCuts.cxx:14
 AliRDHFCuts.cxx:15
 AliRDHFCuts.cxx:16
 AliRDHFCuts.cxx:17
 AliRDHFCuts.cxx:18
 AliRDHFCuts.cxx:19
 AliRDHFCuts.cxx:20
 AliRDHFCuts.cxx:21
 AliRDHFCuts.cxx:22
 AliRDHFCuts.cxx:23
 AliRDHFCuts.cxx:24
 AliRDHFCuts.cxx:25
 AliRDHFCuts.cxx:26
 AliRDHFCuts.cxx:27
 AliRDHFCuts.cxx:28
 AliRDHFCuts.cxx:29
 AliRDHFCuts.cxx:30
 AliRDHFCuts.cxx:31
 AliRDHFCuts.cxx:32
 AliRDHFCuts.cxx:33
 AliRDHFCuts.cxx:34
 AliRDHFCuts.cxx:35
 AliRDHFCuts.cxx:36
 AliRDHFCuts.cxx:37
 AliRDHFCuts.cxx:38
 AliRDHFCuts.cxx:39
 AliRDHFCuts.cxx:40
 AliRDHFCuts.cxx:41
 AliRDHFCuts.cxx:42
 AliRDHFCuts.cxx:43
 AliRDHFCuts.cxx:44
 AliRDHFCuts.cxx:45
 AliRDHFCuts.cxx:46
 AliRDHFCuts.cxx:47
 AliRDHFCuts.cxx:48
 AliRDHFCuts.cxx:49
 AliRDHFCuts.cxx:50
 AliRDHFCuts.cxx:51
 AliRDHFCuts.cxx:52
 AliRDHFCuts.cxx:53
 AliRDHFCuts.cxx:54
 AliRDHFCuts.cxx:55
 AliRDHFCuts.cxx:56
 AliRDHFCuts.cxx:57
 AliRDHFCuts.cxx:58
 AliRDHFCuts.cxx:59
 AliRDHFCuts.cxx:60
 AliRDHFCuts.cxx:61
 AliRDHFCuts.cxx:62
 AliRDHFCuts.cxx:63
 AliRDHFCuts.cxx:64
 AliRDHFCuts.cxx:65
 AliRDHFCuts.cxx:66
 AliRDHFCuts.cxx:67
 AliRDHFCuts.cxx:68
 AliRDHFCuts.cxx:69
 AliRDHFCuts.cxx:70
 AliRDHFCuts.cxx:71
 AliRDHFCuts.cxx:72
 AliRDHFCuts.cxx:73
 AliRDHFCuts.cxx:74
 AliRDHFCuts.cxx:75
 AliRDHFCuts.cxx:76
 AliRDHFCuts.cxx:77
 AliRDHFCuts.cxx:78
 AliRDHFCuts.cxx:79
 AliRDHFCuts.cxx:80
 AliRDHFCuts.cxx:81
 AliRDHFCuts.cxx:82
 AliRDHFCuts.cxx:83
 AliRDHFCuts.cxx:84
 AliRDHFCuts.cxx:85
 AliRDHFCuts.cxx:86
 AliRDHFCuts.cxx:87
 AliRDHFCuts.cxx:88
 AliRDHFCuts.cxx:89
 AliRDHFCuts.cxx:90
 AliRDHFCuts.cxx:91
 AliRDHFCuts.cxx:92
 AliRDHFCuts.cxx:93
 AliRDHFCuts.cxx:94
 AliRDHFCuts.cxx:95
 AliRDHFCuts.cxx:96
 AliRDHFCuts.cxx:97
 AliRDHFCuts.cxx:98
 AliRDHFCuts.cxx:99
 AliRDHFCuts.cxx:100
 AliRDHFCuts.cxx:101
 AliRDHFCuts.cxx:102
 AliRDHFCuts.cxx:103
 AliRDHFCuts.cxx:104
 AliRDHFCuts.cxx:105
 AliRDHFCuts.cxx:106
 AliRDHFCuts.cxx:107
 AliRDHFCuts.cxx:108
 AliRDHFCuts.cxx:109
 AliRDHFCuts.cxx:110
 AliRDHFCuts.cxx:111
 AliRDHFCuts.cxx:112
 AliRDHFCuts.cxx:113
 AliRDHFCuts.cxx:114
 AliRDHFCuts.cxx:115
 AliRDHFCuts.cxx:116
 AliRDHFCuts.cxx:117
 AliRDHFCuts.cxx:118
 AliRDHFCuts.cxx:119
 AliRDHFCuts.cxx:120
 AliRDHFCuts.cxx:121
 AliRDHFCuts.cxx:122
 AliRDHFCuts.cxx:123
 AliRDHFCuts.cxx:124
 AliRDHFCuts.cxx:125
 AliRDHFCuts.cxx:126
 AliRDHFCuts.cxx:127
 AliRDHFCuts.cxx:128
 AliRDHFCuts.cxx:129
 AliRDHFCuts.cxx:130
 AliRDHFCuts.cxx:131
 AliRDHFCuts.cxx:132
 AliRDHFCuts.cxx:133
 AliRDHFCuts.cxx:134
 AliRDHFCuts.cxx:135
 AliRDHFCuts.cxx:136
 AliRDHFCuts.cxx:137
 AliRDHFCuts.cxx:138
 AliRDHFCuts.cxx:139
 AliRDHFCuts.cxx:140
 AliRDHFCuts.cxx:141
 AliRDHFCuts.cxx:142
 AliRDHFCuts.cxx:143
 AliRDHFCuts.cxx:144
 AliRDHFCuts.cxx:145
 AliRDHFCuts.cxx:146
 AliRDHFCuts.cxx:147
 AliRDHFCuts.cxx:148
 AliRDHFCuts.cxx:149
 AliRDHFCuts.cxx:150
 AliRDHFCuts.cxx:151
 AliRDHFCuts.cxx:152
 AliRDHFCuts.cxx:153
 AliRDHFCuts.cxx:154
 AliRDHFCuts.cxx:155
 AliRDHFCuts.cxx:156
 AliRDHFCuts.cxx:157
 AliRDHFCuts.cxx:158
 AliRDHFCuts.cxx:159
 AliRDHFCuts.cxx:160
 AliRDHFCuts.cxx:161
 AliRDHFCuts.cxx:162
 AliRDHFCuts.cxx:163
 AliRDHFCuts.cxx:164
 AliRDHFCuts.cxx:165
 AliRDHFCuts.cxx:166
 AliRDHFCuts.cxx:167
 AliRDHFCuts.cxx:168
 AliRDHFCuts.cxx:169
 AliRDHFCuts.cxx:170
 AliRDHFCuts.cxx:171
 AliRDHFCuts.cxx:172
 AliRDHFCuts.cxx:173
 AliRDHFCuts.cxx:174
 AliRDHFCuts.cxx:175
 AliRDHFCuts.cxx:176
 AliRDHFCuts.cxx:177
 AliRDHFCuts.cxx:178
 AliRDHFCuts.cxx:179
 AliRDHFCuts.cxx:180
 AliRDHFCuts.cxx:181
 AliRDHFCuts.cxx:182
 AliRDHFCuts.cxx:183
 AliRDHFCuts.cxx:184
 AliRDHFCuts.cxx:185
 AliRDHFCuts.cxx:186
 AliRDHFCuts.cxx:187
 AliRDHFCuts.cxx:188
 AliRDHFCuts.cxx:189
 AliRDHFCuts.cxx:190
 AliRDHFCuts.cxx:191
 AliRDHFCuts.cxx:192
 AliRDHFCuts.cxx:193
 AliRDHFCuts.cxx:194
 AliRDHFCuts.cxx:195
 AliRDHFCuts.cxx:196
 AliRDHFCuts.cxx:197
 AliRDHFCuts.cxx:198
 AliRDHFCuts.cxx:199
 AliRDHFCuts.cxx:200
 AliRDHFCuts.cxx:201
 AliRDHFCuts.cxx:202
 AliRDHFCuts.cxx:203
 AliRDHFCuts.cxx:204
 AliRDHFCuts.cxx:205
 AliRDHFCuts.cxx:206
 AliRDHFCuts.cxx:207
 AliRDHFCuts.cxx:208
 AliRDHFCuts.cxx:209
 AliRDHFCuts.cxx:210
 AliRDHFCuts.cxx:211
 AliRDHFCuts.cxx:212
 AliRDHFCuts.cxx:213
 AliRDHFCuts.cxx:214
 AliRDHFCuts.cxx:215
 AliRDHFCuts.cxx:216
 AliRDHFCuts.cxx:217
 AliRDHFCuts.cxx:218
 AliRDHFCuts.cxx:219
 AliRDHFCuts.cxx:220
 AliRDHFCuts.cxx:221
 AliRDHFCuts.cxx:222
 AliRDHFCuts.cxx:223
 AliRDHFCuts.cxx:224
 AliRDHFCuts.cxx:225
 AliRDHFCuts.cxx:226
 AliRDHFCuts.cxx:227
 AliRDHFCuts.cxx:228
 AliRDHFCuts.cxx:229
 AliRDHFCuts.cxx:230
 AliRDHFCuts.cxx:231
 AliRDHFCuts.cxx:232
 AliRDHFCuts.cxx:233
 AliRDHFCuts.cxx:234
 AliRDHFCuts.cxx:235
 AliRDHFCuts.cxx:236
 AliRDHFCuts.cxx:237
 AliRDHFCuts.cxx:238
 AliRDHFCuts.cxx:239
 AliRDHFCuts.cxx:240
 AliRDHFCuts.cxx:241
 AliRDHFCuts.cxx:242
 AliRDHFCuts.cxx:243
 AliRDHFCuts.cxx:244
 AliRDHFCuts.cxx:245
 AliRDHFCuts.cxx:246
 AliRDHFCuts.cxx:247
 AliRDHFCuts.cxx:248
 AliRDHFCuts.cxx:249
 AliRDHFCuts.cxx:250
 AliRDHFCuts.cxx:251
 AliRDHFCuts.cxx:252
 AliRDHFCuts.cxx:253
 AliRDHFCuts.cxx:254
 AliRDHFCuts.cxx:255
 AliRDHFCuts.cxx:256
 AliRDHFCuts.cxx:257
 AliRDHFCuts.cxx:258
 AliRDHFCuts.cxx:259
 AliRDHFCuts.cxx:260
 AliRDHFCuts.cxx:261
 AliRDHFCuts.cxx:262
 AliRDHFCuts.cxx:263
 AliRDHFCuts.cxx:264
 AliRDHFCuts.cxx:265
 AliRDHFCuts.cxx:266
 AliRDHFCuts.cxx:267
 AliRDHFCuts.cxx:268
 AliRDHFCuts.cxx:269
 AliRDHFCuts.cxx:270
 AliRDHFCuts.cxx:271
 AliRDHFCuts.cxx:272
 AliRDHFCuts.cxx:273
 AliRDHFCuts.cxx:274
 AliRDHFCuts.cxx:275
 AliRDHFCuts.cxx:276
 AliRDHFCuts.cxx:277
 AliRDHFCuts.cxx:278
 AliRDHFCuts.cxx:279
 AliRDHFCuts.cxx:280
 AliRDHFCuts.cxx:281
 AliRDHFCuts.cxx:282
 AliRDHFCuts.cxx:283
 AliRDHFCuts.cxx:284
 AliRDHFCuts.cxx:285
 AliRDHFCuts.cxx:286
 AliRDHFCuts.cxx:287
 AliRDHFCuts.cxx:288
 AliRDHFCuts.cxx:289
 AliRDHFCuts.cxx:290
 AliRDHFCuts.cxx:291
 AliRDHFCuts.cxx:292
 AliRDHFCuts.cxx:293
 AliRDHFCuts.cxx:294
 AliRDHFCuts.cxx:295
 AliRDHFCuts.cxx:296
 AliRDHFCuts.cxx:297
 AliRDHFCuts.cxx:298
 AliRDHFCuts.cxx:299
 AliRDHFCuts.cxx:300
 AliRDHFCuts.cxx:301
 AliRDHFCuts.cxx:302
 AliRDHFCuts.cxx:303
 AliRDHFCuts.cxx:304
 AliRDHFCuts.cxx:305
 AliRDHFCuts.cxx:306
 AliRDHFCuts.cxx:307
 AliRDHFCuts.cxx:308
 AliRDHFCuts.cxx:309
 AliRDHFCuts.cxx:310
 AliRDHFCuts.cxx:311
 AliRDHFCuts.cxx:312
 AliRDHFCuts.cxx:313
 AliRDHFCuts.cxx:314
 AliRDHFCuts.cxx:315
 AliRDHFCuts.cxx:316
 AliRDHFCuts.cxx:317
 AliRDHFCuts.cxx:318
 AliRDHFCuts.cxx:319
 AliRDHFCuts.cxx:320
 AliRDHFCuts.cxx:321
 AliRDHFCuts.cxx:322
 AliRDHFCuts.cxx:323
 AliRDHFCuts.cxx:324
 AliRDHFCuts.cxx:325
 AliRDHFCuts.cxx:326
 AliRDHFCuts.cxx:327
 AliRDHFCuts.cxx:328
 AliRDHFCuts.cxx:329
 AliRDHFCuts.cxx:330
 AliRDHFCuts.cxx:331
 AliRDHFCuts.cxx:332
 AliRDHFCuts.cxx:333
 AliRDHFCuts.cxx:334
 AliRDHFCuts.cxx:335
 AliRDHFCuts.cxx:336
 AliRDHFCuts.cxx:337
 AliRDHFCuts.cxx:338
 AliRDHFCuts.cxx:339
 AliRDHFCuts.cxx:340
 AliRDHFCuts.cxx:341
 AliRDHFCuts.cxx:342
 AliRDHFCuts.cxx:343
 AliRDHFCuts.cxx:344
 AliRDHFCuts.cxx:345
 AliRDHFCuts.cxx:346
 AliRDHFCuts.cxx:347
 AliRDHFCuts.cxx:348
 AliRDHFCuts.cxx:349
 AliRDHFCuts.cxx:350
 AliRDHFCuts.cxx:351
 AliRDHFCuts.cxx:352
 AliRDHFCuts.cxx:353
 AliRDHFCuts.cxx:354
 AliRDHFCuts.cxx:355
 AliRDHFCuts.cxx:356
 AliRDHFCuts.cxx:357
 AliRDHFCuts.cxx:358
 AliRDHFCuts.cxx:359
 AliRDHFCuts.cxx:360
 AliRDHFCuts.cxx:361
 AliRDHFCuts.cxx:362
 AliRDHFCuts.cxx:363
 AliRDHFCuts.cxx:364
 AliRDHFCuts.cxx:365
 AliRDHFCuts.cxx:366
 AliRDHFCuts.cxx:367
 AliRDHFCuts.cxx:368
 AliRDHFCuts.cxx:369
 AliRDHFCuts.cxx:370
 AliRDHFCuts.cxx:371
 AliRDHFCuts.cxx:372
 AliRDHFCuts.cxx:373
 AliRDHFCuts.cxx:374
 AliRDHFCuts.cxx:375
 AliRDHFCuts.cxx:376
 AliRDHFCuts.cxx:377
 AliRDHFCuts.cxx:378
 AliRDHFCuts.cxx:379
 AliRDHFCuts.cxx:380
 AliRDHFCuts.cxx:381
 AliRDHFCuts.cxx:382
 AliRDHFCuts.cxx:383
 AliRDHFCuts.cxx:384
 AliRDHFCuts.cxx:385
 AliRDHFCuts.cxx:386
 AliRDHFCuts.cxx:387
 AliRDHFCuts.cxx:388
 AliRDHFCuts.cxx:389
 AliRDHFCuts.cxx:390
 AliRDHFCuts.cxx:391
 AliRDHFCuts.cxx:392
 AliRDHFCuts.cxx:393
 AliRDHFCuts.cxx:394
 AliRDHFCuts.cxx:395
 AliRDHFCuts.cxx:396
 AliRDHFCuts.cxx:397
 AliRDHFCuts.cxx:398
 AliRDHFCuts.cxx:399
 AliRDHFCuts.cxx:400
 AliRDHFCuts.cxx:401
 AliRDHFCuts.cxx:402
 AliRDHFCuts.cxx:403
 AliRDHFCuts.cxx:404
 AliRDHFCuts.cxx:405
 AliRDHFCuts.cxx:406
 AliRDHFCuts.cxx:407
 AliRDHFCuts.cxx:408
 AliRDHFCuts.cxx:409
 AliRDHFCuts.cxx:410
 AliRDHFCuts.cxx:411
 AliRDHFCuts.cxx:412
 AliRDHFCuts.cxx:413
 AliRDHFCuts.cxx:414
 AliRDHFCuts.cxx:415
 AliRDHFCuts.cxx:416
 AliRDHFCuts.cxx:417
 AliRDHFCuts.cxx:418
 AliRDHFCuts.cxx:419
 AliRDHFCuts.cxx:420
 AliRDHFCuts.cxx:421
 AliRDHFCuts.cxx:422
 AliRDHFCuts.cxx:423
 AliRDHFCuts.cxx:424
 AliRDHFCuts.cxx:425
 AliRDHFCuts.cxx:426
 AliRDHFCuts.cxx:427
 AliRDHFCuts.cxx:428
 AliRDHFCuts.cxx:429
 AliRDHFCuts.cxx:430
 AliRDHFCuts.cxx:431
 AliRDHFCuts.cxx:432
 AliRDHFCuts.cxx:433
 AliRDHFCuts.cxx:434
 AliRDHFCuts.cxx:435
 AliRDHFCuts.cxx:436
 AliRDHFCuts.cxx:437
 AliRDHFCuts.cxx:438
 AliRDHFCuts.cxx:439
 AliRDHFCuts.cxx:440
 AliRDHFCuts.cxx:441
 AliRDHFCuts.cxx:442
 AliRDHFCuts.cxx:443
 AliRDHFCuts.cxx:444
 AliRDHFCuts.cxx:445
 AliRDHFCuts.cxx:446
 AliRDHFCuts.cxx:447
 AliRDHFCuts.cxx:448
 AliRDHFCuts.cxx:449
 AliRDHFCuts.cxx:450
 AliRDHFCuts.cxx:451
 AliRDHFCuts.cxx:452
 AliRDHFCuts.cxx:453
 AliRDHFCuts.cxx:454
 AliRDHFCuts.cxx:455
 AliRDHFCuts.cxx:456
 AliRDHFCuts.cxx:457
 AliRDHFCuts.cxx:458
 AliRDHFCuts.cxx:459
 AliRDHFCuts.cxx:460
 AliRDHFCuts.cxx:461
 AliRDHFCuts.cxx:462
 AliRDHFCuts.cxx:463
 AliRDHFCuts.cxx:464
 AliRDHFCuts.cxx:465
 AliRDHFCuts.cxx:466
 AliRDHFCuts.cxx:467
 AliRDHFCuts.cxx:468
 AliRDHFCuts.cxx:469
 AliRDHFCuts.cxx:470
 AliRDHFCuts.cxx:471
 AliRDHFCuts.cxx:472
 AliRDHFCuts.cxx:473
 AliRDHFCuts.cxx:474
 AliRDHFCuts.cxx:475
 AliRDHFCuts.cxx:476
 AliRDHFCuts.cxx:477
 AliRDHFCuts.cxx:478
 AliRDHFCuts.cxx:479
 AliRDHFCuts.cxx:480
 AliRDHFCuts.cxx:481
 AliRDHFCuts.cxx:482
 AliRDHFCuts.cxx:483
 AliRDHFCuts.cxx:484
 AliRDHFCuts.cxx:485
 AliRDHFCuts.cxx:486
 AliRDHFCuts.cxx:487
 AliRDHFCuts.cxx:488
 AliRDHFCuts.cxx:489
 AliRDHFCuts.cxx:490
 AliRDHFCuts.cxx:491
 AliRDHFCuts.cxx:492
 AliRDHFCuts.cxx:493
 AliRDHFCuts.cxx:494
 AliRDHFCuts.cxx:495
 AliRDHFCuts.cxx:496
 AliRDHFCuts.cxx:497
 AliRDHFCuts.cxx:498
 AliRDHFCuts.cxx:499
 AliRDHFCuts.cxx:500
 AliRDHFCuts.cxx:501
 AliRDHFCuts.cxx:502
 AliRDHFCuts.cxx:503
 AliRDHFCuts.cxx:504
 AliRDHFCuts.cxx:505
 AliRDHFCuts.cxx:506
 AliRDHFCuts.cxx:507
 AliRDHFCuts.cxx:508
 AliRDHFCuts.cxx:509
 AliRDHFCuts.cxx:510
 AliRDHFCuts.cxx:511
 AliRDHFCuts.cxx:512
 AliRDHFCuts.cxx:513
 AliRDHFCuts.cxx:514
 AliRDHFCuts.cxx:515
 AliRDHFCuts.cxx:516
 AliRDHFCuts.cxx:517
 AliRDHFCuts.cxx:518
 AliRDHFCuts.cxx:519
 AliRDHFCuts.cxx:520
 AliRDHFCuts.cxx:521
 AliRDHFCuts.cxx:522
 AliRDHFCuts.cxx:523
 AliRDHFCuts.cxx:524
 AliRDHFCuts.cxx:525
 AliRDHFCuts.cxx:526
 AliRDHFCuts.cxx:527
 AliRDHFCuts.cxx:528
 AliRDHFCuts.cxx:529
 AliRDHFCuts.cxx:530
 AliRDHFCuts.cxx:531
 AliRDHFCuts.cxx:532
 AliRDHFCuts.cxx:533
 AliRDHFCuts.cxx:534
 AliRDHFCuts.cxx:535
 AliRDHFCuts.cxx:536
 AliRDHFCuts.cxx:537
 AliRDHFCuts.cxx:538
 AliRDHFCuts.cxx:539
 AliRDHFCuts.cxx:540
 AliRDHFCuts.cxx:541
 AliRDHFCuts.cxx:542
 AliRDHFCuts.cxx:543
 AliRDHFCuts.cxx:544
 AliRDHFCuts.cxx:545
 AliRDHFCuts.cxx:546
 AliRDHFCuts.cxx:547
 AliRDHFCuts.cxx:548
 AliRDHFCuts.cxx:549
 AliRDHFCuts.cxx:550
 AliRDHFCuts.cxx:551
 AliRDHFCuts.cxx:552
 AliRDHFCuts.cxx:553
 AliRDHFCuts.cxx:554
 AliRDHFCuts.cxx:555
 AliRDHFCuts.cxx:556
 AliRDHFCuts.cxx:557
 AliRDHFCuts.cxx:558
 AliRDHFCuts.cxx:559
 AliRDHFCuts.cxx:560
 AliRDHFCuts.cxx:561
 AliRDHFCuts.cxx:562
 AliRDHFCuts.cxx:563
 AliRDHFCuts.cxx:564
 AliRDHFCuts.cxx:565
 AliRDHFCuts.cxx:566
 AliRDHFCuts.cxx:567
 AliRDHFCuts.cxx:568
 AliRDHFCuts.cxx:569
 AliRDHFCuts.cxx:570
 AliRDHFCuts.cxx:571
 AliRDHFCuts.cxx:572
 AliRDHFCuts.cxx:573
 AliRDHFCuts.cxx:574
 AliRDHFCuts.cxx:575
 AliRDHFCuts.cxx:576
 AliRDHFCuts.cxx:577
 AliRDHFCuts.cxx:578
 AliRDHFCuts.cxx:579
 AliRDHFCuts.cxx:580
 AliRDHFCuts.cxx:581
 AliRDHFCuts.cxx:582
 AliRDHFCuts.cxx:583
 AliRDHFCuts.cxx:584
 AliRDHFCuts.cxx:585
 AliRDHFCuts.cxx:586
 AliRDHFCuts.cxx:587
 AliRDHFCuts.cxx:588
 AliRDHFCuts.cxx:589
 AliRDHFCuts.cxx:590
 AliRDHFCuts.cxx:591
 AliRDHFCuts.cxx:592
 AliRDHFCuts.cxx:593
 AliRDHFCuts.cxx:594
 AliRDHFCuts.cxx:595
 AliRDHFCuts.cxx:596
 AliRDHFCuts.cxx:597
 AliRDHFCuts.cxx:598
 AliRDHFCuts.cxx:599
 AliRDHFCuts.cxx:600
 AliRDHFCuts.cxx:601
 AliRDHFCuts.cxx:602
 AliRDHFCuts.cxx:603
 AliRDHFCuts.cxx:604
 AliRDHFCuts.cxx:605
 AliRDHFCuts.cxx:606
 AliRDHFCuts.cxx:607
 AliRDHFCuts.cxx:608
 AliRDHFCuts.cxx:609
 AliRDHFCuts.cxx:610
 AliRDHFCuts.cxx:611
 AliRDHFCuts.cxx:612
 AliRDHFCuts.cxx:613
 AliRDHFCuts.cxx:614
 AliRDHFCuts.cxx:615
 AliRDHFCuts.cxx:616
 AliRDHFCuts.cxx:617
 AliRDHFCuts.cxx:618
 AliRDHFCuts.cxx:619
 AliRDHFCuts.cxx:620
 AliRDHFCuts.cxx:621
 AliRDHFCuts.cxx:622
 AliRDHFCuts.cxx:623
 AliRDHFCuts.cxx:624
 AliRDHFCuts.cxx:625
 AliRDHFCuts.cxx:626
 AliRDHFCuts.cxx:627
 AliRDHFCuts.cxx:628
 AliRDHFCuts.cxx:629
 AliRDHFCuts.cxx:630
 AliRDHFCuts.cxx:631
 AliRDHFCuts.cxx:632
 AliRDHFCuts.cxx:633
 AliRDHFCuts.cxx:634
 AliRDHFCuts.cxx:635
 AliRDHFCuts.cxx:636
 AliRDHFCuts.cxx:637
 AliRDHFCuts.cxx:638
 AliRDHFCuts.cxx:639
 AliRDHFCuts.cxx:640
 AliRDHFCuts.cxx:641
 AliRDHFCuts.cxx:642
 AliRDHFCuts.cxx:643
 AliRDHFCuts.cxx:644
 AliRDHFCuts.cxx:645
 AliRDHFCuts.cxx:646
 AliRDHFCuts.cxx:647
 AliRDHFCuts.cxx:648
 AliRDHFCuts.cxx:649
 AliRDHFCuts.cxx:650
 AliRDHFCuts.cxx:651
 AliRDHFCuts.cxx:652
 AliRDHFCuts.cxx:653
 AliRDHFCuts.cxx:654
 AliRDHFCuts.cxx:655
 AliRDHFCuts.cxx:656
 AliRDHFCuts.cxx:657
 AliRDHFCuts.cxx:658
 AliRDHFCuts.cxx:659
 AliRDHFCuts.cxx:660
 AliRDHFCuts.cxx:661
 AliRDHFCuts.cxx:662
 AliRDHFCuts.cxx:663
 AliRDHFCuts.cxx:664
 AliRDHFCuts.cxx:665
 AliRDHFCuts.cxx:666
 AliRDHFCuts.cxx:667
 AliRDHFCuts.cxx:668
 AliRDHFCuts.cxx:669
 AliRDHFCuts.cxx:670
 AliRDHFCuts.cxx:671
 AliRDHFCuts.cxx:672
 AliRDHFCuts.cxx:673
 AliRDHFCuts.cxx:674
 AliRDHFCuts.cxx:675
 AliRDHFCuts.cxx:676
 AliRDHFCuts.cxx:677
 AliRDHFCuts.cxx:678
 AliRDHFCuts.cxx:679
 AliRDHFCuts.cxx:680
 AliRDHFCuts.cxx:681
 AliRDHFCuts.cxx:682
 AliRDHFCuts.cxx:683
 AliRDHFCuts.cxx:684
 AliRDHFCuts.cxx:685
 AliRDHFCuts.cxx:686
 AliRDHFCuts.cxx:687
 AliRDHFCuts.cxx:688
 AliRDHFCuts.cxx:689
 AliRDHFCuts.cxx:690
 AliRDHFCuts.cxx:691
 AliRDHFCuts.cxx:692
 AliRDHFCuts.cxx:693
 AliRDHFCuts.cxx:694
 AliRDHFCuts.cxx:695
 AliRDHFCuts.cxx:696
 AliRDHFCuts.cxx:697
 AliRDHFCuts.cxx:698
 AliRDHFCuts.cxx:699
 AliRDHFCuts.cxx:700
 AliRDHFCuts.cxx:701
 AliRDHFCuts.cxx:702
 AliRDHFCuts.cxx:703
 AliRDHFCuts.cxx:704
 AliRDHFCuts.cxx:705
 AliRDHFCuts.cxx:706
 AliRDHFCuts.cxx:707
 AliRDHFCuts.cxx:708
 AliRDHFCuts.cxx:709
 AliRDHFCuts.cxx:710
 AliRDHFCuts.cxx:711
 AliRDHFCuts.cxx:712
 AliRDHFCuts.cxx:713
 AliRDHFCuts.cxx:714
 AliRDHFCuts.cxx:715
 AliRDHFCuts.cxx:716
 AliRDHFCuts.cxx:717
 AliRDHFCuts.cxx:718
 AliRDHFCuts.cxx:719
 AliRDHFCuts.cxx:720
 AliRDHFCuts.cxx:721
 AliRDHFCuts.cxx:722
 AliRDHFCuts.cxx:723
 AliRDHFCuts.cxx:724
 AliRDHFCuts.cxx:725
 AliRDHFCuts.cxx:726
 AliRDHFCuts.cxx:727
 AliRDHFCuts.cxx:728
 AliRDHFCuts.cxx:729
 AliRDHFCuts.cxx:730
 AliRDHFCuts.cxx:731
 AliRDHFCuts.cxx:732
 AliRDHFCuts.cxx:733
 AliRDHFCuts.cxx:734
 AliRDHFCuts.cxx:735
 AliRDHFCuts.cxx:736
 AliRDHFCuts.cxx:737
 AliRDHFCuts.cxx:738
 AliRDHFCuts.cxx:739
 AliRDHFCuts.cxx:740
 AliRDHFCuts.cxx:741
 AliRDHFCuts.cxx:742
 AliRDHFCuts.cxx:743
 AliRDHFCuts.cxx:744
 AliRDHFCuts.cxx:745
 AliRDHFCuts.cxx:746
 AliRDHFCuts.cxx:747
 AliRDHFCuts.cxx:748
 AliRDHFCuts.cxx:749
 AliRDHFCuts.cxx:750
 AliRDHFCuts.cxx:751
 AliRDHFCuts.cxx:752
 AliRDHFCuts.cxx:753
 AliRDHFCuts.cxx:754
 AliRDHFCuts.cxx:755
 AliRDHFCuts.cxx:756
 AliRDHFCuts.cxx:757
 AliRDHFCuts.cxx:758
 AliRDHFCuts.cxx:759
 AliRDHFCuts.cxx:760
 AliRDHFCuts.cxx:761
 AliRDHFCuts.cxx:762
 AliRDHFCuts.cxx:763
 AliRDHFCuts.cxx:764
 AliRDHFCuts.cxx:765
 AliRDHFCuts.cxx:766
 AliRDHFCuts.cxx:767
 AliRDHFCuts.cxx:768
 AliRDHFCuts.cxx:769
 AliRDHFCuts.cxx:770
 AliRDHFCuts.cxx:771
 AliRDHFCuts.cxx:772
 AliRDHFCuts.cxx:773
 AliRDHFCuts.cxx:774
 AliRDHFCuts.cxx:775
 AliRDHFCuts.cxx:776
 AliRDHFCuts.cxx:777
 AliRDHFCuts.cxx:778
 AliRDHFCuts.cxx:779
 AliRDHFCuts.cxx:780
 AliRDHFCuts.cxx:781
 AliRDHFCuts.cxx:782
 AliRDHFCuts.cxx:783
 AliRDHFCuts.cxx:784
 AliRDHFCuts.cxx:785
 AliRDHFCuts.cxx:786
 AliRDHFCuts.cxx:787
 AliRDHFCuts.cxx:788
 AliRDHFCuts.cxx:789
 AliRDHFCuts.cxx:790
 AliRDHFCuts.cxx:791
 AliRDHFCuts.cxx:792
 AliRDHFCuts.cxx:793
 AliRDHFCuts.cxx:794
 AliRDHFCuts.cxx:795
 AliRDHFCuts.cxx:796
 AliRDHFCuts.cxx:797
 AliRDHFCuts.cxx:798
 AliRDHFCuts.cxx:799
 AliRDHFCuts.cxx:800
 AliRDHFCuts.cxx:801
 AliRDHFCuts.cxx:802
 AliRDHFCuts.cxx:803
 AliRDHFCuts.cxx:804
 AliRDHFCuts.cxx:805
 AliRDHFCuts.cxx:806
 AliRDHFCuts.cxx:807
 AliRDHFCuts.cxx:808
 AliRDHFCuts.cxx:809
 AliRDHFCuts.cxx:810
 AliRDHFCuts.cxx:811
 AliRDHFCuts.cxx:812
 AliRDHFCuts.cxx:813
 AliRDHFCuts.cxx:814
 AliRDHFCuts.cxx:815
 AliRDHFCuts.cxx:816
 AliRDHFCuts.cxx:817
 AliRDHFCuts.cxx:818
 AliRDHFCuts.cxx:819
 AliRDHFCuts.cxx:820
 AliRDHFCuts.cxx:821
 AliRDHFCuts.cxx:822
 AliRDHFCuts.cxx:823
 AliRDHFCuts.cxx:824
 AliRDHFCuts.cxx:825
 AliRDHFCuts.cxx:826
 AliRDHFCuts.cxx:827
 AliRDHFCuts.cxx:828
 AliRDHFCuts.cxx:829
 AliRDHFCuts.cxx:830
 AliRDHFCuts.cxx:831
 AliRDHFCuts.cxx:832
 AliRDHFCuts.cxx:833
 AliRDHFCuts.cxx:834
 AliRDHFCuts.cxx:835
 AliRDHFCuts.cxx:836
 AliRDHFCuts.cxx:837
 AliRDHFCuts.cxx:838
 AliRDHFCuts.cxx:839
 AliRDHFCuts.cxx:840
 AliRDHFCuts.cxx:841
 AliRDHFCuts.cxx:842
 AliRDHFCuts.cxx:843
 AliRDHFCuts.cxx:844
 AliRDHFCuts.cxx:845
 AliRDHFCuts.cxx:846
 AliRDHFCuts.cxx:847
 AliRDHFCuts.cxx:848
 AliRDHFCuts.cxx:849
 AliRDHFCuts.cxx:850
 AliRDHFCuts.cxx:851
 AliRDHFCuts.cxx:852
 AliRDHFCuts.cxx:853
 AliRDHFCuts.cxx:854
 AliRDHFCuts.cxx:855
 AliRDHFCuts.cxx:856
 AliRDHFCuts.cxx:857
 AliRDHFCuts.cxx:858
 AliRDHFCuts.cxx:859
 AliRDHFCuts.cxx:860
 AliRDHFCuts.cxx:861
 AliRDHFCuts.cxx:862
 AliRDHFCuts.cxx:863
 AliRDHFCuts.cxx:864
 AliRDHFCuts.cxx:865
 AliRDHFCuts.cxx:866
 AliRDHFCuts.cxx:867
 AliRDHFCuts.cxx:868
 AliRDHFCuts.cxx:869
 AliRDHFCuts.cxx:870
 AliRDHFCuts.cxx:871
 AliRDHFCuts.cxx:872
 AliRDHFCuts.cxx:873
 AliRDHFCuts.cxx:874
 AliRDHFCuts.cxx:875
 AliRDHFCuts.cxx:876
 AliRDHFCuts.cxx:877
 AliRDHFCuts.cxx:878
 AliRDHFCuts.cxx:879
 AliRDHFCuts.cxx:880
 AliRDHFCuts.cxx:881
 AliRDHFCuts.cxx:882
 AliRDHFCuts.cxx:883
 AliRDHFCuts.cxx:884
 AliRDHFCuts.cxx:885
 AliRDHFCuts.cxx:886
 AliRDHFCuts.cxx:887
 AliRDHFCuts.cxx:888
 AliRDHFCuts.cxx:889
 AliRDHFCuts.cxx:890
 AliRDHFCuts.cxx:891
 AliRDHFCuts.cxx:892
 AliRDHFCuts.cxx:893
 AliRDHFCuts.cxx:894
 AliRDHFCuts.cxx:895
 AliRDHFCuts.cxx:896
 AliRDHFCuts.cxx:897
 AliRDHFCuts.cxx:898
 AliRDHFCuts.cxx:899
 AliRDHFCuts.cxx:900
 AliRDHFCuts.cxx:901
 AliRDHFCuts.cxx:902
 AliRDHFCuts.cxx:903
 AliRDHFCuts.cxx:904
 AliRDHFCuts.cxx:905
 AliRDHFCuts.cxx:906
 AliRDHFCuts.cxx:907
 AliRDHFCuts.cxx:908
 AliRDHFCuts.cxx:909
 AliRDHFCuts.cxx:910
 AliRDHFCuts.cxx:911
 AliRDHFCuts.cxx:912
 AliRDHFCuts.cxx:913
 AliRDHFCuts.cxx:914
 AliRDHFCuts.cxx:915
 AliRDHFCuts.cxx:916
 AliRDHFCuts.cxx:917
 AliRDHFCuts.cxx:918
 AliRDHFCuts.cxx:919
 AliRDHFCuts.cxx:920
 AliRDHFCuts.cxx:921
 AliRDHFCuts.cxx:922
 AliRDHFCuts.cxx:923
 AliRDHFCuts.cxx:924
 AliRDHFCuts.cxx:925
 AliRDHFCuts.cxx:926
 AliRDHFCuts.cxx:927
 AliRDHFCuts.cxx:928
 AliRDHFCuts.cxx:929
 AliRDHFCuts.cxx:930
 AliRDHFCuts.cxx:931
 AliRDHFCuts.cxx:932
 AliRDHFCuts.cxx:933
 AliRDHFCuts.cxx:934
 AliRDHFCuts.cxx:935
 AliRDHFCuts.cxx:936
 AliRDHFCuts.cxx:937
 AliRDHFCuts.cxx:938
 AliRDHFCuts.cxx:939
 AliRDHFCuts.cxx:940
 AliRDHFCuts.cxx:941
 AliRDHFCuts.cxx:942
 AliRDHFCuts.cxx:943
 AliRDHFCuts.cxx:944
 AliRDHFCuts.cxx:945
 AliRDHFCuts.cxx:946
 AliRDHFCuts.cxx:947
 AliRDHFCuts.cxx:948
 AliRDHFCuts.cxx:949
 AliRDHFCuts.cxx:950
 AliRDHFCuts.cxx:951
 AliRDHFCuts.cxx:952
 AliRDHFCuts.cxx:953
 AliRDHFCuts.cxx:954
 AliRDHFCuts.cxx:955
 AliRDHFCuts.cxx:956
 AliRDHFCuts.cxx:957
 AliRDHFCuts.cxx:958
 AliRDHFCuts.cxx:959
 AliRDHFCuts.cxx:960
 AliRDHFCuts.cxx:961
 AliRDHFCuts.cxx:962
 AliRDHFCuts.cxx:963
 AliRDHFCuts.cxx:964
 AliRDHFCuts.cxx:965
 AliRDHFCuts.cxx:966
 AliRDHFCuts.cxx:967
 AliRDHFCuts.cxx:968
 AliRDHFCuts.cxx:969
 AliRDHFCuts.cxx:970
 AliRDHFCuts.cxx:971
 AliRDHFCuts.cxx:972
 AliRDHFCuts.cxx:973
 AliRDHFCuts.cxx:974
 AliRDHFCuts.cxx:975
 AliRDHFCuts.cxx:976
 AliRDHFCuts.cxx:977
 AliRDHFCuts.cxx:978
 AliRDHFCuts.cxx:979
 AliRDHFCuts.cxx:980
 AliRDHFCuts.cxx:981
 AliRDHFCuts.cxx:982
 AliRDHFCuts.cxx:983
 AliRDHFCuts.cxx:984
 AliRDHFCuts.cxx:985
 AliRDHFCuts.cxx:986
 AliRDHFCuts.cxx:987
 AliRDHFCuts.cxx:988
 AliRDHFCuts.cxx:989
 AliRDHFCuts.cxx:990
 AliRDHFCuts.cxx:991
 AliRDHFCuts.cxx:992
 AliRDHFCuts.cxx:993
 AliRDHFCuts.cxx:994
 AliRDHFCuts.cxx:995
 AliRDHFCuts.cxx:996
 AliRDHFCuts.cxx:997
 AliRDHFCuts.cxx:998
 AliRDHFCuts.cxx:999
 AliRDHFCuts.cxx:1000
 AliRDHFCuts.cxx:1001
 AliRDHFCuts.cxx:1002
 AliRDHFCuts.cxx:1003
 AliRDHFCuts.cxx:1004
 AliRDHFCuts.cxx:1005
 AliRDHFCuts.cxx:1006
 AliRDHFCuts.cxx:1007
 AliRDHFCuts.cxx:1008
 AliRDHFCuts.cxx:1009
 AliRDHFCuts.cxx:1010
 AliRDHFCuts.cxx:1011
 AliRDHFCuts.cxx:1012
 AliRDHFCuts.cxx:1013
 AliRDHFCuts.cxx:1014
 AliRDHFCuts.cxx:1015
 AliRDHFCuts.cxx:1016
 AliRDHFCuts.cxx:1017
 AliRDHFCuts.cxx:1018
 AliRDHFCuts.cxx:1019
 AliRDHFCuts.cxx:1020
 AliRDHFCuts.cxx:1021
 AliRDHFCuts.cxx:1022
 AliRDHFCuts.cxx:1023
 AliRDHFCuts.cxx:1024
 AliRDHFCuts.cxx:1025
 AliRDHFCuts.cxx:1026
 AliRDHFCuts.cxx:1027
 AliRDHFCuts.cxx:1028
 AliRDHFCuts.cxx:1029
 AliRDHFCuts.cxx:1030
 AliRDHFCuts.cxx:1031
 AliRDHFCuts.cxx:1032
 AliRDHFCuts.cxx:1033
 AliRDHFCuts.cxx:1034
 AliRDHFCuts.cxx:1035
 AliRDHFCuts.cxx:1036
 AliRDHFCuts.cxx:1037
 AliRDHFCuts.cxx:1038
 AliRDHFCuts.cxx:1039
 AliRDHFCuts.cxx:1040
 AliRDHFCuts.cxx:1041
 AliRDHFCuts.cxx:1042
 AliRDHFCuts.cxx:1043
 AliRDHFCuts.cxx:1044
 AliRDHFCuts.cxx:1045
 AliRDHFCuts.cxx:1046
 AliRDHFCuts.cxx:1047
 AliRDHFCuts.cxx:1048
 AliRDHFCuts.cxx:1049
 AliRDHFCuts.cxx:1050
 AliRDHFCuts.cxx:1051
 AliRDHFCuts.cxx:1052
 AliRDHFCuts.cxx:1053
 AliRDHFCuts.cxx:1054
 AliRDHFCuts.cxx:1055
 AliRDHFCuts.cxx:1056
 AliRDHFCuts.cxx:1057
 AliRDHFCuts.cxx:1058
 AliRDHFCuts.cxx:1059
 AliRDHFCuts.cxx:1060
 AliRDHFCuts.cxx:1061
 AliRDHFCuts.cxx:1062
 AliRDHFCuts.cxx:1063
 AliRDHFCuts.cxx:1064
 AliRDHFCuts.cxx:1065
 AliRDHFCuts.cxx:1066
 AliRDHFCuts.cxx:1067
 AliRDHFCuts.cxx:1068
 AliRDHFCuts.cxx:1069
 AliRDHFCuts.cxx:1070
 AliRDHFCuts.cxx:1071
 AliRDHFCuts.cxx:1072
 AliRDHFCuts.cxx:1073
 AliRDHFCuts.cxx:1074
 AliRDHFCuts.cxx:1075
 AliRDHFCuts.cxx:1076
 AliRDHFCuts.cxx:1077
 AliRDHFCuts.cxx:1078
 AliRDHFCuts.cxx:1079
 AliRDHFCuts.cxx:1080
 AliRDHFCuts.cxx:1081
 AliRDHFCuts.cxx:1082
 AliRDHFCuts.cxx:1083
 AliRDHFCuts.cxx:1084
 AliRDHFCuts.cxx:1085
 AliRDHFCuts.cxx:1086
 AliRDHFCuts.cxx:1087
 AliRDHFCuts.cxx:1088
 AliRDHFCuts.cxx:1089
 AliRDHFCuts.cxx:1090
 AliRDHFCuts.cxx:1091
 AliRDHFCuts.cxx:1092
 AliRDHFCuts.cxx:1093
 AliRDHFCuts.cxx:1094
 AliRDHFCuts.cxx:1095
 AliRDHFCuts.cxx:1096
 AliRDHFCuts.cxx:1097
 AliRDHFCuts.cxx:1098
 AliRDHFCuts.cxx:1099
 AliRDHFCuts.cxx:1100
 AliRDHFCuts.cxx:1101
 AliRDHFCuts.cxx:1102
 AliRDHFCuts.cxx:1103
 AliRDHFCuts.cxx:1104
 AliRDHFCuts.cxx:1105
 AliRDHFCuts.cxx:1106
 AliRDHFCuts.cxx:1107
 AliRDHFCuts.cxx:1108
 AliRDHFCuts.cxx:1109
 AliRDHFCuts.cxx:1110
 AliRDHFCuts.cxx:1111
 AliRDHFCuts.cxx:1112
 AliRDHFCuts.cxx:1113
 AliRDHFCuts.cxx:1114
 AliRDHFCuts.cxx:1115
 AliRDHFCuts.cxx:1116
 AliRDHFCuts.cxx:1117
 AliRDHFCuts.cxx:1118
 AliRDHFCuts.cxx:1119
 AliRDHFCuts.cxx:1120
 AliRDHFCuts.cxx:1121
 AliRDHFCuts.cxx:1122
 AliRDHFCuts.cxx:1123
 AliRDHFCuts.cxx:1124
 AliRDHFCuts.cxx:1125
 AliRDHFCuts.cxx:1126
 AliRDHFCuts.cxx:1127
 AliRDHFCuts.cxx:1128
 AliRDHFCuts.cxx:1129
 AliRDHFCuts.cxx:1130
 AliRDHFCuts.cxx:1131
 AliRDHFCuts.cxx:1132
 AliRDHFCuts.cxx:1133
 AliRDHFCuts.cxx:1134
 AliRDHFCuts.cxx:1135
 AliRDHFCuts.cxx:1136
 AliRDHFCuts.cxx:1137
 AliRDHFCuts.cxx:1138
 AliRDHFCuts.cxx:1139
 AliRDHFCuts.cxx:1140
 AliRDHFCuts.cxx:1141
 AliRDHFCuts.cxx:1142
 AliRDHFCuts.cxx:1143
 AliRDHFCuts.cxx:1144
 AliRDHFCuts.cxx:1145
 AliRDHFCuts.cxx:1146
 AliRDHFCuts.cxx:1147
 AliRDHFCuts.cxx:1148
 AliRDHFCuts.cxx:1149
 AliRDHFCuts.cxx:1150
 AliRDHFCuts.cxx:1151
 AliRDHFCuts.cxx:1152
 AliRDHFCuts.cxx:1153
 AliRDHFCuts.cxx:1154
 AliRDHFCuts.cxx:1155
 AliRDHFCuts.cxx:1156
 AliRDHFCuts.cxx:1157
 AliRDHFCuts.cxx:1158
 AliRDHFCuts.cxx:1159
 AliRDHFCuts.cxx:1160
 AliRDHFCuts.cxx:1161
 AliRDHFCuts.cxx:1162
 AliRDHFCuts.cxx:1163
 AliRDHFCuts.cxx:1164
 AliRDHFCuts.cxx:1165
 AliRDHFCuts.cxx:1166
 AliRDHFCuts.cxx:1167
 AliRDHFCuts.cxx:1168
 AliRDHFCuts.cxx:1169
 AliRDHFCuts.cxx:1170
 AliRDHFCuts.cxx:1171
 AliRDHFCuts.cxx:1172
 AliRDHFCuts.cxx:1173
 AliRDHFCuts.cxx:1174
 AliRDHFCuts.cxx:1175
 AliRDHFCuts.cxx:1176
 AliRDHFCuts.cxx:1177
 AliRDHFCuts.cxx:1178
 AliRDHFCuts.cxx:1179
 AliRDHFCuts.cxx:1180
 AliRDHFCuts.cxx:1181
 AliRDHFCuts.cxx:1182
 AliRDHFCuts.cxx:1183
 AliRDHFCuts.cxx:1184
 AliRDHFCuts.cxx:1185
 AliRDHFCuts.cxx:1186
 AliRDHFCuts.cxx:1187
 AliRDHFCuts.cxx:1188
 AliRDHFCuts.cxx:1189
 AliRDHFCuts.cxx:1190
 AliRDHFCuts.cxx:1191
 AliRDHFCuts.cxx:1192
 AliRDHFCuts.cxx:1193
 AliRDHFCuts.cxx:1194
 AliRDHFCuts.cxx:1195
 AliRDHFCuts.cxx:1196
 AliRDHFCuts.cxx:1197
 AliRDHFCuts.cxx:1198
 AliRDHFCuts.cxx:1199
 AliRDHFCuts.cxx:1200
 AliRDHFCuts.cxx:1201
 AliRDHFCuts.cxx:1202
 AliRDHFCuts.cxx:1203
 AliRDHFCuts.cxx:1204
 AliRDHFCuts.cxx:1205
 AliRDHFCuts.cxx:1206
 AliRDHFCuts.cxx:1207
 AliRDHFCuts.cxx:1208
 AliRDHFCuts.cxx:1209
 AliRDHFCuts.cxx:1210
 AliRDHFCuts.cxx:1211
 AliRDHFCuts.cxx:1212
 AliRDHFCuts.cxx:1213
 AliRDHFCuts.cxx:1214
 AliRDHFCuts.cxx:1215
 AliRDHFCuts.cxx:1216
 AliRDHFCuts.cxx:1217
 AliRDHFCuts.cxx:1218
 AliRDHFCuts.cxx:1219
 AliRDHFCuts.cxx:1220
 AliRDHFCuts.cxx:1221
 AliRDHFCuts.cxx:1222
 AliRDHFCuts.cxx:1223
 AliRDHFCuts.cxx:1224
 AliRDHFCuts.cxx:1225
 AliRDHFCuts.cxx:1226
 AliRDHFCuts.cxx:1227
 AliRDHFCuts.cxx:1228
 AliRDHFCuts.cxx:1229
 AliRDHFCuts.cxx:1230
 AliRDHFCuts.cxx:1231
 AliRDHFCuts.cxx:1232
 AliRDHFCuts.cxx:1233
 AliRDHFCuts.cxx:1234
 AliRDHFCuts.cxx:1235
 AliRDHFCuts.cxx:1236
 AliRDHFCuts.cxx:1237
 AliRDHFCuts.cxx:1238
 AliRDHFCuts.cxx:1239
 AliRDHFCuts.cxx:1240
 AliRDHFCuts.cxx:1241
 AliRDHFCuts.cxx:1242
 AliRDHFCuts.cxx:1243
 AliRDHFCuts.cxx:1244
 AliRDHFCuts.cxx:1245
 AliRDHFCuts.cxx:1246
 AliRDHFCuts.cxx:1247
 AliRDHFCuts.cxx:1248
 AliRDHFCuts.cxx:1249
 AliRDHFCuts.cxx:1250
 AliRDHFCuts.cxx:1251
 AliRDHFCuts.cxx:1252
 AliRDHFCuts.cxx:1253
 AliRDHFCuts.cxx:1254
 AliRDHFCuts.cxx:1255
 AliRDHFCuts.cxx:1256
 AliRDHFCuts.cxx:1257
 AliRDHFCuts.cxx:1258
 AliRDHFCuts.cxx:1259
 AliRDHFCuts.cxx:1260
 AliRDHFCuts.cxx:1261
 AliRDHFCuts.cxx:1262
 AliRDHFCuts.cxx:1263
 AliRDHFCuts.cxx:1264
 AliRDHFCuts.cxx:1265
 AliRDHFCuts.cxx:1266
 AliRDHFCuts.cxx:1267
 AliRDHFCuts.cxx:1268
 AliRDHFCuts.cxx:1269
 AliRDHFCuts.cxx:1270
 AliRDHFCuts.cxx:1271
 AliRDHFCuts.cxx:1272
 AliRDHFCuts.cxx:1273
 AliRDHFCuts.cxx:1274
 AliRDHFCuts.cxx:1275
 AliRDHFCuts.cxx:1276
 AliRDHFCuts.cxx:1277
 AliRDHFCuts.cxx:1278
 AliRDHFCuts.cxx:1279
 AliRDHFCuts.cxx:1280
 AliRDHFCuts.cxx:1281
 AliRDHFCuts.cxx:1282
 AliRDHFCuts.cxx:1283
 AliRDHFCuts.cxx:1284
 AliRDHFCuts.cxx:1285
 AliRDHFCuts.cxx:1286
 AliRDHFCuts.cxx:1287
 AliRDHFCuts.cxx:1288
 AliRDHFCuts.cxx:1289
 AliRDHFCuts.cxx:1290
 AliRDHFCuts.cxx:1291
 AliRDHFCuts.cxx:1292
 AliRDHFCuts.cxx:1293
 AliRDHFCuts.cxx:1294
 AliRDHFCuts.cxx:1295
 AliRDHFCuts.cxx:1296
 AliRDHFCuts.cxx:1297
 AliRDHFCuts.cxx:1298
 AliRDHFCuts.cxx:1299
 AliRDHFCuts.cxx:1300
 AliRDHFCuts.cxx:1301
 AliRDHFCuts.cxx:1302
 AliRDHFCuts.cxx:1303
 AliRDHFCuts.cxx:1304
 AliRDHFCuts.cxx:1305
 AliRDHFCuts.cxx:1306
 AliRDHFCuts.cxx:1307
 AliRDHFCuts.cxx:1308
 AliRDHFCuts.cxx:1309
 AliRDHFCuts.cxx:1310
 AliRDHFCuts.cxx:1311
 AliRDHFCuts.cxx:1312
 AliRDHFCuts.cxx:1313
 AliRDHFCuts.cxx:1314
 AliRDHFCuts.cxx:1315
 AliRDHFCuts.cxx:1316
 AliRDHFCuts.cxx:1317
 AliRDHFCuts.cxx:1318
 AliRDHFCuts.cxx:1319
 AliRDHFCuts.cxx:1320
 AliRDHFCuts.cxx:1321
 AliRDHFCuts.cxx:1322
 AliRDHFCuts.cxx:1323
 AliRDHFCuts.cxx:1324
 AliRDHFCuts.cxx:1325
 AliRDHFCuts.cxx:1326
 AliRDHFCuts.cxx:1327
 AliRDHFCuts.cxx:1328
 AliRDHFCuts.cxx:1329
 AliRDHFCuts.cxx:1330
 AliRDHFCuts.cxx:1331
 AliRDHFCuts.cxx:1332
 AliRDHFCuts.cxx:1333
 AliRDHFCuts.cxx:1334
 AliRDHFCuts.cxx:1335
 AliRDHFCuts.cxx:1336
 AliRDHFCuts.cxx:1337
 AliRDHFCuts.cxx:1338
 AliRDHFCuts.cxx:1339
 AliRDHFCuts.cxx:1340
 AliRDHFCuts.cxx:1341
 AliRDHFCuts.cxx:1342
 AliRDHFCuts.cxx:1343
 AliRDHFCuts.cxx:1344
 AliRDHFCuts.cxx:1345
 AliRDHFCuts.cxx:1346
 AliRDHFCuts.cxx:1347
 AliRDHFCuts.cxx:1348
 AliRDHFCuts.cxx:1349
 AliRDHFCuts.cxx:1350
 AliRDHFCuts.cxx:1351
 AliRDHFCuts.cxx:1352
 AliRDHFCuts.cxx:1353
 AliRDHFCuts.cxx:1354
 AliRDHFCuts.cxx:1355
 AliRDHFCuts.cxx:1356
 AliRDHFCuts.cxx:1357
 AliRDHFCuts.cxx:1358
 AliRDHFCuts.cxx:1359
 AliRDHFCuts.cxx:1360
 AliRDHFCuts.cxx:1361
 AliRDHFCuts.cxx:1362
 AliRDHFCuts.cxx:1363
 AliRDHFCuts.cxx:1364
 AliRDHFCuts.cxx:1365
 AliRDHFCuts.cxx:1366
 AliRDHFCuts.cxx:1367
 AliRDHFCuts.cxx:1368
 AliRDHFCuts.cxx:1369
 AliRDHFCuts.cxx:1370
 AliRDHFCuts.cxx:1371
 AliRDHFCuts.cxx:1372
 AliRDHFCuts.cxx:1373
 AliRDHFCuts.cxx:1374
 AliRDHFCuts.cxx:1375
 AliRDHFCuts.cxx:1376
 AliRDHFCuts.cxx:1377
 AliRDHFCuts.cxx:1378
 AliRDHFCuts.cxx:1379
 AliRDHFCuts.cxx:1380
 AliRDHFCuts.cxx:1381
 AliRDHFCuts.cxx:1382
 AliRDHFCuts.cxx:1383
 AliRDHFCuts.cxx:1384
 AliRDHFCuts.cxx:1385
 AliRDHFCuts.cxx:1386
 AliRDHFCuts.cxx:1387
 AliRDHFCuts.cxx:1388
 AliRDHFCuts.cxx:1389
 AliRDHFCuts.cxx:1390
 AliRDHFCuts.cxx:1391
 AliRDHFCuts.cxx:1392
 AliRDHFCuts.cxx:1393
 AliRDHFCuts.cxx:1394
 AliRDHFCuts.cxx:1395
 AliRDHFCuts.cxx:1396
 AliRDHFCuts.cxx:1397
 AliRDHFCuts.cxx:1398
 AliRDHFCuts.cxx:1399
 AliRDHFCuts.cxx:1400
 AliRDHFCuts.cxx:1401
 AliRDHFCuts.cxx:1402
 AliRDHFCuts.cxx:1403
 AliRDHFCuts.cxx:1404
 AliRDHFCuts.cxx:1405
 AliRDHFCuts.cxx:1406
 AliRDHFCuts.cxx:1407
 AliRDHFCuts.cxx:1408
 AliRDHFCuts.cxx:1409
 AliRDHFCuts.cxx:1410
 AliRDHFCuts.cxx:1411
 AliRDHFCuts.cxx:1412
 AliRDHFCuts.cxx:1413
 AliRDHFCuts.cxx:1414
 AliRDHFCuts.cxx:1415
 AliRDHFCuts.cxx:1416
 AliRDHFCuts.cxx:1417
 AliRDHFCuts.cxx:1418
 AliRDHFCuts.cxx:1419
 AliRDHFCuts.cxx:1420
 AliRDHFCuts.cxx:1421
 AliRDHFCuts.cxx:1422
 AliRDHFCuts.cxx:1423
 AliRDHFCuts.cxx:1424
 AliRDHFCuts.cxx:1425
 AliRDHFCuts.cxx:1426
 AliRDHFCuts.cxx:1427
 AliRDHFCuts.cxx:1428
 AliRDHFCuts.cxx:1429
 AliRDHFCuts.cxx:1430
 AliRDHFCuts.cxx:1431
 AliRDHFCuts.cxx:1432
 AliRDHFCuts.cxx:1433
 AliRDHFCuts.cxx:1434
 AliRDHFCuts.cxx:1435
 AliRDHFCuts.cxx:1436
 AliRDHFCuts.cxx:1437
 AliRDHFCuts.cxx:1438
 AliRDHFCuts.cxx:1439
 AliRDHFCuts.cxx:1440
 AliRDHFCuts.cxx:1441
 AliRDHFCuts.cxx:1442
 AliRDHFCuts.cxx:1443
 AliRDHFCuts.cxx:1444
 AliRDHFCuts.cxx:1445
 AliRDHFCuts.cxx:1446
 AliRDHFCuts.cxx:1447
 AliRDHFCuts.cxx:1448
 AliRDHFCuts.cxx:1449
 AliRDHFCuts.cxx:1450
 AliRDHFCuts.cxx:1451
 AliRDHFCuts.cxx:1452
 AliRDHFCuts.cxx:1453
 AliRDHFCuts.cxx:1454
 AliRDHFCuts.cxx:1455
 AliRDHFCuts.cxx:1456
 AliRDHFCuts.cxx:1457
 AliRDHFCuts.cxx:1458
 AliRDHFCuts.cxx:1459
 AliRDHFCuts.cxx:1460
 AliRDHFCuts.cxx:1461
 AliRDHFCuts.cxx:1462
 AliRDHFCuts.cxx:1463
 AliRDHFCuts.cxx:1464
 AliRDHFCuts.cxx:1465
 AliRDHFCuts.cxx:1466
 AliRDHFCuts.cxx:1467
 AliRDHFCuts.cxx:1468
 AliRDHFCuts.cxx:1469
 AliRDHFCuts.cxx:1470
 AliRDHFCuts.cxx:1471
 AliRDHFCuts.cxx:1472
 AliRDHFCuts.cxx:1473
 AliRDHFCuts.cxx:1474
 AliRDHFCuts.cxx:1475
 AliRDHFCuts.cxx:1476
 AliRDHFCuts.cxx:1477
 AliRDHFCuts.cxx:1478
 AliRDHFCuts.cxx:1479
 AliRDHFCuts.cxx:1480
 AliRDHFCuts.cxx:1481
 AliRDHFCuts.cxx:1482
 AliRDHFCuts.cxx:1483
 AliRDHFCuts.cxx:1484
 AliRDHFCuts.cxx:1485
 AliRDHFCuts.cxx:1486
 AliRDHFCuts.cxx:1487
 AliRDHFCuts.cxx:1488
 AliRDHFCuts.cxx:1489
 AliRDHFCuts.cxx:1490
 AliRDHFCuts.cxx:1491
 AliRDHFCuts.cxx:1492
 AliRDHFCuts.cxx:1493
 AliRDHFCuts.cxx:1494
 AliRDHFCuts.cxx:1495
 AliRDHFCuts.cxx:1496
 AliRDHFCuts.cxx:1497
 AliRDHFCuts.cxx:1498
 AliRDHFCuts.cxx:1499
 AliRDHFCuts.cxx:1500
 AliRDHFCuts.cxx:1501
 AliRDHFCuts.cxx:1502
 AliRDHFCuts.cxx:1503
 AliRDHFCuts.cxx:1504
 AliRDHFCuts.cxx:1505
 AliRDHFCuts.cxx:1506
 AliRDHFCuts.cxx:1507
 AliRDHFCuts.cxx:1508
 AliRDHFCuts.cxx:1509
 AliRDHFCuts.cxx:1510
 AliRDHFCuts.cxx:1511
 AliRDHFCuts.cxx:1512
 AliRDHFCuts.cxx:1513
 AliRDHFCuts.cxx:1514
 AliRDHFCuts.cxx:1515
 AliRDHFCuts.cxx:1516
 AliRDHFCuts.cxx:1517
 AliRDHFCuts.cxx:1518
 AliRDHFCuts.cxx:1519
 AliRDHFCuts.cxx:1520
 AliRDHFCuts.cxx:1521
 AliRDHFCuts.cxx:1522
 AliRDHFCuts.cxx:1523
 AliRDHFCuts.cxx:1524
 AliRDHFCuts.cxx:1525
 AliRDHFCuts.cxx:1526
 AliRDHFCuts.cxx:1527
 AliRDHFCuts.cxx:1528
 AliRDHFCuts.cxx:1529
 AliRDHFCuts.cxx:1530
 AliRDHFCuts.cxx:1531
 AliRDHFCuts.cxx:1532
 AliRDHFCuts.cxx:1533
 AliRDHFCuts.cxx:1534
 AliRDHFCuts.cxx:1535
 AliRDHFCuts.cxx:1536
 AliRDHFCuts.cxx:1537
 AliRDHFCuts.cxx:1538
 AliRDHFCuts.cxx:1539
 AliRDHFCuts.cxx:1540
 AliRDHFCuts.cxx:1541
 AliRDHFCuts.cxx:1542
 AliRDHFCuts.cxx:1543
 AliRDHFCuts.cxx:1544
 AliRDHFCuts.cxx:1545
 AliRDHFCuts.cxx:1546
 AliRDHFCuts.cxx:1547
 AliRDHFCuts.cxx:1548
 AliRDHFCuts.cxx:1549
 AliRDHFCuts.cxx:1550
 AliRDHFCuts.cxx:1551
 AliRDHFCuts.cxx:1552
 AliRDHFCuts.cxx:1553
 AliRDHFCuts.cxx:1554
 AliRDHFCuts.cxx:1555
 AliRDHFCuts.cxx:1556
 AliRDHFCuts.cxx:1557
 AliRDHFCuts.cxx:1558
 AliRDHFCuts.cxx:1559
 AliRDHFCuts.cxx:1560
 AliRDHFCuts.cxx:1561
 AliRDHFCuts.cxx:1562
 AliRDHFCuts.cxx:1563
 AliRDHFCuts.cxx:1564
 AliRDHFCuts.cxx:1565
 AliRDHFCuts.cxx:1566
 AliRDHFCuts.cxx:1567