Add components for event counting and trigger patch analysis
authormfasel <mfasel@lbl.gov>
Wed, 10 Dec 2014 20:51:59 +0000 (12:51 -0800)
committermfasel <mfasel@lbl.gov>
Fri, 12 Dec 2014 01:12:33 +0000 (17:12 -0800)
PWGJE/CMakelibPWGJEEMCALJetTasks.pkg
PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.cxx [new file with mode: 0644]
PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.h [new file with mode: 0644]
PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.cxx [new file with mode: 0644]
PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.h [new file with mode: 0644]
PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerRecTrackAnalysisComponent.cxx
PWGJE/PWGJEEMCALJetTasksLinkDef.h

index bdf8bd3..b15ac1d 100644 (file)
@@ -113,6 +113,8 @@ set ( SRCS
  EMCALJetTasks/Tracks/AliAnalysisTaskPtEMCalTriggerV1.cxx
  EMCALJetTasks/Tracks/AliEMCalTriggerMCParticleAnalysisComponent.cxx
  EMCALJetTasks/Tracks/AliEMCalTriggerClusterAnalysisComponent.cxx
+ EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.cxx
+ EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.cxx
  EMCALJetTasks/Tracks/AliEMCalTriggerRecTrackAnalysisComponent.cxx
  EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalTriggerTreeWriter.cxx
 )
diff --git a/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.cxx b/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.cxx
new file mode 100644 (file)
index 0000000..ff370e4
--- /dev/null
@@ -0,0 +1,173 @@
+/**************************************************************************
+ * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+/*
+ * Analysis component counting events for different trigger classes. Task needs
+ * to be grouped with a global event selection
+ *
+ *   Author: Markus Fasel
+ */
+#include <map>
+#include <string>
+
+#include "AliVEvent.h"
+#include "AliVVertex.h"
+
+#include "AliEMCalTriggerAnaTriggerDecision.h"
+#include "AliEMCalTriggerBinningComponent.h"
+#include "AliEMCalTriggerEventData.h"
+#include "AliEMCalHistoContainer.h"
+#include "AliEMCalTriggerEventCounterAnalysisComponent.h"
+
+ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerEventCounterAnalysisComponent)
+
+namespace EMCalTriggerPtAnalysis {
+
+//______________________________________________________________________________
+AliEMCalTriggerEventCounterAnalysisComponent::AliEMCalTriggerEventCounterAnalysisComponent():
+  AliEMCalTriggerTracksAnalysisComponent()
+{
+  /*
+   * Default (I/O) constructor, not to be used
+   */
+}
+
+//______________________________________________________________________________
+AliEMCalTriggerEventCounterAnalysisComponent::AliEMCalTriggerEventCounterAnalysisComponent(const char *name):
+  AliEMCalTriggerTracksAnalysisComponent(name)
+{
+  /*
+   * Main constructor
+   */
+}
+
+//______________________________________________________________________________
+void AliEMCalTriggerEventCounterAnalysisComponent::CreateHistos() {
+  /*
+   * Create event counter histograms
+   */
+  AliEMCalTriggerTracksAnalysisComponent::CreateHistos();
+
+  // Create trigger definitions
+  std::map<std::string, std::string> triggerCombinations;
+  const char *triggernames[11] = {"MinBias", "EMCJHigh", "EMCJLow", "EMCGHigh",
+      "EMCGLow", "EMCHighBoth", "EMCHighGammaOnly", "EMCHighJetOnly",
+      "EMCLowBoth", "EMCLowGammaOnly", "EMCLowJetOnly"};
+  // Define names and titles for different triggers in the histogram container
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[0], "min. bias events"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[1], "jet-triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[2], "jet-triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[3], "gamma-triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[4], "gamma-triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[5], "jet and gamma triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[6], "exclusively gamma-triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[7], "exclusively jet-triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[8], "jet and gamma triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[9], "exclusively gamma-triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[10], "exclusively-triggered events (low threshold)"));
+
+  AliEMCalTriggerBinningDimension *vertexbinning = fBinning->GetBinning("zvertex");
+
+  for(std::map<std::string,std::string>::iterator it = triggerCombinations.begin(); it != triggerCombinations.end(); ++it){
+    const std::string name = it->first, &title = it->second;
+    // Create event-based histogram
+    fHistos->CreateTH1(Form("hEventHist%s", name.c_str()), Form("Event-based data for %s events; pileup rejection; z_{V} (cm)", title.c_str()), vertexbinning->GetNumberOfBins(), vertexbinning->GetBinLimits());
+  }
+
+  // Make correlation histogram for different trigger classes
+  const TAxis *triggeraxis[5]; memset(triggeraxis, 0, sizeof(const TAxis *) * 5);
+  const char *binlabels[2] = {"OFF", "ON"};
+  TAxis mytrgaxis[5];
+  for(int itrg = 0; itrg < 5; ++itrg){
+    DefineAxis(mytrgaxis[itrg], triggernames[itrg], triggernames[itrg], 2, -0.5, 1.5, binlabels);
+    triggeraxis[itrg] = mytrgaxis+itrg;
+  }
+  fHistos->CreateTHnSparse("hEventTriggers", "Trigger type per event", 5, triggeraxis);
+}
+
+//______________________________________________________________________________
+void AliEMCalTriggerEventCounterAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
+  /*
+   * Do event counting
+   */
+  if(!fTriggerDecision) return;
+
+  double vz = data->GetRecEvent()->GetPrimaryVertex()->GetZ();
+  double triggerCorrelation[5]; memset(triggerCorrelation, 0, sizeof(double) * 5);
+
+  if(fTriggerDecision->IsMinBias()){
+    triggerCorrelation[0] = 1.;
+    fHistos->FillTH1("hEventHistMinBias", vz);
+  }
+  if(fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCJHigh)){
+    triggerCorrelation[2] = 1.;
+    fHistos->FillTH1("hEventHistEMCJHigh", vz);
+    // Check whether also the gamma high-threshold trigger fired
+    if(fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCGHigh)){
+      fHistos->FillTH1("hEventHistEMCHighBoth", vz);
+    } else {
+      fHistos->FillTH1("hEventHistEMCHighJetOnly", vz);
+    }
+  }
+  if(fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCJLow)){
+    triggerCorrelation[1] = 1.;
+    fHistos->FillTH1("hEventHistEMCJLow", vz);
+    // Check whether also the gamma high-threshold trigger fired
+    if(fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCGLow)){
+      fHistos->FillTH1("hEventHistEMCLowBoth", vz);
+    } else {
+      fHistos->FillTH1("hEventHistEMCLowJetOnly", vz);
+    }
+  }
+  if(fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCGHigh)){
+    triggerCorrelation[3] = 1.;
+    fHistos->FillTH1("hEventHistEMCGHigh", vz);
+    if(!fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCJHigh))
+      fHistos->FillTH1("hEventHistEMCHighGammaOnly", vz);
+  }
+  if(fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCGLow)){
+    triggerCorrelation[4] = 1.;
+    fHistos->FillTH1("hEventHistEMCGLow", vz);
+    if(!fTriggerDecision->IsTriggered(AliEMCalTriggerAnaTriggerDecision::kTAEMCJLow))
+      fHistos->FillTH1("hEventHistEMCLowGammaOnly", vz);
+  }
+
+  fHistos->FillTHnSparse("hEventTriggers", triggerCorrelation);
+}
+
+//______________________________________________________________________________
+void AliEMCalTriggerEventCounterAnalysisComponent::DefineAxis(TAxis& axis, const char* name,
+    const char* title, int nbins, double min, double max,
+    const char** labels) const {
+  /*
+   * Define an axis with number of bins from min to max
+   *
+   * @param axis: Axis to be defined
+   * @param name: Name of the axis
+   * @param title: Title of the axis
+   * @param nbins: Number of bins
+   * @param min: lower limit of the axis
+   * @param max: upper limit of the axis
+   * @param labels (@optional): array of bin labels
+   */
+  axis.Set(nbins, min, max);
+  axis.SetName(name);
+  axis.SetTitle(title);
+  if(labels){
+    for(int ib = 1; ib <= axis.GetNbins(); ++ib)
+      axis.SetBinLabel(ib, labels[ib-1]);
+  }
+}
+
+} /* namespace EMCalTriggerPtAnalysis */
diff --git a/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.h b/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerEventCounterAnalysisComponent.h
new file mode 100644 (file)
index 0000000..cbd8050
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef ALIEMCALTRIGGEREVENTCOUNTERANALYSISCOMPONENT_H
+#define ALIEMCALTRIGGEREVENTCOUNTERANALYSISCOMPONENT_H
+/* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+// Author: Markus Fasel
+
+#include "AliEMCalTriggerTracksAnalysisComponent.h"
+
+namespace EMCalTriggerPtAnalysis {
+
+class AliEMCalTriggerEventData;
+
+class AliEMCalTriggerEventCounterAnalysisComponent: public AliEMCalTriggerTracksAnalysisComponent {
+public:
+  AliEMCalTriggerEventCounterAnalysisComponent();
+  AliEMCalTriggerEventCounterAnalysisComponent(const char *name);
+  virtual ~AliEMCalTriggerEventCounterAnalysisComponent() {}
+
+  virtual void CreateHistos();
+  virtual void Process(const AliEMCalTriggerEventData * const data);
+
+protected:
+  void DefineAxis(TAxis& axis, const char* name,
+      const char* title, int nbins, double min, double max,
+      const char** labels) const;
+
+  ClassDef(AliEMCalTriggerEventCounterAnalysisComponent, 1);    // Analysis component for event counting
+};
+
+} /* namespace EMCalTriggerPtAnalysis */
+
+#endif /* ALIEMCALTRIGGEREVENTCOUNTERANALYSISCOMPONENT_H */
diff --git a/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.cxx b/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.cxx
new file mode 100644 (file)
index 0000000..fb51c3c
--- /dev/null
@@ -0,0 +1,117 @@
+/**************************************************************************
+ * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+/*
+ * Analysis component for different trigger patches
+ *
+ *   Author: Markus Fasel
+ */
+#include <TClonesArray.h>
+
+#include "AliEmcalTriggerPatchInfo.h"
+#include "AliEMCalTriggerBinningComponent.h"
+#include "AliEMCalTriggerEventData.h"
+#include "AliEMCalTriggerPatchAnalysisComponent.h"
+
+ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerPatchAnalysisComponent)
+
+namespace EMCalTriggerPtAnalysis {
+
+//______________________________________________________________________________
+AliEMCalTriggerPatchAnalysisComponent::AliEMCalTriggerPatchAnalysisComponent() :
+  AliEMCalTriggerTracksAnalysisComponent()
+{
+  /*
+   * Dummy (I/O) constructor, not to be used
+   */
+}
+
+//______________________________________________________________________________
+AliEMCalTriggerPatchAnalysisComponent::AliEMCalTriggerPatchAnalysisComponent(const char *name) :
+  AliEMCalTriggerTracksAnalysisComponent(name)
+{
+  /*
+   * Main constructor, to be used by the users
+   */
+}
+
+//______________________________________________________________________________
+void AliEMCalTriggerPatchAnalysisComponent::CreateHistos() {
+  /*
+   * Create histograms for the trigger patch analysis
+   */
+  AliEMCalTriggerBinningDimension *etabinning = fBinning->GetBinning("eta"),
+      *phibinning = fBinning->GetBinning("phi");
+  const TAxis *patchenergyaxes[4] = {
+    DefineAxis("energy", 100, 0., 100),
+    DefineAxis("eta", etabinning),
+    DefineAxis("phi", phibinning),
+    DefineAxis("isMain", 2, -0.5, 1.5)
+  };
+  const TAxis *patchampaxes[4] = {
+    DefineAxis("amplitude", 10000, 0., 10000.),
+    DefineAxis("eta", etabinning),
+    DefineAxis("phi",  phibinning),
+    DefineAxis("isMain", 2, -0.5, 1.5)
+  };
+
+  std::string patchnames[] = {"Level0", "JetHigh", "JetLow", "GammaHigh", "GammaLow"};
+  for(std::string * triggerpatch = patchnames; triggerpatch < patchnames + sizeof(patchnames)/sizeof(std::string); ++triggerpatch){
+    fHistos->CreateTHnSparse(Form("Energy%s", triggerpatch->c_str()), Form("Patch energy for %s trigger patches", triggerpatch->c_str()), 4, patchenergyaxes, "s");
+    fHistos->CreateTHnSparse(Form("EnergyRough%s", triggerpatch->c_str()), Form("Rough patch energy for %s trigger patches", triggerpatch->c_str()), 4, patchenergyaxes, "s");
+    fHistos->CreateTHnSparse(Form("Amplitude%s", triggerpatch->c_str()), Form("Patch amplitude for %s trigger patches", triggerpatch->c_str()), 4, patchampaxes, "s");
+  }
+
+}
+
+//______________________________________________________________________________
+void AliEMCalTriggerPatchAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
+  /*
+   * Run trigger patch analysis
+   */
+  AliEmcalTriggerPatchInfo *triggerpatch(NULL);
+  TIter patchIter(data->GetTriggerPatchContainer());
+  while((triggerpatch = dynamic_cast<AliEmcalTriggerPatchInfo *>(patchIter()))){
+    double triggerpatchinfo[4] = {triggerpatch->GetPatchE(), triggerpatch->GetEtaGeo(), triggerpatch->GetPhiGeo(), triggerpatch->IsMainTrigger() ? 1. : 0.};
+    double triggerpatchinfoamp[4] = {static_cast<double>(triggerpatch->GetADCAmp()), triggerpatch->GetEtaGeo(), triggerpatch->GetPhiGeo(), triggerpatch->IsMainTrigger() ? 1. : 0.};
+    double triggerpatchinfoer[4] = {triggerpatch->GetADCAmpGeVRough(), triggerpatch->GetEtaGeo(), triggerpatch->GetPhiGeo(), triggerpatch->IsMainTrigger() ? 1. : 0.};
+    if(triggerpatch->IsJetHigh()){
+      fHistos->FillTHnSparse("EnergyJetHigh", triggerpatchinfo);
+      fHistos->FillTHnSparse("AmplitudeJetHigh", triggerpatchinfoamp);
+      fHistos->FillTHnSparse("EnergyRoughJetHigh", triggerpatchinfoer);
+    }
+    if(triggerpatch->IsJetLow()){
+      fHistos->FillTHnSparse("EnergyJetLow", triggerpatchinfo);
+      fHistos->FillTHnSparse("AmplitudeJetLow", triggerpatchinfoamp);
+      fHistos->FillTHnSparse("EnergyRoughJetLow", triggerpatchinfoer);
+    }
+    if(triggerpatch->IsGammaHigh()){
+      fHistos->FillTHnSparse("EnergyGammaHigh", triggerpatchinfo);
+      fHistos->FillTHnSparse("AmplitudeGammaHigh", triggerpatchinfoamp);
+      fHistos->FillTHnSparse("EnergyRoughGammaHigh", triggerpatchinfoer);
+    }
+    if(triggerpatch->IsGammaLow()){
+      fHistos->FillTHnSparse("EnergyGammaLow", triggerpatchinfo);
+      fHistos->FillTHnSparse("AmplitudeGammaLow", triggerpatchinfoamp);
+      fHistos->FillTHnSparse("EnergyRoughGammaLow", triggerpatchinfoer);
+    }
+    if(triggerpatch->IsLevel0()){
+      fHistos->FillTHnSparse("EnergyLevel0", triggerpatchinfo);
+      fHistos->FillTHnSparse("AmplitudeLevel0", triggerpatchinfoamp);
+      fHistos->FillTHnSparse("EnergyRoughLevel0", triggerpatchinfoer);
+    }
+  }
+}
+
+} /* namespace EMCalTriggerPtAnalysis */
diff --git a/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.h b/PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerPatchAnalysisComponent.h
new file mode 100644 (file)
index 0000000..e08f12c
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef ALIEMCALTRIGGERPATCHANALYSISCOMPONENT_H
+#define ALIEMCALTRIGGERPATCHANALYSISCOMPONENT_H
+/* Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+// Author: Markus Fasel
+
+#include "AliEMCalTriggerTracksAnalysisComponent.h"
+
+namespace EMCalTriggerPtAnalysis {
+
+class AliEMCalTriggerEventData;
+
+class AliEMCalTriggerPatchAnalysisComponent: public AliEMCalTriggerTracksAnalysisComponent {
+public:
+  AliEMCalTriggerPatchAnalysisComponent();
+  AliEMCalTriggerPatchAnalysisComponent(const char *name);
+  virtual ~AliEMCalTriggerPatchAnalysisComponent() { }
+
+  virtual void CreateHistos();
+  virtual void Process(const AliEMCalTriggerEventData * const data);
+
+protected:
+
+  ClassDef(AliEMCalTriggerPatchAnalysisComponent, 1);     // Component for trigger patch analysis
+};
+
+} /* namespace EMCalTriggerPtAnalysis */
+
+#endif /* ALIEMCALTRIGGERPATCHANALYSISCOMPONENT_H */
index 3e13fcc..73e4b3a 100644 (file)
@@ -89,8 +89,8 @@ void AliEMCalTriggerRecTrackAnalysisComponent::CreateHistos() {
    */
   // Create trigger definitions
   std::map<std::string, std::string> triggerCombinations;
-  const char *triggernames[12] = {"MinBias", "EMCJHigh", "EMCJLow", "EMCGHigh",
-      "EMCGLow", "NoEMCal", "EMCHighBoth", "EMCHighGammaOnly", "EMCHighJetOnly",
+  const char *triggernames[11] = {"MinBias", "EMCJHigh", "EMCJLow", "EMCGHigh",
+      "EMCGLow", "EMCHighBoth", "EMCHighGammaOnly", "EMCHighJetOnly",
       "EMCLowBoth", "EMCLowGammaOnly", "EMCLowJetOnly"};
   // Define names and titles for different triggers in the histogram container
   triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[0], "min. bias events"));
@@ -98,13 +98,12 @@ void AliEMCalTriggerRecTrackAnalysisComponent::CreateHistos() {
   triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[2], "jet-triggered events (low threshold)"));
   triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[3], "gamma-triggered events (high threshold)"));
   triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[4], "gamma-triggered events (low threshold)"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[5], "non-EMCal-triggered events"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[6], "jet and gamma triggered events (high threshold)"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[7], "exclusively gamma-triggered events (high threshold)"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[8], "exclusively jet-triggered events (high threshold)"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[9], "jet and gamma triggered events (low threshold)"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[10], "exclusively gamma-triggered events (low threshold)"));
-  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[11], "exclusively-triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[5], "jet and gamma triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[6], "exclusively gamma-triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[7], "exclusively jet-triggered events (high threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[8], "jet and gamma triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[9], "exclusively gamma-triggered events (low threshold)"));
+  triggerCombinations.insert(std::pair<std::string,std::string>(triggernames[10], "exclusively-triggered events (low threshold)"));
 
   // Create axis definitions
   const AliEMCalTriggerBinningDimension *ptbinning = fBinning->GetBinning("pt"),
index c1505f1..639ed0f 100644 (file)
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerAnaTriggerDecision+;
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerMCParticleAnalysisComponent+;
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerClusterAnalysisComponent+;
+#pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerEventCounterAnalysisComponent+;
+#pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerPatchAnalysisComponent+;
 #pragma link C++ class EMCalTriggerPtAnalysis::AliEMCalTriggerRecTrackAnalysisComponent+;
 #pragma link C++ class AliAnalysisTaskEmcalTriggerTreeWriter+;