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.                  *
**************************************************************************/
//
// Cut menagement class implemented by the
// ALICE Heavy Flavour Electron Group
// Interface to the correction framework
// Provides a set of standard cuts 
// 
// Authors:
//   Raphaelle Bailhache <R.Bailhache@gsi.de>
//   Markus Fasel <M.Fasel@gsi.de>
//   Markus Heide <mheide@uni-muenster.de>
//   Matus Kalisky <m.kalisky@uni-muenster.de>
//
// Overview over the 18 steps in the correction Framework
// 0. Generated Electrons
// 1. Signal Electrons
// 2. Electron in Acceptance
// ------------------------------------------------------------
// 3. Rec without cuts (MC information)
// 4. Rec Kine ITS/TPC (MC Information)
// 5. Rec Primary (MC Information)
// 6. HFE ITS (MC Information)
// 7. HFE TRD (MC Information)
// 8. PID (MC Information) 
// ............................................................
// 9. Rec without cuts(MC Information for tracks which are already registered)
// 10. Rec Kine ITS/TPC (MC Information for tracks which are already registered)
// 11. RecPrimary (MC Information for tracks which are already registered)
// 12. HFE ITS (MC Information for tracks which are already registered)
// 13. HFE TPC (MC Information for tracks which are already registered)
// 14. PID (MC Information for tracks which are already registered)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 15. Rec without cuts
// 16. Rec Kine ITS/TPC 
// 17. Rec Primary
// 18. HFE ITS
// 19. HFE TRD
// 20. PID
//
#include <TClass.h>
#include <TList.h>
#include <TObjArray.h>
#include <TString.h>

#include "AliCFAcceptanceCuts.h"
#include "AliCFCutBase.h"
#include "AliCFEventGenCuts.h"
#include "AliCFManager.h"
#include "AliCFParticleGenCuts.h"
#include "AliCFTrackIsPrimaryCuts.h"
#include "AliCFTrackKineCuts.h"
#include "AliCFTrackQualityCuts.h"
#include "AliESDtrack.h"
#include "AliHFEextraEventCuts.h"
#include "AliMCEvent.h"
#include "AliVEvent.h"

#include "AliHFEcuts.h"

ClassImp(AliHFEcuts)

const Char_t *AliHFEcuts::fgkMCCutName[AliHFEcuts::kNcutStepsMCTrack] = {
  "MCGenerated",
  "MCGeneratedZOutNoPileUpCentralityFine",
  "MCGeneratedEventCut",
  "MCInAcceptance"
};

const Char_t * AliHFEcuts::fgkRecoCutName[AliHFEcuts::kNcutStepsRecTrack] = {
  "NoCuts",
  "RecKineITSTPC",
  "Primary",
  "HFEITS",
  "HFETOF",
  "HFETPC",
  "HFETRD"
};

const Char_t * AliHFEcuts::fgkDECutName[AliHFEcuts::kNcutStepsDETrack] = {
  "HFEDCA"
};

const Char_t * AliHFEcuts::fgkSecvtxCutName[AliHFEcuts::kNcutStepsSecvtxTrack] = {
  "HFESecvtx"
};

const Char_t * AliHFEcuts::fgkEventCutName[AliHFEcuts::kNcutStepsEvent] = {
  "EventStepGenerated",
  "EventStepRecNoCut",
  "EventStepRecNoPileUp",
  "EventStepRecCentralityOK",
  "EventStepZRange",
  "EventStepReconstructed"
};

const Char_t * AliHFEcuts::fgkUndefined = "Undefined";

//__________________________________________________________________
AliHFEcuts::AliHFEcuts():
  TNamed(),
  fRequirements(0),
  fTPCclusterDef(0),
  fTPCratioDef(0),
  fMinClustersTPC(0),
  fMinClustersTPCPID(0),
  fMinClustersITS(0),
  fMinTrackletsTRD(0),
  fMaxChi2TRD(-1.),
  fCutITSPixel(0),
  fCheckITSLayerStatus(kTRUE),
  fCutITSDrift(0),
  fMaxChi2clusterITS(-1.),
  fMaxChi2clusterTPC(0.),
  fMinClusterRatioTPC(0.),
  fVertexRangeZ(20.),
  fTRDtrackletsExact(kFALSE),
  fTOFPIDStep(kFALSE),
  fMatchTOFLabel(kFALSE),
  fTOFMISMATCHStep(kFALSE),
  fTPCPIDCLEANUPStep(kFALSE),
  fITSpatternCut(kFALSE),
  fUseMixedVertex(kTRUE),
  fUseSPDVertex(kFALSE),
  fUseCorrelationVertex(kFALSE),
  fSPDVtxResolution(kFALSE), 
  fPApileupCut(kFALSE),
  fIsIPSigmacut(kFALSE),
  fIsIPcharge(kFALSE),
  fIsIPOpp(kFALSE),
  fFractionOfSharedTPCClusters(-1.0),
  fMaxImpactParameterRpar(kFALSE),
  fAdditionalStatusRequirement(0),
  fTOFsignaldx(-1.0),
  fTOFsignaldz(-1.0),
  fAODFilterBit(-1),
  fRejectKinkDaughters(kTRUE),
  fRejectKinkMothers(kTRUE),
  fHistQA(0x0),
  fCutList(0x0),
  fDebugLevel(0)
{
  //
  // Dummy Constructor
  //
  memset(fProdVtx, 0, sizeof(Double_t) * 4);
  memset(fProdVtxZ, 0, sizeof(Double_t) * 2);
  memset(fDCAtoVtx, 0, sizeof(Double_t) * 2);
  memset(fPtRange, 0, sizeof(Double_t) * 2);
  memset(fIPCutParams, 0, sizeof(Float_t) * 4);
  memset(fSigmaToVtx, 0, sizeof(Double_t) * 3);
  fEtaRange[0] = -0.8; fEtaRange[1] = 0.8;
  fPhiRange[0] = -1.; fPhiRange[1] = -1.;
}

//__________________________________________________________________
AliHFEcuts::AliHFEcuts(const Char_t *name, const Char_t *title):
  TNamed(name, title),
  fRequirements(0),
  fTPCclusterDef(0),
  fTPCratioDef(0),
  fMinClustersTPC(0),
  fMinClustersTPCPID(0),
  fMinClustersITS(0),
  fMinTrackletsTRD(0),
  fMaxChi2TRD(-1.),
  fCutITSPixel(0),
  fCheckITSLayerStatus(kTRUE),
  fCutITSDrift(0),
  fMaxChi2clusterITS(-1.),
  fMaxChi2clusterTPC(0.),
  fMinClusterRatioTPC(0.),
  fVertexRangeZ(20.),
  fTRDtrackletsExact(kFALSE),
  fTOFPIDStep(kFALSE),
  fMatchTOFLabel(kFALSE),
  fTOFMISMATCHStep(kFALSE),
  fTPCPIDCLEANUPStep(kFALSE),
  fITSpatternCut(kFALSE),
  fUseMixedVertex(kTRUE),
  fUseSPDVertex(kFALSE),
  fUseCorrelationVertex(kFALSE),
  fSPDVtxResolution(kFALSE),
  fPApileupCut(kFALSE),
  fIsIPSigmacut(kFALSE),
  fIsIPcharge(kFALSE),
  fIsIPOpp(kFALSE),
  fFractionOfSharedTPCClusters(-1.0),
  fMaxImpactParameterRpar(kFALSE),
  fAdditionalStatusRequirement(0),
  fTOFsignaldx(-1.0),
  fTOFsignaldz(-1.0),
  fAODFilterBit(-1),
  fRejectKinkDaughters(kTRUE),
  fRejectKinkMothers(kTRUE),
  fHistQA(0x0),
  fCutList(0x0),
  fDebugLevel(0)
{
  //
  // Default Constructor
  //
  memset(fProdVtx, 0, sizeof(Double_t) * 4);
  memset(fProdVtxZ, 0, sizeof(Double_t) * 2);
  memset(fDCAtoVtx, 0, sizeof(Double_t) * 2);
  memset(fPtRange, 0, sizeof(Double_t) * 2);
  memset(fIPCutParams, 0, sizeof(Float_t) * 4);
  memset(fSigmaToVtx, 0, sizeof(Double_t) * 3);
  fEtaRange[0] = -0.8; fEtaRange[1] = 0.8;
  fPhiRange[0] = -1.; fPhiRange[1] = -1.;
}

//__________________________________________________________________
AliHFEcuts::AliHFEcuts(const AliHFEcuts &c):
  TNamed(c),
  fRequirements(c.fRequirements),
  fTPCclusterDef(c.fTPCclusterDef),
  fTPCratioDef(c.fTPCratioDef),
  fMinClustersTPC(0),
  fMinClustersTPCPID(0),
  fMinClustersITS(0),
  fMinTrackletsTRD(0),
  fMaxChi2TRD(-1.),
  fCutITSPixel(0),
  fCheckITSLayerStatus(0),
  fCutITSDrift(0),
  fMaxChi2clusterITS(-1.),
  fMaxChi2clusterTPC(0),
  fMinClusterRatioTPC(0),
  fVertexRangeZ(20.),
  fTRDtrackletsExact(kFALSE),
  fTOFPIDStep(kFALSE),
  fMatchTOFLabel(kFALSE),
  fTOFMISMATCHStep(kFALSE),
  fTPCPIDCLEANUPStep(kFALSE),
  fITSpatternCut(c.fITSpatternCut),
  fUseMixedVertex(kTRUE),
  fUseSPDVertex(kFALSE),
  fUseCorrelationVertex(c.fUseCorrelationVertex),
  fSPDVtxResolution(c.fSPDVtxResolution),
  fPApileupCut(c.fPApileupCut),
  fIsIPSigmacut(kFALSE),
  fIsIPcharge(kFALSE),
  fIsIPOpp(kFALSE),
  fFractionOfSharedTPCClusters(-1.0),
  fMaxImpactParameterRpar(kFALSE),
  fAdditionalStatusRequirement(0),
  fTOFsignaldx(-1.0),
  fTOFsignaldz(-1.0),
  fAODFilterBit(-1),
  fRejectKinkDaughters(c.fRejectKinkDaughters),
  fRejectKinkMothers(c.fRejectKinkMothers),
  fHistQA(0x0),
  fCutList(0x0),
  fDebugLevel(0)
{
  //
  // Copy Constructor
  //
  c.Copy(*this);
}

//__________________________________________________________________
AliHFEcuts &AliHFEcuts::operator=(const AliHFEcuts &c){
  //
  // Make assignment
  //
  if(&c != this) c.Copy(*this);
  return *this;
}

//__________________________________________________________________
void AliHFEcuts::Copy(TObject &c) const {
  //
  // Performing copy
  //
  AliHFEcuts &target = dynamic_cast<AliHFEcuts &>(c);

  target.fRequirements = fRequirements;
  target.fTPCclusterDef = fTPCclusterDef;
  target.fTPCratioDef = fTPCratioDef;
  target.fMinClustersTPC = fMinClustersTPC;
  target.fMinClustersTPCPID = fMinClustersTPCPID;
  target.fMinClustersITS = fMinClustersITS;
  target.fMinTrackletsTRD = fMinTrackletsTRD;
  target.fMaxChi2TRD  = fMaxChi2TRD;
  target.fCutITSPixel = fCutITSPixel;
  target.fCheckITSLayerStatus = fCheckITSLayerStatus;
  target.fCutITSDrift = fCutITSDrift;
  target.fMaxChi2clusterITS = fMaxChi2clusterITS;
  target.fMaxChi2clusterTPC = fMaxChi2clusterTPC;
  target.fMinClusterRatioTPC = fMinClusterRatioTPC;
  target.fVertexRangeZ = fVertexRangeZ;
  target.fTRDtrackletsExact = fTRDtrackletsExact;
  target.fTOFPIDStep = fTOFPIDStep;
  target.fMatchTOFLabel = fMatchTOFLabel;
  target.fTOFMISMATCHStep = fTOFMISMATCHStep;
  target.fTPCPIDCLEANUPStep = fTPCPIDCLEANUPStep;
  target.fUseMixedVertex = fUseMixedVertex;
  target.fUseSPDVertex = fUseSPDVertex;
  target.fUseCorrelationVertex = fUseCorrelationVertex;
  target.fSPDVtxResolution = fSPDVtxResolution;
  target.fPApileupCut = fPApileupCut;
  target.fIsIPSigmacut = fIsIPSigmacut;
  target.fIsIPcharge = fIsIPcharge;
  target.fIsIPOpp = fIsIPOpp;
  target.fFractionOfSharedTPCClusters = fFractionOfSharedTPCClusters;
  target.fMaxImpactParameterRpar = fMaxImpactParameterRpar;
  target.fAdditionalStatusRequirement = fAdditionalStatusRequirement;
  target.fTOFsignaldx = fTOFsignaldx;
  target.fTOFsignaldz = fTOFsignaldz;
  target.fAODFilterBit = fAODFilterBit;
  target.fRejectKinkDaughters = fRejectKinkDaughters;
  target.fRejectKinkMothers = fRejectKinkMothers;
  target.fDebugLevel = 0;

  memcpy(target.fProdVtx, fProdVtx, sizeof(Double_t) * 4);
  memcpy(target.fProdVtxZ, fProdVtxZ, sizeof(Double_t) * 2);
  memcpy(target.fDCAtoVtx, fDCAtoVtx, sizeof(Double_t) * 2);
  memcpy(target.fPtRange, fPtRange, sizeof(Double_t) *2);
  memcpy(target.fIPCutParams, fIPCutParams, sizeof(Float_t) * 4);
  memcpy(target.fSigmaToVtx, fSigmaToVtx, sizeof(Double_t) * 3);
  memcpy(target.fEtaRange, fEtaRange, sizeof(Double_t) * 2);
  memcpy(target.fPhiRange, fPhiRange, sizeof(Double_t) * 2);

  // Copy cut List
  if(target.fCutList){
    target.fCutList->Clear();
    delete target.fCutList;
  }
  if(fCutList){
    target.fCutList = dynamic_cast<TObjArray *>(fCutList->Clone());
    if(target.fCutList) target.fCutList->SetOwner(); // Coverity
  }
  if(target.fHistQA){
    delete target.fHistQA;
  }
  if(fHistQA){
    // If the QA list was already produced, then we create it new, loop over the cuts and connect all the histos with this list
    target.fHistQA = new TList;
    target.fHistQA->SetName(Form("%s_CutQAhistograms", GetName()));
    fHistQA->SetOwner(kTRUE);
    TIter cit(target.fCutList);
    TObjArray *clist = NULL;
    AliCFCutBase *co = NULL;
    while((clist = dynamic_cast<TObjArray *>(cit()))){
      TIter cit1(clist);
      while((co = dynamic_cast<AliCFCutBase *>(cit1()))) co->SetQAOn(target.fHistQA);
    }
  }
}

//__________________________________________________________________
AliHFEcuts::~AliHFEcuts(){
  //
  // Destruktor
  //
  if(fCutList){
    fCutList->Delete();
    delete fCutList;
  }
  fCutList = 0x0;
  if(fHistQA) delete fHistQA;
}

//__________________________________________________________________
Long64_t AliHFEcuts::Merge(const TCollection *list){
  //
  // Merge function doing nothing, just writing the object to file
  //
  if(!list) return 0;
  if(list->IsEmpty()) return 1;
  Long64_t counts = 0;
  // just count the number of objects to merge
  TIter iter(list);
  while(iter()){ counts++; }
  return counts+1;
}

//__________________________________________________________________
void AliHFEcuts::Initialize(AliCFManager *cfm){
  //
  // Initializes the cut objects from the correction framework
  // Publishes the cuts to the correction framework manager
  //
  AliDebug(2, "Called");
  const Int_t kMCOffset = kNcutStepsMCTrack;
  const Int_t kRecOffset = kNcutStepsRecTrack;
  if(fCutList)
    fCutList->Delete();
  else{
    fCutList = new TObjArray;
    fCutList->SetOwner();
  }
  if(IsQAOn()){
    fHistQA = new TList;
    fHistQA->SetName(Form("%s_CutQAhistograms", GetName()));
    fHistQA->SetOwner(kTRUE);
  }
 
  // Call all the setters for the cuts
  SetParticleGenCutList();
  SetAcceptanceCutList();
  SetRecKineITSTPCCutList();
  SetRecPrimaryCutList();
  SetHFElectronITSCuts();
  SetHFElectronTOFCuts();
  SetHFElectronTPCCuts();
  SetHFElectronTRDCuts();
  SetHFElectronDcaCuts();

  // Publish to the cuts which analysis type they are (ESD Analysis by default)
  if(IsAOD()){
    AliInfo("Setting AOD Analysis");
    TObjArray *genCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts"));
    if(genCuts){
      AliCFParticleGenCuts *myGenCut = dynamic_cast<AliCFParticleGenCuts *>(genCuts->FindObject("fCutsGenMC"));
      if(myGenCut) {
	myGenCut->SetAODMC(kTRUE);
      }
    }
  }

  // Connect the event cuts
  SetEventCutList(kEventStepGenerated);
  SetEventCutList(kEventStepReconstructed);
  cfm->SetEventCutsList(kEventStepGenerated, dynamic_cast<TObjArray *>(fCutList->FindObject("fEvGenCuts")));
  cfm->SetEventCutsList(kEventStepReconstructed, dynamic_cast<TObjArray *>(fCutList->FindObject("fEvRecCuts")));
  
  // Connect the particle cuts
  // 1st MC
  cfm->SetParticleCutsList(kStepMCGenerated, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts")));
  cfm->SetParticleCutsList(kStepMCInAcceptance, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartAccCuts")));
  // 2nd Reco
  cfm->SetParticleCutsList(kStepRecKineITSTPC + kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartRecKineITSTPCCuts")));
  cfm->SetParticleCutsList(kStepRecPrim + kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartPrimCuts")));
  cfm->SetParticleCutsList(kStepHFEcutsITS + kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartHFECutsITS")));
  cfm->SetParticleCutsList(kStepHFEcutsTOF+ kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartHFECutsTOF")));
  cfm->SetParticleCutsList(kStepHFEcutsTPC+ kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartHFECutsTPC")));
  cfm->SetParticleCutsList(kStepHFEcutsTRD + kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartHFECutsTRD")));
  cfm->SetParticleCutsList(kStepHFEcutsDca + kRecOffset + kMCOffset, dynamic_cast<TObjArray *>(fCutList->FindObject("fPartHFECutsDca")));

}

//__________________________________________________________________
void AliHFEcuts::Initialize(){
  // Call all the setters for the cuts
  AliDebug(2, "Called\n");
   if(fCutList)
    fCutList->Delete();
  else{
    fCutList = new TObjArray;
    fCutList->SetOwner();
  }
  if(IsQAOn()){
    fHistQA = new TList;
    fHistQA->SetName(Form("%s_CutQAhistograms", GetName()));
    fHistQA->SetOwner(kFALSE);
  }
  SetParticleGenCutList();
  SetAcceptanceCutList();
  SetRecKineITSTPCCutList();
  SetRecPrimaryCutList();
  SetHFElectronITSCuts();
  SetHFElectronTOFCuts();
  SetHFElectronTPCCuts();
  SetHFElectronTRDCuts();  
  SetHFElectronDcaCuts();

  // Publish to the cuts which analysis type they are (ESD Analysis by default)
  if(IsAOD()){
    //printf("Initialize AOD\n");
    //AliInfo("Setting AOD Analysis");
    TObjArray *genCuts = dynamic_cast<TObjArray *>(fCutList->FindObject("fPartGenCuts"));
    if(genCuts){
      AliCFParticleGenCuts *myGenCut = dynamic_cast<AliCFParticleGenCuts *>(genCuts->FindObject("fCutsGenMC"));
      if(myGenCut) {
	myGenCut->SetAODMC(kTRUE);
	//printf("Set AOD MC\n");
      }
    }
  }

  // Connect the event cuts
  SetEventCutList(kEventStepGenerated);
  SetEventCutList(kEventStepReconstructed);


}

//__________________________________________________________________
void AliHFEcuts::SetEventCutList(Int_t istep){
  // 
  // Cuts for Event Selection
  //
  AliDebug(2, "Called\n");
  TObjArray *arr = new TObjArray;
  if(istep == kEventStepGenerated){
    AliCFEventGenCuts *evGenCuts = new AliCFEventGenCuts((Char_t *)"fCutsEvGen", (Char_t *)"Event Generated cuts");
    //evGenCuts->SetNTracksCut(1);
    evGenCuts->SetRequireVtxCuts(kTRUE);
    //evGenCuts->SetVertexXCut(-1, 1);
    //evGenCuts->SetVertexYCut(-1, 1);
    evGenCuts->SetVertexZCut(-fVertexRangeZ, fVertexRangeZ);
    if(IsQAOn()) evGenCuts->SetQAOn(fHistQA);

    arr->SetName("fEvGenCuts");
    arr->AddLast(evGenCuts);
  } else {

    AliHFEextraEventCuts *evRecCuts = new AliHFEextraEventCuts((Char_t *)"fCutsEvRec", (Char_t *)"Event Reconstructed cuts");
    evRecCuts->SetRequireVtxCuts(kTRUE);
    if(fUseSPDVertex) evRecCuts->SetUseSPDVertex();
    if(fUseMixedVertex) evRecCuts->SetUseMixedVertex();
    if(fUseCorrelationVertex) evRecCuts->SetCheckCorrelationSPDVtx();
    if(fSPDVtxResolution) evRecCuts->SetCheckSPDResolution();
    if(fPApileupCut) evRecCuts->SetpAPileupCut();
    evRecCuts->SetVertexZCut(-fVertexRangeZ, fVertexRangeZ);
    //evRecCuts->SetVertexNContributors(1,(Int_t)1.e9);
    if(IsQAOn()) evRecCuts->SetQAOn(fHistQA);
    arr->SetName("fEvRecCuts");
    arr->AddLast(evRecCuts);
   
  } 
  fCutList->AddLast(arr);
}

//__________________________________________________________________
void AliHFEcuts::SetParticleGenCutList(){
  //
  // Initialize Particle Cuts for Monte Carlo Tracks
  // Production Vertex Radius: < 3cm
  // Particle Species: Electrons
  // Eta: < 0.8 (fEtaRange)
  //
  
  TObjArray *mcCuts = new TObjArray;
  mcCuts->SetName("fPartGenCuts");

  // 
  AliDebug(2, "Called\n");
  AliCFParticleGenCuts *genCuts = new AliCFParticleGenCuts("fCutsGenMC", "Particle Generation Cuts");
  genCuts->SetRequireIsCharged();
  if(IsRequirePrimary()) { 
    genCuts->SetRequireIsPrimary();
  }
  if(IsRequireProdVertex()){
    AliDebug(3, Form("Vertex Range: fProdVtx[0] %f, fProdVtx[1] %f, fProdVtx[2] %f, fProdVtx[3] %f, fProdVtxZ[0] %f, fProdVtx[1] %f", fProdVtx[0], fProdVtx[1], fProdVtx[2], fProdVtx[3], fProdVtxZ[0], fProdVtxZ[1]));
    //if(!IsAOD()) {
    genCuts->SetProdVtxRangeX(fProdVtx[0], fProdVtx[1]);
    genCuts->SetProdVtxRangeY(fProdVtx[2], fProdVtx[3]);
    genCuts->SetProdVtxRangeZ(fProdVtxZ[0], fProdVtxZ[1]);
    genCuts->SetProdVtxRange2D(kTRUE);  // Use ellipse
    //}
    //else {
      // (ONLY PROVISOIRE FOR MC AOD)
    // genCuts->SetProdVtxRangeX(-TMath::Abs(fProdVtx[1]), TMath::Abs(fProdVtx[1]));
    // genCuts->SetProdVtxRangeY(-TMath::Abs(fProdVtx[3]), TMath::Abs(fProdVtx[3]));
    //}
  }
  genCuts->SetRequirePdgCode(11, kTRUE);
  if(IsQAOn()) genCuts->SetQAOn(fHistQA);

  // Add
  mcCuts->AddLast(genCuts);
  
  //
  if(IsRequireKineMCCuts()) {  
    AliCFTrackKineCuts *kineMCcuts = new AliCFTrackKineCuts((Char_t *)"fCutsKineMC", (Char_t *)"MC Kine Cuts");
    kineMCcuts->SetPtRange(fPtRange[0], fPtRange[1]);
    //kineMCcuts->SetEtaRange(-0.8, 0.8);
    kineMCcuts->SetEtaRange(fEtaRange[0],fEtaRange[1]);
    if(fPhiRange[0] >= 0. && fPhiRange[1] >= 0.) kineMCcuts->SetPhiRange(fPhiRange[0], fPhiRange[1]);
    if(IsQAOn()) kineMCcuts->SetQAOn(fHistQA);
    mcCuts->AddLast(kineMCcuts);
  }
   
  fCutList->AddLast(mcCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetAcceptanceCutList(){
  //
  // Initialize Particle (Monte Carlo) acceptance cuts
  // Min. Required Hist for Detectors:
  //          ITS [3]
  //          TPC [2]
  //          TRD [2*nTracklets]
  //          TOF [0]
  //
  AliDebug(2, "Called\n");
  AliCFAcceptanceCuts *accCuts = new AliCFAcceptanceCuts("fCutsAccMC", "MC Acceptance Cuts");
  accCuts->SetMinNHitITS(3);
  accCuts->SetMinNHitTPC(2);
  accCuts->SetMinNHitTRD(2*fMinTrackletsTRD);
  if(IsQAOn()) accCuts->SetQAOn(fHistQA);
  
  TObjArray *partAccCuts = new TObjArray();
  partAccCuts->SetName("fPartAccCuts");
  partAccCuts->AddLast(accCuts);
  fCutList->AddLast(partAccCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetRecKineITSTPCCutList(){
  //
  // Track Kinematics and Quality cuts (Based on the Standard cuts from PWG0)
  //
  // ITS refit
  // Variances:
  //  y: 2
  //  z: 2
  //  sin(phi): 0.5
  //  tan(theta): 0.5
  //  1/pt: 2
  // Min. Number of Clusters:
  //  TPC: 50
  // RefitRequired:
  //  TPC
  // Chi2 per TPC cluster: 3.5
  //
  // Kinematics:
  //  Momentum Range: 100MeV - 20GeV
  //  Eta: < 0.9 (TRD-TOF acceptance)
  //
  const Long_t kStatusSelectionDefault(AliESDtrack::kTPCrefit | AliESDtrack::kITSrefit);
  AliDebug(2, "Called\n");
  AliCFTrackQualityCuts *trackQuality = new AliCFTrackQualityCuts((Char_t *)"fCutsQualityRec", (Char_t *)"REC Track Quality Cuts");
  //trackQuality->SetMinNClusterITS(fMinClustersITS);
  trackQuality->SetMaxChi2PerClusterTPC(fMaxChi2clusterTPC);
  if(fMaxChi2clusterITS >= 0.) trackQuality->SetMaxChi2PerClusterITS(fMaxChi2clusterITS);
  Long_t statusRequirement;
  if(fAdditionalStatusRequirement)
    statusRequirement = kStatusSelectionDefault | fAdditionalStatusRequirement;
  else
    statusRequirement = kStatusSelectionDefault;
  trackQuality->SetStatus(statusRequirement);
  //trackQuality->SetMaxCovDiagonalElements(2., 2., 0.5, 0.5, 2); 

  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTPCRec","Extra cuts from the HFE group");
  hfecuts->SetDebugLevel(fDebugLevel);
  hfecuts->SetMinNbITScls(fMinClustersITS);
  // Set the cut in the TPC number of clusters
  hfecuts->SetMinNClustersTPC(fMinClustersTPC,AliHFEextraCuts::ETPCclusterDef_t(fTPCclusterDef));
  hfecuts->SetMinNClustersTPCPID(fMinClustersTPCPID);
  hfecuts->SetClusterRatioTPC(fMinClusterRatioTPC,AliHFEextraCuts::ETPCclrDef_t(fTPCratioDef));
  if(fFractionOfSharedTPCClusters > 0.0) hfecuts->SetFractionOfTPCSharedClusters(fFractionOfSharedTPCClusters); 
  if(fITSpatternCut) hfecuts->SetITSpatternCut();
  if(fAODFilterBit > -1) hfecuts->SetAODFilterBit(fAODFilterBit);
  
  AliCFTrackKineCuts *kineCuts = new AliCFTrackKineCuts((Char_t *)"fCutsKineRec", (Char_t *)"REC Kine Cuts");
  //printf("Setting max. pt to %f\n", fPtRange[1]);
  kineCuts->SetPtRange(fPtRange[0], fPtRange[1]);
  //kineCuts->SetEtaRange(-0.8, 0.8);
  kineCuts->SetEtaRange(fEtaRange[0],fEtaRange[1]);
  if(fPhiRange[0] >= 0. && fPhiRange[1] >= 0.) kineCuts->SetPhiRange(fPhiRange[0], fPhiRange[1]);
  
  if(IsQAOn()){
    trackQuality->SetQAOn(fHistQA);
    hfecuts->SetQAOn(fHistQA);
    kineCuts->SetQAOn(fHistQA);
  }
  
  TObjArray *recCuts = new TObjArray;
  recCuts->SetName("fPartRecKineITSTPCCuts");
  recCuts->AddLast(trackQuality);
  recCuts->AddLast(hfecuts);
  recCuts->AddLast(kineCuts);
  fCutList->AddLast(recCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetRecPrimaryCutList(){
  //
  // Primary cuts (based on standard cuts from PWG0):
  //  DCA to Vertex: 
  //    XY: 3. cm
  //    Z:  10. cm
  //  No Kink daughters
  //
  AliDebug(2, "Called\n");
  AliCFTrackIsPrimaryCuts *primaryCut = new AliCFTrackIsPrimaryCuts((Char_t *)"fCutsPrimaryCuts", (Char_t *)"REC Primary Cuts");
  //if(IsRequireDCAToVertex()){
    //primaryCut->SetDCAToVertex2D(kTRUE);
    //primaryCut->SetMaxDCAToVertexXY(fDCAtoVtx[0]);
    //primaryCut->SetMaxDCAToVertexZ(fDCAtoVtx[1]);
  //}
  if(IsRequireSigmaToVertex()){
    primaryCut->SetRequireSigmaToVertex(kTRUE);
    if(fSigmaToVtx[0]) primaryCut->SetMaxNSigmaToVertex(fSigmaToVtx[0]);
    if(fSigmaToVtx[1]) primaryCut->SetMaxSigmaDCAxy(fSigmaToVtx[1]);
    if(fSigmaToVtx[2]) primaryCut->SetMaxSigmaDCAz(fSigmaToVtx[2]);
  }
  //primaryCut->SetAcceptKinkDaughters(kFALSE);
  if(IsQAOn()) primaryCut->SetQAOn(fHistQA);
  
  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsPrimaryCutsextra","Extra cuts from the HFE group");
  hfecuts->SetMaxImpactParameterRpar(fMaxImpactParameterRpar);
  if(fRejectKinkDaughters) hfecuts->SetRejectKinkDaughter();
  if(fRejectKinkMothers) hfecuts->SetRejectKinkMother();
  if(IsRequireDCAToVertex()){
    hfecuts->SetMaxImpactParamR(fDCAtoVtx[0]);
    hfecuts->SetMaxImpactParamZ(fDCAtoVtx[1]);
  }

  TObjArray *primCuts = new TObjArray;
  primCuts->SetName("fPartPrimCuts");
  // needed for AOD...
  if(IsRequireSigmaToVertex()) primCuts->AddLast(primaryCut);
  //if(fMaxImpactParameterRpar){
  primCuts->AddLast(hfecuts);
  //}
  fCutList->AddLast(primCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetHFElectronITSCuts(){
  //
  // Special Cuts introduced by the HFElectron Group: ITS
  //
  AliDebug(2, "Called\n");
  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupPixels","Extra cuts from the HFE group");
  if(IsRequireITSpixel()){
    hfecuts->SetRequireITSpixel(AliHFEextraCuts::ITSPixel_t(fCutITSPixel));
    hfecuts->SetCheckITSstatus(fCheckITSLayerStatus);
  }
  if(IsRequireITSdrift()){
    hfecuts->SetRequireITSdrift(AliHFEextraCuts::ITSDrift_t(fCutITSDrift));
  }
  
  if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
  hfecuts->SetDebugLevel(fDebugLevel);

  TObjArray *hfeCuts = new TObjArray;
  hfeCuts->SetName("fPartHFECutsITS");
  hfeCuts->AddLast(hfecuts);
  fCutList->AddLast(hfeCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetHFElectronTOFCuts(){
  //
  // Special Cuts introduced by the HFElectron Group: TRD
  //
  AliDebug(2, "Called\n");
  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTOF","Extra cuts from the HFE group on TOF PID");
  if(fTOFPIDStep) hfecuts->SetTOFPID(kTRUE);
  if(fTOFMISMATCHStep) hfecuts->SetTOFMISMATCH(kTRUE);
  if(fMatchTOFLabel) hfecuts->SetMatchTOFLabel(kTRUE);
  if((fTOFsignaldx > 0.0) && (fTOFsignaldz > 0.0)) hfecuts->SetTOFsignalDxz(fTOFsignaldx,fTOFsignaldz);
  if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
  hfecuts->SetDebugLevel(fDebugLevel);
  
  TObjArray *hfeCuts = new TObjArray;
  hfeCuts->SetName("fPartHFECutsTOF");
  hfeCuts->AddLast(hfecuts);
  fCutList->AddLast(hfeCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetHFElectronTPCCuts(){
  //
  // Special Cuts introduced by the HFElectron Group: TPC
  //
  AliDebug(2, "Called\n");
  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTPCPID","Extra cuts from the HFE group on TPC PID");
  if(fTPCPIDCLEANUPStep) hfecuts->SetTPCPIDCleanUp(kTRUE);
  if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
  hfecuts->SetDebugLevel(fDebugLevel);
  
  TObjArray *hfeCuts = new TObjArray;
  hfeCuts->SetName("fPartHFECutsTPC");
  hfeCuts->AddLast(hfecuts);
  fCutList->AddLast(hfeCuts);
}


//__________________________________________________________________
void AliHFEcuts::SetHFElectronTRDCuts(){
  //
  // Special Cuts introduced by the HFElectron Group: TRD
  //
  AliDebug(2, "Called\n");
  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupTRD","Extra cuts from the HFE group on TRD PID");
  if(fMinTrackletsTRD > 0.) hfecuts->SetMinTrackletsTRD(fMinTrackletsTRD, fTRDtrackletsExact);
  if(fMaxChi2TRD >= 0)
    hfecuts->SetMaxChi2TRD(fMaxChi2TRD);
  
  if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
  hfecuts->SetDebugLevel(fDebugLevel);
  
  TObjArray *hfeCuts = new TObjArray;
  hfeCuts->SetName("fPartHFECutsTRD");
  hfeCuts->AddLast(hfecuts);
  fCutList->AddLast(hfeCuts);
}

//__________________________________________________________________
void AliHFEcuts::SetHFElectronDcaCuts(){
  //
  // Special Cuts introduced by the HFElectron Group: minimum of impact parameter
  //
  AliDebug(2, "Called\n");
  AliHFEextraCuts *hfecuts = new AliHFEextraCuts("fCutsHFElectronGroupDCA","Extra cuts from the HFE group");
  hfecuts->SetMinHFEImpactParamR(fIPCutParams,fIsIPSigmacut,fIsIPcharge,fIsIPOpp);
  if(IsQAOn()) hfecuts->SetQAOn(fHistQA);
  hfecuts->SetDebugLevel(fDebugLevel);

  TObjArray *hfeCuts = new TObjArray;
  hfeCuts->SetName("fPartHFECutsDca");
  hfeCuts->AddLast(hfecuts);
  fCutList->AddLast(hfeCuts);
}

//__________________________________________________________________
Bool_t AliHFEcuts::CheckParticleCuts(UInt_t step, TObject *o){
  //
  // Checks the cuts without using the correction framework manager
  // 
  AliDebug(2, "Called\n");
  TString stepnames[kNcutStepsMCTrack + kNcutStepsRecTrack + kNcutStepsDETrack + kNcutStepsSecvtxTrack + 1] = {"fPartGenCuts","fPartEvCutPileupZ","fPartEvCut","fPartAccCuts","fPartRecNoCuts","fPartRecKineITSTPCCuts", "fPartPrimCuts", "fPartHFECutsITS","fPartHFECutsTOF","fPartHFECutsTPC","fPartHFECutsTRD","fPartHFECutsDca", "fPartHFECutsSecvtx"};
  AliDebug(2, Form("Doing cut %s", stepnames[step].Data()));
 TObjArray *cuts = dynamic_cast<TObjArray *>(fCutList->FindObject(stepnames[step].Data()));
  if(!cuts) return kTRUE;
  TIter it(cuts);
  AliCFCutBase *mycut;
  Bool_t status = kTRUE;
  while((mycut = dynamic_cast<AliCFCutBase *>(it()))){
    status &= mycut->IsSelected(o);
  }
  return status;
}


//__________________________________________________________________
Bool_t AliHFEcuts::CheckEventCuts(const char*namestep, TObject *o){
  //
  // Checks the cuts without using the correction framework manager
  // 
  AliDebug(2, "Called\n");
  TObjArray *cuts = dynamic_cast<TObjArray *>(fCutList->FindObject(namestep));
  if(!cuts) return kTRUE;
  TIter it(cuts);
  AliCFCutBase *mycut;
  Bool_t status = kTRUE;
  while((mycut = dynamic_cast<AliCFCutBase *>(it()))){
    status &= mycut->IsSelected(o);
  }
  return status;
}

//__________________________________________________________________
void AliHFEcuts::SetRecEvent(const AliVEvent *ev){
  //
  // Publish reconstructed event to the cuts
  //
  TIter cutsteps(fCutList);
  TObjArray *cutstep;
  AliCFCutBase *cut;
  while((cutstep = dynamic_cast<TObjArray *>(cutsteps()))){
    TIter cutIter(cutstep);
    while((cut = dynamic_cast<AliCFCutBase *>(cutIter()))){
      cut->SetRecEventInfo(ev);
    }
  }
}

//__________________________________________________________________
void AliHFEcuts::SetMCEvent(const AliVEvent *ev){
  //
  // Publish reconstructed event to the cuts
  //
  TIter cutsteps(fCutList);
  TObjArray *cutstep;
  AliCFCutBase *cut;
  while((cutstep = dynamic_cast<TObjArray *>(cutsteps()))){
    TIter cutIter(cutstep);
    while((cut = dynamic_cast<AliCFCutBase *>(cutIter()))){
      cut->SetMCEventInfo(ev);
    }
  }
}
 AliHFEcuts.cxx:1
 AliHFEcuts.cxx:2
 AliHFEcuts.cxx:3
 AliHFEcuts.cxx:4
 AliHFEcuts.cxx:5
 AliHFEcuts.cxx:6
 AliHFEcuts.cxx:7
 AliHFEcuts.cxx:8
 AliHFEcuts.cxx:9
 AliHFEcuts.cxx:10
 AliHFEcuts.cxx:11
 AliHFEcuts.cxx:12
 AliHFEcuts.cxx:13
 AliHFEcuts.cxx:14
 AliHFEcuts.cxx:15
 AliHFEcuts.cxx:16
 AliHFEcuts.cxx:17
 AliHFEcuts.cxx:18
 AliHFEcuts.cxx:19
 AliHFEcuts.cxx:20
 AliHFEcuts.cxx:21
 AliHFEcuts.cxx:22
 AliHFEcuts.cxx:23
 AliHFEcuts.cxx:24
 AliHFEcuts.cxx:25
 AliHFEcuts.cxx:26
 AliHFEcuts.cxx:27
 AliHFEcuts.cxx:28
 AliHFEcuts.cxx:29
 AliHFEcuts.cxx:30
 AliHFEcuts.cxx:31
 AliHFEcuts.cxx:32
 AliHFEcuts.cxx:33
 AliHFEcuts.cxx:34
 AliHFEcuts.cxx:35
 AliHFEcuts.cxx:36
 AliHFEcuts.cxx:37
 AliHFEcuts.cxx:38
 AliHFEcuts.cxx:39
 AliHFEcuts.cxx:40
 AliHFEcuts.cxx:41
 AliHFEcuts.cxx:42
 AliHFEcuts.cxx:43
 AliHFEcuts.cxx:44
 AliHFEcuts.cxx:45
 AliHFEcuts.cxx:46
 AliHFEcuts.cxx:47
 AliHFEcuts.cxx:48
 AliHFEcuts.cxx:49
 AliHFEcuts.cxx:50
 AliHFEcuts.cxx:51
 AliHFEcuts.cxx:52
 AliHFEcuts.cxx:53
 AliHFEcuts.cxx:54
 AliHFEcuts.cxx:55
 AliHFEcuts.cxx:56
 AliHFEcuts.cxx:57
 AliHFEcuts.cxx:58
 AliHFEcuts.cxx:59
 AliHFEcuts.cxx:60
 AliHFEcuts.cxx:61
 AliHFEcuts.cxx:62
 AliHFEcuts.cxx:63
 AliHFEcuts.cxx:64
 AliHFEcuts.cxx:65
 AliHFEcuts.cxx:66
 AliHFEcuts.cxx:67
 AliHFEcuts.cxx:68
 AliHFEcuts.cxx:69
 AliHFEcuts.cxx:70
 AliHFEcuts.cxx:71
 AliHFEcuts.cxx:72
 AliHFEcuts.cxx:73
 AliHFEcuts.cxx:74
 AliHFEcuts.cxx:75
 AliHFEcuts.cxx:76
 AliHFEcuts.cxx:77
 AliHFEcuts.cxx:78
 AliHFEcuts.cxx:79
 AliHFEcuts.cxx:80
 AliHFEcuts.cxx:81
 AliHFEcuts.cxx:82
 AliHFEcuts.cxx:83
 AliHFEcuts.cxx:84
 AliHFEcuts.cxx:85
 AliHFEcuts.cxx:86
 AliHFEcuts.cxx:87
 AliHFEcuts.cxx:88
 AliHFEcuts.cxx:89
 AliHFEcuts.cxx:90
 AliHFEcuts.cxx:91
 AliHFEcuts.cxx:92
 AliHFEcuts.cxx:93
 AliHFEcuts.cxx:94
 AliHFEcuts.cxx:95
 AliHFEcuts.cxx:96
 AliHFEcuts.cxx:97
 AliHFEcuts.cxx:98
 AliHFEcuts.cxx:99
 AliHFEcuts.cxx:100
 AliHFEcuts.cxx:101
 AliHFEcuts.cxx:102
 AliHFEcuts.cxx:103
 AliHFEcuts.cxx:104
 AliHFEcuts.cxx:105
 AliHFEcuts.cxx:106
 AliHFEcuts.cxx:107
 AliHFEcuts.cxx:108
 AliHFEcuts.cxx:109
 AliHFEcuts.cxx:110
 AliHFEcuts.cxx:111
 AliHFEcuts.cxx:112
 AliHFEcuts.cxx:113
 AliHFEcuts.cxx:114
 AliHFEcuts.cxx:115
 AliHFEcuts.cxx:116
 AliHFEcuts.cxx:117
 AliHFEcuts.cxx:118
 AliHFEcuts.cxx:119
 AliHFEcuts.cxx:120
 AliHFEcuts.cxx:121
 AliHFEcuts.cxx:122
 AliHFEcuts.cxx:123
 AliHFEcuts.cxx:124
 AliHFEcuts.cxx:125
 AliHFEcuts.cxx:126
 AliHFEcuts.cxx:127
 AliHFEcuts.cxx:128
 AliHFEcuts.cxx:129
 AliHFEcuts.cxx:130
 AliHFEcuts.cxx:131
 AliHFEcuts.cxx:132
 AliHFEcuts.cxx:133
 AliHFEcuts.cxx:134
 AliHFEcuts.cxx:135
 AliHFEcuts.cxx:136
 AliHFEcuts.cxx:137
 AliHFEcuts.cxx:138
 AliHFEcuts.cxx:139
 AliHFEcuts.cxx:140
 AliHFEcuts.cxx:141
 AliHFEcuts.cxx:142
 AliHFEcuts.cxx:143
 AliHFEcuts.cxx:144
 AliHFEcuts.cxx:145
 AliHFEcuts.cxx:146
 AliHFEcuts.cxx:147
 AliHFEcuts.cxx:148
 AliHFEcuts.cxx:149
 AliHFEcuts.cxx:150
 AliHFEcuts.cxx:151
 AliHFEcuts.cxx:152
 AliHFEcuts.cxx:153
 AliHFEcuts.cxx:154
 AliHFEcuts.cxx:155
 AliHFEcuts.cxx:156
 AliHFEcuts.cxx:157
 AliHFEcuts.cxx:158
 AliHFEcuts.cxx:159
 AliHFEcuts.cxx:160
 AliHFEcuts.cxx:161
 AliHFEcuts.cxx:162
 AliHFEcuts.cxx:163
 AliHFEcuts.cxx:164
 AliHFEcuts.cxx:165
 AliHFEcuts.cxx:166
 AliHFEcuts.cxx:167
 AliHFEcuts.cxx:168
 AliHFEcuts.cxx:169
 AliHFEcuts.cxx:170
 AliHFEcuts.cxx:171
 AliHFEcuts.cxx:172
 AliHFEcuts.cxx:173
 AliHFEcuts.cxx:174
 AliHFEcuts.cxx:175
 AliHFEcuts.cxx:176
 AliHFEcuts.cxx:177
 AliHFEcuts.cxx:178
 AliHFEcuts.cxx:179
 AliHFEcuts.cxx:180
 AliHFEcuts.cxx:181
 AliHFEcuts.cxx:182
 AliHFEcuts.cxx:183
 AliHFEcuts.cxx:184
 AliHFEcuts.cxx:185
 AliHFEcuts.cxx:186
 AliHFEcuts.cxx:187
 AliHFEcuts.cxx:188
 AliHFEcuts.cxx:189
 AliHFEcuts.cxx:190
 AliHFEcuts.cxx:191
 AliHFEcuts.cxx:192
 AliHFEcuts.cxx:193
 AliHFEcuts.cxx:194
 AliHFEcuts.cxx:195
 AliHFEcuts.cxx:196
 AliHFEcuts.cxx:197
 AliHFEcuts.cxx:198
 AliHFEcuts.cxx:199
 AliHFEcuts.cxx:200
 AliHFEcuts.cxx:201
 AliHFEcuts.cxx:202
 AliHFEcuts.cxx:203
 AliHFEcuts.cxx:204
 AliHFEcuts.cxx:205
 AliHFEcuts.cxx:206
 AliHFEcuts.cxx:207
 AliHFEcuts.cxx:208
 AliHFEcuts.cxx:209
 AliHFEcuts.cxx:210
 AliHFEcuts.cxx:211
 AliHFEcuts.cxx:212
 AliHFEcuts.cxx:213
 AliHFEcuts.cxx:214
 AliHFEcuts.cxx:215
 AliHFEcuts.cxx:216
 AliHFEcuts.cxx:217
 AliHFEcuts.cxx:218
 AliHFEcuts.cxx:219
 AliHFEcuts.cxx:220
 AliHFEcuts.cxx:221
 AliHFEcuts.cxx:222
 AliHFEcuts.cxx:223
 AliHFEcuts.cxx:224
 AliHFEcuts.cxx:225
 AliHFEcuts.cxx:226
 AliHFEcuts.cxx:227
 AliHFEcuts.cxx:228
 AliHFEcuts.cxx:229
 AliHFEcuts.cxx:230
 AliHFEcuts.cxx:231
 AliHFEcuts.cxx:232
 AliHFEcuts.cxx:233
 AliHFEcuts.cxx:234
 AliHFEcuts.cxx:235
 AliHFEcuts.cxx:236
 AliHFEcuts.cxx:237
 AliHFEcuts.cxx:238
 AliHFEcuts.cxx:239
 AliHFEcuts.cxx:240
 AliHFEcuts.cxx:241
 AliHFEcuts.cxx:242
 AliHFEcuts.cxx:243
 AliHFEcuts.cxx:244
 AliHFEcuts.cxx:245
 AliHFEcuts.cxx:246
 AliHFEcuts.cxx:247
 AliHFEcuts.cxx:248
 AliHFEcuts.cxx:249
 AliHFEcuts.cxx:250
 AliHFEcuts.cxx:251
 AliHFEcuts.cxx:252
 AliHFEcuts.cxx:253
 AliHFEcuts.cxx:254
 AliHFEcuts.cxx:255
 AliHFEcuts.cxx:256
 AliHFEcuts.cxx:257
 AliHFEcuts.cxx:258
 AliHFEcuts.cxx:259
 AliHFEcuts.cxx:260
 AliHFEcuts.cxx:261
 AliHFEcuts.cxx:262
 AliHFEcuts.cxx:263
 AliHFEcuts.cxx:264
 AliHFEcuts.cxx:265
 AliHFEcuts.cxx:266
 AliHFEcuts.cxx:267
 AliHFEcuts.cxx:268
 AliHFEcuts.cxx:269
 AliHFEcuts.cxx:270
 AliHFEcuts.cxx:271
 AliHFEcuts.cxx:272
 AliHFEcuts.cxx:273
 AliHFEcuts.cxx:274
 AliHFEcuts.cxx:275
 AliHFEcuts.cxx:276
 AliHFEcuts.cxx:277
 AliHFEcuts.cxx:278
 AliHFEcuts.cxx:279
 AliHFEcuts.cxx:280
 AliHFEcuts.cxx:281
 AliHFEcuts.cxx:282
 AliHFEcuts.cxx:283
 AliHFEcuts.cxx:284
 AliHFEcuts.cxx:285
 AliHFEcuts.cxx:286
 AliHFEcuts.cxx:287
 AliHFEcuts.cxx:288
 AliHFEcuts.cxx:289
 AliHFEcuts.cxx:290
 AliHFEcuts.cxx:291
 AliHFEcuts.cxx:292
 AliHFEcuts.cxx:293
 AliHFEcuts.cxx:294
 AliHFEcuts.cxx:295
 AliHFEcuts.cxx:296
 AliHFEcuts.cxx:297
 AliHFEcuts.cxx:298
 AliHFEcuts.cxx:299
 AliHFEcuts.cxx:300
 AliHFEcuts.cxx:301
 AliHFEcuts.cxx:302
 AliHFEcuts.cxx:303
 AliHFEcuts.cxx:304
 AliHFEcuts.cxx:305
 AliHFEcuts.cxx:306
 AliHFEcuts.cxx:307
 AliHFEcuts.cxx:308
 AliHFEcuts.cxx:309
 AliHFEcuts.cxx:310
 AliHFEcuts.cxx:311
 AliHFEcuts.cxx:312
 AliHFEcuts.cxx:313
 AliHFEcuts.cxx:314
 AliHFEcuts.cxx:315
 AliHFEcuts.cxx:316
 AliHFEcuts.cxx:317
 AliHFEcuts.cxx:318
 AliHFEcuts.cxx:319
 AliHFEcuts.cxx:320
 AliHFEcuts.cxx:321
 AliHFEcuts.cxx:322
 AliHFEcuts.cxx:323
 AliHFEcuts.cxx:324
 AliHFEcuts.cxx:325
 AliHFEcuts.cxx:326
 AliHFEcuts.cxx:327
 AliHFEcuts.cxx:328
 AliHFEcuts.cxx:329
 AliHFEcuts.cxx:330
 AliHFEcuts.cxx:331
 AliHFEcuts.cxx:332
 AliHFEcuts.cxx:333
 AliHFEcuts.cxx:334
 AliHFEcuts.cxx:335
 AliHFEcuts.cxx:336
 AliHFEcuts.cxx:337
 AliHFEcuts.cxx:338
 AliHFEcuts.cxx:339
 AliHFEcuts.cxx:340
 AliHFEcuts.cxx:341
 AliHFEcuts.cxx:342
 AliHFEcuts.cxx:343
 AliHFEcuts.cxx:344
 AliHFEcuts.cxx:345
 AliHFEcuts.cxx:346
 AliHFEcuts.cxx:347
 AliHFEcuts.cxx:348
 AliHFEcuts.cxx:349
 AliHFEcuts.cxx:350
 AliHFEcuts.cxx:351
 AliHFEcuts.cxx:352
 AliHFEcuts.cxx:353
 AliHFEcuts.cxx:354
 AliHFEcuts.cxx:355
 AliHFEcuts.cxx:356
 AliHFEcuts.cxx:357
 AliHFEcuts.cxx:358
 AliHFEcuts.cxx:359
 AliHFEcuts.cxx:360
 AliHFEcuts.cxx:361
 AliHFEcuts.cxx:362
 AliHFEcuts.cxx:363
 AliHFEcuts.cxx:364
 AliHFEcuts.cxx:365
 AliHFEcuts.cxx:366
 AliHFEcuts.cxx:367
 AliHFEcuts.cxx:368
 AliHFEcuts.cxx:369
 AliHFEcuts.cxx:370
 AliHFEcuts.cxx:371
 AliHFEcuts.cxx:372
 AliHFEcuts.cxx:373
 AliHFEcuts.cxx:374
 AliHFEcuts.cxx:375
 AliHFEcuts.cxx:376
 AliHFEcuts.cxx:377
 AliHFEcuts.cxx:378
 AliHFEcuts.cxx:379
 AliHFEcuts.cxx:380
 AliHFEcuts.cxx:381
 AliHFEcuts.cxx:382
 AliHFEcuts.cxx:383
 AliHFEcuts.cxx:384
 AliHFEcuts.cxx:385
 AliHFEcuts.cxx:386
 AliHFEcuts.cxx:387
 AliHFEcuts.cxx:388
 AliHFEcuts.cxx:389
 AliHFEcuts.cxx:390
 AliHFEcuts.cxx:391
 AliHFEcuts.cxx:392
 AliHFEcuts.cxx:393
 AliHFEcuts.cxx:394
 AliHFEcuts.cxx:395
 AliHFEcuts.cxx:396
 AliHFEcuts.cxx:397
 AliHFEcuts.cxx:398
 AliHFEcuts.cxx:399
 AliHFEcuts.cxx:400
 AliHFEcuts.cxx:401
 AliHFEcuts.cxx:402
 AliHFEcuts.cxx:403
 AliHFEcuts.cxx:404
 AliHFEcuts.cxx:405
 AliHFEcuts.cxx:406
 AliHFEcuts.cxx:407
 AliHFEcuts.cxx:408
 AliHFEcuts.cxx:409
 AliHFEcuts.cxx:410
 AliHFEcuts.cxx:411
 AliHFEcuts.cxx:412
 AliHFEcuts.cxx:413
 AliHFEcuts.cxx:414
 AliHFEcuts.cxx:415
 AliHFEcuts.cxx:416
 AliHFEcuts.cxx:417
 AliHFEcuts.cxx:418
 AliHFEcuts.cxx:419
 AliHFEcuts.cxx:420
 AliHFEcuts.cxx:421
 AliHFEcuts.cxx:422
 AliHFEcuts.cxx:423
 AliHFEcuts.cxx:424
 AliHFEcuts.cxx:425
 AliHFEcuts.cxx:426
 AliHFEcuts.cxx:427
 AliHFEcuts.cxx:428
 AliHFEcuts.cxx:429
 AliHFEcuts.cxx:430
 AliHFEcuts.cxx:431
 AliHFEcuts.cxx:432
 AliHFEcuts.cxx:433
 AliHFEcuts.cxx:434
 AliHFEcuts.cxx:435
 AliHFEcuts.cxx:436
 AliHFEcuts.cxx:437
 AliHFEcuts.cxx:438
 AliHFEcuts.cxx:439
 AliHFEcuts.cxx:440
 AliHFEcuts.cxx:441
 AliHFEcuts.cxx:442
 AliHFEcuts.cxx:443
 AliHFEcuts.cxx:444
 AliHFEcuts.cxx:445
 AliHFEcuts.cxx:446
 AliHFEcuts.cxx:447
 AliHFEcuts.cxx:448
 AliHFEcuts.cxx:449
 AliHFEcuts.cxx:450
 AliHFEcuts.cxx:451
 AliHFEcuts.cxx:452
 AliHFEcuts.cxx:453
 AliHFEcuts.cxx:454
 AliHFEcuts.cxx:455
 AliHFEcuts.cxx:456
 AliHFEcuts.cxx:457
 AliHFEcuts.cxx:458
 AliHFEcuts.cxx:459
 AliHFEcuts.cxx:460
 AliHFEcuts.cxx:461
 AliHFEcuts.cxx:462
 AliHFEcuts.cxx:463
 AliHFEcuts.cxx:464
 AliHFEcuts.cxx:465
 AliHFEcuts.cxx:466
 AliHFEcuts.cxx:467
 AliHFEcuts.cxx:468
 AliHFEcuts.cxx:469
 AliHFEcuts.cxx:470
 AliHFEcuts.cxx:471
 AliHFEcuts.cxx:472
 AliHFEcuts.cxx:473
 AliHFEcuts.cxx:474
 AliHFEcuts.cxx:475
 AliHFEcuts.cxx:476
 AliHFEcuts.cxx:477
 AliHFEcuts.cxx:478
 AliHFEcuts.cxx:479
 AliHFEcuts.cxx:480
 AliHFEcuts.cxx:481
 AliHFEcuts.cxx:482
 AliHFEcuts.cxx:483
 AliHFEcuts.cxx:484
 AliHFEcuts.cxx:485
 AliHFEcuts.cxx:486
 AliHFEcuts.cxx:487
 AliHFEcuts.cxx:488
 AliHFEcuts.cxx:489
 AliHFEcuts.cxx:490
 AliHFEcuts.cxx:491
 AliHFEcuts.cxx:492
 AliHFEcuts.cxx:493
 AliHFEcuts.cxx:494
 AliHFEcuts.cxx:495
 AliHFEcuts.cxx:496
 AliHFEcuts.cxx:497
 AliHFEcuts.cxx:498
 AliHFEcuts.cxx:499
 AliHFEcuts.cxx:500
 AliHFEcuts.cxx:501
 AliHFEcuts.cxx:502
 AliHFEcuts.cxx:503
 AliHFEcuts.cxx:504
 AliHFEcuts.cxx:505
 AliHFEcuts.cxx:506
 AliHFEcuts.cxx:507
 AliHFEcuts.cxx:508
 AliHFEcuts.cxx:509
 AliHFEcuts.cxx:510
 AliHFEcuts.cxx:511
 AliHFEcuts.cxx:512
 AliHFEcuts.cxx:513
 AliHFEcuts.cxx:514
 AliHFEcuts.cxx:515
 AliHFEcuts.cxx:516
 AliHFEcuts.cxx:517
 AliHFEcuts.cxx:518
 AliHFEcuts.cxx:519
 AliHFEcuts.cxx:520
 AliHFEcuts.cxx:521
 AliHFEcuts.cxx:522
 AliHFEcuts.cxx:523
 AliHFEcuts.cxx:524
 AliHFEcuts.cxx:525
 AliHFEcuts.cxx:526
 AliHFEcuts.cxx:527
 AliHFEcuts.cxx:528
 AliHFEcuts.cxx:529
 AliHFEcuts.cxx:530
 AliHFEcuts.cxx:531
 AliHFEcuts.cxx:532
 AliHFEcuts.cxx:533
 AliHFEcuts.cxx:534
 AliHFEcuts.cxx:535
 AliHFEcuts.cxx:536
 AliHFEcuts.cxx:537
 AliHFEcuts.cxx:538
 AliHFEcuts.cxx:539
 AliHFEcuts.cxx:540
 AliHFEcuts.cxx:541
 AliHFEcuts.cxx:542
 AliHFEcuts.cxx:543
 AliHFEcuts.cxx:544
 AliHFEcuts.cxx:545
 AliHFEcuts.cxx:546
 AliHFEcuts.cxx:547
 AliHFEcuts.cxx:548
 AliHFEcuts.cxx:549
 AliHFEcuts.cxx:550
 AliHFEcuts.cxx:551
 AliHFEcuts.cxx:552
 AliHFEcuts.cxx:553
 AliHFEcuts.cxx:554
 AliHFEcuts.cxx:555
 AliHFEcuts.cxx:556
 AliHFEcuts.cxx:557
 AliHFEcuts.cxx:558
 AliHFEcuts.cxx:559
 AliHFEcuts.cxx:560
 AliHFEcuts.cxx:561
 AliHFEcuts.cxx:562
 AliHFEcuts.cxx:563
 AliHFEcuts.cxx:564
 AliHFEcuts.cxx:565
 AliHFEcuts.cxx:566
 AliHFEcuts.cxx:567
 AliHFEcuts.cxx:568
 AliHFEcuts.cxx:569
 AliHFEcuts.cxx:570
 AliHFEcuts.cxx:571
 AliHFEcuts.cxx:572
 AliHFEcuts.cxx:573
 AliHFEcuts.cxx:574
 AliHFEcuts.cxx:575
 AliHFEcuts.cxx:576
 AliHFEcuts.cxx:577
 AliHFEcuts.cxx:578
 AliHFEcuts.cxx:579
 AliHFEcuts.cxx:580
 AliHFEcuts.cxx:581
 AliHFEcuts.cxx:582
 AliHFEcuts.cxx:583
 AliHFEcuts.cxx:584
 AliHFEcuts.cxx:585
 AliHFEcuts.cxx:586
 AliHFEcuts.cxx:587
 AliHFEcuts.cxx:588
 AliHFEcuts.cxx:589
 AliHFEcuts.cxx:590
 AliHFEcuts.cxx:591
 AliHFEcuts.cxx:592
 AliHFEcuts.cxx:593
 AliHFEcuts.cxx:594
 AliHFEcuts.cxx:595
 AliHFEcuts.cxx:596
 AliHFEcuts.cxx:597
 AliHFEcuts.cxx:598
 AliHFEcuts.cxx:599
 AliHFEcuts.cxx:600
 AliHFEcuts.cxx:601
 AliHFEcuts.cxx:602
 AliHFEcuts.cxx:603
 AliHFEcuts.cxx:604
 AliHFEcuts.cxx:605
 AliHFEcuts.cxx:606
 AliHFEcuts.cxx:607
 AliHFEcuts.cxx:608
 AliHFEcuts.cxx:609
 AliHFEcuts.cxx:610
 AliHFEcuts.cxx:611
 AliHFEcuts.cxx:612
 AliHFEcuts.cxx:613
 AliHFEcuts.cxx:614
 AliHFEcuts.cxx:615
 AliHFEcuts.cxx:616
 AliHFEcuts.cxx:617
 AliHFEcuts.cxx:618
 AliHFEcuts.cxx:619
 AliHFEcuts.cxx:620
 AliHFEcuts.cxx:621
 AliHFEcuts.cxx:622
 AliHFEcuts.cxx:623
 AliHFEcuts.cxx:624
 AliHFEcuts.cxx:625
 AliHFEcuts.cxx:626
 AliHFEcuts.cxx:627
 AliHFEcuts.cxx:628
 AliHFEcuts.cxx:629
 AliHFEcuts.cxx:630
 AliHFEcuts.cxx:631
 AliHFEcuts.cxx:632
 AliHFEcuts.cxx:633
 AliHFEcuts.cxx:634
 AliHFEcuts.cxx:635
 AliHFEcuts.cxx:636
 AliHFEcuts.cxx:637
 AliHFEcuts.cxx:638
 AliHFEcuts.cxx:639
 AliHFEcuts.cxx:640
 AliHFEcuts.cxx:641
 AliHFEcuts.cxx:642
 AliHFEcuts.cxx:643
 AliHFEcuts.cxx:644
 AliHFEcuts.cxx:645
 AliHFEcuts.cxx:646
 AliHFEcuts.cxx:647
 AliHFEcuts.cxx:648
 AliHFEcuts.cxx:649
 AliHFEcuts.cxx:650
 AliHFEcuts.cxx:651
 AliHFEcuts.cxx:652
 AliHFEcuts.cxx:653
 AliHFEcuts.cxx:654
 AliHFEcuts.cxx:655
 AliHFEcuts.cxx:656
 AliHFEcuts.cxx:657
 AliHFEcuts.cxx:658
 AliHFEcuts.cxx:659
 AliHFEcuts.cxx:660
 AliHFEcuts.cxx:661
 AliHFEcuts.cxx:662
 AliHFEcuts.cxx:663
 AliHFEcuts.cxx:664
 AliHFEcuts.cxx:665
 AliHFEcuts.cxx:666
 AliHFEcuts.cxx:667
 AliHFEcuts.cxx:668
 AliHFEcuts.cxx:669
 AliHFEcuts.cxx:670
 AliHFEcuts.cxx:671
 AliHFEcuts.cxx:672
 AliHFEcuts.cxx:673
 AliHFEcuts.cxx:674
 AliHFEcuts.cxx:675
 AliHFEcuts.cxx:676
 AliHFEcuts.cxx:677
 AliHFEcuts.cxx:678
 AliHFEcuts.cxx:679
 AliHFEcuts.cxx:680
 AliHFEcuts.cxx:681
 AliHFEcuts.cxx:682
 AliHFEcuts.cxx:683
 AliHFEcuts.cxx:684
 AliHFEcuts.cxx:685
 AliHFEcuts.cxx:686
 AliHFEcuts.cxx:687
 AliHFEcuts.cxx:688
 AliHFEcuts.cxx:689
 AliHFEcuts.cxx:690
 AliHFEcuts.cxx:691
 AliHFEcuts.cxx:692
 AliHFEcuts.cxx:693
 AliHFEcuts.cxx:694
 AliHFEcuts.cxx:695
 AliHFEcuts.cxx:696
 AliHFEcuts.cxx:697
 AliHFEcuts.cxx:698
 AliHFEcuts.cxx:699
 AliHFEcuts.cxx:700
 AliHFEcuts.cxx:701
 AliHFEcuts.cxx:702
 AliHFEcuts.cxx:703
 AliHFEcuts.cxx:704
 AliHFEcuts.cxx:705
 AliHFEcuts.cxx:706
 AliHFEcuts.cxx:707
 AliHFEcuts.cxx:708
 AliHFEcuts.cxx:709
 AliHFEcuts.cxx:710
 AliHFEcuts.cxx:711
 AliHFEcuts.cxx:712
 AliHFEcuts.cxx:713
 AliHFEcuts.cxx:714
 AliHFEcuts.cxx:715
 AliHFEcuts.cxx:716
 AliHFEcuts.cxx:717
 AliHFEcuts.cxx:718
 AliHFEcuts.cxx:719
 AliHFEcuts.cxx:720
 AliHFEcuts.cxx:721
 AliHFEcuts.cxx:722
 AliHFEcuts.cxx:723
 AliHFEcuts.cxx:724
 AliHFEcuts.cxx:725
 AliHFEcuts.cxx:726
 AliHFEcuts.cxx:727
 AliHFEcuts.cxx:728
 AliHFEcuts.cxx:729
 AliHFEcuts.cxx:730
 AliHFEcuts.cxx:731
 AliHFEcuts.cxx:732
 AliHFEcuts.cxx:733
 AliHFEcuts.cxx:734
 AliHFEcuts.cxx:735
 AliHFEcuts.cxx:736
 AliHFEcuts.cxx:737
 AliHFEcuts.cxx:738
 AliHFEcuts.cxx:739
 AliHFEcuts.cxx:740
 AliHFEcuts.cxx:741
 AliHFEcuts.cxx:742
 AliHFEcuts.cxx:743
 AliHFEcuts.cxx:744
 AliHFEcuts.cxx:745
 AliHFEcuts.cxx:746
 AliHFEcuts.cxx:747
 AliHFEcuts.cxx:748
 AliHFEcuts.cxx:749
 AliHFEcuts.cxx:750
 AliHFEcuts.cxx:751
 AliHFEcuts.cxx:752
 AliHFEcuts.cxx:753
 AliHFEcuts.cxx:754
 AliHFEcuts.cxx:755
 AliHFEcuts.cxx:756
 AliHFEcuts.cxx:757
 AliHFEcuts.cxx:758
 AliHFEcuts.cxx:759
 AliHFEcuts.cxx:760
 AliHFEcuts.cxx:761
 AliHFEcuts.cxx:762
 AliHFEcuts.cxx:763
 AliHFEcuts.cxx:764
 AliHFEcuts.cxx:765
 AliHFEcuts.cxx:766
 AliHFEcuts.cxx:767
 AliHFEcuts.cxx:768
 AliHFEcuts.cxx:769
 AliHFEcuts.cxx:770
 AliHFEcuts.cxx:771
 AliHFEcuts.cxx:772
 AliHFEcuts.cxx:773
 AliHFEcuts.cxx:774
 AliHFEcuts.cxx:775
 AliHFEcuts.cxx:776
 AliHFEcuts.cxx:777
 AliHFEcuts.cxx:778
 AliHFEcuts.cxx:779
 AliHFEcuts.cxx:780
 AliHFEcuts.cxx:781
 AliHFEcuts.cxx:782
 AliHFEcuts.cxx:783
 AliHFEcuts.cxx:784
 AliHFEcuts.cxx:785
 AliHFEcuts.cxx:786
 AliHFEcuts.cxx:787
 AliHFEcuts.cxx:788
 AliHFEcuts.cxx:789
 AliHFEcuts.cxx:790
 AliHFEcuts.cxx:791
 AliHFEcuts.cxx:792
 AliHFEcuts.cxx:793
 AliHFEcuts.cxx:794
 AliHFEcuts.cxx:795
 AliHFEcuts.cxx:796
 AliHFEcuts.cxx:797
 AliHFEcuts.cxx:798
 AliHFEcuts.cxx:799
 AliHFEcuts.cxx:800
 AliHFEcuts.cxx:801
 AliHFEcuts.cxx:802
 AliHFEcuts.cxx:803
 AliHFEcuts.cxx:804
 AliHFEcuts.cxx:805
 AliHFEcuts.cxx:806
 AliHFEcuts.cxx:807
 AliHFEcuts.cxx:808
 AliHFEcuts.cxx:809
 AliHFEcuts.cxx:810
 AliHFEcuts.cxx:811
 AliHFEcuts.cxx:812
 AliHFEcuts.cxx:813
 AliHFEcuts.cxx:814
 AliHFEcuts.cxx:815
 AliHFEcuts.cxx:816
 AliHFEcuts.cxx:817
 AliHFEcuts.cxx:818
 AliHFEcuts.cxx:819
 AliHFEcuts.cxx:820
 AliHFEcuts.cxx:821
 AliHFEcuts.cxx:822
 AliHFEcuts.cxx:823
 AliHFEcuts.cxx:824
 AliHFEcuts.cxx:825
 AliHFEcuts.cxx:826
 AliHFEcuts.cxx:827
 AliHFEcuts.cxx:828
 AliHFEcuts.cxx:829
 AliHFEcuts.cxx:830
 AliHFEcuts.cxx:831
 AliHFEcuts.cxx:832
 AliHFEcuts.cxx:833
 AliHFEcuts.cxx:834
 AliHFEcuts.cxx:835
 AliHFEcuts.cxx:836
 AliHFEcuts.cxx:837
 AliHFEcuts.cxx:838
 AliHFEcuts.cxx:839
 AliHFEcuts.cxx:840
 AliHFEcuts.cxx:841
 AliHFEcuts.cxx:842
 AliHFEcuts.cxx:843
 AliHFEcuts.cxx:844
 AliHFEcuts.cxx:845
 AliHFEcuts.cxx:846
 AliHFEcuts.cxx:847
 AliHFEcuts.cxx:848
 AliHFEcuts.cxx:849
 AliHFEcuts.cxx:850
 AliHFEcuts.cxx:851
 AliHFEcuts.cxx:852
 AliHFEcuts.cxx:853
 AliHFEcuts.cxx:854
 AliHFEcuts.cxx:855
 AliHFEcuts.cxx:856
 AliHFEcuts.cxx:857
 AliHFEcuts.cxx:858
 AliHFEcuts.cxx:859
 AliHFEcuts.cxx:860
 AliHFEcuts.cxx:861
 AliHFEcuts.cxx:862
 AliHFEcuts.cxx:863
 AliHFEcuts.cxx:864
 AliHFEcuts.cxx:865
 AliHFEcuts.cxx:866
 AliHFEcuts.cxx:867
 AliHFEcuts.cxx:868
 AliHFEcuts.cxx:869
 AliHFEcuts.cxx:870
 AliHFEcuts.cxx:871
 AliHFEcuts.cxx:872
 AliHFEcuts.cxx:873
 AliHFEcuts.cxx:874
 AliHFEcuts.cxx:875
 AliHFEcuts.cxx:876
 AliHFEcuts.cxx:877
 AliHFEcuts.cxx:878
 AliHFEcuts.cxx:879
 AliHFEcuts.cxx:880
 AliHFEcuts.cxx:881
 AliHFEcuts.cxx:882
 AliHFEcuts.cxx:883
 AliHFEcuts.cxx:884
 AliHFEcuts.cxx:885
 AliHFEcuts.cxx:886
 AliHFEcuts.cxx:887
 AliHFEcuts.cxx:888
 AliHFEcuts.cxx:889
 AliHFEcuts.cxx:890
 AliHFEcuts.cxx:891
 AliHFEcuts.cxx:892
 AliHFEcuts.cxx:893
 AliHFEcuts.cxx:894