Adding kAliHLTDataTypeTrack as valid input. Conversion of the input data to
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 10 Jul 2009 23:43:43 +0000 (23:43 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 10 Jul 2009 23:43:43 +0000 (23:43 +0000)
AliKalmanFilter objects is done by using AliHLTGlobalBarrelTrack. Adding the
correct library dependencies because the trigger lib now needs the Util lib.

Added argument scan and default OCDB entry for AliHLTTriggerBarrelMultiplicity component.

Correcting compilation warning in AliHLTTriggerAgent.

HLT/libAliHLTTrigger.pkg
HLT/trigger/AliHLTTriggerAgent.h
HLT/trigger/AliHLTTriggerBarrelMultiplicity.cxx
HLT/trigger/AliHLTTriggerBarrelMultiplicity.h
HLT/trigger/Makefile.am
OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root [new file with mode: 0644]

index 2d8c973a285e21b81f58cc3555f87fec808eb46e..447c25e93679cd8c367109303703f50c87be420a 100644 (file)
@@ -44,7 +44,7 @@ MODULE_HDRS:=         $(CLASS_HDRS)
 # enable automatic generation. 
 MODULE_DHDR:=  AliHLTTriggerLinkDef.h
 
-EINCLUDE := HLT/BASE HLT/trigger HLT/TPCLib
+EINCLUDE := HLT/BASE HLT/BASE/util HLT/trigger HLT/TPCLib
 
 LIBRARY_DEP := -lHLTbase
 
index 87412023dc45ff1400bfb3ac5c5008d3f5003553..3838cd3c79d59ace3a24f877ecbeb0df766f8fa0 100644 (file)
@@ -105,6 +105,11 @@ class AliHLTTriggerAgent : public AliHLTModuleAgent {
     int ReleaseProcessedData(const AliHLTUInt8_t* pData, int size);
 
   private:
+    /** copy constructor forbidden */
+    AliHLTTriggerDecisionHandler(const AliHLTTriggerDecisionHandler&);
+    /** assignment operator forbidden */
+    AliHLTTriggerDecisionHandler& operator=(const AliHLTTriggerDecisionHandler&);
+
     AliESDEvent* fESD; //!
     TArrayC* fpData;  //!
     int fSize; //!
index cfcf8063c257fb1aa0e90358f071b8c54f1ab625..02e87df6a20f39ce66ac90e3c49b4204427a5185 100644 (file)
@@ -31,6 +31,7 @@
 #include "AliESDEvent.h"
 #include "AliHLTTriggerDecision.h"
 #include "AliHLTDomainEntry.h"
+#include "AliHLTGlobalBarrelTrack.h"
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTTriggerBarrelMultiplicity)
@@ -48,6 +49,8 @@ AliHLTTriggerBarrelMultiplicity::AliHLTTriggerBarrelMultiplicity()
   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
 }
 
+const char* AliHLTTriggerBarrelMultiplicity::fgkOCDBEntry="HLT/ConfigHLT/BarrelMultiplicityTrigger";
+
 AliHLTTriggerBarrelMultiplicity::~AliHLTTriggerBarrelMultiplicity()
 {
   // see header file for class documentation
@@ -68,22 +71,41 @@ AliHLTComponent* AliHLTTriggerBarrelMultiplicity::Spawn()
 int AliHLTTriggerBarrelMultiplicity::DoTrigger()
 {
   // see header file for class documentation
+  int iResult=0;
+  int numberOfTracks=-1;
+
+  // try the ESD as input
   const TObject* obj = GetFirstInputObject(kAliHLTAllDataTypes, "AliESDEvent");
   AliESDEvent* esd = dynamic_cast<AliESDEvent*>(const_cast<TObject*>(obj));
   TString description;
   TString ptcut;
   if (esd != NULL) {
+    numberOfTracks=0;
     esd->GetStdContent();
     
-    unsigned int numberOfTracks=0;
     for (Int_t i = 0; i < esd->GetNumberOfTracks(); i++) {
-      AliESDtrack* track = esd->GetTrack(i);
-      if (track && track->Pt() >= fPtMin &&
-         (fPtMax<=fPtMin || track->Pt() < fPtMax)) {
-       numberOfTracks++;
+      if (CheckCondition(esd->GetTrack(i))) numberOfTracks++;
+    }
+  }
+
+  // try the AliHLTExternal track data as input
+  if (iResult>=0 && numberOfTracks<0) {
+    for (const AliHLTComponentBlockData* pBlock=GetFirstInputBlock(kAliHLTDataTypeTrack);
+        pBlock!=NULL; pBlock=GetNextInputBlock()) {
+      vector<AliHLTGlobalBarrelTrack> tracks;
+      if ((iResult=AliHLTGlobalBarrelTrack::ConvertTrackDataArray(reinterpret_cast<const AliHLTTracksData*>(pBlock->fPtr), pBlock->fSize, tracks))>0) {
+       for (vector<AliHLTGlobalBarrelTrack>::iterator element=tracks.begin();
+            element!=tracks.end(); element++) {
+         if (CheckCondition(&(*element))) numberOfTracks++;
+       }
+      } else if (iResult<0) {
+       HLTError("can not extract tracks from data block of type %s (specification %08x) of size %d: error %d", 
+                DataType2Text(pBlock->fDataType).c_str(), pBlock->fSpecification, pBlock->fSize, iResult);
       }
     }
+  }
 
+  if (iResult>=0 && numberOfTracks>=0) {
     if (fPtMax>fPtMin) {
       ptcut.Form(" %.02f GeV/c <= pt < %.02f GeV/c", fPtMin, fPtMax);
     } else {
@@ -109,10 +131,88 @@ int AliHLTTriggerBarrelMultiplicity::DoTrigger()
       TriggerEvent(true);
       return 0;
     }
+    description.Form("No tracks matching the tresholds found in the central barrel (min tracks %d, %s)",
+                    fMinTracks, ptcut.Data());
+  } else {
+    description.Form("No input blocks found");
   }
-  description.Form("No tracks matching the tresholds found in the central barrel (min tracks %d, %s)",
-                  fMinTracks, ptcut.Data());
   SetDescription(description.Data());
   TriggerEvent(false);
+  return iResult;
+}
+
+template<class T>
+bool AliHLTTriggerBarrelMultiplicity::CheckCondition(T* track)
+{
+  // see header file for class documentation
+  if (track && track->Pt() >= fPtMin &&
+      (fPtMax<=fPtMin || track->Pt() < fPtMax)) {
+    return true;
+  }
+  return false;
+}
+
+int AliHLTTriggerBarrelMultiplicity::DoInit(int argc, const char** argv)
+{
+  // see header file for class documentation
+
+  // first configure the default
+  int iResult=ConfigureFromCDBTObjString(fgkOCDBEntry);
+
+  // configure from the command line parameters if specified
+  if (iResult>=0 && argc>0)
+    iResult=ConfigureFromArgumentString(argc, argv);
+  return iResult;
+}
+
+int AliHLTTriggerBarrelMultiplicity::DoDeinit()
+{
+  // see header file for class documentation
   return 0;
 }
+
+int AliHLTTriggerBarrelMultiplicity::Reconfigure(const char* cdbEntry, const char* /*chainId*/)
+{
+  // 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;
+
+  return ConfigureFromCDBTObjString(entry);
+}
+
+int AliHLTTriggerBarrelMultiplicity::ScanConfigurationArgument(int argc, const char** argv)
+{
+  // see header file for class documentation
+  if (argc<=0) return 0;
+  int i=0;
+  TString argument=argv[i];
+
+  // -maxpt
+  if (argument.CompareTo("-maxpt")==0) {
+    if (++i>=argc) return -EPROTO;
+    argument=argv[i];
+    fPtMax=argument.Atof();
+    return 2;
+  }    
+
+  // -minpt
+  if (argument.CompareTo("-minpt")==0) {
+    if (++i>=argc) return -EPROTO;
+    argument=argv[i];
+    fPtMin=argument.Atof();
+    return 2;
+  }    
+
+  // -mintracks
+  if (argument.CompareTo("-mintracks")==0) {
+    if (++i>=argc) return -EPROTO;
+    argument=argv[i];
+    fMinTracks=argument.Atoi();
+    return 2;
+  }    
+  
+  // unknown argument
+  return -EINVAL;
+}
index f9aca35544d7a0863e008f96dc06ee253f5158e5..4c2a79ba6b691346372fb878e22f37fbfc8d27b6 100644 (file)
@@ -14,6 +14,8 @@
 
 #include "AliHLTTrigger.h"
 
+class AliESDtrack;
+
 /**
  * @class  AliHLTTriggerBarrelMultiplicity
  * HLT trigger component for charged particle multiplicity in the
@@ -32,16 +34,37 @@ class AliHLTTriggerBarrelMultiplicity : public AliHLTTrigger
   /// inherited from AliHLTComponent: create an instance
   virtual AliHLTComponent* Spawn();
 
+ protected:
+  /// inherited from AliHLTComponent: handle the initialization
+  int DoInit(int argc, const char** argv);
+
+  /// inherited from AliHLTComponent: handle cleanup
+  int DoDeinit();
+
+  /// inherited from AliHLTComponent: handle re-configuration event
+  int Reconfigure(const char* cdbEntry, const char* chainId);
+
+  /// inherited from AliHLTComponent, scan one argument and
+  /// its parameters
+  int ScanConfigurationArgument(int argc, const char** argv);
+
  private:
   /// inherited from AliHLTTrigger: calculate the trigger
   virtual int DoTrigger();
 
+  /// check whether a track meets the criteria
+  template<class T>
+  bool CheckCondition(T* track);
+
   /// pt cut, minimum
   float fPtMin; //! transient
   /// pt cut, maximum
   float fPtMax; //! transient
   /// required number of tracks
-  unsigned int fMinTracks; //!tracks
+  int fMinTracks; //!transient
+
+  /// the default configuration entry for this component
+  static const char* fgkOCDBEntry; //!transient
 
   ClassDef(AliHLTTriggerBarrelMultiplicity, 0)
 };
index 8f2bf38a1a57f2f0d66527ada5d300fe36a03b9c..4db49dbff651ce02549d4f88b5de25264bcab08f 100644 (file)
@@ -74,7 +74,7 @@ AM_CPPFLAGS                   = -DMODULE=$(MODULE) \
 # using external modules. The AliRoot, ROOT and HLT base libraries
 # are added by default.
 # Also the version of the library 
-#libAliHLTTPC_la_LIBADD                = $(top_builddir)/BASE/TPCLib/libAliHLTTPC.la
+libAliHLTTrigger_la_LIBADD     = $(top_builddir)/BASE/util/libAliHLTUtil.la
 libAliHLTTrigger_la_LDFLAGS    = -L@ROOTLIBDIR@ \
                                  @ROOTLIBS@ \
                                  @HLTBASE_LDFLAGS@ \
diff --git a/OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root b/OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root
new file mode 100644 (file)
index 0000000..83d9510
Binary files /dev/null and b/OCDB/HLT/ConfigHLT/BarrelMultiplicityTrigger/Run0_999999999_v0_s0.root differ