]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/SampleLib/AliHLTAgentSample.cxx
activating automatic emulation of TPC compressed clusters
[u/mrichter/AliRoot.git] / HLT / SampleLib / AliHLTAgentSample.cxx
index 1c8d80d0fe74d88ee99a9366db9c94caaab502ac..939a8d63637071fa2f1aad66d74b905b38eced2b 100644 (file)
 
 #include <cassert>
 #include "AliHLTAgentSample.h"
-#include "AliHLTConfiguration.h"
 #include "TSystem.h"
 
 // header files of library components
 #include "AliHLTDummyComponent.h"
+#include "AliHLTSampleComponent1.h"
+#include "AliHLTSampleComponent2.h"
+#include "AliHLTSampleMonitoringComponent.h"
 
 // header file of the module preprocessor
 #include "AliHLTSamplePreprocessor.h"
 
+// raw data handler of HLTOUT data
+#include "AliHLTOUTHandlerEquId.h"
+#include "AliHLTOUTHandlerEsdBranch.h"
+
 /** global instance for agent registration */
 AliHLTAgentSample gAliHLTAgentSample;
 
@@ -43,6 +49,8 @@ const char* AliHLTAgentSample::fgkAliHLTAgentSampleOut="/tmp/hltout";
 ClassImp(AliHLTAgentSample)
 
 AliHLTAgentSample::AliHLTAgentSample()
+  :
+  AliHLTModuleAgent("Sample")
 {
   // see header file for class documentation
   // or
@@ -66,7 +74,7 @@ AliHLTAgentSample::~AliHLTAgentSample()
 
 int AliHLTAgentSample::CreateConfigurations(AliHLTConfigurationHandler* handler,
                                            AliRawReader* /*rawReader*/,
-                                           AliRunLoader* /*runloader*/) const
+                                           AliRunLoader* runloader) const
 {
   // see header file for class documentation
 
@@ -90,20 +98,25 @@ int AliHLTAgentSample::CreateConfigurations(AliHLTConfigurationHandler* handler,
     arg="-datafile "; arg+=fgkAliHLTAgentSampleOut;
     handler->CreateConfiguration("sample-sink1", "FileWriter"   , "sample-cp" , arg.Data());
 
+    // specific example for the AliRoot simulation (run loader present)
+    if (runloader) {
     // sample offline source
     handler->CreateConfiguration("sample-offsrc", "AliLoaderPublisher"   , NULL , "-loader TPCLoader -tree digits -verbose");
 
     // sample offline sink
     handler->CreateConfiguration("sample-offsnk", "SampleOfflineDataSink"   , "sample-offsrc" , NULL);
+    }
   }
   return 0;
 }
 
 const char* AliHLTAgentSample::GetReconstructionChains(AliRawReader* /*rawReader*/,
-                                                      AliRunLoader* /*runloader*/) const
+                                                      AliRunLoader* runloader) const
 {
   // see header file for class documentation
-  return "sample-sink1 sample-offsnk";
+  if (runloader) return "sample-sink1 sample-offsnk";
+
+  return "sample-sink1";
 }
 
 const char* AliHLTAgentSample::GetRequiredComponentLibraries() const
@@ -118,6 +131,10 @@ int AliHLTAgentSample::RegisterComponents(AliHLTComponentHandler* pHandler) cons
   assert(pHandler);
   if (!pHandler) return -EINVAL;
   pHandler->AddComponent(new AliHLTDummyComponent);
+  pHandler->AddComponent(new AliHLTSampleComponent1);
+  pHandler->AddComponent(new AliHLTSampleComponent2);
+  pHandler->AddComponent(new AliHLTSampleMonitoringComponent);
+
   return 0;
 }
 
@@ -126,3 +143,57 @@ AliHLTModulePreprocessor* AliHLTAgentSample::GetPreprocessor()
   // see header file for class documentation
   return new AliHLTSamplePreprocessor;
 }
+
+int AliHLTAgentSample::GetHandlerDescription(AliHLTComponentDataType dt,
+                                            AliHLTUInt32_t spec,
+                                            AliHLTOUTHandlerDesc& desc) const
+{
+  // see header file for class documentation
+  if (dt==(kAliHLTDataTypeDDLRaw|kAliHLTDataOriginSample)) {
+      desc=AliHLTOUTHandlerDesc(kRawReader, dt, GetModuleId());
+      HLTInfo("module %s handles data block type %s specification %d (0x%x)", 
+             GetModuleId(), AliHLTComponent::DataType2Text(dt).c_str(), spec, spec);
+      return 1;
+  }
+
+  // add TObject data blocks of type {ROOTTOBJ:SMPL} to ESD
+  if (dt==(kAliHLTDataTypeTObject|kAliHLTDataOriginSample)) {
+      desc=AliHLTOUTHandlerDesc(kEsd, dt, GetModuleId());
+      HLTInfo("module %s handles data block type %s specification %d (0x%x)", 
+             GetModuleId(), AliHLTComponent::DataType2Text(dt).c_str(), spec, spec);
+      return 1;
+  }
+
+  return 0;
+}
+
+AliHLTOUTHandler* AliHLTAgentSample::GetOutputHandler(AliHLTComponentDataType dt,
+                                                  AliHLTUInt32_t /*spec*/)
+{
+  // see header file for class documentation
+  if (dt==(kAliHLTDataTypeDDLRaw|kAliHLTDataOriginSample)) {
+    // use the default handler
+    static AliHLTOUTHandlerEquId handler;
+    return &handler;
+  }
+
+  if (dt==(kAliHLTDataTypeTObject|kAliHLTDataOriginSample)) {
+    // use AliHLTOUTHandlerEsdBranch handler to add the TObject
+    // to the ESD branch
+    // Note: the object should have an appropriate name returned
+    // by GetName(). Use SetName() to prepare the object before streaming
+    static AliHLTOUTHandlerEsdBranch handler;
+    return &handler;
+  }
+
+  return NULL;
+}
+
+int AliHLTAgentSample::DeleteOutputHandler(AliHLTOUTHandler* pInstance)
+{
+  // see header file for class documentation
+  if (pInstance==NULL) return -EINVAL;
+
+  // nothing to delete, the handler have been defined static
+  return 0;
+}