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 on the Event at reconstructed level: for the moment 
// the requirements on the number of charged tracks and on 
// the vertex position and resolution are implemented
// The argument of IsSelected member function (passed object) is cast into 
// an AliESDEvent. In the future may be modified to use AliVEvent interface
// and include more cut variables.
// The class derives from AliCFCutBase
// Author:S.Arcelli Silvia.Arcelli@cern.ch
//
//
#include "TH1F.h"
#include "TList.h"
#include "TBits.h"
#include "AliLog.h"
#include "AliAnalysisUtils.h"
#include "AliESDEvent.h"
#include "AliESDVertex.h"
#include "AliAODEvent.h"
#include "AliAODVertex.h"
#include "AliHFEextraEventCuts.h"
ClassImp(AliHFEextraEventCuts) 
//____________________________________________________________________
AliHFEextraEventCuts::AliHFEextraEventCuts() : 
  AliCFCutBase(),
  fAnalysisUtils(NULL),
  fRequireVtxCuts(kFALSE),
  fVtxZMax(1.e99),
  fVtxZMin(-1.e99),
  fVtxNCtrbMin(0),
  fVtxMixed(0),
  fVtxSPD(0),
  fCheckCorrelationSPDVtx(0),
  fVtxResolution(kFALSE),
  fPApileupCut(kFALSE),
  fBitMap(0x0)
{
  //
  //ctor
  //
}

//____________________________________________________________________
AliHFEextraEventCuts::AliHFEextraEventCuts(Char_t* name, Char_t* title) : 
  AliCFCutBase(name,title),
  fAnalysisUtils(NULL),
  fRequireVtxCuts(kFALSE),
  fVtxZMax(1.e99),
  fVtxZMin(-1.e99),
  fVtxNCtrbMin(0),
  fVtxMixed(0),
  fVtxSPD(0),
  fCheckCorrelationSPDVtx(0),
  fVtxResolution(kFALSE),
  fPApileupCut(kFALSE),
  fBitMap(0x0)
 {
  //
  //ctor
  //
  fBitMap=new TBits(0);
  Initialise();
  fAnalysisUtils = new AliAnalysisUtils;
 }

//____________________________________________________________________
AliHFEextraEventCuts::AliHFEextraEventCuts(const AliHFEextraEventCuts& c) : 
  AliCFCutBase(c),
  fAnalysisUtils(NULL),
  fRequireVtxCuts(c.fRequireVtxCuts),
  fVtxZMax(c.fVtxZMax),
  fVtxZMin(c.fVtxZMin),
  fVtxNCtrbMin(c.fVtxNCtrbMin),
  fVtxMixed(c.fVtxMixed),
  fVtxSPD(c.fVtxSPD),
  fCheckCorrelationSPDVtx(c.fCheckCorrelationSPDVtx),
  fVtxResolution(c.fVtxResolution),
  fPApileupCut(c.fPApileupCut),
  fBitMap(c.fBitMap)
{
  //
  //copy constructor
  //
  for (Int_t i=0; i<c.kNCuts; i++){
    for (Int_t j=0; j<c.kNStepQA; j++){
      if(c.fhQA[i][j]) fhQA[i][j] = (TH1F*)c.fhQA[i][j]->Clone();
    }
  }
  fAnalysisUtils = new AliAnalysisUtils;
}

//____________________________________________________________________
AliHFEextraEventCuts::~AliHFEextraEventCuts() {
  //
  //dtor
  //

  for (Int_t i=0; i<kNCuts; i++){
    for (Int_t j=0; j<kNStepQA; j++){
      if(fhQA[i][j]) delete fhQA[i][j];
    }
  }

  if(fBitMap) delete fBitMap;
  if(fAnalysisUtils) delete fAnalysisUtils;
}
//_____________________________________________________________________________
void AliHFEextraEventCuts::Initialise()
{

  //
  //initialization
  //

  //
  // sets pointers to histos to zero
  //

  for(Int_t i=0; i<kNCuts; i++){
    for(Int_t j =0; j<kNStepQA; j++){
      fhQA[i][j]=0x0;
    }
  }
}

//____________________________________________________________________
AliHFEextraEventCuts& AliHFEextraEventCuts::operator=(const AliHFEextraEventCuts& c)
{
  //
  // Assignment operator
  //
  if (this != &c) {
    AliCFCutBase::operator=(c) ;
    fRequireVtxCuts=c.fRequireVtxCuts;
    fVtxZMax=c.fVtxZMax;
    fVtxZMin=c.fVtxZMin;
    fVtxNCtrbMin=c.fVtxNCtrbMin;
    fVtxMixed=c.fVtxMixed;
    fVtxSPD=c.fVtxSPD;
    fCheckCorrelationSPDVtx=c.fCheckCorrelationSPDVtx;
    fVtxResolution = c.fVtxResolution;
    fBitMap=c.fBitMap;
    if(!fAnalysisUtils) fAnalysisUtils = new AliAnalysisUtils;
    fPApileupCut = c.fPApileupCut;
  }

  for (Int_t i=0; i<c.kNCuts; i++){
    for (Int_t j=0; j<c.kNStepQA; j++){
      if(c.fhQA[i][j]) fhQA[i][j] = (TH1F*)c.fhQA[i][j]->Clone();
    }
  }


  return *this ;
}

//____________________________________________________________________
Bool_t AliHFEextraEventCuts::IsSelected(TObject* obj) {
  //
  //Check if the requested cuts are passed
  //


  SelectionBitMap(obj);

  if (fIsQAOn) FillHistograms(obj,0);
  Bool_t isSelected = kTRUE;

  for (UInt_t icut=0; icut<fBitMap->GetNbits();icut++)
	if(!fBitMap->TestBitNumber(icut)) isSelected = kFALSE;

  if (!isSelected) return kFALSE ;
  if (fIsQAOn) FillHistograms(obj,1);
  return kTRUE;

}
//____________________________________________________________________
void AliHFEextraEventCuts::SelectionBitMap(TObject* obj) {
  //
  //cut on the number of charged tracks and on the event vertex.
  //so far specific to AliESDEvents
  //

  //Check if the requested cuts are passed and return a bitmap

  AliVEvent *inputEvent = dynamic_cast<AliVEvent *>(obj);
  if(!inputEvent){
    AliDebug(1, "Not a virtual event");
    for(Int_t j=0;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE);
    return;
  }
  const AliVVertex *vtxTracks = GetPrimaryVertexTracks(inputEvent),
                   *vtxSPD = GetPrimaryVertexSPD(inputEvent),
                   *vtxPrim(NULL);
  
  //first assume the event will be accepted: 
  for(Int_t j=0;j<kNCuts;j++)fBitMap->SetBitNumber(j,kTRUE);

  if(fVtxMixed){
    // Use mixed vertex: Prefer vertex with tracks, in case not available use SPD vertex
    if(vtxTracks && vtxTracks->GetNContributors() > 0) vtxPrim = vtxTracks;
    else if(vtxSPD && vtxSPD->GetNContributors() > 0) vtxPrim = vtxSPD;
  } else if(fVtxSPD){
    if(vtxSPD && vtxSPD->GetNContributors () > 0) vtxPrim = vtxSPD;
  } else {
    if(vtxTracks && vtxTracks->GetNContributors() > 0) vtxPrim = vtxTracks;
  }
  if(!vtxPrim){
    // No primary vertex: Reject event
	  for(Int_t j=1;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE); 
	  AliWarning("Cannot get vertex, skipping event");
	  return;
  }
  // Check standard vertex cuts using the primary vertex 
  if(fVtxZMin > - 1000. && fVtxZMax < 1000.){
    // Primary vertex z cut required
    // Pick up the position and uncertainties
    Double_t vtxPos[3];
    vtxPos[0] = vtxPrim->GetX();
    vtxPos[1] = vtxPrim->GetY();
    vtxPos[2] = vtxPrim->GetZ();
    if (vtxPos[2]>fVtxZMax || vtxPos[2]<fVtxZMin)
	    fBitMap->SetBitNumber(kVtxPosZ,kFALSE); 
  }
  if(fVtxNCtrbMin > 0){  
    // cut required if the cut value is set to something larger than 0
    // same effect as setting the min. cut value to 0
    Int_t nCtrb = vtxPrim->GetNContributors();
    if (nCtrb<fVtxNCtrbMin)
	    fBitMap->SetBitNumber(kVtxNCtrb,kFALSE);
  }

  // check vertex correlation cut
  if(fCheckCorrelationSPDVtx){
    if(vtxTracks && vtxTracks->GetNContributors() && vtxSPD && vtxSPD->GetNContributors()){
      // Both vertices available, check correlation
      if(TMath::Abs(vtxTracks->GetZ() - vtxSPD->GetZ()) >= 0.5) fBitMap->SetBitNumber(kCorrelation, kFALSE);
    } else {
      // No correlation available: set the cut to false
      fBitMap->SetBitNumber(kCorrelation, kFALSE); 
    }
  }
  // check cut on the SPD vertex resolution
  if(fVtxResolution){
    if(vtxSPD){
      TString vtxTyp = vtxSPD->GetTitle();
      Double_t cov[6]={0};
      vtxSPD->GetCovarianceMatrix(cov);
      Double_t zRes = TMath::Sqrt(cov[5]);
      if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) fBitMap->SetBitNumber(kResolution, kFALSE);
    } else{
      fBitMap->SetBitNumber(kResolution, kFALSE);
    }
  }
  // check pA pileup cut
  if(fPApileupCut){
    if(fAnalysisUtils->IsPileUpEvent(inputEvent)) fBitMap->SetBitNumber(kpApileup,kFALSE);
  }
}

//_____________________________________________________________________________
void AliHFEextraEventCuts::FillHistograms(TObject* obj, Bool_t b)
{
  //
  // fill the QA histograms
  //

  if(!fIsQAOn) return;
  // cast TObject into VEvent
  AliVEvent* inputEvent = dynamic_cast<AliESDEvent *>(obj);
  if (!inputEvent) return;

  // index = 0: fill histograms before cuts
  // index = 1: fill histograms after cuts
  Int_t index = -1;
  index = ((b) ? 1 : 0);

  // Obtain vertices
  const AliVVertex *vtxTracks = GetPrimaryVertexTracks(inputEvent),
                   *vtxSPD = GetPrimaryVertexSPD(inputEvent),
                   *vtxPrim(NULL);

  //look at vertex parameters:
  if(fVtxMixed){
    if(vtxTracks && vtxTracks->GetNContributors() > 0) vtxPrim = vtxTracks;
    else if(vtxSPD && vtxSPD->GetNContributors()) vtxPrim = vtxSPD;
  }
  else {   
    vtxPrim = vtxTracks; 
  }
  if(!vtxPrim)return;
  // vertex position and uncertainties
  fhQA[kVtxPosZ] [index]->Fill(vtxPrim->GetZ());
  fhQA[kVtxNCtrb][index]->Fill(vtxPrim->GetNContributors());
  // SPD Vertex Position Correlation 
  if(vtxTracks && vtxSPD){
    fhQA[kCorrelation][index]->Fill(vtxTracks->GetZ()-vtxSPD->GetZ());
  }
  if(vtxSPD){
    Double_t cov[6]={0};
    vtxSPD->GetCovarianceMatrix(cov);
    fhQA[kResolution][index]->Fill(TMath::Sqrt(cov[5]));
  }
  double isPileup =0 ;
  if(fAnalysisUtils->IsPileUpEvent(inputEvent)) isPileup = 1,
  fhQA[kpApileup][index]->Fill(isPileup);
}

//____________________________________________________________________
void AliHFEextraEventCuts::SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins)
{
  //
  //setting x-axis bin limits of QA histogram fhQA[index] 
  // 

  for(Int_t i=0;i<kNStepQA;i++){
    if(!fhQA[index][i]){AliWarning("non-existing histogram!");
    return;
    }
    fhQA[index][i]->GetXaxis()->Set(nbins,bins);
  }
}
//____________________________________________________________________
void AliHFEextraEventCuts::SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax)
{
  //
  //setting x-axis bins and range of QA histogram fhQA[index] 
  // 

  for(Int_t i=0;i<kNStepQA;i++){
    if(!fhQA[index][i]){AliWarning("non-existing histogram!");
    return;
    }
    fhQA[index][i]->GetXaxis()->Set(nbins,xmin,xmax);
  }
}

//_____________________________________________________________________________
 void AliHFEextraEventCuts::DefineHistograms() {
  //
  // histograms for cut variables
  //
  Int_t color = 2;

  if(!fIsQAOn) {
    AliInfo(Form("No QA histos requested, Please first set the QA flag on!"));
    return;
  }  
  
  // book QA histograms
  Char_t str[5];
  for (Int_t i=0; i<kNStepQA; i++) {
    if (i==0) snprintf(str,5," ");
    else snprintf(str,5,"_cut");

    fhQA[kVtxPosZ][i]	= new  TH1F(Form("%s_Vtx_Pos_Z%s",GetName(),str),		"",200,-50.,50.);
    fhQA[kVtxNCtrb][i]	= new  TH1F(Form("%s_Vtx_N_Ctrb%s",GetName(),str),		"",1000,0.,1000.);
    fhQA[kCorrelation][i] = new TH1F(Form("%s_SPDCorrelation_%s",GetName(),str), "",200, -10., 10);
    fhQA[kResolution][i] = new TH1F(Form("%s_SPDResolution_%s",GetName(), str), "", 100, 0., 1.); 
    fhQA[kpApileup][i] = new TH1F(Form("%s_pApileup_%s",GetName(),str), "", 2, 0., 2.);
 
    fhQA[kVtxPosZ][i]	->SetXTitle("Vertex Position Z (cm)");
    fhQA[kVtxNCtrb][i]	->SetXTitle("Number of contributors");
  }

  for(Int_t i=0; i<kNCuts; i++) fhQA[i][1]->SetLineColor(color);

}

//_____________________________________________________________________________
void AliHFEextraEventCuts::AddQAHistograms(TList *qaList) {
  //
  // saves the histograms in a TList
  //

  DefineHistograms();

  for (Int_t j=0; j<kNStepQA; j++) {
    for(Int_t i=0; i<kNCuts; i++)
	qaList->Add(fhQA[i][j]);
  }
}

//_____________________________________________________________________________
const AliVVertex *AliHFEextraEventCuts::GetPrimaryVertexSPD(const AliVEvent * const inputEvent){
  //
  // Get SPD vertex from event
  //
  const AliVVertex *spdvtx(NULL);
  const AliESDEvent *esd(NULL);
  const AliAODEvent *aod(NULL);
  if((esd = dynamic_cast<const AliESDEvent *>(inputEvent))){
    spdvtx = esd->GetPrimaryVertexSPD();
  } else if((aod = dynamic_cast<const AliAODEvent *>(inputEvent))){
    spdvtx = aod->GetPrimaryVertexSPD();
  }
  return spdvtx;
}

//_____________________________________________________________________________
const AliVVertex *AliHFEextraEventCuts::GetPrimaryVertexTracks(const AliVEvent *const inputEvent){
  // 
  // Get Primary Vertex from tracks
  //
  const AliVVertex *trkvtx(NULL);
  const AliESDEvent *esd(NULL);
  const AliAODEvent *aod(NULL);
  if((esd = dynamic_cast<const AliESDEvent *>(inputEvent))){
    trkvtx = esd->GetPrimaryVertexTracks();
  } else if((aod = dynamic_cast<const AliAODEvent *>(inputEvent))){
    const AliVVertex *vtxTmp = aod->GetPrimaryVertex();
    // check whether the primary vertex is the vertex from tracks
    TString vtxTtl = vtxTmp->GetTitle();
    if(vtxTtl.Contains("VertexerTracks")){
      trkvtx = vtxTmp;
    }
  }
  return trkvtx;
}

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