ROOT logo
#ifndef ALIAODEVENTCUTSDIHADRONPID_H 
#define ALIAODEVENTCUTSDIHADRONPID_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * 
* See cxx source for full Copyright notice */ 
/* $Id$ */

#include "AliAODEvent.h"
#include "TString.h"
#include "TH1F.h"
#include "TList.h"

class AliAODEventCutsDiHadronPID : public TNamed 

{

public:
	AliAODEventCutsDiHadronPID();								// Default Constructor
	AliAODEventCutsDiHadronPID(const char* name);				// Named Constructor
	virtual ~AliAODEventCutsDiHadronPID();						// Destructor
	virtual Long64_t Merge(TCollection* list);					// Merger

private:
	AliAODEventCutsDiHadronPID(const AliAODEventCutsDiHadronPID&);
	AliAODEventCutsDiHadronPID& operator=(const AliAODEventCutsDiHadronPID&);

public:
	void CreateHistos();					// Create QA histograms
	Bool_t IsSelected(AliAODEvent* event);
	void PrintCuts();

// Setters
	void SetIsPbPb(Bool_t ispbpb = kTRUE) {fIsPbPb = ispbpb;}
	void SetIsMC(Bool_t ismc = kTRUE) {fIsMC = ismc;}

	void SetTrigger(UInt_t trigger) {
		fTrigger = trigger;
		fTestTrigger = kTRUE;
	}

	// Note that minCentrality is expected to be the biggest number.
	void SetCentrality(Float_t maxCentrality, Float_t minCentrality) {
		if (minCentrality > maxCentrality) {
			fMinCentrality = minCentrality;
			fMaxCentrality = maxCentrality;
		} else {
			fMinCentrality = maxCentrality;
			fMaxCentrality = minCentrality;
		}
		fTestCentrality = kTRUE;
	} 
	
	void SetCentralityEstimator(const char* centralityestimator) {
		fCentralityEstimator = centralityestimator;
	}
	void SetMaxVertexZ(Float_t maxVertexZ) {
		fMaxVertexZ = maxVertexZ;
		fTestVertexZ = kTRUE;
	}
	void SetDemandContributorsOrSPDVertex() {
		fTestContributorsOrSPDVertex = kTRUE;
	}
	void SetMinReferenceMultiplicity(Int_t minrefmult) {
		fMinRefMult = minrefmult;
		fTestMinRefMult = kTRUE;
	}

	void SetDebugLevel(Int_t debuglevel) {fDebug = debuglevel;}

// Getters
	Bool_t GetIsPbPb() const {return fIsPbPb;} 
	Bool_t GetIsMC() const {return fIsMC;}
	UInt_t GetTrigger() const {return fTrigger;}
	Float_t GetMinCentrality() const {return fMinCentrality;}
	Float_t GetMaxCentrality() const {return fMaxCentrality;}
	TString GetCentralityEstimator() const {return fCentralityEstimator;}
	Float_t GetMaxVertexZ() const {return fMaxVertexZ;}

	// Functions returning pointer data members aren't very safe.
	TList* GetListOfSelectedEventQAHistos() {
		if (fSelectedEventQAHistos) return fSelectedEventQAHistos;
		else return 0x0;
	}
	TList* GetListOfAllEventQAHistos() {
		if (fAllEventQAHistos) return fAllEventQAHistos;
		else return 0x0;
	}

	TObject* GetHistSelectedEvents(const char* name) {return fSelectedEventQAHistos->FindObject(name);}
	TObject* GetHistAllEvents(const char* name) {return fAllEventQAHistos->FindObject(name);}

	// Cannot be made const because GetHistSelectedEvents() isn't safe.
	Int_t GetNAcceptedEvents() {return (Int_t)((TH1F*)GetHistSelectedEvents("fHistTriggerSelected"))->GetEntries();}

	Int_t GetDebugLevel() const {return fDebug;}

private:
// Expected Event Details.
	Bool_t fIsPbPb;
	Bool_t fIsMC;

// Event Cuts.
	UInt_t fTrigger;
	Float_t fMinCentrality;
	Float_t fMaxCentrality;
	TString fCentralityEstimator;
	Float_t fMaxVertexZ;
	Int_t fMinRefMult;

// Which cuts to be checked.
	Bool_t fTestTrigger;
	Bool_t fTestCentrality;
	Bool_t fTestContributorsOrSPDVertex;
	Bool_t fTestVertexZ;
	Bool_t fTestMinRefMult;

// QA histograms (don't stream)
	TList* fSelectedEventQAHistos;
	TList* fAllEventQAHistos;
	TH1F** fHistTrigger;						//! Trigger
	TH1F** fHistRefMultiplicity;				//! Number of tracks
	TH1F** fHistCentrality;						//! Centrality
	TH1F** fHistCentralityQuality;				//! Centrality Quality
	TH1F** fHistVertexZ;						//! VertexZ

	Int_t fDebug;								// Debug flag.

	ClassDef(AliAODEventCutsDiHadronPID,3);

};

#endif
 AliAODEventCutsDiHadronPID.h:1
 AliAODEventCutsDiHadronPID.h:2
 AliAODEventCutsDiHadronPID.h:3
 AliAODEventCutsDiHadronPID.h:4
 AliAODEventCutsDiHadronPID.h:5
 AliAODEventCutsDiHadronPID.h:6
 AliAODEventCutsDiHadronPID.h:7
 AliAODEventCutsDiHadronPID.h:8
 AliAODEventCutsDiHadronPID.h:9
 AliAODEventCutsDiHadronPID.h:10
 AliAODEventCutsDiHadronPID.h:11
 AliAODEventCutsDiHadronPID.h:12
 AliAODEventCutsDiHadronPID.h:13
 AliAODEventCutsDiHadronPID.h:14
 AliAODEventCutsDiHadronPID.h:15
 AliAODEventCutsDiHadronPID.h:16
 AliAODEventCutsDiHadronPID.h:17
 AliAODEventCutsDiHadronPID.h:18
 AliAODEventCutsDiHadronPID.h:19
 AliAODEventCutsDiHadronPID.h:20
 AliAODEventCutsDiHadronPID.h:21
 AliAODEventCutsDiHadronPID.h:22
 AliAODEventCutsDiHadronPID.h:23
 AliAODEventCutsDiHadronPID.h:24
 AliAODEventCutsDiHadronPID.h:25
 AliAODEventCutsDiHadronPID.h:26
 AliAODEventCutsDiHadronPID.h:27
 AliAODEventCutsDiHadronPID.h:28
 AliAODEventCutsDiHadronPID.h:29
 AliAODEventCutsDiHadronPID.h:30
 AliAODEventCutsDiHadronPID.h:31
 AliAODEventCutsDiHadronPID.h:32
 AliAODEventCutsDiHadronPID.h:33
 AliAODEventCutsDiHadronPID.h:34
 AliAODEventCutsDiHadronPID.h:35
 AliAODEventCutsDiHadronPID.h:36
 AliAODEventCutsDiHadronPID.h:37
 AliAODEventCutsDiHadronPID.h:38
 AliAODEventCutsDiHadronPID.h:39
 AliAODEventCutsDiHadronPID.h:40
 AliAODEventCutsDiHadronPID.h:41
 AliAODEventCutsDiHadronPID.h:42
 AliAODEventCutsDiHadronPID.h:43
 AliAODEventCutsDiHadronPID.h:44
 AliAODEventCutsDiHadronPID.h:45
 AliAODEventCutsDiHadronPID.h:46
 AliAODEventCutsDiHadronPID.h:47
 AliAODEventCutsDiHadronPID.h:48
 AliAODEventCutsDiHadronPID.h:49
 AliAODEventCutsDiHadronPID.h:50
 AliAODEventCutsDiHadronPID.h:51
 AliAODEventCutsDiHadronPID.h:52
 AliAODEventCutsDiHadronPID.h:53
 AliAODEventCutsDiHadronPID.h:54
 AliAODEventCutsDiHadronPID.h:55
 AliAODEventCutsDiHadronPID.h:56
 AliAODEventCutsDiHadronPID.h:57
 AliAODEventCutsDiHadronPID.h:58
 AliAODEventCutsDiHadronPID.h:59
 AliAODEventCutsDiHadronPID.h:60
 AliAODEventCutsDiHadronPID.h:61
 AliAODEventCutsDiHadronPID.h:62
 AliAODEventCutsDiHadronPID.h:63
 AliAODEventCutsDiHadronPID.h:64
 AliAODEventCutsDiHadronPID.h:65
 AliAODEventCutsDiHadronPID.h:66
 AliAODEventCutsDiHadronPID.h:67
 AliAODEventCutsDiHadronPID.h:68
 AliAODEventCutsDiHadronPID.h:69
 AliAODEventCutsDiHadronPID.h:70
 AliAODEventCutsDiHadronPID.h:71
 AliAODEventCutsDiHadronPID.h:72
 AliAODEventCutsDiHadronPID.h:73
 AliAODEventCutsDiHadronPID.h:74
 AliAODEventCutsDiHadronPID.h:75
 AliAODEventCutsDiHadronPID.h:76
 AliAODEventCutsDiHadronPID.h:77
 AliAODEventCutsDiHadronPID.h:78
 AliAODEventCutsDiHadronPID.h:79
 AliAODEventCutsDiHadronPID.h:80
 AliAODEventCutsDiHadronPID.h:81
 AliAODEventCutsDiHadronPID.h:82
 AliAODEventCutsDiHadronPID.h:83
 AliAODEventCutsDiHadronPID.h:84
 AliAODEventCutsDiHadronPID.h:85
 AliAODEventCutsDiHadronPID.h:86
 AliAODEventCutsDiHadronPID.h:87
 AliAODEventCutsDiHadronPID.h:88
 AliAODEventCutsDiHadronPID.h:89
 AliAODEventCutsDiHadronPID.h:90
 AliAODEventCutsDiHadronPID.h:91
 AliAODEventCutsDiHadronPID.h:92
 AliAODEventCutsDiHadronPID.h:93
 AliAODEventCutsDiHadronPID.h:94
 AliAODEventCutsDiHadronPID.h:95
 AliAODEventCutsDiHadronPID.h:96
 AliAODEventCutsDiHadronPID.h:97
 AliAODEventCutsDiHadronPID.h:98
 AliAODEventCutsDiHadronPID.h:99
 AliAODEventCutsDiHadronPID.h:100
 AliAODEventCutsDiHadronPID.h:101
 AliAODEventCutsDiHadronPID.h:102
 AliAODEventCutsDiHadronPID.h:103
 AliAODEventCutsDiHadronPID.h:104
 AliAODEventCutsDiHadronPID.h:105
 AliAODEventCutsDiHadronPID.h:106
 AliAODEventCutsDiHadronPID.h:107
 AliAODEventCutsDiHadronPID.h:108
 AliAODEventCutsDiHadronPID.h:109
 AliAODEventCutsDiHadronPID.h:110
 AliAODEventCutsDiHadronPID.h:111
 AliAODEventCutsDiHadronPID.h:112
 AliAODEventCutsDiHadronPID.h:113
 AliAODEventCutsDiHadronPID.h:114
 AliAODEventCutsDiHadronPID.h:115
 AliAODEventCutsDiHadronPID.h:116
 AliAODEventCutsDiHadronPID.h:117
 AliAODEventCutsDiHadronPID.h:118
 AliAODEventCutsDiHadronPID.h:119
 AliAODEventCutsDiHadronPID.h:120
 AliAODEventCutsDiHadronPID.h:121
 AliAODEventCutsDiHadronPID.h:122
 AliAODEventCutsDiHadronPID.h:123
 AliAODEventCutsDiHadronPID.h:124
 AliAODEventCutsDiHadronPID.h:125
 AliAODEventCutsDiHadronPID.h:126
 AliAODEventCutsDiHadronPID.h:127
 AliAODEventCutsDiHadronPID.h:128
 AliAODEventCutsDiHadronPID.h:129
 AliAODEventCutsDiHadronPID.h:130
 AliAODEventCutsDiHadronPID.h:131