added trigger helpers as in PWG0
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 7 Dec 2009 10:37:06 +0000 (10:37 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 7 Dec 2009 10:37:06 +0000 (10:37 +0000)
PWG4/JetTasks/AliAnalysisHelperJetTasks.cxx
PWG4/JetTasks/AliAnalysisHelperJetTasks.h

index 0823516..743ba3f 100644 (file)
@@ -10,6 +10,7 @@
 #include "TString.h"
 #include "AliMCEvent.h"
 #include "AliLog.h"
+#include "AliESDEvent.h"
 #include "AliAODJet.h"
 #include "AliStack.h"
 #include "AliGenEventHeader.h"
@@ -374,6 +375,14 @@ Bool_t AliAnalysisHelperJetTasks::PythiaInfoFromFile(const char* currFile,Float_
   return kTRUE;
 }
 
+Bool_t  AliAnalysisHelperJetTasks::Selected(Bool_t bSet,Bool_t bNew){
+  static Bool_t bSelected = kTRUE; // if service task is not run we acccpet all
+  if(bSet){
+    bSelected = bNew;
+  }
+  return bSelected;
+}
+
 //___________________________________________________________________________________________________________
 
 Bool_t AliAnalysisHelperJetTasks::GetEventShapes(TVector3 &n01, TVector3 * pTrack, Int_t nTracks, Double_t * eventShapes)
@@ -613,3 +622,79 @@ Bool_t AliAnalysisHelperJetTasks::GetEventShapes(TVector3 &n01, TVector3 * pTrac
 
 
  //__________________________________________________________________________________________________________________________
+// Trigger Decisions copid from PWG0/AliTriggerAnalysis
+
+
+Bool_t AliAnalysisHelperJetTasks::IsTriggerFired(const AliVEvent* aEv, Trigger trigger)
+{
+  // checks if an event has been triggered
+  // no usage of ofline trigger here yet
+  return IsTriggerBitFired(aEv, trigger);
+}
+
+Bool_t AliAnalysisHelperJetTasks::IsTriggerBitFired(const AliVEvent* aEv, Trigger trigger)
+{
+  // checks if an event is fired using the trigger bits
+
+  return IsTriggerBitFired(aEv->GetTriggerMask(), trigger);
+}
+
+Bool_t AliAnalysisHelperJetTasks::IsTriggerBitFired(ULong64_t triggerMask, Trigger trigger)
+{
+  // checks if an event is fired using the trigger bits
+  //
+  // this function needs the branch TriggerMask in the ESD
+  Printf("Triggermask %d",triggerMask);
+
+
+  // definitions from p-p.cfg
+  ULong64_t spdFO = (1 << 14);
+  ULong64_t v0left = (1 << 10);
+  ULong64_t v0right = (1 << 11);
+
+  switch (trigger)
+  {
+    case kAcceptAll:
+    {
+      return kTRUE;
+      break;
+    }
+    case kMB1:
+    {
+      if (triggerMask & spdFO || ((triggerMask & v0left) || (triggerMask & v0right)))
+        return kTRUE;
+      break;
+    }
+    case kMB2:
+    {
+      if (triggerMask & spdFO && ((triggerMask & v0left) || (triggerMask & v0right)))
+        return kTRUE;
+      break;
+    }
+    case kMB3:
+    {
+      if (triggerMask & spdFO && (triggerMask & v0left) && (triggerMask & v0right))
+        return kTRUE;
+      break;
+    }
+    case kSPDGFO:
+    {
+      if (triggerMask & spdFO)
+        return kTRUE;
+      break;
+    }
+    default:
+      Printf("IsEventTriggered: ERROR: Trigger type %d not implemented in this method", (Int_t) trigger);
+      break;
+  }
+
+  return kFALSE;
+}
+
+Bool_t AliAnalysisHelperJetTasks::IsTriggerBitFired(const AliVEvent* aEv, ULong64_t tclass)
+{
+  // Checks if corresponding bit in mask is on
+  
+  ULong64_t trigmask = aEv->GetTriggerMask();
+  return (trigmask & (1ull << (tclass-1)));
+}
index e1033e8..b47d33f 100644 (file)
@@ -4,6 +4,7 @@
 
 class AliMCEvent;
 class AliAODJet;
+class AliVEvent;
 class TString;
 class AliGenPythiaEventHeader;
 class TVector3;
@@ -29,6 +30,17 @@ class AliAnalysisHelperJetTasks : public TObject {
   static Bool_t PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials);// get the cross section and the trails either from pyxsec.root or from pysec_hists.root
   static Bool_t GetEventShapes(TVector3 &n01, TVector3 * pTrack, Int_t nTracks, Double_t * eventShapes);
   enum {kMaxJets = 6}; //  needed for array size not to fragemnt memory on the heap by many new/delete 
+
+  enum Trigger {kAcceptAll = 0,kMB1,kMB2,kMB3, kSPDGFO,kTrigger}; // 
+
+  static Bool_t Selected(Bool_t bSet = kFALSE,Bool_t bNew = kTRUE); // static function to store the state of selection from service task
+  
+  // these methods have been essentially copied from PWG0/AliTriggerAnalysis and expanded to use with AOD
+  static Bool_t IsTriggerFired(const AliVEvent* aEsd, Trigger trigger);
+  static Bool_t IsTriggerBitFired(const AliVEvent* aEv, Trigger trigger);
+  static Bool_t IsTriggerBitFired(ULong64_t triggerMask, Trigger trigger);
+  static Bool_t IsTriggerBitFired(const AliVEvent* aEv, ULong64_t tclass);
+
   private:
   
   ClassDef(AliAnalysisHelperJetTasks, 1)