* interface is going to be compiled independently of AliHLT, new
* interface provided by the libHLTinterface.so
* AliHLTComponentEnvironment -> AliHLTAnalysisEnvironment
+ * 9 added data types for arrays of AliHLTExternalTrackParam sets and
+ * TClonesArrays of AliExternalTrackParam objects.
+ * 10 Changes for information objects neededfor running with offline
+ * chains and analysis tasks.
+ * kAliHLTMCObjectDataType added
+ * kAliHLTDataOriginOffline added
+ * kAliHLTDataOriginHLT added
+ * 11 extended AliHLTComponentStatistics: one more member to store the
+ * cycle time between events per component.
+ * 12 added common data type id 'CLUSTERS'
+ * added data type 'ECSPARAM' for the full ECS parameter string to
+ * be sebt during SOR
+ * added kAliHLTDataTypeTrackMC (TRACK_MC) data type
+ * added data types (note: interface version stays the same
+ * kAliHLTDataTypeDAQRDOUT (DAQRDOUT)
+ * kAliHLTDataTypeTriggerDecision (TRIG_DEC)
+ * kAliHLTDataTypeGlobalTrigger (GLOBTRIG)
*/
-#define ALIHLT_DATA_TYPES_VERSION 8
+#define ALIHLT_DATA_TYPES_VERSION 12
//////////////////////////////////////////////////////////////////////////
//
// the operator|
//
// AliHLTComponentDataType dt;
-// dt = kAliHLTDataTypeDDLRaw | gkAliHLTDataOriginTPC;
+// dt = kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC;
//
//////////////////////////////////////////////////////////////////////////
*/
extern const char kAliHLTDataOriginOut[kAliHLTComponentDataTypefOriginSize];
+/** Data origin HLT, used for HLT specifc data
+ * in offline chains. This not a bug!
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginHLT[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin Offline
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginOffline[kAliHLTComponentDataTypefOriginSize];
+
/** Data origin HLT/PubSub private internal
* @ingroup alihlt_component_datatypes
*/
*/
extern const char kAliHLTDataOriginPHOS[kAliHLTComponentDataTypefOriginSize];
+/** Data origin FMD
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginFMD[kAliHLTComponentDataTypefOriginSize];
+
/** Data origin MUON
* @ingroup alihlt_component_datatypes
*/
*/
extern const char kAliHLTDataOriginITS[kAliHLTComponentDataTypefOriginSize];
+/** Data origin ITS SPD
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginITSSPD[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin ITS SDD
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginITSSDD[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin ITS SSD
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginITSSSD[kAliHLTComponentDataTypefOriginSize];
+
/** Data origin for examples
* @ingroup alihlt_component_datatypes
*/
*/
# define kAliHLTDDLRawDataTypeID {'D','D','L','_','R','A','W',' '}
+/** CLUSTERS data
+ * Common data type for the output of cluster finders, the exact
+ * format depends on the origin (detector)
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTClustersDataTypeID {'C','L','U','S','T','E','R','S'}
+
/** calibration data for file exchange subscriber
* @ingroup alihlt_component_datatypes
*/
*/
# define kAliHLTDDLDataTypeID {'D','D','L','L','I','S','T',' '}
+/** DAQ readout list
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTDAQRDOUTDataTypeID "DAQRDOUT"
+
/** EventType event
* - empty payload, specification gives eventType
* @ingroup alihlt_component_datatypes
*/
# define kAliHLTEventDataTypeID {'E','V','E','N','T','T','Y','P'}
+/** ECS parameter event
+ * - sent during the SOR event by the framework
+ * - contains the full ECS parameter string
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTECSParamDataTypeID {'E','C','S','P','A','R','A','M'}
+
/** ComponentConfiguration event
* - payload contains the CDB path as string
* @ingroup alihlt_component_datatypes
*/
# define kAliHLTUpdtDCSDataTypeID {'U','P','D','T','_','D','C','S'}
+/** MC data block
+ * an AliMCEvent object of varying origin
+ * The 'V0' at the end allows a versioning
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTMCObjectDataTypeID {'A','L','I','M','C','_','V','0'}
+
/** ESD data block
* an AliESD object of varying origin
* The 'V0' at the end allows a versioning
*/
# define kAliHLTRunSummaryDataTypeID {'R','U','N','S','U','M','M','A'}
+/** Trigger decision
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTTriggerDecisionDataTypeID {'T','R','I','G','_','D','E','C'}
+
+/** Global trigger decision
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTGlobalTriggerDataTypeID {'G','L','O','B','T','R','I','G'}
+
/** Block Statistics
* - small block statistics info added to the data stream by
* the component base class
*/
#define kAliHLTTNtupleDataTypeID {'R','O','O','T','T','U','P','L'}
+/** HLT Track
+ * - Struct for Tracks based on AliExternalTrackParam
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTrackDataTypeID {'H','L','T','T','R','A','C','K'}
+
+/** Track Monte Carlo information
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTrackMCDataTypeID {'T','R','A','C','K','_','M','C'}
+
+/** TClonesArray of AliExternalTrackParam
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTExternalTrackParamDataTypeID {'T','C','A','E','X','T','T','R'}
+
+/** HLT Jet
+ * - Struct for jets based on AliHLTJETJets
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTJetDataTypeID {'H','L','T','J','E','T','V','0'}
+
using namespace std;
extern "C" {
*/
struct AliHLTComponentEventData
{
- AliHLTUInt32_t fStructSize;
- AliHLTEventID_t fEventID;
- AliHLTUInt32_t fEventCreation_s;
- AliHLTUInt32_t fEventCreation_us;
- AliHLTUInt32_t fBlockCnt;
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ AliHLTEventID_t fEventID; /// 64 bit event ID number.
+ AliHLTUInt32_t fEventCreation_s; /// Event creation time in seconds (Should be added to fEventCreation_us*1e6).
+ AliHLTUInt32_t fEventCreation_us; /// Fractional event creation time in micro seconds.
+ AliHLTUInt32_t fBlockCnt; /// The number of raw data blocks received by the component.
};
/**
*/
struct AliHLTComponentShmData
{
- AliHLTUInt32_t fStructSize;
- AliHLTUInt32_t fShmType;
- AliHLTUInt64_t fShmID;
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ AliHLTUInt32_t fShmType; /// The type code of the shared memory.
+ AliHLTUInt64_t fShmID; /// The shared memory identifier.
};
/**
*/
struct AliHLTComponentDataType
{
- AliHLTUInt32_t fStructSize;
- char fID[kAliHLTComponentDataTypefIDsize]; //!
- char fOrigin[kAliHLTComponentDataTypefOriginSize]; //!
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ char fID[kAliHLTComponentDataTypefIDsize]; /// Data type identifier.
+ char fOrigin[kAliHLTComponentDataTypefOriginSize]; /// Subsystem or detector origin of the data.
};
/**
*/
struct AliHLTComponentBlockData
{
- /* size and version of the struct */
+ /** size and version of the struct */
AliHLTUInt32_t fStructSize;
- /* shared memory key, ignored by processing components */
+ /** shared memory key, ignored by processing components */
AliHLTComponentShmData fShmKey;
- /* offset of output data relative to the output buffer */
+ /** offset of output data relative to the output buffer */
AliHLTUInt32_t fOffset;
- /* start of the data for input data blocks, fOffset to be ignored*/
+ /** start of the data for input data blocks, fOffset to be ignored*/
void* fPtr;
- /* size of the data block */
+ /** size of the data block */
AliHLTUInt32_t fSize;
- /* data type of the data block */
+ /** data type of the data block */
AliHLTComponentDataType fDataType;
- /* data specification of the data block */
+ /** data specification of the data block */
AliHLTUInt32_t fSpecification;
};
*/
struct AliHLTComponentEventDoneData
{
- AliHLTUInt32_t fStructSize;
- AliHLTUInt32_t fDataSize;
- void* fData;
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ AliHLTUInt32_t fDataSize; /// Size of the data section (following this data member) in bytes.
+ void* fData; /// Start of the data section.
};
/**
*/
struct AliHLTRunDesc
{
- AliHLTUInt32_t fStructSize;
- AliHLTUInt32_t fRunNo;
- AliHLTUInt32_t fRunType;
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ AliHLTUInt32_t fRunNo; /// The run number for the current active run.
+ AliHLTUInt32_t fRunType; /// The HLT run type.
};
/**
* fLevel is retrieved from incoming block statistics and incremented.
* Incoming block statistics are appended to the newly added one if
* --enable-compstat=full has been chosen.
+ *
+ * ChangeLog:
+ * 2009-01-14 fComponentCycleTime added
*/
struct AliHLTComponentStatistics
{
- AliHLTUInt32_t fStructSize;
- AliHLTUInt32_t fLevel;
- AliHLTUInt32_t fId;
- AliHLTUInt32_t fTime;
- AliHLTUInt32_t fCTime;
- AliHLTUInt32_t fInputBlockCount;
- AliHLTUInt32_t fTotalInputSize;
- AliHLTUInt32_t fOutputBlockCount;
- AliHLTUInt32_t fTotalOutputSize;
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ AliHLTUInt32_t fLevel; /// Indicates from which processing stage this information is from.
+ AliHLTUInt32_t fId; /// Unique identifier for the chain based on CRC code.
+ AliHLTUInt32_t fTime; /// Real wall time used to process the data (micro seconds).
+ AliHLTUInt32_t fCTime; /// CPU time used to process the data (micro seconds).
+ AliHLTUInt32_t fInputBlockCount; /// Number of input data blocks.
+ AliHLTUInt32_t fTotalInputSize; /// Total size in bytes of input data.
+ AliHLTUInt32_t fOutputBlockCount; /// Number of output data blocks.
+ AliHLTUInt32_t fTotalOutputSize; /// Total size in bytes of output data.
+ AliHLTUInt32_t fComponentCycleTime; /// Real wall time indicating the start of the data processing (micro seconds).
};
/**
* adds its chain id and component arguments to the list.
* The 'length' of the structure is variable and depends on the length
* of the strings in the buffer at the end.
+ *
+ * ComponentTableEntries are identified by a 32bit Id generated by a CRC
+ * algorithm from the chain Id of the component. This is not a 100% unique
+ * id but with a high probability. This approach accounts for the fact
+ * that all components are separated processes.
*/
struct AliHLTComponentTableEntry
{
+ /** Size of this structure in bytes. */
AliHLTUInt32_t fStructSize;
- /** the 32bit Id is generated by a CRC algorithm from the
- chain Id of the component. This is not a 100% unique id
- but with a high probability */
- AliHLTUInt32_t fId;
- /** size of the chain id string in the appended buffer */
- AliHLTUInt8_t fSizeChainId;
- /** size of the comp argument string in the appended buffer */
- AliHLTUInt8_t fSizeCompArgs;
- /** some reserved size */
- AliHLTUInt8_t fSizeReserved;
+ /** size of the array of parent ids */
+ AliHLTUInt16_t fNofParents;
+ /** size of the description string in the appended buffer */
+ AliHLTUInt8_t fSizeDescription;
/** the strings: chain id, component args, reserved */
AliHLTUInt8_t fBuffer[1];
};
*/
struct AliHLTEventDDL
{
- AliHLTUInt32_t fCount;
- AliHLTUInt32_t fList[gkAliHLTDDLListSize];
+ AliHLTUInt32_t fCount; /// Indicates the number of words in fList.
+ AliHLTUInt32_t fList[gkAliHLTDDLListSize]; /// The list of DDL enable/disable bits.
};
/**
*/
struct AliHLTEventTriggerData
{
- AliHLTUInt8_t fAttributes[gkAliHLTBlockDAttributeCount];
- AliHLTUInt64_t fHLTStatus; // Bit field
- AliHLTUInt32_t fCommonHeaderWordCnt;
- AliHLTUInt32_t fCommonHeader[gkAliHLTCommonHeaderCount];
- AliHLTEventDDL fReadoutList;
+ AliHLTUInt8_t fAttributes[gkAliHLTBlockDAttributeCount]; /// List of data block attibutes.
+ AliHLTUInt64_t fHLTStatus; /// Bit field
+ AliHLTUInt32_t fCommonHeaderWordCnt; /// Number of words in fCommonHeader.
+ AliHLTUInt32_t fCommonHeader[gkAliHLTCommonHeaderCount]; /// The common header words.
+ AliHLTEventDDL fReadoutList; /// The readout list structure.
};
/**
*/
struct AliHLTComponentTriggerData
{
- AliHLTUInt32_t fStructSize;
- AliHLTUInt32_t fDataSize;
- void* fData;
+ AliHLTUInt32_t fStructSize; /// Size of this structure in bytes.
+ AliHLTUInt32_t fDataSize; /// Size of the data section (following this data member) in bytes.
+ void* fData; /// Start of the data section.
};
//////////////////////////////////////////////////////////////////////////
*/
extern const AliHLTComponentDataType kAliHLTDataTypeDDL;
+ /** DAQ readout list
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeDAQRDOUT;
+
+ /** CLUSTERS data
+ * Common data type for the output of cluster finders, the exact
+ * format depends on the origin (detector)
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeClusters;
+
/** SOR data type
* @ingroup alihlt_component_datatypes
*/
*/
extern const AliHLTComponentDataType kAliHLTDataTypeEvent;
+ /** ECS parameter event
+ * - sent during the SOR event by the framework
+ * - contains the full ECS parameter string
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeECSParam; // {ECSPARAM:PRIV}
+
/** Configuration event data type
* @ingroup alihlt_component_datatypes
*/
*/
extern const AliHLTComponentDataType kAliHLTDataTypeDDLRaw;
+ /** AliMCEvent object data specification, origin is 'OFFL'
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeMCObject;
+
/** ESD object data specification, origin is 'any'
* @ingroup alihlt_component_datatypes
*/
extern const AliHLTComponentDataType kAliHLTDataTypeESDObject;
/** ESD Tree data specification, origin is 'any'
-
- * @ingroup alihlt_component_datatypes
- */
+ * @ingroup alihlt_component_datatypes
+ */
extern const AliHLTComponentDataType kAliHLTDataTypeESDTree;
/** AliRoot TreeD data specification, origin is 'any'
*/
extern const AliHLTComponentDataType kAliHLTDataTypeRunStatistics;
- /** Event summary
+ /** Run summary
* @ingroup alihlt_component_datatypes
*/
extern const AliHLTComponentDataType kAliHLTDataTypeRunSummary;
+ /** Trigger decision
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeTriggerDecision; // {TRIG_DEC:HLT }
+
+ /** Global trigger decision
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeGlobalTrigger; // {GLOBTRIG:HLT }
+
/** Component block statistics
* @ingroup alihlt_component_datatypes
*/
*/
extern const AliHLTComponentDataType kAliHLTDataTypeTNtuple; // {ROOTTUPL,"***"}
+ /** General track array for the barrel tracks based on AliExternalTrackParam
+ * Data format defined by AliHLTTracksData
+ *
+ * We follow the naming scheme of AliESDEvent where 'Tracks' denote the
+ * barrel tracks and detector tracks get names 'DETTracks'
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeTrack; // {HLTTRACK,"***"}
+
+ /** Track Monte Carlo information
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeTrackMC; // {TRACK_MC,"***"}
+
+ /** TClonesArray of AliExternalTrackParam
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeExternalTrackParam; // {TCAEXTTR,"***"}
+
+ /** Container containing jets (AliHLTJETJets)
+ * Containing TClonesArray of AliAODJets
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeJet; // {HLTJETV0,"***"}
+
+ /** Container of ITS tracks
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType fgkITSTracksDataType;
+
+ /** Container of calorimeter clusters
+ * @ingroup alihlt_component_datatypes
+ */
+ extern const AliHLTComponentDataType kAliHLTDataTypeCaloCluster;
+
//////////////////////////////////////////////////////////////////////////
//
// FXS subscriber meta information
/** Header in front of the data payload, in order to sent data to the FXS. */
struct AliHLTFXSHeader
{
- AliHLTUInt32_t fHeaderVersion;
- AliHLTUInt32_t fRunNumber;
- char fOrigin[gkAliHLTFXSHeaderfOriginSize];
- char fFileID[gkAliHLTFXSHeaderfFileIDSize];
- char fDDLNumber[gkAliHLTFXSHeaderfDDLNumberSize];
+ AliHLTUInt32_t fHeaderVersion; /// HLT software version number.
+ AliHLTUInt32_t fRunNumber; /// The current run number.
+ char fOrigin[gkAliHLTFXSHeaderfOriginSize]; /// The detector from which the FXS data is received.
+ char fFileID[gkAliHLTFXSHeaderfFileIDSize]; /// File identifier for the stored data.
+ char fDDLNumber[gkAliHLTFXSHeaderfDDLNumberSize]; /// The DDL bits.
};
//////////////////////////////////////////////////////////////////////////
/** size of the structure */
AliHLTUInt32_t fStructSize;
- /** the component parameter given by the framework on creation
- */
+ /** the component parameter given by the framework on creation */
void* fParam;
- /** allocated memory
- */
+ /** allocated memory */
void* (*fAllocMemoryFunc)( void* param, unsigned long size );
- /** allocate an EventDoneData structure.
- */
+ /** allocate an EventDoneData structure. */
int (*fGetEventDoneDataFunc)( void* param, AliHLTEventID_t eventID, unsigned long size, AliHLTComponentEventDoneData** edd );
- /** logging callback
- */
+ /** logging callback */
AliHLTfctLogging fLoggingFunc;
};
#if 0
{
AliHLTComponentDataType dt=kAliHLTVoidDataType;
int i=0;
- for (i = 0; i < kAliHLTComponentDataTypefIDsize; i++)
+ for (i = 0; i < kAliHLTComponentDataTypefIDsize && id[i]!=0; i++)
dt.fID[i]=id[i];
for (i = 0; i < kAliHLTComponentDataTypefOriginSize && origin[i]!=0; i++ )
dt.fOrigin[i]=origin[i];