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.                  *
 **************************************************************************/
// To select on the Event Class: look at the Trigger mask and the ZDC info.
// Only pp-running trigger types implemented so far
// handles all masks for the trigger description
// and some general combinations like MB1,MB2,MB3,MB4 and MB5.
// The argument of IsSelected member function (passed object) is cast into 
// an AliVEvent, but cuts have a true meaning only for AliESD(AOD)Event 
// type objects.
// The class derives from AliCFCutBase
// Author:S.Arcelli Silvia.Arcelli@cern.ch
//
//
#include "TH1F.h"
#include "TList.h"
#include "AliLog.h"
#include "AliVEvent.h"
#include "AliCFEventClassCuts.h"
ClassImp(AliCFEventClassCuts) 
//____________________________________________________________________
AliCFEventClassCuts::AliCFEventClassCuts() : 
  AliCFCutBase(),
  fTriggerType(0),
  fTriggerAND(kFALSE),
  fZDCN1EnergyMin(-1.e99),  
  fZDCP1EnergyMin(-1.e99),  
  fZDCN2EnergyMin(-1.e99),  
  fZDCP2EnergyMin(-1.e99),  
  fZDCEM1EnergyMin(-1.e99),  
  fZDCEM2EnergyMin(-1.e99),  
  fZDCN1EnergyMax(1.e99),  
  fZDCP1EnergyMax(1.e99),  
  fZDCN2EnergyMax(1.e99),  
  fZDCP2EnergyMax(1.e99),  
  fZDCEM1EnergyMax(1.e99),  
  fZDCEM2EnergyMax(1.e99),
  fBitMap(0x0)
{
  //
  //ctor
  //  

  fBitMap=new TBits(0);
  Initialise();
}

//____________________________________________________________________
AliCFEventClassCuts::AliCFEventClassCuts(Char_t* name, Char_t* title) : 
  AliCFCutBase(name,title),
  fTriggerType(0),
  fTriggerAND(kFALSE),
  fZDCN1EnergyMin(-1.e99),  
  fZDCP1EnergyMin(-1.e99),  
  fZDCN2EnergyMin(-1.e99),  
  fZDCP2EnergyMin(-1.e99),  
  fZDCEM1EnergyMin(-1.e99),  
  fZDCEM2EnergyMin(-1.e99),  
  fZDCN1EnergyMax(1.e99),  
  fZDCP1EnergyMax(1.e99),  
  fZDCN2EnergyMax(1.e99),  
  fZDCP2EnergyMax(1.e99),  
  fZDCEM1EnergyMax(1.e99),  
  fZDCEM2EnergyMax(1.e99), 
  fBitMap(0x0)
{
  //
  //ctor
  //
  fBitMap=new TBits(0);
  Initialise();
 }

//_____________________________________________________________________________
AliCFEventClassCuts::AliCFEventClassCuts(const AliCFEventClassCuts& c) : 
  AliCFCutBase(c),
  fTriggerType(c.fTriggerType),
  fTriggerAND(c.fTriggerAND),
  fZDCN1EnergyMin(c.fZDCN1EnergyMin),  
  fZDCP1EnergyMin(c.fZDCP1EnergyMin),  
  fZDCN2EnergyMin(c.fZDCN2EnergyMin),  
  fZDCP2EnergyMin(c.fZDCP2EnergyMin),  
  fZDCEM1EnergyMin(c.fZDCEM1EnergyMin),  
  fZDCEM2EnergyMin(c.fZDCEM2EnergyMin),  
  fZDCN1EnergyMax(c.fZDCN1EnergyMax),  
  fZDCP1EnergyMax(c.fZDCP1EnergyMax),  
  fZDCN2EnergyMax(c.fZDCN2EnergyMax),  
  fZDCP2EnergyMax(c.fZDCP2EnergyMax),  
  fZDCEM1EnergyMax(c.fZDCEM1EnergyMax), 
  fZDCEM2EnergyMax(c.fZDCEM2EnergyMax),
  fBitMap(c.fBitMap)

{
  //
  //copy constructor
  //
}

//_____________________________________________________________________________
AliCFEventClassCuts& AliCFEventClassCuts::operator=(const AliCFEventClassCuts& c){
  //
  // Assignment operator
  //
  if (this != &c) {
    AliCFCutBase::operator=(c) ;
    fTriggerType = c.fTriggerType ;
    fTriggerAND = c.fTriggerAND ;
    fZDCN1EnergyMin = c.fZDCN1EnergyMin;  
    fZDCP1EnergyMin = c.fZDCP1EnergyMin;  
    fZDCN2EnergyMin = c.fZDCN2EnergyMin;  
    fZDCP2EnergyMin = c.fZDCP2EnergyMin;  
    fZDCEM1EnergyMin = c.fZDCEM1EnergyMin;  
    fZDCEM2EnergyMin = c.fZDCEM2EnergyMin;  
    fZDCN1EnergyMax = c.fZDCN1EnergyMax;  
    fZDCP1EnergyMax = c.fZDCP1EnergyMax;  
    fZDCN2EnergyMax = c.fZDCN2EnergyMax;  
    fZDCP2EnergyMax = c.fZDCP2EnergyMax;  
    fZDCEM1EnergyMax = c.fZDCEM1EnergyMax;  
    fZDCEM2EnergyMax = c.fZDCEM2EnergyMax;  
    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 ;
}

//_____________________________________________________________________________
AliCFEventClassCuts::~AliCFEventClassCuts()
{
  //
  // destructor
  //
  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 AliCFEventClassCuts::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;
    }
  }
}

//____________________________________________________________________
Bool_t AliCFEventClassCuts::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 AliCFEventClassCuts::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 AliCFEventClassCuts::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 AliCFEventClassCuts::SelectionBitMap(TObject* obj) {
  //
  //cut on trigger type (just pp running trigger types implemented so far)
  //and on the energy observed in the ZDC. The argument is cast into 
  //an AliVEvent, but has true meaning only for AliESDEvent type objects.
  //Check if the requested cuts are passed and return a bitmap
  //

  for(Int_t j=0;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE);

  AliVEvent* esd = dynamic_cast<AliVEvent *>(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);


  //Check the trigger:

  //look at the Trigger mask in current event
  TBits *triggerBitMap=new TBits(0);
  TriggerBitMap(esd,triggerBitMap); 
  //now compare to what was requested as a Trigger:  
  if(fTriggerType.GetNbits()>0)fBitMap->SetBitNumber(0,kFALSE); //trigger required, initialize to false
  for(Int_t j=0;j<kNTriggers+kNTriggersMB;j++){
    if(fTriggerType.TestBitNumber(j)){
      if(!fTriggerAND){
	if(triggerBitMap->TestBitNumber(j) == fTriggerType.TestBitNumber(j)){
	  fBitMap->SetBitNumber(0,kTRUE); 

	  break;// @least one requested bit fired, ok
	}
      }else{
	if(!triggerBitMap->TestBitNumber(j)){
	  break;
	}	
      }
    }
  }
  
  delete triggerBitMap;
  //Then, cut on the energy observed in the ZDC 
  
  if( esd->GetZDCN1Energy()<fZDCN1EnergyMin || esd->GetZDCN1Energy()>fZDCN1EnergyMax)fBitMap->SetBitNumber(1,kFALSE); 
  if( esd->GetZDCP1Energy()<fZDCP1EnergyMin || esd->GetZDCP1Energy()>fZDCP1EnergyMax)fBitMap->SetBitNumber(2,kFALSE); 
  if( esd->GetZDCN2Energy()<fZDCN2EnergyMin || esd->GetZDCN2Energy()>fZDCN2EnergyMax)fBitMap->SetBitNumber(3,kFALSE);
  if( esd->GetZDCP2Energy()<fZDCP2EnergyMin || esd->GetZDCP2Energy()>fZDCP2EnergyMax)fBitMap->SetBitNumber(4,kFALSE); 
  if( esd->GetZDCEMEnergy(0)<fZDCEM1EnergyMin || esd->GetZDCEMEnergy(0)>fZDCEM1EnergyMax)fBitMap->SetBitNumber(5,kFALSE); 
  if( esd->GetZDCEMEnergy(1)<fZDCEM2EnergyMin || esd->GetZDCEMEnergy(1)>fZDCEM2EnergyMax)fBitMap->SetBitNumber(6,kFALSE); 
  return ;

}

//_____________________________________________________________________________
Bool_t AliCFEventClassCuts::IsTriggered(AliVEvent* ev, TriggerType trigger) {
  //
  //look at the Trigger mask in current event
  TBits *triggerBitMap=new TBits(0);
  TriggerBitMap(ev,triggerBitMap); 
  Bool_t isTriggered=kFALSE;  
  if(triggerBitMap->TestBitNumber(trigger))isTriggered=kTRUE;
  delete triggerBitMap;
  return isTriggered;

}

//_____________________________________________________________________________
void AliCFEventClassCuts::TriggerBitMap(AliVEvent* ev, TBits *bitmapT ) {
  //

  for(Int_t itrig=0;itrig<kNTriggers+kNTriggersMB;itrig++)bitmapT->SetBitNumber(itrig,kFALSE);
  if (!ev ) return;

  ULong64_t triggerMask = ev->GetTriggerMask();
  //run over the different triggers in the mask, and check which bits have fired    
  for(Int_t itrig=0;itrig<kNTriggers;itrig++){
    bitmapT->SetBitNumber(itrig,kFALSE);
    if (triggerMask&(0x1 <<itrig)){
      bitmapT->SetBitNumber(itrig,kTRUE);
    }
  }

  //Trigger combinations, Minimum bias triggers

  //MB1 case: (GFO || V0OR) && !BG
  if((bitmapT->TestBitNumber(5) || (bitmapT->TestBitNumber(0) || bitmapT->TestBitNumber(1))) && !bitmapT->TestBitNumber(2)) bitmapT->SetBitNumber(17,kTRUE); 
 
  //MB2 case: (GFO && V0OR) && !BG
  if((bitmapT->TestBitNumber(5) && (bitmapT->TestBitNumber(0) || bitmapT->TestBitNumber(1))) && !bitmapT->TestBitNumber(2)) bitmapT->SetBitNumber(18,kTRUE); 

  //MB3 case : (GFO && V0AND) && !BG
  if((bitmapT->TestBitNumber(5) && (bitmapT->TestBitNumber(0) && bitmapT->TestBitNumber(1))) && !bitmapT->TestBitNumber(2)) bitmapT->SetBitNumber(19,kTRUE); 

  //MB4 case: (GFO || V0AND) && !BG
  if((bitmapT->TestBitNumber(5) || (bitmapT->TestBitNumber(0) && bitmapT->TestBitNumber(1))) &&  !bitmapT->TestBitNumber(2)) bitmapT->SetBitNumber(20,kTRUE); 

  //MB5 case:: GFO && !BG
  if(bitmapT->TestBitNumber(5) && !bitmapT->TestBitNumber(2)) bitmapT->SetBitNumber(21,kTRUE); 

  return;
} 

//_____________________________________________________________________________
 void AliCFEventClassCuts::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[kTrigger][i]	= new  TH1F(Form("%s_TriggerBits%s",GetName(),str),	                "",23,-0.5,22.5);
    fhQA[kZDCEnergyN1][i]	= new  TH1F(Form("%s_ZDC_Energy_N1%s",GetName(),str),		"",800,-500,7500);
    fhQA[kZDCEnergyP1][i]	= new  TH1F(Form("%s_ZDC_Energy_P1%s",GetName(),str),		"",800,-500,7500);
    fhQA[kZDCEnergyN2][i]	= new  TH1F(Form("%s_ZDC_Energy_N2%s",GetName(),str),		"",800,-500,7500);
    fhQA[kZDCEnergyP2][i]	= new  TH1F(Form("%s_ZDC_Energy_P2%s",GetName(),str),		"",800,-500,7500);
    fhQA[kZDCEnergyEM1][i]	= new  TH1F(Form("%s_ZDC_Energy_EM1%s",GetName(),str),		"",800,-500,7500);
    fhQA[kZDCEnergyEM2][i]	= new  TH1F(Form("%s_ZDC_Energy_EM2%s",GetName(),str),		"",800,-500,7500);

    fhQA[kTrigger][i]	        ->SetXTitle("Trigger Bits");
    fhQA[kZDCEnergyN1][i]	->SetXTitle("ZDC Energy N1 (GeV)");
    fhQA[kZDCEnergyP1][i]	->SetXTitle("ZDC Energy P1 (GeV)");
    fhQA[kZDCEnergyN2][i]	->SetXTitle("ZDC Energy N2 (GeV)");
    fhQA[kZDCEnergyP2][i]	->SetXTitle("ZDC Energy P2 (GeV)");
    fhQA[kZDCEnergyEM1][i]	->SetXTitle("ZDC Energy EM1 (GeV)");
    fhQA[kZDCEnergyEM2][i]	->SetXTitle("ZDC Energy EM2 (GeV)");

  }

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

}

//_____________________________________________________________________________
void AliCFEventClassCuts::FillHistograms(TObject* obj, Bool_t afterCuts)
{
  //
  // fill the QA histograms
  //
  if(!fIsQAOn) return;

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

  //look at the Trigger mask in current event
  TBits *triggerBitMap=new TBits(0);
  TriggerBitMap(esd, triggerBitMap); 
  
  //trigger Mask
  for(Int_t itrig=0;itrig<kNTriggers+kNTriggersMB;itrig++){
    if(triggerBitMap->TestBitNumber(itrig)){
      fhQA[kTrigger][afterCuts]->Fill(itrig);
    }
  }   

  delete triggerBitMap;

  //ZDC Quantities
  fhQA[kZDCEnergyN1][afterCuts] ->Fill(esd->GetZDCN1Energy());
  fhQA[kZDCEnergyP1][afterCuts] ->Fill(esd->GetZDCP1Energy());
  fhQA[kZDCEnergyN2][afterCuts] ->Fill(esd->GetZDCN2Energy());
  fhQA[kZDCEnergyP2][afterCuts] ->Fill(esd->GetZDCP2Energy());
  fhQA[kZDCEnergyEM1][afterCuts]->Fill(esd->GetZDCEMEnergy(0));
  fhQA[kZDCEnergyEM2][afterCuts]->Fill(esd->GetZDCEMEnergy(1));

}

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