1 #ifndef ALIDIELECTRONEVENTCUTS_H
2 #define ALIDIELECTRONEVENTCUTS_H
4 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 //#############################################################
9 //# Class AliDielectronEventCuts #
12 //# Anton Andronic, GSI / A.Andronic@gsi.de #
13 //# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de #
14 //# Julian Book, Uni Ffm / Julian.Book@cern.ch #
15 //# Frederick Kramer, Uni Ffm, / Frederick.Kramer@cern.ch #
16 //# Magnus Mager, CERN / Magnus.Mager@cern.ch #
17 //# WooJin J. Park, GSI / W.J.Park@gsi.de #
18 //# Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
20 //#############################################################
25 #include <AliAnalysisUtils.h>
26 #include <AliAnalysisCuts.h>
28 class AliTriggerAnalysis;
33 class AliDielectronEventCuts : public AliAnalysisCuts {
35 enum EVtxType { kVtxTracks=0, kVtxSPD, kVtxTPC, kVtxAny, kVtxTracksOrSPD };
37 AliDielectronEventCuts();
38 AliDielectronEventCuts(const char*name, const char* title);
40 virtual ~AliDielectronEventCuts();
42 void SetRunRejection(const TVectorD * vec) { fRun.Use(vec->GetNrows(),vec->GetMatrixArray()); }
43 void SetVertexType(EVtxType type) { fVtxType=type; }
44 void SetVertexZ(Double_t zmin, Double_t zmax) { fVtxZmin=zmin; fVtxZmax=zmax; }
45 void SetRequireVertex(Bool_t req=kTRUE) { fRequireVtx=req; }
46 void SetRequireV0and(UChar_t type=1) { fRequireV0and=type; }
47 void SetMinVtxContributors(Int_t min=1) { fMinVtxContributors=min; }
48 void SetCutOnMultipicityITSTPC(Bool_t mult=kTRUE) { fMultITSTPC=mult; }
49 void SetCentralityRange(Double_t min, Double_t max) { fCentMin=min; fCentMax=max; }
50 void SetCutOnV0MultipicityNTrks(TF1* parMean, TF1* parSigma, Double_t cutSigma=3.) { fparMean=parMean; fparSigma=parSigma; fcutSigma=cutSigma; }
51 void SetCutOnNVtxContributorsGloablTPC(TF1* parMin, TF1* parMax) { fparMinVtxContributors=parMin; fparMaxVtxContributors=parMax; }
52 void SetRequire2013vertexandevent(Bool_t req13 = kTRUE) {fRequire13sel = req13; }
54 //Analysis cuts interface
56 virtual Bool_t IsSelected(TObject* event);
57 Bool_t IsSelectedESD(TObject* event);
58 Bool_t IsSelectedAOD(TObject* event);
59 virtual Bool_t IsSelected(TList* /* list */ ) {return kFALSE;}
61 void Print(const Option_t* option = "") const;
64 static const char* fgkVtxNames[AliDielectronEventCuts::kVtxTracksOrSPD+1]; //vertex names
65 TVectorD fRun; // run rejection vector
66 Double_t fVtxZmin; // minimum z vertex position
67 Double_t fVtxZmax; // maximum z vertex position
68 Bool_t fRequireVtx; // require a vertex
69 Int_t fMinVtxContributors; // min number of vertex contributors
70 Bool_t fMultITSTPC; // if to cut on the ITS TPC multiplicity correlation (Pb-Pb)
71 Double_t fCentMin; // minimum multiplity percentile
72 Double_t fCentMax; // maximum multiplity percentile
73 EVtxType fVtxType; // vertex type
74 Bool_t fRequire13sel; //bit to select event and vertex selection proposed for 2013 in
75 //https://twiki.cern.ch/twiki/bin/viewauth/ALICE/PAVertexSelectionStudies
76 AliAnalysisUtils fUtils; //data member to use utility class for event and vertex selection in 2013
79 UChar_t fRequireV0and; // use V0and triggered events only
81 AliTriggerAnalysis *fTriggerAnalysis; //! trigger analysis class
82 const AliESDVertex *fkVertex; //! current vertex
83 const AliAODVertex *fkVertexAOD; //! current vertex AOD
85 TF1* fparMean; // parametrization of the mean values
86 TF1* fparSigma; // parametrization of the sigmas
87 Double_t fcutSigma; // number of absolut sigmas inclusion
88 TF1* fparMinVtxContributors; // parametrization of #vtx contributors global vs TPC (lower limit)
89 TF1* fparMaxVtxContributors; // parametrization of #vtx contributors global vs TPC (upper limit)
90 AliDielectronEventCuts(const AliDielectronEventCuts &c);
91 AliDielectronEventCuts &operator=(const AliDielectronEventCuts &c);
94 ClassDef(AliDielectronEventCuts,3) // Dielectron EventCuts