]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/AliHLTProcessor.cxx
adding common functionality for the magnetic field to the component interface
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTProcessor.cxx
CommitLineData
f23a6e1a 1// $Id$
2
3/**************************************************************************
9be2600f 4 * This file is property of and copyright by the ALICE HLT Project *
5 * ALICE Experiment at CERN, All rights reserved. *
f23a6e1a 6 * *
9be2600f 7 * Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no> *
8 * Timm Steinbeck <timm@kip.uni-heidelberg.de> *
9 * for The ALICE HLT Project. *
f23a6e1a 10 * *
11 * Permission to use, copy, modify and distribute this software and its *
12 * documentation strictly for non-commercial purposes is hereby granted *
13 * without fee, provided that the above copyright notice appears in all *
14 * copies and that both the copyright notice and this permission notice *
15 * appear in the supporting documentation. The authors make no claims *
16 * about the suitability of this software for any purpose. It is *
17 * provided "as is" without express or implied warranty. *
18 **************************************************************************/
19
bfccbf68 20/** @file AliHLTProcessor.cxx
21 @author Matthias Richter, Timm Steinbeck
22 @date
23 @brief Base class implementation for HLT analysis components. */
f23a6e1a 24
0c0c9d99 25#if __GNUC__>= 3
f23a6e1a 26using namespace std;
27#endif
28
29#include "AliHLTProcessor.h"
30#include <string.h>
31
b22e91eb 32/** ROOT macro for the implementation of ROOT specific class methods */
f23a6e1a 33ClassImp(AliHLTProcessor)
34
35AliHLTProcessor::AliHLTProcessor()
36{
70ed7d01 37 // see header file for class documentation
38 // or
39 // refer to README to build package
40 // or
41 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
f23a6e1a 42}
43
44AliHLTProcessor::~AliHLTProcessor()
45{
70ed7d01 46 // see header file for class documentation
f23a6e1a 47}
48
3cde846d 49int AliHLTProcessor::DoProcessing( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
8ede8717 50 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
a655eae3 51 AliHLTUInt32_t& size,
52 vector<AliHLTComponentBlockData>& outputBlocks,
8ede8717 53 AliHLTComponentEventDoneData*& edd )
f23a6e1a 54{
70ed7d01 55 // see header file for class documentation
f23a6e1a 56 int iResult=0;
eafbc306 57 ReleaseEventDoneData();
58
a655eae3 59 iResult=DoEvent(evtData, blocks, trigData, outputPtr, size, outputBlocks);
eafbc306 60
71d7c760 61 edd = NULL;
eafbc306 62 AliHLTComponentEventDoneData* eddTmp = GetCurrentEventDoneData();
63 if (eddTmp) {
64 int ret = GetEventDoneData(eddTmp->fDataSize, &edd);
65 if (ret) {
66 HLTError( "Cannot get event done data of %u bytes for event %lu: %s (%d)",
67 eddTmp->fDataSize, evtData.fEventID, strerror(ret), ret );
68 return -ENOMEM;
69 }
70 edd->fStructSize = sizeof(AliHLTComponentEventDoneData);
71 edd->fDataSize = eddTmp->fDataSize;
72 edd->fData = reinterpret_cast<AliHLTUInt8_t*>(edd)+edd->fStructSize;
73 memcpy( edd->fData, eddTmp->fData, eddTmp->fDataSize );
74 }
f23a6e1a 75 return iResult;
76}
a655eae3 77
78int AliHLTProcessor::DoEvent( const AliHLTComponentEventData& evtData,
298ef463 79 const AliHLTComponentBlockData* /*blocks*/,
80 AliHLTComponentTriggerData& trigData,
81 AliHLTUInt8_t* /*outputPtr*/,
53f79557 82 AliHLTUInt32_t& size,
298ef463 83 vector<AliHLTComponentBlockData>& /*outputBlocks*/ )
a655eae3 84{
85 // we just forward to the high level method, all other parameters already
86 // have been stored internally
53f79557 87 size=0;
a655eae3 88 return DoEvent(evtData, trigData);
89}
90
298ef463 91int AliHLTProcessor::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/)
a655eae3 92{
93 HLTFatal("no processing method implemented");
94 return -ENOSYS;
95}