]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/RESONANCES/AliRsnCutPrimaryVertex.cxx
Renames and new scripts
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutPrimaryVertex.cxx
index 6d10c016c6cf227f66bae4fc1e146487381afc9d..afc75ebe7b76abc7dac2634d7216fb8bacf2991d 100644 (file)
 
 ClassImp(AliRsnCutPrimaryVertex)
 
-//_________________________________________________________________________________________________
-AliRsnCutPrimaryVertex::AliRsnCutPrimaryVertex() :
-  AliRsnCut(AliRsnCut::kEvent),
-  fAcceptTPC(kFALSE)
-{
-//
-// Default constructor.
-//
-}
-
 //_________________________________________________________________________________________________
 AliRsnCutPrimaryVertex::AliRsnCutPrimaryVertex
 (const char *name, Double_t maxVz, Int_t nContributors, Bool_t acceptTPC) :
-  AliRsnCut(name, AliRsnCut::kEvent, 0, nContributors - 1),
-  fAcceptTPC(acceptTPC)
+  AliRsnCut(name, AliRsnCut::kEvent, 0, nContributors - 1, 0.0, maxVz),
+  fAcceptTPC(acceptTPC),
+  fCheckPileUp(kFALSE)
 {
 //
 // Main constructor.
@@ -48,23 +39,26 @@ AliRsnCutPrimaryVertex::AliRsnCutPrimaryVertex
 }
 
 //_________________________________________________________________________________________________
-Bool_t AliRsnCutPrimaryVertex::IsSelected(TObject *obj1, TObject* /*obj2*/)
+Bool_t AliRsnCutPrimaryVertex::IsSelected(TObject *object)
 {
 //
 // Cut checker
 //
-
-  static Int_t evNum = 0;
-  evNum++;
   
   // retrieve ESD event
-  AliRsnEvent *rsn = dynamic_cast<AliRsnEvent*>(obj1);
+  AliRsnEvent *rsn = dynamic_cast<AliRsnEvent*>(object);
   if (!rsn) return kFALSE;
-  AliESDEvent *esd = dynamic_cast<AliESDEvent*>(rsn->GetRef());
-  AliAODEvent *aod = dynamic_cast<AliAODEvent*>(rsn->GetRef());
+  AliESDEvent *esd = rsn->GetRefESD();
+  AliAODEvent *aod = rsn->GetRefAOD();
   
   if (esd)
   {
+    // pile-up check
+    if (fCheckPileUp)
+    {
+      if (esd->IsPileupFromSPD()) return kFALSE;
+    }
+    
     // get the best primary vertex:
     // first try the one with tracks
     const AliESDVertex *vTrk  = esd->GetPrimaryVertexTracks();
@@ -73,9 +67,9 @@ Bool_t AliRsnCutPrimaryVertex::IsSelected(TObject *obj1, TObject* /*obj2*/)
     Int_t               ncTrk = -1;
     Int_t               ncSPD = -1;
     Int_t               ncTPC = -1;
-    Double_t            vzTrk = 2.0 * fMaxD;
-    Double_t            vzSPD = 2.0 * fMaxD;
-    Double_t            vzTPC = 2.0 * fMaxD;
+    Double_t            vzTrk = 1000000.0;
+    Double_t            vzSPD = 1000000.0;
+    Double_t            vzTPC = 1000000.0;
     if (vTrk) vzTrk = TMath::Abs(vTrk->GetZv());
     if (vSPD) vzSPD = TMath::Abs(vSPD->GetZv());
     if (vTPC) vzTPC = TMath::Abs(vTPC->GetZv());
@@ -92,24 +86,33 @@ Bool_t AliRsnCutPrimaryVertex::IsSelected(TObject *obj1, TObject* /*obj2*/)
       fCutValueI = ncSPD;
       fCutValueD = vzSPD;
     }
-    else if (vTPC && fAcceptTPC && ncTPC > 0)
+    else if (vTPC && ncTPC > 0)
     {
-      fCutValueI = ncTPC;
-      fCutValueD = vzTPC;
+      if (!fAcceptTPC) 
+        return kFALSE;
+      else
+      {
+        fCutValueI = ncTPC;
+        fCutValueD = vzTPC;
+      }
     }
     else
-    {
-      fCutValueI = -1;
-      fCutValueD = 2.0 * fMaxD;
-    }
+      return kFALSE;
   }
   else if (aod)
   {
+    // pile-up check is not yet available for AODs
+    
     // lines suggested by Andrea to reject TPC-only events
-    if(!aod->GetPrimaryVertexSPD()) return kFALSE;
-    if(aod->GetPrimaryVertexSPD()->GetNContributors() < 1) return kFALSE;
+    if(!fAcceptTPC)
+    {
+      if (!aod->GetPrimaryVertexSPD()) return kFALSE;
+      else if(aod->GetPrimaryVertexSPD()->GetNContributors() < 1) return kFALSE;
+    }
     
     AliAODVertex *prim = (AliAODVertex*)aod->GetPrimaryVertex();
+    if (!prim) return kFALSE;
+
     fCutValueI = prim->GetNContributors();
     fCutValueD = prim->GetZ();
   }
@@ -121,3 +124,15 @@ Bool_t AliRsnCutPrimaryVertex::IsSelected(TObject *obj1, TObject* /*obj2*/)
   return result;
 }
 
+//_________________________________________________________________________________________________
+void AliRsnCutPrimaryVertex::Print(const Option_t *) const
+{
+//
+// Print information on this cut
+//
+
+  AliInfo(Form("Cut name                     : %s", GetName()));
+  AliInfo(Form("Accepting TPC primary vertex : %s", (fAcceptTPC ? "YES" : "NO")));
+  AliInfo(Form("Contributors range (outside) : %d - %d", fMinI, fMaxI));
+  AliInfo(Form("Z-vertex     range (inside)  : %f - %f", fMinD, fMaxD));
+}