Adding custom linkdef file so that dictionaries are correctly generated for AliHLTTri...
authoraszostak <aszostak@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Dec 2008 09:16:52 +0000 (09:16 +0000)
committeraszostak <aszostak@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Dec 2008 09:16:52 +0000 (09:16 +0000)
Bug fixes and documentation fix in AliHLTRootFilePublisherComponent.
Adding the global trigger object to the library (AliHLTTriggerAgent).
Adding a method for pushing custom trigger decision objects to AliHLTTrigger and performing some cleanup.

HLT/BASE/AliHLTDataTypes.h
HLT/BASE/util/AliHLTRootFilePublisherComponent.cxx
HLT/BASE/util/AliHLTRootFilePublisherComponent.h
HLT/libAliHLTTrigger.pkg
HLT/trigger/AliHLTTrigger.cxx
HLT/trigger/AliHLTTrigger.h
HLT/trigger/AliHLTTriggerAgent.cxx
HLT/trigger/AliHLTTriggerLinkDef.h [new file with mode: 0644]

index 076a1d4..ef2410b 100644 (file)
@@ -487,8 +487,8 @@ extern "C" {
   struct AliHLTComponentDataType
   {
     AliHLTUInt32_t fStructSize;
-    char fID[kAliHLTComponentDataTypefIDsize];                      //!
-    char fOrigin[kAliHLTComponentDataTypefOriginSize];              //!
+    char fID[kAliHLTComponentDataTypefIDsize];                      ///
+    char fOrigin[kAliHLTComponentDataTypefOriginSize];              ///
   };
 
   /**
index d1cf2fc..11793fa 100644 (file)
@@ -101,6 +101,7 @@ Int_t AliHLTRootFilePublisherComponent::ScanArgument(Int_t argc, const char** ar
   TString argument = "";
   TString parameter = "";
   Int_t bMissingParam = 0;
+  fObjectName = "";  // Reset this to the default: read all objects in the file.
   
   argument=argv[iResult];
   if (argument.IsNull()) return -EINVAL;
@@ -166,7 +167,7 @@ Int_t AliHLTRootFilePublisherComponent::GetEvent( const AliHLTComponentEventData
          for ( Int_t i = 0; i < pFile->GetListOfKeys()->GetEntries(); i++  ){
            TKey * key= dynamic_cast<TKey*>( pFile->GetListOfKeys()->At(i) );
 
-           if ( fObjectName ) {
+           if ( fObjectName != "" ) {
              if ( !( ((TString) key->GetName()).CompareTo(fObjectName) ) )
                PushBack( key->ReadObj(), *pFileDesc, *pFileDesc ); 
            }
index ae4a7c5..874d4e5 100644 (file)
  * @class AliHLTRootFilePublisherComponent
  * An HLT data source component which publishes root objects from one 
  * or a sequence of root files. Be aware, one root file can contain 
- * several root objects. Either all objects or one objectcan be selected.<br>
+ * several root objects. Either all objects or just one object can be selected.<br>
  *
  * <h2>General properties:</h2>
  *
- * Component ID: \b RootFilePublisher <br>
+ * Component ID: \b ROOTFilePublisher <br>
  * Library: \b libAliHLTUtil.so     <br>
  * Input Data Types: none <br>
  * Output Data Types: according to arguments <br>
index 044d0f5..ffa4ce4 100644 (file)
@@ -43,7 +43,7 @@ MODULE_HDRS:=         $(CLASS_HDRS)
 # If the default behavior is not enough, you can provide a custom
 # *LinkDef.h to the MODULE_DHDR variable. Leave MODULE_DHDR empty to
 # enable automatic generation. 
-MODULE_DHDR:=          
+MODULE_DHDR:=  AliHLTTriggerLinkDef.h
 
 EINCLUDE := HLT/BASE HLT/trigger HLT/TPCLib
 
index 49f4d8a..473d122 100644 (file)
@@ -38,19 +38,20 @@ AliHLTTrigger::AliHLTTrigger() :
        fReadoutList(),
        fTriggerDomain()
 {
-  /// Default constructor sets pointers to NULL.
+  // Default constructor sets pointers to NULL.
 }
 
 
 AliHLTTrigger::~AliHLTTrigger()
 {
-  /// Default destructor.
+  // Default destructor.
 }
 
 
 void AliHLTTrigger::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
 {
-  /// Returns output data size estimate.
+  // Returns output data size estimate.
+  // See header file for more details.
 
   constBase = sizeof(AliHLTTriggerDecision);
   inputMultiplier = 1;
@@ -59,8 +60,8 @@ void AliHLTTrigger::GetOutputDataSize(unsigned long& constBase, double& inputMul
 
 int AliHLTTrigger::DoEvent(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData)
 {
-  /// Sets the pointers to the evtData and trigData, then calls the DoTrigger to
-  /// execute the actual trigger algorithm.
+  // Sets the pointers to the evtData and trigData, then calls the DoTrigger to
+  // execute the actual trigger algorithm.
 
   fEventData = &evtData;
   fTriggerData = &trigData;
@@ -85,10 +86,50 @@ int AliHLTTrigger::DoEvent(const AliHLTComponentEventData& evtData, AliHLTCompon
 
 void AliHLTTrigger::TriggerEvent(bool value)
 {
-  /// Sets the trigger decision for the current event.
+  // Sets the trigger decision for the current event.
+  // See header file for more details.
   
   if (fTriggerEventResult != 0) return;  // Do not do anything if a previous call failed.
   AliHLTTriggerDecision triggerResult(value, GetTriggerName(), fReadoutList, fTriggerDomain, fDescription);
   fTriggerEventResult = PushBack(&triggerResult, kAliHLTDataTypeTObject|kAliHLTDataOriginOut);
+  if (fTriggerEventResult == 0) fDecisionMade = true;
+}
+
+
+void AliHLTTrigger::TriggerEvent(
+    AliHLTTriggerDecision* result, const AliHLTComponentDataType& type,
+    AliHLTUInt32_t spec
+  )
+{
+  // Sets a custom trigger decision for the current event.
+  // See header file for more details.
+  
+  if (fTriggerEventResult != 0) return;  // Do not do anything if a previous call failed.
+  fTriggerEventResult = PushBack(result, type, spec);
+  if (fTriggerEventResult == 0) fDecisionMade = true;
+}
+
+
+void AliHLTTrigger::GetInputDataTypes(AliHLTComponentDataTypeList& list)
+{
+  // Calls the const version of this method.
+  
+  // Assign to const temporary variable to make sure we call the constant version
+  // of the GetOutputDataTypes method.
+  const AliHLTTrigger* t = this;
+  t->GetOutputDataTypes(list);
+}
+
+
+int AliHLTTrigger::GetOutputDataTypes(AliHLTComponentDataTypeList& list)
+{
+  // Calls the const version of this method.
+  
+  // Assign to const temporary variable to make sure we call the constant version
+  // of the GetOutputDataTypes method.
+  const AliHLTTrigger* t = this;
+  t->GetOutputDataTypes(list);
+  list.push_back(kAliHLTDataTypeTObject|kAliHLTDataOriginOut);
+  return list.size();
 }
 
index 64d8185..526a10e 100644 (file)
@@ -13,6 +13,8 @@
 #include "AliHLTReadoutList.h"
 #include "AliHLTTriggerDomain.h"
 
+class AliHLTTriggerDecision;
+
 /**
  * \class AliHLTTrigger
  * This is the base class from which all HLT trigger components should inherit.
@@ -96,6 +98,21 @@ class AliHLTTrigger : public AliHLTProcessor
   void TriggerEvent(bool value = true);
   
   /**
+   * Fills the output with the given trigger decision. This should be called in the
+   * DoTrigger method when a custom trigger decision has been constructed.
+   * @param value  The custom trigger decision object.
+   * @param datatype  The data block type to use (set to
+   *    kAliHLTDataTypeTObject|kAliHLTDataOriginOut by default).
+   * @param spec  The data block specification to use (set to kAliHLTVoidDataSpec
+   *    by default).
+   */
+  void TriggerEvent(
+      AliHLTTriggerDecision* result,
+      const AliHLTComponentDataType& type = kAliHLTDataTypeTObject|kAliHLTDataOriginOut,
+      AliHLTUInt32_t spec = kAliHLTVoidDataSpec
+    );
+  
+  /**
    * Returns the event data structure for the current event.
    * NULL is returned if this method is not called inside the DoTrigger method.
    */
@@ -194,7 +211,14 @@ class AliHLTTrigger : public AliHLTProcessor
    * @return kAliHLTMultipleDataType is returned.
    */
   virtual AliHLTComponentDataType GetOutputDataType() { return kAliHLTMultipleDataType; };
-
+  /**
+   * Inherited from AliHLTComponent. This method is deprecated so we hide it.
+   * Rather use the const version of this method which this method calls anyway.
+   * @param list     list to receive the output data types.
+   */
+  virtual void GetInputDataTypes(AliHLTComponentDataTypeList& list);
+  
   /**
    * Inherited from AliHLTComponent. This method is replaced with one that is
    * symmetric to GetInputDataTypes that returns void, so we make this method
@@ -203,12 +227,7 @@ class AliHLTTrigger : public AliHLTProcessor
    * @param list     list to receive the output data types.
    * @return the number of elements in the list.
    */
-  virtual int GetOutputDataTypes(AliHLTComponentDataTypeList& list)
-  {
-    const AliHLTTrigger* t = this; t->GetOutputDataTypes(list);
-    list.push_back(kAliHLTDataTypeTObject);
-    return list.size();
-  }
+  virtual int GetOutputDataTypes(AliHLTComponentDataTypeList& list);
   
   const AliHLTComponentEventData* fEventData; //! Event data for the current event. Only valid inside DoTrigger.
   AliHLTComponentTriggerData* fTriggerData; //! Trigger data for the current event. Only valid inside DoTrigger.
index 1b9fa4a..2b8e68c 100644 (file)
@@ -28,6 +28,7 @@
 // header files of library components
 #include "AliHLTEventSummaryProducerComponent.h"
 #include "AliHLTRunSummaryProducerComponent.h"
+#include "AliHLTGlobalTriggerComponent.h"
 
 /** global instance for agent registration */
 AliHLTTriggerAgent gAliHLTTriggerAgent;
@@ -56,7 +57,7 @@ int AliHLTTriggerAgent::RegisterComponents(AliHLTComponentHandler* pHandler) con
   // see header file for class documentation
   assert(pHandler);
   if (!pHandler) return -EINVAL;
-  //pHandler->AddComponent(new );
+  pHandler->AddComponent(new AliHLTGlobalTriggerComponent);
   return 0;
 }
 
diff --git a/HLT/trigger/AliHLTTriggerLinkDef.h b/HLT/trigger/AliHLTTriggerLinkDef.h
new file mode 100644 (file)
index 0000000..3c1f7ff
--- /dev/null
@@ -0,0 +1,21 @@
+#ifdef __CINT__
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+#pragma link C++ class AliHLTTrigger+;
+#pragma link C++ class AliHLTTriggerDecision+;
+#pragma link C++ class AliHLTTriggerDomain+;
+#pragma link C++ struct AliHLTComponentDataType+;
+#pragma link C++ class AliHLTDomainEntry+;
+#pragma link C++ struct AliHLTEventDDL+;
+#pragma link C++ class AliHLTReadoutList+;
+#pragma link C++ class AliHLTGlobalTriggerDecision+;
+#pragma link C++ class AliHLTGlobalTriggerComponent+;
+#pragma link C++ class AliHLTTriggerAgent+;
+#pragma link C++ class AliHLTEventSummary+;
+#pragma link C++ class AliHLTEventSummaryProducerComponent+;
+#pragma link C++ class AliHLTRunSummary+;
+#pragma link C++ class AliHLTRunSummaryProducerComponent+;
+#pragma link C++ class AliHLTTriggerSelectiveReadoutComponent+;
+#pragma link C++ class AliHLTTriggerMonitoringComponent+;
+#endif