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 "AliESDEvent.h"
#include "AliESDVertex.h"
#include "AliCFEventRecCuts.h"
ClassImp(AliCFEventRecCuts) 
//____________________________________________________________________
AliCFEventRecCuts::AliCFEventRecCuts() : 
  AliCFCutBase(),
  fNTracksMin(-1),
  fNTracksMax(1000000),
  fRequireVtxCuts(kFALSE),
  fVtxXMax(1.e99),
  fVtxYMax(1.e99),
  fVtxZMax(1.e99),
  fVtxXMin(-1.e99),
  fVtxYMin(-1.e99),
  fVtxZMin(-1.e99),
  fVtxXResMax(1.e99),
  fVtxYResMax(1.e99),
  fVtxZResMax(1.e99),
  fVtxNCtrbMin(0),
  fVtxNCtrbMax((Int_t)1.e9),
  fVtxTPC(0),
  fVtxSPD(0),
  fBitMap(0x0)
{
  //
  //ctor
  //
  fBitMap=new TBits(0);
  Initialise();
}

//____________________________________________________________________
AliCFEventRecCuts::AliCFEventRecCuts(Char_t* name, Char_t* title) : 
  AliCFCutBase(name,title),
  fNTracksMin(-1),
  fNTracksMax(1000000),
  fRequireVtxCuts(kFALSE),
  fVtxXMax(1.e99),
  fVtxYMax(1.e99),
  fVtxZMax(1.e99),
  fVtxXMin(-1.e99),
  fVtxYMin(-1.e99),
  fVtxZMin(-1.e99),
  fVtxXResMax(1.e99),
  fVtxYResMax(1.e99),
  fVtxZResMax(1.e99),
  fVtxNCtrbMin(0),
  fVtxNCtrbMax((Int_t)1.e9),
  fVtxTPC(0),
  fVtxSPD(0),
  fBitMap(0x0)
 {
  //
  //ctor
  //
  fBitMap=new TBits(0);
  Initialise();
 }

//____________________________________________________________________
AliCFEventRecCuts::AliCFEventRecCuts(const AliCFEventRecCuts& c) : 
  AliCFCutBase(c),
  fNTracksMin(c.fNTracksMin),
  fNTracksMax(c.fNTracksMax),
  fRequireVtxCuts(c.fRequireVtxCuts),
  fVtxXMax(c.fVtxXMax),
  fVtxYMax(c.fVtxYMax),
  fVtxZMax(c.fVtxZMax),
  fVtxXMin(c.fVtxXMin),
  fVtxYMin(c.fVtxYMin),
  fVtxZMin(c.fVtxZMin),
  fVtxXResMax(c.fVtxXResMax),
  fVtxYResMax(c.fVtxYResMax),
  fVtxZResMax(c.fVtxZResMax),
  fVtxNCtrbMin(c.fVtxNCtrbMin),
  fVtxNCtrbMax(c.fVtxNCtrbMax),
  fVtxTPC(c.fVtxTPC),
  fVtxSPD(c.fVtxSPD),
  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();
    }
  }

}

//____________________________________________________________________
AliCFEventRecCuts::~AliCFEventRecCuts() {
  //
  //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;

}
//_____________________________________________________________________________
void AliCFEventRecCuts::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;
    }
  }
}

//____________________________________________________________________
AliCFEventRecCuts& AliCFEventRecCuts::operator=(const AliCFEventRecCuts& c)
{
  //
  // Assignment operator
  //
  if (this != &c) {
    AliCFCutBase::operator=(c) ;
    fNTracksMin=c.fNTracksMin;
    fNTracksMax=c.fNTracksMax;
    fRequireVtxCuts=c.fRequireVtxCuts;
    fVtxXMax=c.fVtxXMax;
    fVtxYMax=c.fVtxYMax;
    fVtxZMax=c.fVtxZMax;
    fVtxXMin=c.fVtxXMin;
    fVtxYMin=c.fVtxYMin;
    fVtxZMin=c.fVtxZMin;
    fVtxXResMax=c.fVtxXResMax;
    fVtxYResMax=c.fVtxYResMax;
    fVtxZResMax=c.fVtxZResMax;
    fVtxNCtrbMin=c.fVtxNCtrbMin;
    fVtxNCtrbMax=c.fVtxNCtrbMax;
    fVtxTPC=c.fVtxTPC;
    fVtxSPD=c.fVtxSPD;
    fBitMap=c.fBitMap;
  }

  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 AliCFEventRecCuts::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 AliCFEventRecCuts::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
  for(Int_t j=0;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE);
  AliESDEvent* esd = dynamic_cast<AliESDEvent *>(obj);
  if ( !esd ) return;

  //now start checking the cuts,
  //first assume the event will be accepted: 
  for(Int_t j=0;j<kNCuts;j++)fBitMap->SetBitNumber(j,kTRUE);

  //Number of charged tracks:
  Int_t nTracks = esd->GetNumberOfTracks();
  if(nTracks<fNTracksMin || nTracks>fNTracksMax)
    fBitMap->SetBitNumber(0,kFALSE); 
  
  if(fRequireVtxCuts){
    const AliESDVertex* vtxESD = 0x0;
    if      (fVtxTPC) vtxESD = esd->GetPrimaryVertexTPC() ;
    else if (fVtxSPD) vtxESD = esd->GetPrimaryVertexSPD() ;
    else              vtxESD = esd->GetPrimaryVertexTracks() ;
    if(!vtxESD){
      for(Int_t j=1;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE); 
      AliWarning("Cannot get vertex, skipping event");
      return;
    }
    // Require the vertex to have been reconstructed successfully
    if (strcmp(vtxESD->GetName(), "default")==0){
      AliWarning(Form(" No reconstructed vertex found, skipping event"));    
      for(Int_t j=1;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE); 
      return;
    }    
    // Pick up the position and uncertainties
    
    Double_t vtxPos[3];
    vtxPos[0] = vtxESD->GetX();
    vtxPos[1] = vtxESD->GetY();
    vtxPos[2] = vtxESD->GetZ();
    
    Double_t vtxRes[3];
    vtxRes[0] = vtxESD->GetXRes();
    vtxRes[1] = vtxESD->GetYRes();
    vtxRes[2] = vtxESD->GetZRes();
 
    Int_t nCtrb = vtxESD->GetNContributors();

    // Apply the cut
    
    if (vtxPos[0]>fVtxXMax || vtxPos[0]<fVtxXMin)
      fBitMap->SetBitNumber(1,kFALSE); 
    if (vtxPos[1]>fVtxYMax || vtxPos[1]<fVtxYMin)
      fBitMap->SetBitNumber(2,kFALSE); 
    if (vtxPos[2]>fVtxZMax || vtxPos[2]<fVtxZMin)
      fBitMap->SetBitNumber(3,kFALSE); 
    if (vtxRes[0]==0 || vtxRes[0]>fVtxXResMax)
      fBitMap->SetBitNumber(4,kFALSE); 
    if (vtxRes[1]==0 || vtxRes[1]>fVtxYResMax)
      fBitMap->SetBitNumber(5,kFALSE); 
    if (vtxRes[2]==0 || vtxRes[2]>fVtxZResMax)
      fBitMap->SetBitNumber(6,kFALSE); 
    if (nCtrb<fVtxNCtrbMin || nCtrb>fVtxNCtrbMax)
      fBitMap->SetBitNumber(7,kFALSE);

  }  
  return;
}

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

  if(!fIsQAOn) return;
  // cast TObject into VParticle
  AliESDEvent* esd = dynamic_cast<AliESDEvent *>(obj);
  if (!esd ) return  ;

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


  //number of charged tracks:
  Int_t nTracks = esd->GetNumberOfTracks();
  fhQA[kNTracks][index]->Fill(nTracks);

  //look at vertex parameters:
  const AliESDVertex* vtxESD = 0x0;
  if      (fVtxTPC) vtxESD = esd->GetPrimaryVertexTPC() ;
  else if (fVtxSPD) vtxESD = esd->GetPrimaryVertexSPD() ;
  else              vtxESD = esd->GetPrimaryVertexTracks() ;
  if(!vtxESD)return;
  // Require the vertex to have been reconstructed successfully
  if (strcmp(vtxESD->GetName(), "default")==0)return;
  // vertex position and uncertainties
  fhQA[kVtxPosX] [index]->Fill(vtxESD->GetX());
  fhQA[kVtxPosY] [index]->Fill(vtxESD->GetY());
  fhQA[kVtxPosZ] [index]->Fill(vtxESD->GetZ());
  fhQA[kVtxResX] [index]->Fill(vtxESD->GetXRes());
  fhQA[kVtxResY] [index]->Fill(vtxESD->GetYRes());
  fhQA[kVtxResZ] [index]->Fill(vtxESD->GetZRes());
  fhQA[kVtxNCtrb][index]->Fill(vtxESD->GetNContributors());
  
}

//____________________________________________________________________
void AliCFEventRecCuts::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 AliCFEventRecCuts::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 AliCFEventRecCuts::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[kNTracks][i]	= new  TH1F(Form("%s_NTracks%s",GetName(),str),	                "",501,-0.5,500.5);
    fhQA[kVtxPosX][i]	= new  TH1F(Form("%s_Vtx_Pos_X%s",GetName(),str),		"",100,-5.,5.);
    fhQA[kVtxPosY][i]	= new  TH1F(Form("%s_Vtx_Pos_Y%s",GetName(),str),		"",100,-5.,5.);
    fhQA[kVtxPosZ][i]	= new  TH1F(Form("%s_Vtx_Pos_Z%s",GetName(),str),		"",200,-50.,50.);
    fhQA[kVtxResX][i]	= new  TH1F(Form("%s_Vtx_Res_X%s",GetName(),str),		"",100,-1.,1.);
    fhQA[kVtxResY][i]	= new  TH1F(Form("%s_Vtx_Res_Y%s",GetName(),str),		"",100,-1.,1.);
    fhQA[kVtxResZ][i]	= new  TH1F(Form("%s_Vtx_Res_Z%s",GetName(),str),		"",100,-1.,1.);
    fhQA[kVtxNCtrb][i]	= new  TH1F(Form("%s_Vtx_N_Ctrb%s",GetName(),str),		"",1000,0.,1000.);
 
    fhQA[kNTracks][i]	->SetXTitle("Number of ESD tracks");
    fhQA[kVtxPosX][i]	->SetXTitle("Vertex Position X (cm)");
    fhQA[kVtxPosY][i]	->SetXTitle("Vertex Position Y (cm)");
    fhQA[kVtxPosZ][i]	->SetXTitle("Vertex Position Z (cm)");
    fhQA[kVtxResX][i]	->SetXTitle("Vertex Resolution X (cm)");
    fhQA[kVtxResY][i]	->SetXTitle("Vertex Resolution Y (cm)");
    fhQA[kVtxResZ][i]	->SetXTitle("Vertex Resolution Z (cm)");
    fhQA[kVtxNCtrb][i]	->SetXTitle("Number of contributors");
  }

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

}

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