]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
add simple vertex cuts in AliFlowEventCuts + bugfixes
authorsnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 25 Oct 2010 10:25:04 +0000 (10:25 +0000)
committersnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 25 Oct 2010 10:25:04 +0000 (10:25 +0000)
PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.cxx
PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.h
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.cxx
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.h

index c76296cb7703d42a97d71f03281cea8c0a65fdd5..ff01f9680a4dc098c25ee1dc87699c61b71304ee 100644 (file)
@@ -23,6 +23,7 @@
 #include <limits.h>
 #include <float.h>
 #include "TNamed.h"
+#include "AliVVertex.h"
 #include "AliVEvent.h"
 #include "AliESDEvent.h"
 #include "AliMultiplicity.h"
@@ -42,7 +43,19 @@ AliFlowEventCuts::AliFlowEventCuts():
   fRefMultMethod(kTPConly),
   fRefMultMax(INT_MAX),
   fRefMultMin(INT_MIN),
-  fRefMultCuts(NULL)
+  fRefMultCuts(NULL),
+  fCutPrimaryVertexX(kFALSE),
+  fPrimaryVertexXmax(INT_MAX),
+  fPrimaryVertexXmin(INT_MIN),
+  fCutPrimaryVertexY(kFALSE),
+  fPrimaryVertexYmax(INT_MAX),
+  fPrimaryVertexYmin(INT_MIN),
+  fCutPrimaryVertexZ(kFALSE),
+  fPrimaryVertexZmax(INT_MAX),
+  fPrimaryVertexZmin(INT_MIN),
+  fCutNContributors(kFALSE),
+  fNContributorsMax(INT_MAX),
+  fNContributorsMin(INT_MIN)
 {
   //constructor 
 }
@@ -57,7 +70,19 @@ AliFlowEventCuts::AliFlowEventCuts(const char* name, const char* title):
   fRefMultMethod(kTPConly),
   fRefMultMax(INT_MAX),
   fRefMultMin(INT_MIN),
-  fRefMultCuts(NULL)
+  fRefMultCuts(NULL),
+  fCutPrimaryVertexX(kFALSE),
+  fPrimaryVertexXmax(INT_MAX),
+  fPrimaryVertexXmin(INT_MIN),
+  fCutPrimaryVertexY(kFALSE),
+  fPrimaryVertexYmax(INT_MAX),
+  fPrimaryVertexYmin(INT_MIN),
+  fCutPrimaryVertexZ(kFALSE),
+  fPrimaryVertexZmax(INT_MAX),
+  fPrimaryVertexZmin(INT_MIN),
+  fCutNContributors(kFALSE),
+  fNContributorsMax(INT_MAX),
+  fNContributorsMin(INT_MIN)
 {
   //constructor 
 }
@@ -72,9 +97,23 @@ AliFlowEventCuts::AliFlowEventCuts(const AliFlowEventCuts& that):
   fRefMultMethod(that.fRefMultMethod),
   fRefMultMax(that.fRefMultMax),
   fRefMultMin(that.fRefMultMin),
-  fRefMultCuts(new AliFlowTrackCuts(*(that.fRefMultCuts)))
+  fRefMultCuts(NULL),
+  fCutPrimaryVertexX(that.fCutPrimaryVertexX),
+  fPrimaryVertexXmax(that.fPrimaryVertexXmax),
+  fPrimaryVertexXmin(that.fPrimaryVertexXmin),
+  fCutPrimaryVertexY(that.fCutPrimaryVertexX),
+  fPrimaryVertexYmax(that.fPrimaryVertexYmax),
+  fPrimaryVertexYmin(that.fPrimaryVertexYmin),
+  fCutPrimaryVertexZ(that.fCutPrimaryVertexX),
+  fPrimaryVertexZmax(that.fPrimaryVertexZmax),
+  fPrimaryVertexZmin(that.fPrimaryVertexZmin),
+  fCutNContributors(that.fCutNContributors),
+  fNContributorsMax(that.fNContributorsMax),
+  fNContributorsMin(that.fNContributorsMin)
 {
   //copy constructor 
+  if (that.fRefMultCuts)
+    fRefMultCuts = new AliFlowTrackCuts(*(that.fRefMultCuts));
 }
 
 ////-----------------------------------------------------------------------
@@ -88,7 +127,17 @@ AliFlowEventCuts& AliFlowEventCuts::operator=(const AliFlowEventCuts& that)
   fRefMultMethod=that.fRefMultMethod;
   fRefMultMax=that.fRefMultMax;
   fRefMultMin=that.fRefMultMin;
-  *fRefMultCuts=*(that.fRefMultCuts);
+  if (that.fRefMultCuts) *fRefMultCuts=*(that.fRefMultCuts);
+  fCutPrimaryVertexX=that.fCutPrimaryVertexX;
+  fPrimaryVertexXmin=that.fPrimaryVertexXmin;
+  fPrimaryVertexXmax=that.fPrimaryVertexXmax;
+  fPrimaryVertexYmin=that.fPrimaryVertexYmin;
+  fPrimaryVertexYmax=that.fPrimaryVertexYmax;
+  fPrimaryVertexZmin=that.fPrimaryVertexZmin;
+  fPrimaryVertexZmax=that.fPrimaryVertexZmax;
+  fCutNContributors=that.fCutNContributors;
+  fNContributorsMax=that.fNContributorsMax;
+  fNContributorsMin=that.fNContributorsMin;
   return *this;
 }
 
@@ -112,6 +161,31 @@ Bool_t AliFlowEventCuts::PassesCuts(const AliVEvent *event)
     if (refMult < fRefMultMin || refMult >= fRefMultMax )
       return kFALSE;
   }
+  const AliVVertex* pvtx=event->GetPrimaryVertex();
+  Double_t pvtxx = pvtx->GetX();
+  Double_t pvtxy = pvtx->GetY();
+  Double_t pvtxz = pvtx->GetZ();
+  Int_t ncontrib = pvtx->GetNContributors();
+  if (fCutNContributors)
+  {
+    if (ncontrib < fNContributorsMin || ncontrib >= fNContributorsMax)
+      return kFALSE;
+  }
+  if (fCutPrimaryVertexX)
+  {
+    if (pvtxx < fPrimaryVertexXmin || pvtxx >= fPrimaryVertexXmax)
+      return kFALSE;
+  }
+  if (fCutPrimaryVertexY)
+  {
+    if (pvtxy < fPrimaryVertexYmin || pvtxy >= fPrimaryVertexYmax)
+      return kFALSE;
+  }
+  if (fCutPrimaryVertexZ)
+  {
+    if (pvtxz < fPrimaryVertexZmin || pvtxz >= fPrimaryVertexZmax)
+      return kFALSE;
+  }
   return kTRUE;
 }
 
index 38e99a721121fb18335b5bb1dc37a73549a12f17..1ee4ada3928b0be916a83ec2bb3abd26715038eb 100644 (file)
@@ -38,6 +38,14 @@ class AliFlowEventCuts : public TNamed {
   void SetRefMultMax(Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
   void SetRefMultMin(Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
   void SetRefMultRange(Int_t min, Int_t max) {fRefMultMin=min;fRefMultMax=max;fCutRefMult=kTRUE;}
+  void SetPrimaryVertexXrange(Double_t min, Double_t max)
+       {fCutPrimaryVertexX=kTRUE; fPrimaryVertexXmin=min; fPrimaryVertexXmax=max;}
+  void SetPrimaryVertexYrange(Double_t min, Double_t max)
+       {fCutPrimaryVertexY=kTRUE; fPrimaryVertexYmin=min; fPrimaryVertexYmax=max;}
+  void SetPrimaryVertexZrange(Double_t min, Double_t max)
+       {fCutPrimaryVertexZ=kTRUE; fPrimaryVertexZmin=min; fPrimaryVertexZmax=max;}
+  void SetNContributorsRange(Int_t min, Int_t max=INT_MAX) 
+       {fCutNContributors=kTRUE; fNContributorsMin=min; fNContributorsMax=max;}
 
   Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
   Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
@@ -60,10 +68,22 @@ class AliFlowEventCuts : public TNamed {
   refMultMethod fRefMultMethod; //how do we calculate refmult?
   Int_t fRefMultMax; //max refmult
   Int_t fRefMultMin; //min refmult
-
   AliFlowTrackCuts* fRefMultCuts; //cuts
-
-  ClassDef(AliFlowEventCuts,1)
+  Bool_t fCutPrimaryVertexX; //cut on x of prim vtx
+  Double_t fPrimaryVertexXmax; //max x prim vtx
+  Double_t fPrimaryVertexXmin; //min x prim vtx
+  Bool_t fCutPrimaryVertexY; //cut on y of prim vtx
+  Double_t fPrimaryVertexYmax; //max y prim vtx
+  Double_t fPrimaryVertexYmin; //min y prim vtx
+  Bool_t fCutPrimaryVertexZ; //cut on z of prim vtx
+  Double_t fPrimaryVertexZmax; //max z prim vtx
+  Double_t fPrimaryVertexZmin; //min z prim vtx
+  Bool_t fCutNContributors; //cut on number of contributors
+  Int_t fNContributorsMax; //maximal number of contrib
+  Int_t fNContributorsMin; //minimal number of contrib
+
+
+  ClassDef(AliFlowEventCuts,2)
 };
 
 #endif
index e37a60c1afc34c329db353f4891ee417703ee3cd..dcbea857a25fff0826a4274ddf2cc57c5386eb01 100644 (file)
@@ -83,28 +83,28 @@ AliFlowTrackCuts::AliFlowTrackCuts():
 }
 
 //-----------------------------------------------------------------------
-AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& someCuts):
-  AliFlowTrackSimpleCuts(someCuts),
-  fAliESDtrackCuts(new AliESDtrackCuts(*(someCuts.fAliESDtrackCuts))),
-  fQA(someCuts.fQA),
-  fCutMCprocessType(someCuts.fCutMCprocessType),
-  fMCprocessType(someCuts.fMCprocessType),
-  fCutMCPID(someCuts.fCutMCPID),
-  fMCPID(someCuts.fMCPID),
-  fCutMCisPrimary(someCuts.fCutMCisPrimary),
-  fMCisPrimary(someCuts.fMCisPrimary),
-  fRequireCharge(someCuts.fRequireCharge),
-  fFakesAreOK(someCuts.fFakesAreOK),
-  fCutSPDtrackletDeltaPhi(someCuts.fCutSPDtrackletDeltaPhi),
-  fSPDtrackletDeltaPhiMax(someCuts.fSPDtrackletDeltaPhiMax),
-  fSPDtrackletDeltaPhiMin(someCuts.fSPDtrackletDeltaPhiMin),
-  fParamType(someCuts.fParamType),
-  fParamMix(someCuts.fParamMix),
+AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& that):
+  AliFlowTrackSimpleCuts(that),
+  fAliESDtrackCuts(new AliESDtrackCuts(*(that.fAliESDtrackCuts))),
+  fQA(that.fQA),
+  fCutMCprocessType(that.fCutMCprocessType),
+  fMCprocessType(that.fMCprocessType),
+  fCutMCPID(that.fCutMCPID),
+  fMCPID(that.fMCPID),
+  fCutMCisPrimary(that.fCutMCisPrimary),
+  fMCisPrimary(that.fMCisPrimary),
+  fRequireCharge(that.fRequireCharge),
+  fFakesAreOK(that.fFakesAreOK),
+  fCutSPDtrackletDeltaPhi(that.fCutSPDtrackletDeltaPhi),
+  fSPDtrackletDeltaPhiMax(that.fSPDtrackletDeltaPhiMax),
+  fSPDtrackletDeltaPhiMin(that.fSPDtrackletDeltaPhiMin),
+  fParamType(that.fParamType),
+  fParamMix(that.fParamMix),
   fCleanupTrack(kFALSE),
   fTrack(NULL),
-  fTrackPhi(someCuts.fTrackPhi),
-  fTrackEta(someCuts.fTrackEta),
-  fTrackWeight(someCuts.fTrackWeight),
+  fTrackPhi(0.),
+  fTrackEta(0.),
+  fTrackWeight(0.),
   fTrackLabel(INT_MIN),
   fMCevent(NULL),
   fMCparticle(NULL),
@@ -114,31 +114,31 @@ AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& someCuts):
 }
 
 //-----------------------------------------------------------------------
-AliFlowTrackCuts& AliFlowTrackCuts::operator=(const AliFlowTrackCuts& someCuts)
+AliFlowTrackCuts& AliFlowTrackCuts::operator=(const AliFlowTrackCuts& that)
 {
   //assignment
-  AliFlowTrackSimpleCuts::operator=(someCuts);
-  *fAliESDtrackCuts=*(someCuts.fAliESDtrackCuts);
-  fQA=someCuts.fQA;
-  fCutMCprocessType=someCuts.fCutMCprocessType;
-  fMCprocessType=someCuts.fMCprocessType;
-  fCutMCPID=someCuts.fCutMCPID;
-  fMCPID=someCuts.fMCPID;
-  fCutMCisPrimary=someCuts.fCutMCisPrimary;
-  fMCisPrimary=someCuts.fMCisPrimary;
-  fRequireCharge=someCuts.fRequireCharge;
-  fFakesAreOK=someCuts.fFakesAreOK;
-  fCutSPDtrackletDeltaPhi=someCuts.fCutSPDtrackletDeltaPhi;
-  fSPDtrackletDeltaPhiMax=someCuts.fSPDtrackletDeltaPhiMax;
-  fSPDtrackletDeltaPhiMin=someCuts.fSPDtrackletDeltaPhiMin;
-  fParamType=someCuts.fParamType;
-  fParamMix=someCuts.fParamMix;
+  AliFlowTrackSimpleCuts::operator=(that);
+  *fAliESDtrackCuts=*(that.fAliESDtrackCuts);
+  fQA=that.fQA;
+  fCutMCprocessType=that.fCutMCprocessType;
+  fMCprocessType=that.fMCprocessType;
+  fCutMCPID=that.fCutMCPID;
+  fMCPID=that.fMCPID;
+  fCutMCisPrimary=that.fCutMCisPrimary;
+  fMCisPrimary=that.fMCisPrimary;
+  fRequireCharge=that.fRequireCharge;
+  fFakesAreOK=that.fFakesAreOK;
+  fCutSPDtrackletDeltaPhi=that.fCutSPDtrackletDeltaPhi;
+  fSPDtrackletDeltaPhiMax=that.fSPDtrackletDeltaPhiMax;
+  fSPDtrackletDeltaPhiMin=that.fSPDtrackletDeltaPhiMin;
+  fParamType=that.fParamType;
+  fParamMix=that.fParamMix;
 
   fCleanupTrack=kFALSE;
   fTrack=NULL;
-  fTrackPhi=someCuts.fTrackPhi;
-  fTrackPhi=someCuts.fTrackPhi;
-  fTrackWeight=someCuts.fTrackWeight;
+  fTrackPhi=0.;
+  fTrackPhi=0.;
+  fTrackWeight=0.;
   fTrackLabel=INT_MIN;
   fMCevent=NULL;
   fMCparticle=NULL;
index 4c0e972738e4eaebdf499a28d1769ae83af117dc..bf0af8a41a67d7dd1b743b309e55ff96cc5df5d7 100644 (file)
@@ -150,7 +150,7 @@ class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
   AliMCParticle* fMCparticle;        //!mc particle
   AliVEvent* fEvent;                 //!placeholder for current event
 
-  ClassDef(AliFlowTrackCuts,1)
+  ClassDef(AliFlowTrackCuts,2)
 };
 
 #endif