]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliAnalysisUtils.h
Moving test task to TPC folder
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisUtils.h
index 6f3480dd8acd729f552fce9236eaebc469d96c47..8218dc72f4a8b567a3067019624d1e701cb28d75 100644 (file)
@@ -1,18 +1,20 @@
 #ifndef ALIANALYSISUTILS_H
 #define ALIANALYSISUTILS_H
 
-//////////////////////////////////////////////////////////////////////////////
-//                                                                          //
-// Class with functions useful for different analyses                       //
+////////////////////////////////////////////////////////////////////
+//                                                                           //
+// Class with functions useful for different analyses                      //
 // - vertex selection                                                       //
-//    * 2013 pA default cuts                                                //
-// - identification of the fist event of the chunk                          //
+//    * 2013 pA default cuts                                             //
+// - identification of the fist event of the chunk                         //
+// - identification pileup events                                           //
 //                                                                          //
-//////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////
 
 #include "TObject.h"
 
 class AliVEvent;
+class AliVVertex;
 
 class AliAnalysisUtils : public TObject {
 
@@ -20,24 +22,64 @@ class AliAnalysisUtils : public TObject {
 
   AliAnalysisUtils();
   virtual ~AliAnalysisUtils(){};
-
+  
   Bool_t IsVertexSelected2013pA(AliVEvent *event);
   Bool_t IsFirstEventInChunk(AliVEvent *event);
-
+  
+  Bool_t IsPileUpEvent(AliVEvent *event); //to be used in the analysis
+  Bool_t IsPileUpMV(AliVEvent *event); //MV pileup selection implemented here
+  Bool_t IsPileUpSPD(AliVEvent *event); //this calls IsPileUpFromSPD
+  Bool_t IsOutOfBunchPileUp(AliVEvent *event); //out-of-bunch pileup rejection using trigger information
+  
+  Double_t GetWDist(const AliVVertex* v0, const AliVVertex* v1);
+  
   void SetMinVtxContr(Int_t contr=1) {fMinVtxContr=contr;}
   void SetMaxVtxZ(Float_t z=1e6) {fMaxVtxZ=z;}
   void SetCutOnZVertexSPD(Bool_t iscut=true) { fCutOnZVertexSPD = iscut; }
-
+  
+  //general pileup selection settings
+  void SetUseMVPlpSelection(Bool_t useMVPlpSelection) { fUseMVPlpSelection = useMVPlpSelection;}
+  void SetUseOutOfBunchPileUp(Bool_t useOutOfBunchPileUp) { fUseOutOfBunchPileUp = useOutOfBunchPileUp;}
+  
+  //Multi Vertex pileup selection
+  void SetMinPlpContribMV(Int_t minPlpContribMV) { fMinPlpContribMV = minPlpContribMV;}
+  void SetMaxPlpChi2MV(Float_t maxPlpChi2MV) { fMaxPlpChi2MV = maxPlpChi2MV;}
+  void SetMinWDistMV(Float_t minWDistMV) { fMinWDistMV = minWDistMV;}
+  void SetCheckPlpFromDifferentBCMV(Bool_t checkPlpFromDifferentBCMV) { fCheckPlpFromDifferentBCMV = checkPlpFromDifferentBCMV;}
+  //SPD Pileup slection
+  void SetMinPlpContribSPD(Int_t minPlpContribSPD) { fMinPlpContribSPD = minPlpContribSPD;}
+  void SetMinPlpZdistSPD(Float_t minPlpZdistSPD) { fMinPlpZdistSPD = minPlpZdistSPD;}
+  void SetnSigmaPlpZdistSPD(Float_t nSigmaPlpZdistSPD) { fnSigmaPlpZdistSPD = nSigmaPlpZdistSPD;}
+  void SetnSigmaPlpDiamXYSPD(Float_t nSigmaPlpDiamXYSPD) { fnSigmaPlpDiamXYSPD = nSigmaPlpDiamXYSPD;}
+  void SetnSigmaPlpDiamZSPD(Float_t nSigmaPlpDiamZSPD) { fnSigmaPlpDiamZSPD = nSigmaPlpDiamZSPD;}
+  void SetUseSPDCutInMultBins(Bool_t useSPDCutInMultBins) { fUseSPDCutInMultBins = useSPDCutInMultBins;}
+  
+  
  private:
-
+  
   Bool_t fisAOD; // flag for AOD:1 or ESD:0
-
+  
   Int_t fMinVtxContr; // minimum vertex contributors
   Float_t fMaxVtxZ;   // maximum |z| of primary vertex
-
+  
   Bool_t fCutOnZVertexSPD; // 0: no cut, 1: |zvtx-SPD - zvtx-TPC|<0.5cm
-
-  ClassDef(AliAnalysisUtils,0) // base helper class
+  
+  Bool_t  fUseMVPlpSelection; //switch between SPD and MV pileup
+  Bool_t  fUseOutOfBunchPileUp; //BC information from the trigger is used to tag out-of-bunch pileup
+  
+  Int_t    fMinPlpContribMV; //minimum contributors to the pilup vertices, multi-vertex
+  Float_t  fMaxPlpChi2MV; //minimum value of Chi2perNDF of the pileup vertex, multi-vertex
+  Float_t  fMinWDistMV; //minimum of the sqrt of weighted distance between the primary and the pilup vertex, multi-vertex
+  Bool_t  fCheckPlpFromDifferentBCMV; //pileup from different BC (Bunch Crossings)
+  
+  Int_t    fMinPlpContribSPD; //minimum contributors to the pilup vertices, SPD
+  Float_t  fMinPlpZdistSPD;  //minimum distance for the SPD pileup vertex
+  Float_t  fnSigmaPlpZdistSPD;  //cut on Z for SPD pileup
+  Float_t  fnSigmaPlpDiamXYSPD;  //cut on nsigma diamond XY for SPD pileup
+  Float_t  fnSigmaPlpDiamZSPD;  //cut on nsigma diamond Z for SPD pileup
+  Bool_t  fUseSPDCutInMultBins;  //use IsPileupFromSPDInMultBins instead of IsPileupFromSPD
+  
+  ClassDef(AliAnalysisUtils,1) // base helper class
 };
 #endif