//# #
//#############################################################
+#include <TF1.h>
+#include <TVectorD.h>
+#include <TBits.h>
+
+#include <AliAnalysisUtils.h>
#include <AliAnalysisCuts.h>
class AliTriggerAnalysis;
class AliESDVertex;
class AliAODVertex;
+
class AliDielectronEventCuts : public AliAnalysisCuts {
public:
enum EVtxType { kVtxTracks=0, kVtxSPD, kVtxTPC, kVtxAny, kVtxTracksOrSPD };
virtual ~AliDielectronEventCuts();
-
+ void SetRunRejection(const TVectorD * vec) { fRun.Use(vec->GetNrows(),vec->GetMatrixArray()); }
void SetVertexType(EVtxType type) { fVtxType=type; }
void SetVertexZ(Double_t zmin, Double_t zmax) { fVtxZmin=zmin; fVtxZmax=zmax; }
void SetRequireVertex(Bool_t req=kTRUE) { fRequireVtx=req; }
void SetMinVtxContributors(Int_t min=1) { fMinVtxContributors=min; }
void SetCutOnMultipicityITSTPC(Bool_t mult=kTRUE) { fMultITSTPC=mult; }
void SetCentralityRange(Double_t min, Double_t max) { fCentMin=min; fCentMax=max; }
+ void SetCutOnV0MultipicityNTrks(TF1* parMean, TF1* parSigma, Double_t cutSigma=3.) { fparMean=parMean; fparSigma=parSigma; fcutSigma=cutSigma; }
+ void SetCutOnNVtxContributorsGloablTPC(TF1* parMin, TF1* parMax) { fparMinVtxContributors=parMin; fparMaxVtxContributors=parMax; }
+ void SetRequire2013vertexandevent(Bool_t req13 = kTRUE) {fRequire13sel = req13; }
+ void SetMinCorrCutFunction(TF1 *fun, UInt_t varx, UInt_t vary=0);
+ void SetMaxCorrCutFunction(TF1 *fun, UInt_t varx, UInt_t vary=0);
+
//
//Analysis cuts interface
//
Bool_t IsSelectedESD(TObject* event);
Bool_t IsSelectedAOD(TObject* event);
virtual Bool_t IsSelected(TList* /* list */ ) {return kFALSE;}
-
+
+ void Print(const Option_t* option = "") const;
private:
+ static const char* fgkVtxNames[AliDielectronEventCuts::kVtxTracksOrSPD+1]; //vertex names
+ TBits *fUsedVars; // list of used variables
+ TVectorD fRun; // run rejection vector
Double_t fVtxZmin; // minimum z vertex position
Double_t fVtxZmax; // maximum z vertex position
Bool_t fRequireVtx; // require a vertex
Int_t fMinVtxContributors; // min number of vertex contributors
Bool_t fMultITSTPC; // if to cut on the ITS TPC multiplicity correlation (Pb-Pb)
- Double_t fCentMin; // minimum multiplity percentile
- Double_t fCentMax; // maximum multiplity percentile
+ Double_t fCentMin; // minimum multiplity percentile
+ Double_t fCentMax; // maximum multiplity percentile
EVtxType fVtxType; // vertex type
+ Bool_t fRequire13sel; //bit to select event and vertex selection proposed for 2013 in
+ //https://twiki.cern.ch/twiki/bin/viewauth/ALICE/PAVertexSelectionStudies
+ AliAnalysisUtils fUtils; //data member to use utility class for event and vertex selection in 2013
+
UChar_t fRequireV0and; // use V0and triggered events only
const AliESDVertex *fkVertex; //! current vertex
const AliAODVertex *fkVertexAOD; //! current vertex AOD
- const AliAODVertex* GetPrimaryVertexTPC(const AliAODEvent *ev);
+ TH1* fCorrCutMin[5]; //parametrization of lower limit correlation cut
+ TH1* fCorrCutMax[5]; //parametrization of upper limit correlation cut
+ TF1* fparMean; // parametrization of the mean values
+ TF1* fparSigma; // parametrization of the sigmas
+ Double_t fcutSigma; // number of absolut sigmas inclusion
+ TF1* fparMinVtxContributors; // parametrization of #vtx contributors global vs TPC (lower limit)
+ TF1* fparMaxVtxContributors; // parametrization of #vtx contributors global vs TPC (upper limit)
AliDielectronEventCuts(const AliDielectronEventCuts &c);
AliDielectronEventCuts &operator=(const AliDielectronEventCuts &c);
- ClassDef(AliDielectronEventCuts,1) // Dielectron EventCuts
+ ClassDef(AliDielectronEventCuts,4) // Dielectron EventCuts
};
-//______________________________________________________________________________
-inline const AliAODVertex* GetPrimaryVertexTPC(const AliAODEvent *ev) {
- // Get TPC primary vertex
- Int_t nVertices=ev->GetNumberOfVertices();
- for(Int_t iVert=0; iVert<nVertices; iVert++){
- AliAODVertex *v=ev->GetVertex(iVert);
- if(v->GetType()==AliAODVertex::kMainSPD) return v;
- }
- return 0;
-}
#endif