X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HLT%2FSampleLib%2FAliHLTAgentSample.cxx;h=939a8d63637071fa2f1aad66d74b905b38eced2b;hb=982fe123096dc09b1c5e87b71d4d364bacb5abfb;hp=1c8d80d0fe74d88ee99a9366db9c94caaab502ac;hpb=12ec5482aa826b2cb3d989d9094ef0a311ded83b;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/SampleLib/AliHLTAgentSample.cxx b/HLT/SampleLib/AliHLTAgentSample.cxx index 1c8d80d0fe7..939a8d63637 100644 --- a/HLT/SampleLib/AliHLTAgentSample.cxx +++ b/HLT/SampleLib/AliHLTAgentSample.cxx @@ -24,15 +24,21 @@ #include #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; +}