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.                  *
**************************************************************************/
//
// Signal cuts
// Checks whether a particle (reconstructed or MC) is coming from MC Signal
// For more information see implementation file
//
// Autor:
//   Markus Fasel <M.Fasel@gsi.de>
//
#include <TClass.h>
#include <TMath.h>
#include <TParticle.h>
#include <TString.h>

#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliESDtrack.h"
#include "AliLog.h"
#include "AliMCEvent.h"
#include "AliMCParticle.h"
#include "AliVParticle.h"
#include "TClonesArray.h"

#include "AliHFEsignalCuts.h"
#include "AliHFEmcQA.h"

ClassImp(AliHFEsignalCuts)

//____________________________________________________________
AliHFEsignalCuts::AliHFEsignalCuts():
  AliAnalysisCuts(),
  fMC(NULL),
  fAODArrayMCInfo(NULL),
  fMCQA(NULL)
{
  //
  // Dummy constructor
  //
}

//____________________________________________________________
AliHFEsignalCuts::AliHFEsignalCuts(const Char_t *name, const Char_t *title):
  AliAnalysisCuts(name, title),
  fMC(NULL),
  fAODArrayMCInfo(NULL),
  fMCQA(NULL)
{
  //
  // Default constructor
  //
  fMCQA = new AliHFEmcQA;
  if(fMCQA) fMCQA->Init();
}

//____________________________________________________________
AliHFEsignalCuts::AliHFEsignalCuts(const AliHFEsignalCuts &ref):
  AliAnalysisCuts(ref),
  fMC(ref.fMC),
  fAODArrayMCInfo(NULL),
  fMCQA(ref.fMCQA)
{
  //
  // Copy constructor
  //
}

//____________________________________________________________
AliHFEsignalCuts &AliHFEsignalCuts::operator=(const AliHFEsignalCuts &ref){
  //
  // Assignment operator
  //
  if(this != &ref){
    //fMC = ref.fMC; 
    //fAODArrayMCInfo = ref.fAODArrayMCInfo;
    fMCQA = ref.fMCQA; 
  }
  return *this;
}

//____________________________________________________________
AliHFEsignalCuts::~AliHFEsignalCuts(){
  //
  // Destructor
  //
  if(fMCQA) delete fMCQA;
}

//____________________________________________________________
void AliHFEsignalCuts::SetMCEvent(AliMCEvent *mc){ 
  //
  // Set mc event
  //
  fMC = mc; 
  if(fMCQA) fMCQA->SetMCEvent(mc);
}

//____________________________________________________________
void AliHFEsignalCuts::SetMCAODInfo(TClonesArray *mcarray){ 
  //
  // Set mc array info
  //
  fAODArrayMCInfo = mcarray; 
  if(fMCQA) fMCQA->SetMCArray(mcarray);
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsSelected(TObject *o){
  //
  // Define signal as electron coming from charm or beauty
  // @TODO: Implement setter so that also either of them can be defined
  // as signal alone
  

  return IsCharmElectron(o) || IsBeautyElectron(o);
/*  
  //saving time?
  Int_t esources = GetElecSource(dynamic_cast<const AliVParticle *>(o));
  if(esources>0)printf("esources= %d\n",esources);
  if(esources == AliHFEmcQA::kDirectCharm || esources == AliHFEmcQA::kDirectBeauty || esources == AliHFEmcQA::kBeautyCharm)  // 1: direct D->e, 2: B->e 3: B->D->e
    return kTRUE;
  else
    return kFALSE;
*/

}

//____________________________________________________________
AliHFEsignalCuts::ESignalSource_t AliHFEsignalCuts::GetSignalSource(const TObject *const o) const{
  //
  // Get source type of the electron
  //
  ESignalSource_t source = kOther;
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return source;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA::kDirectCharm) source = kEleCharm;
  else if(esources == AliHFEmcQA::kDirectBeauty || esources == AliHFEmcQA::kBeautyCharm) source = kEleBeauty;
  else if(esources >= AliHFEmcQA::kGammaPi0 && esources <= AliHFEmcQA::kGammaRho0) source = kEleGamma;
  else if(esources == AliHFEmcQA:: kPi0 || esources == AliHFEmcQA::kEta || esources == AliHFEmcQA::kOmega || esources == AliHFEmcQA::kPhi || esources == AliHFEmcQA::kEtaPrime || esources == AliHFEmcQA::kRho0) source = kEleNonHFE;
  else if(esources == AliHFEmcQA::kJpsi) source = kEleJPsi;
  else if(esources == AliHFEmcQA::kB2Jpsi) source = kEleBtoJPsi;
  else if(esources == AliHFEmcQA::kKe3) source = kEleKe3;
  return source;
}

/*****************************************
 *        Old legacy code                *
 *****************************************/

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsCharmElectronOld(const TObject * const o) const {
  //
  // Check if mother is coming from Charm
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA::kDirectCharm)  // 1: direct D->e
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsBeautyElectronOld(const TObject * const o) const {
  //
  // Check if mother is coming from Beauty
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA::kDirectBeauty || esources == AliHFEmcQA::kBeautyCharm)  // 2: B->e 3: B->D->e
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsGammaElectronOld(const TObject * const o) const {
  //
  // Check for MC if the electron is coming from Gamma  
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources >= AliHFEmcQA::kGammaPi0 && esources <= AliHFEmcQA::kGammaRho0 )  // 4: conversion electrons
  //if(esources == AliHFEmcQA::kGammaPi0 || esources == AliHFEmcQA::kGammaEta || esources == AliHFEmcQA::kGammaOmega || esources == AliHFEmcQA::kGammaPhi || esources == AliHFEmcQA::kGammaEtaPrime || esources == AliHFEmcQA::kGammaRho0 )  // 4: conversion electrons
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsNonHFElectronOld(const TObject * const o) const {
  //
  // Check for MC if the electron is coming from NonHFE except for conversion
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA:: kPi0 || esources == AliHFEmcQA::kEta || esources == AliHFEmcQA::kOmega || esources == AliHFEmcQA::kPhi || esources == AliHFEmcQA::kEtaPrime || esources == AliHFEmcQA::kRho0)  // 4: conversion electrons
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsJpsiElectronOld(const TObject * const o) const {
  //
  // Check if mother is coming from Charm
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA::kJpsi)  // 5: J/psi->ee
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsB2JpsiElectronOld(const TObject * const o) const {
  //
  // Check if mother is coming from Charm
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA::kB2Jpsi)  // 6: B->Jpsi->ee
    return kTRUE;
  else
    return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsKe3ElectronOld(const TObject * const o) const {
  //
  // Check if mother is coming from Charm
  //
  const AliVParticle *v = dynamic_cast<const AliVParticle *>(o);
  if(!v) return kFALSE;
  Int_t esources = GetElecSource(v);
  if(esources == AliHFEmcQA::kKe3)  // 7: K->e
    return kTRUE;
  else
    return kFALSE;
}

/*
//____________________________________________________________
Bool_t AliHFEsignalCuts::IsCharmElectron(const TObject * const o) const {
  //
  // Check if mother is coming from Charm
  //
  if(TMath::Abs(GetTrackPDG(dynamic_cast<const AliVParticle *>(o))) != 11) return kFALSE;
  Int_t motherpdg = TMath::Abs(GetMotherPDG(dynamic_cast<const AliVParticle *>(o)));
  AliDebug(1, Form("Mother PDG %d\n", motherpdg));

  if((motherpdg % 1000) / 100 == 4) return kTRUE;    // charmed meson, 3rd position in pdg code == 4
  if(motherpdg / 1000 == 4) return kTRUE;            // charmed baryon, 4th position in pdg code == 4
  AliDebug(1, "No Charm\n");
  return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsBeautyElectron(const TObject * const o) const {
  //
  // Check if mother is coming from Beauty
  //
  if(TMath::Abs(GetTrackPDG(dynamic_cast<const AliVParticle *>(o))) != 11) return kFALSE;
  Int_t motherpdg = TMath::Abs(GetMotherPDG(dynamic_cast<const AliVParticle *>(o)));
  AliDebug(1, Form("Mother PDG %d\n", motherpdg));

  if((motherpdg % 1000) / 100 == 5) return kTRUE;   // beauty meson, 3rd position in pdg code == 5
  if(motherpdg / 1000 == 5) return kTRUE;           // beauty baryon, 4th position in pdg code == 5   
  AliDebug(1, "No Beauty\n");
  return kFALSE;
}

//____________________________________________________________
Bool_t AliHFEsignalCuts::IsGammaElectron(const TObject * const o) const {
  //
  // Check for MC if the electron is coming from Gamma
  //
  if(TMath::Abs(GetTrackPDG(dynamic_cast<const AliVParticle *>(o))) != 11) return kFALSE;
  Int_t motherpdg = TMath::Abs(GetMotherPDG(dynamic_cast<const AliVParticle *>(o)));
  AliDebug(1, Form("Mother PDG %d\n", motherpdg));

  if(motherpdg!=22){
    AliDebug(1, "No Gamma");
    return kFALSE;
  } else { 
    AliDebug(1, "Gamma");
    return kTRUE;
  }
}
*/

//____________________________________________________________
Int_t AliHFEsignalCuts::GetMotherPDG(const AliVParticle * const track) const {
  //
  // Get Mother Pdg code for reconstructed respectively MC tracks
  // 
  TClass *type = track->IsA();  
  //if((!fMC && (type == AliESDtrack::Class())) || (!fAODArrayMCInfo && (type == AliAODTrack::Class()))){
  //  AliDebug(1, "No MC Event Available\n");
  //  return 0;
  //}
  const AliVParticle *motherParticle = NULL, *mctrack = NULL;
  Int_t label = TMath::Abs(track->GetLabel());
  if(type == AliESDtrack::Class()){
    //
    if(!fMC) {
      AliDebug(1, "No MC Event Available\n");
      return 0;
    }
    // Reconstructed track
    if(label) mctrack = fMC->GetTrack(TMath::Abs(label));
    
  } 
  else if(type == AliAODTrack::Class()) {
    //
    if(!fAODArrayMCInfo) {
      AliDebug(1, "No MC Event Available\n");
      return 0;
    }
    // MCParticle
    if(label && label < fAODArrayMCInfo->GetEntriesFast())
      mctrack = (AliVParticle *) fAODArrayMCInfo->At(label);
  }
  else {
    mctrack=track;
  }

  if(!mctrack) return 0;
  
  Int_t motherPDG = 0;
  if(TString(mctrack->IsA()->GetName()).CompareTo("AliMCParticle") == 0){
    // case MC Particle
    const AliMCParticle *esdmctrack = dynamic_cast<const AliMCParticle *>(mctrack);
    if(esdmctrack) {
      if(!fMC) {
	AliDebug(1, "No MC Event Available\n");
	return 0;
      }    
      motherParticle = fMC->GetTrack(esdmctrack->Particle()->GetFirstMother());
    }
    if(motherParticle){
      const AliMCParticle *esdmcmother = dynamic_cast<const AliMCParticle *>(motherParticle);
      if(esdmcmother) motherPDG = TMath::Abs(esdmcmother->Particle()->GetPdgCode());
    }
    
  } else {
    // case AODMCParticle
    const AliAODMCParticle *aodmctrack = dynamic_cast<const AliAODMCParticle *>(mctrack);
    if(aodmctrack) {
      if(!fAODArrayMCInfo) {
 	AliDebug(1, "No MC Event Available\n");
 	return 0;
      }  
      if(aodmctrack->GetMother() && aodmctrack->GetMother() < fAODArrayMCInfo->GetEntriesFast())
      motherParticle =  (AliVParticle *) fAODArrayMCInfo->At(aodmctrack->GetMother());
    }
    if(motherParticle){
      const AliAODMCParticle *aodmcmother = dynamic_cast<const AliAODMCParticle *>(motherParticle);
      if(aodmcmother) motherPDG = TMath::Abs(aodmcmother->GetPdgCode());
    }
  }
  return motherPDG;
}

//____________________________________________________________
Int_t AliHFEsignalCuts::GetTrackPDG(const AliVParticle * const track) const {
  //
  // Return PDG code of a particle itself
  //

 
  TClass *type = track->IsA();  
  //if((!fMC && (type == AliESDtrack::Class())) || (!fAODArrayMCInfo && (type == AliAODTrack::Class()))){
  //  AliDebug(1, "No MC Event Available\n");
  //  return 0;
  //}
  const AliVParticle *mctrack = NULL;
  Int_t label = TMath::Abs(track->GetLabel());
  if(type == AliESDtrack::Class()){
    //
    if(!fMC) {
      AliDebug(1, "No MC Event Available\n");
      return 0;
    }
    // Reconstructed track
    if(label) mctrack = fMC->GetTrack(TMath::Abs(label));
    
  } 
  else if(type == AliAODTrack::Class()) {
    //
    if(!fAODArrayMCInfo) {
      AliDebug(1, "No MC Event Available\n");
      return 0;
    }
    // MCParticle
    if(label && label < fAODArrayMCInfo->GetEntriesFast())
      mctrack =  (AliVParticle *) fAODArrayMCInfo->At(label);
  }
  else {
    mctrack=track;
  }  
  
 if(!mctrack) return 0;
  
  TString mctype = mctrack->IsA()->GetName();
  Int_t trackPdg = 0;
  if(!mctype.CompareTo("AliMCParticle")){
    const AliMCParticle *esdmc = dynamic_cast<const AliMCParticle *>(mctrack);
    if(esdmc) trackPdg = esdmc->Particle()->GetPdgCode();
  } else {
    const AliAODMCParticle *aodmc = dynamic_cast< const AliAODMCParticle *>(mctrack);
    if(aodmc) trackPdg = aodmc->GetPdgCode();
  }
  return trackPdg;
}

//____________________________________________________________
Int_t AliHFEsignalCuts::GetElecSource(const AliVParticle * const track) const {
  //
  // Return PDG code of a particle itself
  //
  if(!track){
    AliDebug(1, "Track not Available\n");
    return 0;
  }  

  TClass *type = track->IsA();  
  //if((!fMC && (type == AliESDtrack::Class())) || (!fAODArrayMCInfo && (type == AliAODTrack::Class()))){
  //  AliDebug(1, "No MC Event Available\n");
  //  return 0;
  //}
  if(!fMCQA){
    AliDebug(1, "No MCQA Available\n");
    return 0;
  }
 

  const AliVParticle *mctrack = NULL;
  TParticle *mcpart = NULL;
  Int_t label = TMath::Abs(track->GetLabel());
  AliMCParticle *esdmcmother = NULL;
  if(type == AliESDtrack::Class()){
    //
    if(!fMC) {
      AliDebug(1, "No MC Event Available\n");
      return 0;
    }
    // Reconstructed track
    if(label) mctrack = fMC->GetTrack(TMath::Abs(label));
    
  } 
  else if(type == AliAODTrack::Class()) {
    //
    if(!fAODArrayMCInfo) {
      AliDebug(1, "No MC Event Available\n");
      return 0;
    }
    // MCParticle
    if(label && label < fAODArrayMCInfo->GetEntriesFast())
      mctrack = (AliVParticle *) fAODArrayMCInfo->At(label);
  }
  else {
    mctrack=track;
  }
  if(!mctrack) return 0;

  Int_t eSource = 0;
  if(mctrack->IsA() == AliMCParticle::Class()){
    const AliMCParticle *esdmc = dynamic_cast<const AliMCParticle *>(mctrack);
    if(esdmc){
      mcpart = esdmc->Particle();
      eSource=fMCQA->GetElecSource(mcpart,kTRUE);
      // considering secondary pions
      if(type == AliESDtrack::Class()){
       if(eSource>=AliHFEmcQA::kGammaPi0 && eSource<=AliHFEmcQA::kGammaRho0) {  // conversion electron, be careful with the enum odering
        Int_t glabel=TMath::Abs(esdmc->GetMother()); // gamma label
        if((esdmcmother= dynamic_cast<AliMCParticle *>(fMC->GetTrack(glabel)))){
          glabel=TMath::Abs(esdmcmother->GetMother()); // gamma's mother's label
          if((esdmcmother= dynamic_cast<AliMCParticle *>(fMC->GetTrack(glabel)))){
            if(glabel>fMC->GetNumberOfPrimaries()) eSource=AliHFEmcQA::kScdryM;
          }
        }
       }
       else if(eSource==AliHFEmcQA::kPi0 || (eSource>=AliHFEmcQA::kEta && eSource<=AliHFEmcQA::kRho0) ){ // nonHFE except for the conversion electron
        Int_t glabel=TMath::Abs(esdmc->GetMother());
        if((esdmcmother= dynamic_cast<AliMCParticle *>(fMC->GetTrack(glabel)))){
          if(glabel>fMC->GetNumberOfPrimaries()) eSource=AliHFEmcQA::kScdryM;
        }
       }
      }
    }
  } else {
    eSource=fMCQA->GetElecSource(mctrack,kTRUE);
  }
  return eSource;
}	
 AliHFEsignalCuts.cxx:1
 AliHFEsignalCuts.cxx:2
 AliHFEsignalCuts.cxx:3
 AliHFEsignalCuts.cxx:4
 AliHFEsignalCuts.cxx:5
 AliHFEsignalCuts.cxx:6
 AliHFEsignalCuts.cxx:7
 AliHFEsignalCuts.cxx:8
 AliHFEsignalCuts.cxx:9
 AliHFEsignalCuts.cxx:10
 AliHFEsignalCuts.cxx:11
 AliHFEsignalCuts.cxx:12
 AliHFEsignalCuts.cxx:13
 AliHFEsignalCuts.cxx:14
 AliHFEsignalCuts.cxx:15
 AliHFEsignalCuts.cxx:16
 AliHFEsignalCuts.cxx:17
 AliHFEsignalCuts.cxx:18
 AliHFEsignalCuts.cxx:19
 AliHFEsignalCuts.cxx:20
 AliHFEsignalCuts.cxx:21
 AliHFEsignalCuts.cxx:22
 AliHFEsignalCuts.cxx:23
 AliHFEsignalCuts.cxx:24
 AliHFEsignalCuts.cxx:25
 AliHFEsignalCuts.cxx:26
 AliHFEsignalCuts.cxx:27
 AliHFEsignalCuts.cxx:28
 AliHFEsignalCuts.cxx:29
 AliHFEsignalCuts.cxx:30
 AliHFEsignalCuts.cxx:31
 AliHFEsignalCuts.cxx:32
 AliHFEsignalCuts.cxx:33
 AliHFEsignalCuts.cxx:34
 AliHFEsignalCuts.cxx:35
 AliHFEsignalCuts.cxx:36
 AliHFEsignalCuts.cxx:37
 AliHFEsignalCuts.cxx:38
 AliHFEsignalCuts.cxx:39
 AliHFEsignalCuts.cxx:40
 AliHFEsignalCuts.cxx:41
 AliHFEsignalCuts.cxx:42
 AliHFEsignalCuts.cxx:43
 AliHFEsignalCuts.cxx:44
 AliHFEsignalCuts.cxx:45
 AliHFEsignalCuts.cxx:46
 AliHFEsignalCuts.cxx:47
 AliHFEsignalCuts.cxx:48
 AliHFEsignalCuts.cxx:49
 AliHFEsignalCuts.cxx:50
 AliHFEsignalCuts.cxx:51
 AliHFEsignalCuts.cxx:52
 AliHFEsignalCuts.cxx:53
 AliHFEsignalCuts.cxx:54
 AliHFEsignalCuts.cxx:55
 AliHFEsignalCuts.cxx:56
 AliHFEsignalCuts.cxx:57
 AliHFEsignalCuts.cxx:58
 AliHFEsignalCuts.cxx:59
 AliHFEsignalCuts.cxx:60
 AliHFEsignalCuts.cxx:61
 AliHFEsignalCuts.cxx:62
 AliHFEsignalCuts.cxx:63
 AliHFEsignalCuts.cxx:64
 AliHFEsignalCuts.cxx:65
 AliHFEsignalCuts.cxx:66
 AliHFEsignalCuts.cxx:67
 AliHFEsignalCuts.cxx:68
 AliHFEsignalCuts.cxx:69
 AliHFEsignalCuts.cxx:70
 AliHFEsignalCuts.cxx:71
 AliHFEsignalCuts.cxx:72
 AliHFEsignalCuts.cxx:73
 AliHFEsignalCuts.cxx:74
 AliHFEsignalCuts.cxx:75
 AliHFEsignalCuts.cxx:76
 AliHFEsignalCuts.cxx:77
 AliHFEsignalCuts.cxx:78
 AliHFEsignalCuts.cxx:79
 AliHFEsignalCuts.cxx:80
 AliHFEsignalCuts.cxx:81
 AliHFEsignalCuts.cxx:82
 AliHFEsignalCuts.cxx:83
 AliHFEsignalCuts.cxx:84
 AliHFEsignalCuts.cxx:85
 AliHFEsignalCuts.cxx:86
 AliHFEsignalCuts.cxx:87
 AliHFEsignalCuts.cxx:88
 AliHFEsignalCuts.cxx:89
 AliHFEsignalCuts.cxx:90
 AliHFEsignalCuts.cxx:91
 AliHFEsignalCuts.cxx:92
 AliHFEsignalCuts.cxx:93
 AliHFEsignalCuts.cxx:94
 AliHFEsignalCuts.cxx:95
 AliHFEsignalCuts.cxx:96
 AliHFEsignalCuts.cxx:97
 AliHFEsignalCuts.cxx:98
 AliHFEsignalCuts.cxx:99
 AliHFEsignalCuts.cxx:100
 AliHFEsignalCuts.cxx:101
 AliHFEsignalCuts.cxx:102
 AliHFEsignalCuts.cxx:103
 AliHFEsignalCuts.cxx:104
 AliHFEsignalCuts.cxx:105
 AliHFEsignalCuts.cxx:106
 AliHFEsignalCuts.cxx:107
 AliHFEsignalCuts.cxx:108
 AliHFEsignalCuts.cxx:109
 AliHFEsignalCuts.cxx:110
 AliHFEsignalCuts.cxx:111
 AliHFEsignalCuts.cxx:112
 AliHFEsignalCuts.cxx:113
 AliHFEsignalCuts.cxx:114
 AliHFEsignalCuts.cxx:115
 AliHFEsignalCuts.cxx:116
 AliHFEsignalCuts.cxx:117
 AliHFEsignalCuts.cxx:118
 AliHFEsignalCuts.cxx:119
 AliHFEsignalCuts.cxx:120
 AliHFEsignalCuts.cxx:121
 AliHFEsignalCuts.cxx:122
 AliHFEsignalCuts.cxx:123
 AliHFEsignalCuts.cxx:124
 AliHFEsignalCuts.cxx:125
 AliHFEsignalCuts.cxx:126
 AliHFEsignalCuts.cxx:127
 AliHFEsignalCuts.cxx:128
 AliHFEsignalCuts.cxx:129
 AliHFEsignalCuts.cxx:130
 AliHFEsignalCuts.cxx:131
 AliHFEsignalCuts.cxx:132
 AliHFEsignalCuts.cxx:133
 AliHFEsignalCuts.cxx:134
 AliHFEsignalCuts.cxx:135
 AliHFEsignalCuts.cxx:136
 AliHFEsignalCuts.cxx:137
 AliHFEsignalCuts.cxx:138
 AliHFEsignalCuts.cxx:139
 AliHFEsignalCuts.cxx:140
 AliHFEsignalCuts.cxx:141
 AliHFEsignalCuts.cxx:142
 AliHFEsignalCuts.cxx:143
 AliHFEsignalCuts.cxx:144
 AliHFEsignalCuts.cxx:145
 AliHFEsignalCuts.cxx:146
 AliHFEsignalCuts.cxx:147
 AliHFEsignalCuts.cxx:148
 AliHFEsignalCuts.cxx:149
 AliHFEsignalCuts.cxx:150
 AliHFEsignalCuts.cxx:151
 AliHFEsignalCuts.cxx:152
 AliHFEsignalCuts.cxx:153
 AliHFEsignalCuts.cxx:154
 AliHFEsignalCuts.cxx:155
 AliHFEsignalCuts.cxx:156
 AliHFEsignalCuts.cxx:157
 AliHFEsignalCuts.cxx:158
 AliHFEsignalCuts.cxx:159
 AliHFEsignalCuts.cxx:160
 AliHFEsignalCuts.cxx:161
 AliHFEsignalCuts.cxx:162
 AliHFEsignalCuts.cxx:163
 AliHFEsignalCuts.cxx:164
 AliHFEsignalCuts.cxx:165
 AliHFEsignalCuts.cxx:166
 AliHFEsignalCuts.cxx:167
 AliHFEsignalCuts.cxx:168
 AliHFEsignalCuts.cxx:169
 AliHFEsignalCuts.cxx:170
 AliHFEsignalCuts.cxx:171
 AliHFEsignalCuts.cxx:172
 AliHFEsignalCuts.cxx:173
 AliHFEsignalCuts.cxx:174
 AliHFEsignalCuts.cxx:175
 AliHFEsignalCuts.cxx:176
 AliHFEsignalCuts.cxx:177
 AliHFEsignalCuts.cxx:178
 AliHFEsignalCuts.cxx:179
 AliHFEsignalCuts.cxx:180
 AliHFEsignalCuts.cxx:181
 AliHFEsignalCuts.cxx:182
 AliHFEsignalCuts.cxx:183
 AliHFEsignalCuts.cxx:184
 AliHFEsignalCuts.cxx:185
 AliHFEsignalCuts.cxx:186
 AliHFEsignalCuts.cxx:187
 AliHFEsignalCuts.cxx:188
 AliHFEsignalCuts.cxx:189
 AliHFEsignalCuts.cxx:190
 AliHFEsignalCuts.cxx:191
 AliHFEsignalCuts.cxx:192
 AliHFEsignalCuts.cxx:193
 AliHFEsignalCuts.cxx:194
 AliHFEsignalCuts.cxx:195
 AliHFEsignalCuts.cxx:196
 AliHFEsignalCuts.cxx:197
 AliHFEsignalCuts.cxx:198
 AliHFEsignalCuts.cxx:199
 AliHFEsignalCuts.cxx:200
 AliHFEsignalCuts.cxx:201
 AliHFEsignalCuts.cxx:202
 AliHFEsignalCuts.cxx:203
 AliHFEsignalCuts.cxx:204
 AliHFEsignalCuts.cxx:205
 AliHFEsignalCuts.cxx:206
 AliHFEsignalCuts.cxx:207
 AliHFEsignalCuts.cxx:208
 AliHFEsignalCuts.cxx:209
 AliHFEsignalCuts.cxx:210
 AliHFEsignalCuts.cxx:211
 AliHFEsignalCuts.cxx:212
 AliHFEsignalCuts.cxx:213
 AliHFEsignalCuts.cxx:214
 AliHFEsignalCuts.cxx:215
 AliHFEsignalCuts.cxx:216
 AliHFEsignalCuts.cxx:217
 AliHFEsignalCuts.cxx:218
 AliHFEsignalCuts.cxx:219
 AliHFEsignalCuts.cxx:220
 AliHFEsignalCuts.cxx:221
 AliHFEsignalCuts.cxx:222
 AliHFEsignalCuts.cxx:223
 AliHFEsignalCuts.cxx:224
 AliHFEsignalCuts.cxx:225
 AliHFEsignalCuts.cxx:226
 AliHFEsignalCuts.cxx:227
 AliHFEsignalCuts.cxx:228
 AliHFEsignalCuts.cxx:229
 AliHFEsignalCuts.cxx:230
 AliHFEsignalCuts.cxx:231
 AliHFEsignalCuts.cxx:232
 AliHFEsignalCuts.cxx:233
 AliHFEsignalCuts.cxx:234
 AliHFEsignalCuts.cxx:235
 AliHFEsignalCuts.cxx:236
 AliHFEsignalCuts.cxx:237
 AliHFEsignalCuts.cxx:238
 AliHFEsignalCuts.cxx:239
 AliHFEsignalCuts.cxx:240
 AliHFEsignalCuts.cxx:241
 AliHFEsignalCuts.cxx:242
 AliHFEsignalCuts.cxx:243
 AliHFEsignalCuts.cxx:244
 AliHFEsignalCuts.cxx:245
 AliHFEsignalCuts.cxx:246
 AliHFEsignalCuts.cxx:247
 AliHFEsignalCuts.cxx:248
 AliHFEsignalCuts.cxx:249
 AliHFEsignalCuts.cxx:250
 AliHFEsignalCuts.cxx:251
 AliHFEsignalCuts.cxx:252
 AliHFEsignalCuts.cxx:253
 AliHFEsignalCuts.cxx:254
 AliHFEsignalCuts.cxx:255
 AliHFEsignalCuts.cxx:256
 AliHFEsignalCuts.cxx:257
 AliHFEsignalCuts.cxx:258
 AliHFEsignalCuts.cxx:259
 AliHFEsignalCuts.cxx:260
 AliHFEsignalCuts.cxx:261
 AliHFEsignalCuts.cxx:262
 AliHFEsignalCuts.cxx:263
 AliHFEsignalCuts.cxx:264
 AliHFEsignalCuts.cxx:265
 AliHFEsignalCuts.cxx:266
 AliHFEsignalCuts.cxx:267
 AliHFEsignalCuts.cxx:268
 AliHFEsignalCuts.cxx:269
 AliHFEsignalCuts.cxx:270
 AliHFEsignalCuts.cxx:271
 AliHFEsignalCuts.cxx:272
 AliHFEsignalCuts.cxx:273
 AliHFEsignalCuts.cxx:274
 AliHFEsignalCuts.cxx:275
 AliHFEsignalCuts.cxx:276
 AliHFEsignalCuts.cxx:277
 AliHFEsignalCuts.cxx:278
 AliHFEsignalCuts.cxx:279
 AliHFEsignalCuts.cxx:280
 AliHFEsignalCuts.cxx:281
 AliHFEsignalCuts.cxx:282
 AliHFEsignalCuts.cxx:283
 AliHFEsignalCuts.cxx:284
 AliHFEsignalCuts.cxx:285
 AliHFEsignalCuts.cxx:286
 AliHFEsignalCuts.cxx:287
 AliHFEsignalCuts.cxx:288
 AliHFEsignalCuts.cxx:289
 AliHFEsignalCuts.cxx:290
 AliHFEsignalCuts.cxx:291
 AliHFEsignalCuts.cxx:292
 AliHFEsignalCuts.cxx:293
 AliHFEsignalCuts.cxx:294
 AliHFEsignalCuts.cxx:295
 AliHFEsignalCuts.cxx:296
 AliHFEsignalCuts.cxx:297
 AliHFEsignalCuts.cxx:298
 AliHFEsignalCuts.cxx:299
 AliHFEsignalCuts.cxx:300
 AliHFEsignalCuts.cxx:301
 AliHFEsignalCuts.cxx:302
 AliHFEsignalCuts.cxx:303
 AliHFEsignalCuts.cxx:304
 AliHFEsignalCuts.cxx:305
 AliHFEsignalCuts.cxx:306
 AliHFEsignalCuts.cxx:307
 AliHFEsignalCuts.cxx:308
 AliHFEsignalCuts.cxx:309
 AliHFEsignalCuts.cxx:310
 AliHFEsignalCuts.cxx:311
 AliHFEsignalCuts.cxx:312
 AliHFEsignalCuts.cxx:313
 AliHFEsignalCuts.cxx:314
 AliHFEsignalCuts.cxx:315
 AliHFEsignalCuts.cxx:316
 AliHFEsignalCuts.cxx:317
 AliHFEsignalCuts.cxx:318
 AliHFEsignalCuts.cxx:319
 AliHFEsignalCuts.cxx:320
 AliHFEsignalCuts.cxx:321
 AliHFEsignalCuts.cxx:322
 AliHFEsignalCuts.cxx:323
 AliHFEsignalCuts.cxx:324
 AliHFEsignalCuts.cxx:325
 AliHFEsignalCuts.cxx:326
 AliHFEsignalCuts.cxx:327
 AliHFEsignalCuts.cxx:328
 AliHFEsignalCuts.cxx:329
 AliHFEsignalCuts.cxx:330
 AliHFEsignalCuts.cxx:331
 AliHFEsignalCuts.cxx:332
 AliHFEsignalCuts.cxx:333
 AliHFEsignalCuts.cxx:334
 AliHFEsignalCuts.cxx:335
 AliHFEsignalCuts.cxx:336
 AliHFEsignalCuts.cxx:337
 AliHFEsignalCuts.cxx:338
 AliHFEsignalCuts.cxx:339
 AliHFEsignalCuts.cxx:340
 AliHFEsignalCuts.cxx:341
 AliHFEsignalCuts.cxx:342
 AliHFEsignalCuts.cxx:343
 AliHFEsignalCuts.cxx:344
 AliHFEsignalCuts.cxx:345
 AliHFEsignalCuts.cxx:346
 AliHFEsignalCuts.cxx:347
 AliHFEsignalCuts.cxx:348
 AliHFEsignalCuts.cxx:349
 AliHFEsignalCuts.cxx:350
 AliHFEsignalCuts.cxx:351
 AliHFEsignalCuts.cxx:352
 AliHFEsignalCuts.cxx:353
 AliHFEsignalCuts.cxx:354
 AliHFEsignalCuts.cxx:355
 AliHFEsignalCuts.cxx:356
 AliHFEsignalCuts.cxx:357
 AliHFEsignalCuts.cxx:358
 AliHFEsignalCuts.cxx:359
 AliHFEsignalCuts.cxx:360
 AliHFEsignalCuts.cxx:361
 AliHFEsignalCuts.cxx:362
 AliHFEsignalCuts.cxx:363
 AliHFEsignalCuts.cxx:364
 AliHFEsignalCuts.cxx:365
 AliHFEsignalCuts.cxx:366
 AliHFEsignalCuts.cxx:367
 AliHFEsignalCuts.cxx:368
 AliHFEsignalCuts.cxx:369
 AliHFEsignalCuts.cxx:370
 AliHFEsignalCuts.cxx:371
 AliHFEsignalCuts.cxx:372
 AliHFEsignalCuts.cxx:373
 AliHFEsignalCuts.cxx:374
 AliHFEsignalCuts.cxx:375
 AliHFEsignalCuts.cxx:376
 AliHFEsignalCuts.cxx:377
 AliHFEsignalCuts.cxx:378
 AliHFEsignalCuts.cxx:379
 AliHFEsignalCuts.cxx:380
 AliHFEsignalCuts.cxx:381
 AliHFEsignalCuts.cxx:382
 AliHFEsignalCuts.cxx:383
 AliHFEsignalCuts.cxx:384
 AliHFEsignalCuts.cxx:385
 AliHFEsignalCuts.cxx:386
 AliHFEsignalCuts.cxx:387
 AliHFEsignalCuts.cxx:388
 AliHFEsignalCuts.cxx:389
 AliHFEsignalCuts.cxx:390
 AliHFEsignalCuts.cxx:391
 AliHFEsignalCuts.cxx:392
 AliHFEsignalCuts.cxx:393
 AliHFEsignalCuts.cxx:394
 AliHFEsignalCuts.cxx:395
 AliHFEsignalCuts.cxx:396
 AliHFEsignalCuts.cxx:397
 AliHFEsignalCuts.cxx:398
 AliHFEsignalCuts.cxx:399
 AliHFEsignalCuts.cxx:400
 AliHFEsignalCuts.cxx:401
 AliHFEsignalCuts.cxx:402
 AliHFEsignalCuts.cxx:403
 AliHFEsignalCuts.cxx:404
 AliHFEsignalCuts.cxx:405
 AliHFEsignalCuts.cxx:406
 AliHFEsignalCuts.cxx:407
 AliHFEsignalCuts.cxx:408
 AliHFEsignalCuts.cxx:409
 AliHFEsignalCuts.cxx:410
 AliHFEsignalCuts.cxx:411
 AliHFEsignalCuts.cxx:412
 AliHFEsignalCuts.cxx:413
 AliHFEsignalCuts.cxx:414
 AliHFEsignalCuts.cxx:415
 AliHFEsignalCuts.cxx:416
 AliHFEsignalCuts.cxx:417
 AliHFEsignalCuts.cxx:418
 AliHFEsignalCuts.cxx:419
 AliHFEsignalCuts.cxx:420
 AliHFEsignalCuts.cxx:421
 AliHFEsignalCuts.cxx:422
 AliHFEsignalCuts.cxx:423
 AliHFEsignalCuts.cxx:424
 AliHFEsignalCuts.cxx:425
 AliHFEsignalCuts.cxx:426
 AliHFEsignalCuts.cxx:427
 AliHFEsignalCuts.cxx:428
 AliHFEsignalCuts.cxx:429
 AliHFEsignalCuts.cxx:430
 AliHFEsignalCuts.cxx:431
 AliHFEsignalCuts.cxx:432
 AliHFEsignalCuts.cxx:433
 AliHFEsignalCuts.cxx:434
 AliHFEsignalCuts.cxx:435
 AliHFEsignalCuts.cxx:436
 AliHFEsignalCuts.cxx:437
 AliHFEsignalCuts.cxx:438
 AliHFEsignalCuts.cxx:439
 AliHFEsignalCuts.cxx:440
 AliHFEsignalCuts.cxx:441
 AliHFEsignalCuts.cxx:442
 AliHFEsignalCuts.cxx:443
 AliHFEsignalCuts.cxx:444
 AliHFEsignalCuts.cxx:445
 AliHFEsignalCuts.cxx:446
 AliHFEsignalCuts.cxx:447
 AliHFEsignalCuts.cxx:448
 AliHFEsignalCuts.cxx:449
 AliHFEsignalCuts.cxx:450
 AliHFEsignalCuts.cxx:451
 AliHFEsignalCuts.cxx:452
 AliHFEsignalCuts.cxx:453
 AliHFEsignalCuts.cxx:454
 AliHFEsignalCuts.cxx:455
 AliHFEsignalCuts.cxx:456
 AliHFEsignalCuts.cxx:457
 AliHFEsignalCuts.cxx:458
 AliHFEsignalCuts.cxx:459
 AliHFEsignalCuts.cxx:460
 AliHFEsignalCuts.cxx:461
 AliHFEsignalCuts.cxx:462
 AliHFEsignalCuts.cxx:463
 AliHFEsignalCuts.cxx:464
 AliHFEsignalCuts.cxx:465
 AliHFEsignalCuts.cxx:466
 AliHFEsignalCuts.cxx:467
 AliHFEsignalCuts.cxx:468
 AliHFEsignalCuts.cxx:469
 AliHFEsignalCuts.cxx:470
 AliHFEsignalCuts.cxx:471
 AliHFEsignalCuts.cxx:472
 AliHFEsignalCuts.cxx:473
 AliHFEsignalCuts.cxx:474
 AliHFEsignalCuts.cxx:475
 AliHFEsignalCuts.cxx:476
 AliHFEsignalCuts.cxx:477
 AliHFEsignalCuts.cxx:478
 AliHFEsignalCuts.cxx:479
 AliHFEsignalCuts.cxx:480
 AliHFEsignalCuts.cxx:481
 AliHFEsignalCuts.cxx:482
 AliHFEsignalCuts.cxx:483
 AliHFEsignalCuts.cxx:484
 AliHFEsignalCuts.cxx:485
 AliHFEsignalCuts.cxx:486
 AliHFEsignalCuts.cxx:487
 AliHFEsignalCuts.cxx:488
 AliHFEsignalCuts.cxx:489
 AliHFEsignalCuts.cxx:490
 AliHFEsignalCuts.cxx:491
 AliHFEsignalCuts.cxx:492
 AliHFEsignalCuts.cxx:493
 AliHFEsignalCuts.cxx:494
 AliHFEsignalCuts.cxx:495
 AliHFEsignalCuts.cxx:496
 AliHFEsignalCuts.cxx:497
 AliHFEsignalCuts.cxx:498
 AliHFEsignalCuts.cxx:499
 AliHFEsignalCuts.cxx:500
 AliHFEsignalCuts.cxx:501
 AliHFEsignalCuts.cxx:502
 AliHFEsignalCuts.cxx:503
 AliHFEsignalCuts.cxx:504
 AliHFEsignalCuts.cxx:505
 AliHFEsignalCuts.cxx:506
 AliHFEsignalCuts.cxx:507
 AliHFEsignalCuts.cxx:508
 AliHFEsignalCuts.cxx:509
 AliHFEsignalCuts.cxx:510
 AliHFEsignalCuts.cxx:511
 AliHFEsignalCuts.cxx:512
 AliHFEsignalCuts.cxx:513
 AliHFEsignalCuts.cxx:514
 AliHFEsignalCuts.cxx:515
 AliHFEsignalCuts.cxx:516