implementing possibility of multiple BarrelMultiplicityTrigger instances with differe...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Dec 2009 06:50:38 +0000 (06:50 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Dec 2009 06:50:38 +0000 (06:50 +0000)
the name f the trigger is set by the '-triggername <name>' option
configurations are loaded from HLT/ConfigHLT/<name>

adding EMCAL to the readoutlist for triggered events, and removing HLT TPC clusters from readout list

HLT/trigger/AliHLTTriggerBarrelMultiplicity.cxx
HLT/trigger/AliHLTTriggerBarrelMultiplicity.h

index 784f2d3..b5e13ef 100644 (file)
@@ -49,6 +49,7 @@ AliHLTTriggerBarrelMultiplicity::AliHLTTriggerBarrelMultiplicity()
   , fMinTDca(-1.)
   , fMaxTDca(-1.)
   , fSolenoidBz(0.0)
+  , fName()
 {
   // see header file for class documentation
   // or
@@ -59,7 +60,7 @@ AliHLTTriggerBarrelMultiplicity::AliHLTTriggerBarrelMultiplicity()
   for (int i=0; i<fgkDCAReferenceSize; i++) fDCAReference[i]=0.0;
 }
 
-const char* AliHLTTriggerBarrelMultiplicity::fgkOCDBEntry="HLT/ConfigHLT/BarrelMultiplicityTrigger";
+const char* AliHLTTriggerBarrelMultiplicity::fgkDefaultOCDBEntry="HLT/ConfigHLT/BarrelMultiplicityTrigger";
 
 AliHLTTriggerBarrelMultiplicity::~AliHLTTriggerBarrelMultiplicity()
 {
@@ -116,6 +117,7 @@ int AliHLTTriggerBarrelMultiplicity::DoTrigger()
     }
   }
 
+  bool condition=false;
   if (iResult>=0 && numberOfTracks>=0) {
     if (fPtMax>fPtMin) {
       ptcut.Form(" %.02f GeV/c <= pt < %.02f GeV/c", fPtMin, fPtMax);
@@ -173,13 +175,11 @@ int AliHLTTriggerBarrelMultiplicity::DoTrigger()
                              AliHLTReadoutList::kTRD |
                              AliHLTReadoutList::kTOF |
                              AliHLTReadoutList::kHMPID |
-                             AliHLTReadoutList::kPHOS
+                             AliHLTReadoutList::kPHOS |
+                             AliHLTReadoutList::kEMCAL
                              );
-      // Add the available HLT information for readout too.
-      GetTriggerDomain().Add("CLUSTERS", "TPC ");
-      TriggerEvent(true);
-      return 0;
-    }
+      condition=true;
+    } else {
     description.Form("No tracks matching the tresholds found in the central barrel (min tracks %d, ", fMinTracks);
     description+=ptcut;
     description+=op1st;
@@ -188,11 +188,21 @@ int AliHLTTriggerBarrelMultiplicity::DoTrigger()
     description+=tdca;
     description+=dcaref;
     description+=")";
+    }
   } else {
     description.Form("No input blocks found");
   }
-  SetDescription(description.Data());
-  TriggerEvent(false);
+
+  // add a specific trigger decision object with initialized name
+  // the readout list however is fixed 
+  AliHLTTriggerDecision decision(
+                                condition,
+                                fName.IsNull()?GetTriggerName():fName.Data(),
+                                GetReadoutList(),
+                                description.Data()
+                                );
+  TriggerEvent(&decision, kAliHLTDataTypeTObject|kAliHLTDataOriginOut);
+
   return iResult;
 }
 
@@ -224,17 +234,39 @@ bool AliHLTTriggerBarrelMultiplicity::CheckCondition(T* track, float b)
 int AliHLTTriggerBarrelMultiplicity::DoInit(int argc, const char** argv)
 {
   // see header file for class documentation
+  int iResult=0;
+
+  // check if the -triggername argument is used
+  // the name of the trigger determines the following initialization
+  vector<const char*> remainingArgs;
+  for (int i=0; i<argc; i++) {
+    if (strcmp(argv[i], "-triggername")==0) {
+      if (++i<argc) fName=argv[i];
+      else {
+       HLTError("invalid parameter for argument '-triggername', string expected");
+       return -EINVAL;
+      }
+      continue;
+    }
+    remainingArgs.push_back(argv[i]);
+  }
 
   // first configure the default
-  int iResult=0;
-  iResult=ConfigureFromCDBTObjString(fgkOCDBEntry);
+  TString cdbPath;
+  if (!fName.IsNull()) {
+    cdbPath="HLT/ConfigHLT/";
+    cdbPath+=fName;
+  } else {
+    cdbPath=fgkDefaultOCDBEntry;
+  }
+  iResult=ConfigureFromCDBTObjString(cdbPath);
 
   // configure from the command line parameters if specified
   if (iResult>=0 && argc>0)
-    iResult=ConfigureFromArgumentString(argc, argv);
-  return iResult;
+    iResult=ConfigureFromArgumentString(remainingArgs.size(), &(remainingArgs[0]));
 
   fSolenoidBz=GetBz();
+  return iResult;
 }
 
 int AliHLTTriggerBarrelMultiplicity::DoDeinit()
@@ -248,12 +280,19 @@ int AliHLTTriggerBarrelMultiplicity::Reconfigure(const char* cdbEntry, const cha
   // see header file for class documentation
 
   // configure from the specified antry or the default one
-  const char* entry=cdbEntry;
-  if (!entry || entry[0]==0) {
-    entry=fgkOCDBEntry;
+  TString cdbPath;
+  if (!cdbEntry || cdbEntry[0]==0) {
+    if (!fName.IsNull()) {
+      cdbPath="HLT/ConfigHLT/";
+      cdbPath+=fName;
+    } else {
+      cdbPath=fgkDefaultOCDBEntry;
+    }
+  } else {
+    cdbPath=cdbEntry;
   }
 
-  return ConfigureFromCDBTObjString(entry);
+  return ConfigureFromCDBTObjString(cdbPath);
 }
 
 int AliHLTTriggerBarrelMultiplicity::ReadPreprocessorValues(const char* /*modules*/)
index da71e16..d669cf3 100644 (file)
@@ -13,6 +13,7 @@
 ///         the central barrel.
 
 #include "AliHLTTrigger.h"
+#include "TString.h"
 
 class AliESDtrack;
 
@@ -21,7 +22,14 @@ class AliESDtrack;
  * HLT trigger component for charged particle multiplicity in the
  * central barrel.
  * 
- * Triggers on charged particle number in a certain pt range.
+ * Triggers on charged particle number in a certain pt range and geometrical
+ * acceptance
+ * 
+ * Multiple instances of this component can serve different trigger
+ * conditions, i.e. component parameters. The different instances get
+ * different names, specified by the '-triggername' component argument.
+ * The configuration is loaded from OCDB entries according to the name, see
+ * below.
  *
  * <h2>General properties:</h2>
  *
@@ -55,15 +63,15 @@ class AliESDtrack;
  *      minimum transverse dca to reference point
  * \li -max-tdca    <i> dca  </i> <br>
  *      maximum transverse dca to reference point
- * \li  -solenoidBz    <i> field  </i> <br>
- *      magnetic field needed if the input is not an ESD object
+ * \li  -triggername    <i> name  </i> <br>
+ *      The name of this specific trigger.
  *
  * By default, configuration is loaded from OCDB, can be overridden by
  * component arguments.
  *
  * <h2>Default CDB entries:</h2>
- * HLT/ConfigHLT/BarrelMultiplicityTrigger: TObjString storing the arguments
- * HLT/ConfigHLT/Solenoidbz: TObjString -solenoidBz field
+ * HLT/ConfigHLT/BarrelMultiplicityTrigger: TObjString storing the arguments <br>
+ * HLT/ConfigHLT/<name>: for triggers with specific names
  *
  * <h2>Performance:</h2>
  * 
@@ -125,18 +133,20 @@ class AliHLTTriggerBarrelMultiplicity : public AliHLTTrigger
   /// reference point for the transverse and longitudinal dca cut
   float fDCAReference[fgkDCAReferenceSize];
   /// minimum longitudinal dca to reference point
-  float fMinLDca;
+  float fMinLDca; //!transient
   /// maximum longitudinal dca to reference point
-  float fMaxLDca;
+  float fMaxLDca; //!transient
   /// minimum transverse dca to reference point
-  float fMinTDca;
+  float fMinTDca; //!transient
   /// maximum transverse dca to reference point
-  float fMaxTDca;
+  float fMaxTDca; //!transient
   /// magnetic field (dca estimation for)
-  float fSolenoidBz;
+  float fSolenoidBz; //!transient
+  /// name of the trigger
+  TString fName; //!transient
 
   /// the default configuration entry for this component
-  static const char* fgkOCDBEntry; //!transient
+  static const char* fgkDefaultOCDBEntry; //!transient
 
   ClassDef(AliHLTTriggerBarrelMultiplicity, 0)
 };