ROOT logo
/************************************************************************* 
* Copyright(c) 1998-2008, 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.                  * 
**************************************************************************/

// -----------------------------------------------------------------------
//  Event Cut class for the DiHadronPID analysis.
// -----------------------------------------------------------------------
//  Author: Misha Veldhoen (misha.veldhoen@cern.ch)

#include "AliAODEventCutsDiHadronPID.h"

#include <iostream>
using namespace std;

#include "TList.h"
#include "TMath.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TNamed.h"
#include "TIterator.h"
#include "AliAODHeader.h"
#include "AliAODVertex.h"
#include "AliCentrality.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"

ClassImp(AliAODEventCutsDiHadronPID);

// -----------------------------------------------------------------------
AliAODEventCutsDiHadronPID::AliAODEventCutsDiHadronPID():
	TNamed(),
	fIsPbPb(kTRUE),
	fIsMC(kFALSE),
	fTrigger(AliVEvent::kMB),
	fMinCentrality(5.),
	fMaxCentrality(0.),
	fCentralityEstimator("V0M"),
	fMaxVertexZ(10.),
	fMinRefMult(0),
	fTestTrigger(kFALSE),
	fTestCentrality(kFALSE),
	fTestContributorsOrSPDVertex(kFALSE),
	fTestVertexZ(kFALSE),
	fTestMinRefMult(kFALSE),
	fSelectedEventQAHistos(0x0),
	fAllEventQAHistos(0x0),
	fHistTrigger(0x0),
	fHistRefMultiplicity(0x0),
	fHistCentrality(0x0),
	fHistCentralityQuality(0x0),
	fHistVertexZ(0x0),
	fDebug(0)

{

	// 
	// Default Constructor
	//

	cout<<"AliAODEventCutsDiHadronPID Default Constructor Called."<<endl;
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

}

// -----------------------------------------------------------------------
AliAODEventCutsDiHadronPID::AliAODEventCutsDiHadronPID(const char* name):
	TNamed(name,"AOD Event Cuts"),
	fIsPbPb(kTRUE),
	fIsMC(kFALSE),	
	fTrigger(AliVEvent::kMB),
	fMinCentrality(5.),
	fMaxCentrality(0.),
	fCentralityEstimator("V0M"),
	fMaxVertexZ(10.),
	fMinRefMult(0),	
	fTestTrigger(kFALSE),
	fTestCentrality(kFALSE),
	fTestContributorsOrSPDVertex(kFALSE),
	fTestVertexZ(kFALSE),
	fTestMinRefMult(kFALSE),	
	fSelectedEventQAHistos(0x0),
	fAllEventQAHistos(0x0),
	fHistTrigger(0x0),
	fHistRefMultiplicity(0x0),
	fHistCentrality(0x0),
	fHistCentralityQuality(0x0),
	fHistVertexZ(0x0),
	fDebug(0)
	
{

	//
	// Named Constructor
	//

	cout<<"AliAODEventCutsDiHadronPID Named Constructor Called."<<endl;
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

}

// -----------------------------------------------------------------------
AliAODEventCutsDiHadronPID::~AliAODEventCutsDiHadronPID() {

	//
	// Destructor
	//

	cout<<"AliAODEventCutsDiHadronPID Destructor Called."<<endl;
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	if (fSelectedEventQAHistos) delete fSelectedEventQAHistos;
	fSelectedEventQAHistos = 0x0;
	if (fAllEventQAHistos) delete fAllEventQAHistos;
	fAllEventQAHistos = 0x0;

}

// -----------------------------------------------------------------------
Long64_t AliAODEventCutsDiHadronPID::Merge(TCollection* list) {

	//
	// Merger. 
	// 

	cout<<"AliAODEventCutsDiHadronPID Merger Called."<<endl;
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	if (!list) return 0;
	if (list->IsEmpty()) return 1;

	if (!fSelectedEventQAHistos||!fAllEventQAHistos) {
		cout<<"AliAODEventCutsDiHadronPID::Merge() - Warning, current object's histograms are missing... Generating."<<endl;
		CreateHistos();
	}

	TIterator* iter = list->MakeIterator();
	TObject* obj;

	// List of collections
	TList collection_fSelectedEventQAHistos;
	TList collection_fAllEventQAHistos;

	Int_t count = 0;

  	while ((obj = iter->Next())) {
    	AliAODEventCutsDiHadronPID* entry = dynamic_cast<AliAODEventCutsDiHadronPID*> (obj);
    	if (entry == 0) continue;

    	// Check if the object to be merged really has the same name! (FIXME!)

    	// Getting the lists from obj.
    	TList* list_fSelectedEventQAHistos = entry->GetListOfSelectedEventQAHistos();
    	TList* list_fAllEventQAHistos = entry->GetListOfAllEventQAHistos();

    	// Adding the retrieved lists to the collection.
    	if (list_fSelectedEventQAHistos) collection_fSelectedEventQAHistos.Add(list_fSelectedEventQAHistos);
    	if (list_fAllEventQAHistos) collection_fAllEventQAHistos.Add(list_fAllEventQAHistos);

    	count++;
    }

    // Merging. Note that we require the original list to exist.
    //  * Assume that if the collection happens to be empty, then nothing will happen.
    //  * All other variables are taken from the original object.
    if (fSelectedEventQAHistos) fSelectedEventQAHistos->Merge(&collection_fSelectedEventQAHistos);
    if (fAllEventQAHistos) fAllEventQAHistos->Merge(&collection_fAllEventQAHistos);

    delete iter;

	return count+1;

}

// -----------------------------------------------------------------------
void AliAODEventCutsDiHadronPID::CreateHistos() {

	cout<<"AliAODEventCutsDiHadronPID - Creating histograms"<<endl;
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	// Create list of Event related QA histograms (selected events).
	fSelectedEventQAHistos = new TList();
	fSelectedEventQAHistos->SetName("SelectedEventQAHistos");
	fSelectedEventQAHistos->SetOwner(kTRUE);

	// The same, but for all events.
	fAllEventQAHistos = new TList();
	fAllEventQAHistos->SetName("AllEventQAHistos");
	fAllEventQAHistos->SetOwner(kTRUE);

	// Creating arrays of pointers to the QA histos.
	fHistTrigger = new TH1F*[2];
	fHistRefMultiplicity = new TH1F*[2];
	fHistCentrality = new TH1F*[2];
	fHistCentralityQuality = new TH1F*[2];
	fHistVertexZ = new TH1F*[2];

	const char* HistType[2] = {"Selected","All"};

	for (Int_t iHistType = 0; iHistType < 2; iHistType++) {

		// Trigger Histogram.
		fHistTrigger[iHistType] = new TH1F(Form("fHistTrigger%s",HistType[iHistType]),"Trigger;;Count",5,-0.5,4.5);
		fHistTrigger[iHistType]->GetXaxis()->SetBinLabel(1,"kMB");
		fHistTrigger[iHistType]->GetXaxis()->SetBinLabel(2,"kCentral");		// Trigger only defined for period LHC11h.
		fHistTrigger[iHistType]->GetXaxis()->SetBinLabel(3,"kSemiCentral");	// Trigger only defined for period LHC11h.
		fHistTrigger[iHistType]->GetXaxis()->SetBinLabel(4,"kINT7");
		fHistTrigger[iHistType]->GetXaxis()->SetBinLabel(5,"Other");
		if (iHistType == 0) fSelectedEventQAHistos->Add(fHistTrigger[iHistType]);
		else fAllEventQAHistos->Add(fHistTrigger[iHistType]);

		// Ref Multiplicity Histogram.
		if (fIsPbPb) {
			fHistRefMultiplicity[iHistType] = new TH1F(Form("fHistRefMultiplicity%s",HistType[iHistType]),"Reference Multiplicity;N_{tracks};Count",100,0.,10000.);
		} else {
			fHistRefMultiplicity[iHistType] = new TH1F(Form("fHistRefMultiplicity%s",HistType[iHistType]),"Reference Multiplicity;N_{tracks};Count",100,0.,100.);
		}
		if (iHistType == 0) fSelectedEventQAHistos->Add(fHistRefMultiplicity[iHistType]);
		else fAllEventQAHistos->Add(fHistRefMultiplicity[iHistType]);

		// Centrality Histogram.
		fHistCentrality[iHistType] = new TH1F(Form("fHistCentrality%s",HistType[iHistType]),"Centrality;Centrality;Count",20,0,100);
		if (iHistType == 0) fSelectedEventQAHistos->Add(fHistCentrality[iHistType]);
		else fAllEventQAHistos->Add(fHistCentrality[iHistType]);

		// Centrality Quality.
		fHistCentralityQuality[iHistType] = new TH1F(Form("fHistCentralityQuality%s",HistType[iHistType]),"Centrality Quality;Quality;Count",2,-0.5,1.5);
		fHistCentralityQuality[iHistType]->GetXaxis()->SetBinLabel(1,"0");
		fHistCentralityQuality[iHistType]->GetXaxis()->SetBinLabel(2,"Other");
		if (iHistType == 0) fSelectedEventQAHistos->Add(fHistCentralityQuality[iHistType]);
		else fAllEventQAHistos->Add(fHistCentralityQuality[iHistType]);

		// VertexZ Histogram.
		fHistVertexZ[iHistType] = new TH1F(Form("fHistVertexZ%s",HistType[iHistType]),"VertexZ;z (cm);Count",60,-15.,15.);
		if (iHistType == 0) fSelectedEventQAHistos->Add(fHistVertexZ[iHistType]);
		else fAllEventQAHistos->Add(fHistVertexZ[iHistType]);

	}

}

// -----------------------------------------------------------------------
Bool_t AliAODEventCutsDiHadronPID::IsSelected(AliAODEvent* event) {
	
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
	
	if (!event) return kFALSE;
	
	if (!fAllEventQAHistos||!fSelectedEventQAHistos) {cout<<"AliAODEventCutsDiHadronPID - Histograms were not created, you should have called CreateHistos()..."<<endl;}
	
	// Input the event handler.
	AliInputEventHandler* InputHandler = (AliInputEventHandler*)((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
	if (!InputHandler) return kFALSE;
	
	Bool_t select = kTRUE;
	
	// Test Trigger.
	UInt_t trigger = InputHandler->IsEventSelected();	
	Int_t triggerclass = -1;		// 0 = kMB, 1 = kCentral, 2 = kSemiCentral, 3 = Other.	
    if (fTestTrigger) {

    	// Find Trigger class.
    	if (trigger & AliVEvent::kMB) {triggerclass = 0;}
    	else if (trigger & AliVEvent::kCentral) {triggerclass = 1;}
    	else if (trigger & AliVEvent::kSemiCentral) {triggerclass = 2;}
    	else if (trigger & AliVEvent::kINT7) {triggerclass = 3;}    	
    	else {triggerclass = 4;}

		if (!(trigger & fTrigger)) {select = kFALSE;}	// Event not selected if not matched with the any of the desired triggers.
	}	
	
	AliCentrality* CurrentCentrality = 0x0;
	Int_t CurrentCentralityQuality = -999;
	Float_t percentile = -999.;
	
	if (fIsPbPb) {

		// Get the centrality object.
	    CurrentCentrality = event->GetCentrality();
	    //cout<<"Centrality object: "<<CurrentCentrality<<endl;
	    if (!CurrentCentrality) {select = kFALSE; return select;}

	    // Check the quality of the centrality estimation.
	    // If 0 then quality is OK, c.f. TOF/PbPb276/macros/TOFmatchEff.C
	    CurrentCentralityQuality = CurrentCentrality->GetQuality();
	    //cout<<"Centrality: "<<CurrentCentrality->GetCentralityPercentile(fCentralityEstimator.Data())<<" Quality: "<<CurrentCentrality->GetQuality()<<endl;
	    if (CurrentCentralityQuality) select = kFALSE;

		// Test Centrality.
	    percentile = CurrentCentrality->GetCentralityPercentile(fCentralityEstimator.Data());
		if (fTestCentrality) {
	    	if ((percentile < fMaxCentrality)||(percentile > fMinCentrality)) select = kFALSE;
		}

	}
	
	// Get the primary vertex.
	AliAODVertex* CurrentPrimaryVertex = event->GetPrimaryVertex();
    if (!CurrentPrimaryVertex) {select = kFALSE; return select;}

	// Get the Vertex_z value (improved by Peter Christiansen).
	Double_t vtxz = -999.;
	if (fIsPbPb) {vtxz = CurrentPrimaryVertex->GetZ();}
	else if (CurrentPrimaryVertex->GetNContributors() > 0) {
		vtxz = CurrentPrimaryVertex->GetZ();	
	}

	// Test Vertex Z.
	if (fTestVertexZ) {
    	if (TMath::Abs(vtxz) > fMaxVertexZ) select = kFALSE; 
	}

	// Test number of contributors.
	if (fTestContributorsOrSPDVertex) {
		Int_t nContributors = CurrentPrimaryVertex->GetNContributors();
		if (nContributors < 1) {
			if (CurrentPrimaryVertex->GetType() != AliAODVertex::kMainSPD ) {select = kFALSE;}
		}  
	}
	
	// Get the event header.
	AliAODHeader* CurrentHeader = dynamic_cast<AliAODHeader*>(event->GetHeader());
	if(!CurrentHeader) AliFatal("Not a standard AOD");
	
	// Test minimum reference multiplicity.
	Int_t CurrentRefMultiplicity = CurrentHeader->GetRefMultiplicity();
	if (fTestMinRefMult) {
		if (CurrentRefMultiplicity < fMinRefMult) select = kFALSE;
	}
	
	// Fill the histograms for selected events.
	if (select) {
		fHistTrigger[0]->Fill(triggerclass);
		fHistRefMultiplicity[0]->Fill(CurrentHeader->GetRefMultiplicity());
		if (fIsPbPb) fHistCentrality[0]->Fill(percentile);
		if (fIsPbPb) fHistCentralityQuality[0]->Fill(CurrentCentralityQuality);
		fHistVertexZ[0]->Fill(vtxz);
	}
	
	// Fill the histograms for all events.
	fHistTrigger[1]->Fill(triggerclass);
	fHistRefMultiplicity[1]->Fill(CurrentHeader->GetRefMultiplicity());
	if (fIsPbPb) fHistCentrality[1]->Fill(percentile);
	if (fIsPbPb) fHistCentralityQuality[1]->Fill(CurrentCentralityQuality);
	fHistVertexZ[1]->Fill(vtxz);
	
	//cout<<"Event Selected: "<<select<<endl;
	return select;

}

// -----------------------------------------------------------------------
void AliAODEventCutsDiHadronPID::PrintCuts() {

	// NOT IMPLEMENTED.
	if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	return;

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