ROOT logo
#ifndef ALIPRIMARYPIONCUTS_H
#define ALIPRIMARYPIONCUTS_H

// Class handling all kinds of selection cuts for primary

// Authors: Svein Lindal, Daniel Lohner												*


#include "AliAODpidUtil.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"
#include "AliVTrack.h"
#include "AliAODTrack.h"
#include "AliStack.h"
#include "AliAnalysisCuts.h"
#include "AliESDtrackCuts.h"
#include "TH1F.h"

class AliESDEvent;
class AliAODEvent;
class AliConversionPhotonBase;
class AliKFVertex;
class AliKFParticle;
class TH1F;
class TH2F;
class AliPIDResponse;
class AliAnalysisCuts;
class iostream;
class TList;
class AliAnalysisManager;


using namespace std;

class AliPrimaryPionCuts : public AliAnalysisCuts {
		
	public: 


	enum cutIds {
		kEtaCut,
		kClsITSCut,
		kClsTPCCut,
		kDCACut,
		kPtCut,
		kPidedxSigmaITSCut,
		kPidedxSigmaTPCCut,
		kPiTOFSigmaPID,
		kMassCut,
		kNCuts
	};


	enum pionCuts {
		kPionIn=0,
		kNoTracks,
		kTrackCuts,
		kdEdxCuts,
		kPionOut
	};


	Bool_t SetCutIds(TString cutString); 
	Int_t fCuts[kNCuts];
	Bool_t SetCut(cutIds cutID, Int_t cut);
	Bool_t UpdateCutString();
	static const char * fgkCutNames[kNCuts];


	Bool_t InitializeCutsFromCutString(const TString analysisCutSelection); 
	

	AliPrimaryPionCuts(const char *name="PionCuts", const char * title="Pion Cuts");
	virtual ~AliPrimaryPionCuts();                            //virtual destructor

	virtual Bool_t IsSelected(TObject* /*obj*/){return kTRUE;}
	virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}

	TString GetCutNumber();

		// Cut Selection
	Bool_t PionIsSelectedMC(Int_t labelParticle,AliStack *fMCStack);
	Bool_t TrackIsSelected(AliESDtrack* lTrack);
	Bool_t PionIsSelected(AliESDtrack* lTrack);
	static AliPrimaryPionCuts * GetStandardCuts2010PbPb();
	static AliPrimaryPionCuts * GetStandardCuts2010pp();
	Bool_t InitPIDResponse();
	
	void SetPIDResponse(AliPIDResponse * pidResponse) {fPIDResponse = pidResponse;}
	AliPIDResponse * GetPIDResponse() { return fPIDResponse;}
	
	void PrintCuts();
	void PrintCutsWithValues();
	
	void InitCutHistograms(TString name="",Bool_t preCut = kTRUE,TString cutName="");
	void SetFillCutHistograms(TString name="",Bool_t preCut = kTRUE,TString cutName=""){if(!fHistograms){InitCutHistograms(name,preCut,cutName);};}
	TList *GetCutHistograms(){return fHistograms;}

	static AliVTrack * GetTrack(AliVEvent * event, Int_t label);

	///Cut functions
	Bool_t dEdxCuts(AliVTrack * track);

	Bool_t SetTPCdEdxCutPionLine(Int_t pidedxSigmaCut);
	Bool_t SetITSdEdxCutPionLine(Int_t ededxSigmaCut);
	Bool_t SetITSClusterCut(Int_t clsITSCut);
	Bool_t SetTPCClusterCut(Int_t clsTPCCut);
	Bool_t SetEtaCut(Int_t etaCut);
	Bool_t SetPtCut(Int_t ptCut);
	Bool_t SetDCACut(Int_t dcaCut);
	void SetEtaShift(Double_t etaShift){fEtaShift = etaShift;}
	Bool_t SetTOFPionPIDCut(Int_t TOFelectronPID);
	Bool_t SetMassCut(Int_t massCut);
	Double_t GetMassCut(){return fMassCut;}
	
	// Request Flags
	Double_t GetEtaCut(){ return  fEtaCut;}
	Double_t GetNFindableClustersTPC(AliESDtrack* lTrack);
	Bool_t   DoWeights(){return fDoWeights;}
	Bool_t 	 DoMassCut(){return fDoMassCut;}
	
	protected:

	TList *fHistograms;
	AliPIDResponse *fPIDResponse;
	AliESDtrackCuts *fEsdTrackCuts;

	Double_t fEtaCut; //eta cutç
	Double_t fEtaShift;
	Bool_t   fDoEtaCut;
	Double_t fPtCut;
	Double_t fMinClsTPC; // minimum clusters in the TPC
	Double_t fMinClsTPCToF; // minimum clusters to findable clusters
	Bool_t   fDodEdxSigmaITSCut; // flag to use the dEdxCut ITS based on sigmas
	Bool_t   fDodEdxSigmaTPCCut; // flag to use the dEdxCut TPC based on sigmas
	Bool_t   fDoTOFsigmaCut; // flag to use TOF pid cut RRnewTOF
	Double_t fPIDnSigmaAbovePionLineITS; // sigma cut ITS
	Double_t fPIDnSigmaBelowPionLineITS; // sigma cut ITS
	Double_t fPIDnSigmaAbovePionLineTPC; // sigma cut TPC
	Double_t fPIDnSigmaBelowPionLineTPC; // sigma cut TPC
	Double_t fPIDnSigmaAbovePionLineTOF; // sigma cut TOF
	Double_t fPIDnSigmaBelowPionLineTOF; // sigma cut TOF 
	Bool_t   fUseCorrectedTPCClsInfo; // flag to use corrected tpc cl info
	Bool_t   fUseTOFpid; // flag to use tof pid
	Bool_t   fRequireTOF; //flg to analyze only tracks with TOF signal
	Bool_t   fDoMassCut;
	Double_t fMassCut;	
	Bool_t   fDoWeights;
	


	// Histograms
	TObjString *fCutString; // cut number used for analysis
	TH1F *fHistCutIndex; // bookkeeping for cuts
	TH1F *fHistdEdxCuts;  // bookkeeping for dEdx cuts
	TH2F *fHistITSdEdxbefore; // ITS dEdx before cuts
	TH2F *fHistITSdEdxafter;
	TH2F *fHistTPCdEdxbefore; // TPC dEdx before cuts
	TH2F *fHistTPCdEdxafter; // TPC dEdx after cuts
	TH2F *fHistTPCdEdxSignalbefore; //TPC dEdx signal before
	TH2F *fHistTPCdEdxSignalafter; //TPC dEdx signal  after
	TH2F *fHistTOFbefore; // TOF after cuts
	TH2F *fHistTOFafter; // TOF after cuts
	TH2F *fHistTrackDCAxyPtbefore;
	TH2F *fHistTrackDCAxyPtafter;
	TH2F *fHistTrackDCAzPtbefore;
	TH2F *fHistTrackDCAzPtafter;
	TH2F *fHistTrackNFindClsPtTPCbefore;
	TH2F *fHistTrackNFindClsPtTPCafter;
	
	TString fStringITSClusterCut;
	
	private:

	AliPrimaryPionCuts(const AliPrimaryPionCuts&); // not implemented
	AliPrimaryPionCuts& operator=(const AliPrimaryPionCuts&); // not implemented


	ClassDef(AliPrimaryPionCuts,3)
};

#endif
 AliPrimaryPionCuts.h:1
 AliPrimaryPionCuts.h:2
 AliPrimaryPionCuts.h:3
 AliPrimaryPionCuts.h:4
 AliPrimaryPionCuts.h:5
 AliPrimaryPionCuts.h:6
 AliPrimaryPionCuts.h:7
 AliPrimaryPionCuts.h:8
 AliPrimaryPionCuts.h:9
 AliPrimaryPionCuts.h:10
 AliPrimaryPionCuts.h:11
 AliPrimaryPionCuts.h:12
 AliPrimaryPionCuts.h:13
 AliPrimaryPionCuts.h:14
 AliPrimaryPionCuts.h:15
 AliPrimaryPionCuts.h:16
 AliPrimaryPionCuts.h:17
 AliPrimaryPionCuts.h:18
 AliPrimaryPionCuts.h:19
 AliPrimaryPionCuts.h:20
 AliPrimaryPionCuts.h:21
 AliPrimaryPionCuts.h:22
 AliPrimaryPionCuts.h:23
 AliPrimaryPionCuts.h:24
 AliPrimaryPionCuts.h:25
 AliPrimaryPionCuts.h:26
 AliPrimaryPionCuts.h:27
 AliPrimaryPionCuts.h:28
 AliPrimaryPionCuts.h:29
 AliPrimaryPionCuts.h:30
 AliPrimaryPionCuts.h:31
 AliPrimaryPionCuts.h:32
 AliPrimaryPionCuts.h:33
 AliPrimaryPionCuts.h:34
 AliPrimaryPionCuts.h:35
 AliPrimaryPionCuts.h:36
 AliPrimaryPionCuts.h:37
 AliPrimaryPionCuts.h:38
 AliPrimaryPionCuts.h:39
 AliPrimaryPionCuts.h:40
 AliPrimaryPionCuts.h:41
 AliPrimaryPionCuts.h:42
 AliPrimaryPionCuts.h:43
 AliPrimaryPionCuts.h:44
 AliPrimaryPionCuts.h:45
 AliPrimaryPionCuts.h:46
 AliPrimaryPionCuts.h:47
 AliPrimaryPionCuts.h:48
 AliPrimaryPionCuts.h:49
 AliPrimaryPionCuts.h:50
 AliPrimaryPionCuts.h:51
 AliPrimaryPionCuts.h:52
 AliPrimaryPionCuts.h:53
 AliPrimaryPionCuts.h:54
 AliPrimaryPionCuts.h:55
 AliPrimaryPionCuts.h:56
 AliPrimaryPionCuts.h:57
 AliPrimaryPionCuts.h:58
 AliPrimaryPionCuts.h:59
 AliPrimaryPionCuts.h:60
 AliPrimaryPionCuts.h:61
 AliPrimaryPionCuts.h:62
 AliPrimaryPionCuts.h:63
 AliPrimaryPionCuts.h:64
 AliPrimaryPionCuts.h:65
 AliPrimaryPionCuts.h:66
 AliPrimaryPionCuts.h:67
 AliPrimaryPionCuts.h:68
 AliPrimaryPionCuts.h:69
 AliPrimaryPionCuts.h:70
 AliPrimaryPionCuts.h:71
 AliPrimaryPionCuts.h:72
 AliPrimaryPionCuts.h:73
 AliPrimaryPionCuts.h:74
 AliPrimaryPionCuts.h:75
 AliPrimaryPionCuts.h:76
 AliPrimaryPionCuts.h:77
 AliPrimaryPionCuts.h:78
 AliPrimaryPionCuts.h:79
 AliPrimaryPionCuts.h:80
 AliPrimaryPionCuts.h:81
 AliPrimaryPionCuts.h:82
 AliPrimaryPionCuts.h:83
 AliPrimaryPionCuts.h:84
 AliPrimaryPionCuts.h:85
 AliPrimaryPionCuts.h:86
 AliPrimaryPionCuts.h:87
 AliPrimaryPionCuts.h:88
 AliPrimaryPionCuts.h:89
 AliPrimaryPionCuts.h:90
 AliPrimaryPionCuts.h:91
 AliPrimaryPionCuts.h:92
 AliPrimaryPionCuts.h:93
 AliPrimaryPionCuts.h:94
 AliPrimaryPionCuts.h:95
 AliPrimaryPionCuts.h:96
 AliPrimaryPionCuts.h:97
 AliPrimaryPionCuts.h:98
 AliPrimaryPionCuts.h:99
 AliPrimaryPionCuts.h:100
 AliPrimaryPionCuts.h:101
 AliPrimaryPionCuts.h:102
 AliPrimaryPionCuts.h:103
 AliPrimaryPionCuts.h:104
 AliPrimaryPionCuts.h:105
 AliPrimaryPionCuts.h:106
 AliPrimaryPionCuts.h:107
 AliPrimaryPionCuts.h:108
 AliPrimaryPionCuts.h:109
 AliPrimaryPionCuts.h:110
 AliPrimaryPionCuts.h:111
 AliPrimaryPionCuts.h:112
 AliPrimaryPionCuts.h:113
 AliPrimaryPionCuts.h:114
 AliPrimaryPionCuts.h:115
 AliPrimaryPionCuts.h:116
 AliPrimaryPionCuts.h:117
 AliPrimaryPionCuts.h:118
 AliPrimaryPionCuts.h:119
 AliPrimaryPionCuts.h:120
 AliPrimaryPionCuts.h:121
 AliPrimaryPionCuts.h:122
 AliPrimaryPionCuts.h:123
 AliPrimaryPionCuts.h:124
 AliPrimaryPionCuts.h:125
 AliPrimaryPionCuts.h:126
 AliPrimaryPionCuts.h:127
 AliPrimaryPionCuts.h:128
 AliPrimaryPionCuts.h:129
 AliPrimaryPionCuts.h:130
 AliPrimaryPionCuts.h:131
 AliPrimaryPionCuts.h:132
 AliPrimaryPionCuts.h:133
 AliPrimaryPionCuts.h:134
 AliPrimaryPionCuts.h:135
 AliPrimaryPionCuts.h:136
 AliPrimaryPionCuts.h:137
 AliPrimaryPionCuts.h:138
 AliPrimaryPionCuts.h:139
 AliPrimaryPionCuts.h:140
 AliPrimaryPionCuts.h:141
 AliPrimaryPionCuts.h:142
 AliPrimaryPionCuts.h:143
 AliPrimaryPionCuts.h:144
 AliPrimaryPionCuts.h:145
 AliPrimaryPionCuts.h:146
 AliPrimaryPionCuts.h:147
 AliPrimaryPionCuts.h:148
 AliPrimaryPionCuts.h:149
 AliPrimaryPionCuts.h:150
 AliPrimaryPionCuts.h:151
 AliPrimaryPionCuts.h:152
 AliPrimaryPionCuts.h:153
 AliPrimaryPionCuts.h:154
 AliPrimaryPionCuts.h:155
 AliPrimaryPionCuts.h:156
 AliPrimaryPionCuts.h:157
 AliPrimaryPionCuts.h:158
 AliPrimaryPionCuts.h:159
 AliPrimaryPionCuts.h:160
 AliPrimaryPionCuts.h:161
 AliPrimaryPionCuts.h:162
 AliPrimaryPionCuts.h:163
 AliPrimaryPionCuts.h:164
 AliPrimaryPionCuts.h:165
 AliPrimaryPionCuts.h:166
 AliPrimaryPionCuts.h:167
 AliPrimaryPionCuts.h:168
 AliPrimaryPionCuts.h:169
 AliPrimaryPionCuts.h:170
 AliPrimaryPionCuts.h:171
 AliPrimaryPionCuts.h:172
 AliPrimaryPionCuts.h:173
 AliPrimaryPionCuts.h:174
 AliPrimaryPionCuts.h:175
 AliPrimaryPionCuts.h:176
 AliPrimaryPionCuts.h:177
 AliPrimaryPionCuts.h:178
 AliPrimaryPionCuts.h:179
 AliPrimaryPionCuts.h:180
 AliPrimaryPionCuts.h:181
 AliPrimaryPionCuts.h:182