+//////////////////////////////////////////////////////////////////////////
+//
+// version no of HLT data types
+//
+//////////////////////////////////////////////////////////////////////////
+
+/* Version Description
+ * 1 first version until June 07; implicite, not tagged
+ * 2 introduced June 07, enhanced/cleaned/arranged structure
+ * 3 2007-11-15 RAW DDL data type added; some inconsistencies fixed
+ * ('void' and 'any' origins); added signed HLT basic data types
+ * 2007-11-23 origin defines have become variables in conjunction
+ * to be used with the operator| (AliHLTComponentDataType)
+ * 2007-11-24 added trigger structs and ESD tree data type
+ * 4 Component configuration and DCS update events added
+ * gkAliHLTDDLListSize set from 29 to 30 according to new PubSub
+ * specs
+ * 5 Data types for Run and Event summary, and for monitoring added
+ * 6 Common data types for TreeD and TreeR defined
+ * kAliHLTAllDataTypes and kAliHLTDataOriginSample added
+ * kAliHLTDataOriginEMCAL added
+ * kAliHLTDataTypeRunType added
+ * 7 kAliHLTDataTypeComponentStatistics, kAliHLTDataTypeComponentTable,
+ * and AliHLTComponentStatistics have been added for optional
+ * component block statistics
+ * 8 new wrapper interface has been introduced, old wrapper interface
+ * deprecated but kept for backward compatibility, the PubSub
+ * 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)
+ * kAliHLTDataTypeStreamerInfo (ROOTSTRI)
+ * 13 Changed AliHLTEventDDL to now contain 31 words. The extra word is
+ * for the EMCAL detector, which needs 46 DDLs after DCAL was added.
+ * 14 Adding new data block type for HLT global trigger counters.
+ * Adding data block type for ESD content
+ * Adding data block type for forwarded component table blocks
+ * Adding new event type for software triggers.
+ * 15 Modifying data block types for trigger counter blocks.
+ */
+#define ALIHLT_DATA_TYPES_VERSION 15
+
+//////////////////////////////////////////////////////////////////////////
+//
+// HLT data origin variables.
+//
+// By converting from defines to variables, the origins can be used with
+// the operator|
+//
+// AliHLTComponentDataType dt;
+// dt = kAliHLTDataTypeDDLRaw | kAliHLTDataOriginTPC;
+//
+//////////////////////////////////////////////////////////////////////////
+
+/** field size of datat type origin
+ * @ingroup alihlt_component_datatypes
+ */
+const int kAliHLTComponentDataTypefOriginSize=4;
+
+
+/** invalid data origin
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTDataOriginVoid "\0\0\0"
+/** old invalid data origin, kept for backward compatibility */
+# define kAliHLTVoidDataOrigin "\0\0\0"
+
+/** wildcard data type origin
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTDataOriginAny "***"
+/** old wildcard data type origin, kept for backward compatibility */
+# define kAliHLTAnyDataOrigin "***"
+
+/** Data origin HLT out
+ * @ingroup alihlt_component_datatypes
+ */
+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 kAliHLTDataOriginPrivate[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin TPC
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginTPC[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin PHOS
+ * @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 kAliHLTDataOriginMUON[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin TRD
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginTRD[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin ITS
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginITS[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin ITSOut
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginITSOut[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
+ */
+extern const char kAliHLTDataOriginSample[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin EMCAL
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginEMCAL[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin TOF
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginTOF[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin HMPID
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginHMPID[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin CPV
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginCPV[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin PMD
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginPMD[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin T0
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginT0[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin VZERO
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginVZERO[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin ZDC
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginZDC[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin ACORDE
+ * @ingroup alihlt_component_datatypes
+ */
+
+extern const char kAliHLTDataOriginACORDE[kAliHLTComponentDataTypefOriginSize];
+
+/** Data origin TRG
+ * @ingroup alihlt_component_datatypes
+ */
+extern const char kAliHLTDataOriginTRG[kAliHLTComponentDataTypefOriginSize];
+
+//////////////////////////////////////////////////////////////////////////
+//
+// HLT common data type defines
+//
+//////////////////////////////////////////////////////////////////////////
+
+/** field size of data type id
+ * @ingroup alihlt_component_datatypes
+ */
+const int kAliHLTComponentDataTypefIDsize=8;
+
+
+/** invalid data type id
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTVoidDataTypeID "\0\0\0\0\0\0\0"
+
+/** special id for all data types: any + void
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTAllDataTypesID "ALLDATA"
+
+/** special id for any valid data type id
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTAnyDataTypeID "*******"
+
+/** DDL RAW data
+ * @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 kAliHLTFXSCalibDataTypeID {'F','X','S','_','C','A','L',' '}
+
+/** start of run (SOR) event
+ * @ref AliHLTRunDesc
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTSORDataTypeID {'S','T','A','R','T','O','F','R'}
+
+/** end of run (EOR) event
+ * @ref AliHLTRunDesc
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTEORDataTypeID {'E','N','D','O','F','R','U','N'}
+
+/** run type data block
+ * string with run type as payload
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTRunTypeDataTypeID {'R','U','N','T','Y','P','E',' '}
+
+/** DDL list event
+ * @ref AliHLTEventDDL
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTDDLDataTypeID {'D','D','L','L','I','S','T',' '}
+
+/** DAQ readout list
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTDAQRDOUTDataTypeID "DAQRDOUT"
+
+/** HLT readout list.
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTReadoutListDataTypeID {'H','L','T','R','D','L','S','T'}
+
+/** 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 kAliHLTComConfDataTypeID {'C','O','M','_','C','O','N','F'}
+
+/** DCS value update event
+ * - payload contains string of relevant detectors
+ * @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'}
+
+/** ESDVertex data block
+ * an AliESDVertex object of varying origin
+ * The 'V0' at the end allows a versioning
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTESDVertexDataTypeID {'E','S','D','V','T','X','V','0'}
+
+/** output of the GlobalVertexer data block
+ * The 'V0' at the end allows a versioning
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTDataTypeGlobalVertexerID {'G','L','B','V','T','X','V','0'}
+
+/** ESD data block
+ * an AliESD object of varying origin
+ * The 'V0' at the end allows a versioning
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTESDObjectDataTypeID {'A','L','I','E','S','D','V','0'}
+
+/** ESD
+ * data blocks designated for the ESD
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTESDContentDataTypeID {'E','S','D','_','C','O','N','T'}
+
+/** ESD tree data block
+ * TTree with an AliESD object of varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTESDTreeDataTypeID {'E','S','D','_','T','R','E','E'}
+
+/** AliRoot TreeD
+ * - the digits tree of an AliRoot module
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTreeDDataTypeID {'A','L','I','T','R','E','E','D'}
+
+/** AliRoot TreeR
+ * - the rec points tree of an AliRoot module
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTreeRDataTypeID {'A','L','I','T','R','E','E','R'}
+
+/** HW Address selection data block
+ * - a selection list for 16 bit HW addresses
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTHwAddr16DataTypeID {'H','W','A','D','D','R','1','6'}
+
+/** Event Statistics
+ * - event statistics for given detectors
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTEventStatisticsDataTypeID {'E','V','_','S','T','A','T','I'}
+
+/** Event Summary
+ * - event summary
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTEventSummaryDataTypeID {'E','V','_','S','U','M','M','A'}
+
+/** Run Statistics
+ * - run statistics for given detectors
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTRunStatisticsDataTypeID {'R','U','N','S','T','A','T','I'}
+
+/** Run Summary
+ * - run summary
+ * - origin : kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+# 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
+ * - origin kAliHLTDataOriginPrivate
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTComponentStatisticsDataTypeID {'C','O','M','P','S','T','A','T'}
+
+/** Component table
+ * - list of components in the chain to be percolated through the chain
+ * - each component adds it's chain id string and a generated 32bit id
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTComponentTableDataTypeID {'C','O','M','P','T','A','B','L'}
+
+/** Forwarded component table
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTComponentFwdTableDataTypeID {'C','O','M','P','T','A','B','F'}
+
+/** general ROOT TObject
+ * - a general TObject exported from the HLT analysis
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTObjectDataTypeID {'R','O','O','T','T','O','B','J'}
+
+/** ROOT streamer info
+ * - used for the transmission of streamer info for objects in the HLTOUT
+ * - origin kAliHLTDataOriginOut ( HLT )
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTStreamerInfoDataTypeID {'R','O','O','T','S','T','R','I'}
+
+/** ROOT TObjArray
+ * - a TObjArray exported from the HLT analysis
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTObjArrayDataTypeID {'R','O','O','T','O','B','A','R'}
+
+/** ROOT TTree
+ * - a TTree object exported from the HLT analysis
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTTTreeDataTypeID {'R','O','O','T','T','R','E','E'}
+
+/** ROOT histogram
+ * - a histogram object exported from the HLT analysis
+ * - class derives from TH1 (directly or indirectly) and inherits all common functionality
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#define kAliHLTHistogramDataTypeID {'R','O','O','T','H','I','S','T'}
+
+/** ROOT TNtuple
+ * - a TNtupl object exported from the HLT analysis
+ * - varying origin
+ * @ingroup alihlt_component_datatypes
+ */
+#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'}
+
+/** dEdx data
+ * Common data type for the dEdx
+ * format depends on the origin (detector)
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTdEdxDataTypeID {'D','E','D','X',' ',' ',' ',' '}
+
+/** dNdPt data
+ * Common data type for the dNdPt output object
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTdNdPtDataTypeID {'D','N','D','P','T',' ',' ',' '}
+
+/** Global input trigger counters data block type.
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTInputTriggerCountersDataTypeID {'I','N','T','R','G','C','N','T'}
+
+/** Global output trigger counters data block type.
+ * @ingroup alihlt_component_datatypes
+ */
+# define kAliHLTOutputTriggerCountersDataTypeID {'O','T','T','R','G','C','N','T'}
+