class AliHLTSystem : public AliHLTLogging {
public:
/** default constructor */
- AliHLTSystem(AliHLTComponentLogSeverity loglevel=kHLTLogDefault, const char* name="");
+ AliHLTSystem(AliHLTComponentLogSeverity loglevel=kHLTLogDefault,
+ const char* name="",
+ AliHLTComponentHandler* pCompHandler=NULL,
+ AliHLTConfigurationHandler* pConfHandler=NULL
+ );
/** destructor */
virtual ~AliHLTSystem();
* @param trgMask ctp trigger mask from the rawreader
* @param timestamp timestamp of the event, read from the rawreader
* @param eventtype event type, read from the rawreader
+ * @param participatingDetectors the bit flags of the participating detectors
+ * as will we inserted into the Common Data Header. This should only
+ * be used for software event types.
* @return number of reconstructed events, neg error code if failed
*/
int Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask,
- AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype);
+ AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype,
+ AliHLTUInt32_t participatingDetectors = 0);
/**
* Run the tasklist
* @return neg error code if failed
*/
int ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask,
- AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype);
+ AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype,
+ AliHLTUInt32_t participatingDetectors = 0);
/**
* Stop task list.
/**
* Cleanup all internal objects from HLTOUT processing.
+ * Go through the list of HLTOUT handlers and release them.
*/
- int CleanHLTOUT();
+ int CleanupHLTOUTHandlers();
/**
* The memory allocation function for components.
*/
int FillESD(int eventNo, AliRunLoader* runLoader, AliESDEvent* esd);
+ /**
+ * Init the HLTOUT instance for the current event.
+ * The instance can be used by other classes to get hold on the data
+ * from HLTOUT.
+ * @param instance instance to be set as the active HLTOUT
+ * @return -EBUSY other active instance already existing
+ */
+ int InitHLTOUT(AliHLTOUT* instance);
+
+ /**
+ * Invalidate the HLTOUT instance.
+ * @param instance target variable for the instance
+ * @return -EBUSY if instance in use
+ */
+ int InvalidateHLTOUT(AliHLTOUT** instance=NULL);
+
+ /**
+ * Get the HLTOUT instance.
+ * User method for processing classes. To be released after use.
+ * @return pointer to HLTOUT instance
+ */
+ AliHLTOUT* RequestHLTOUT();
+
+ /**
+ * Release the HLTOUT instance after use.
+ * @param instance pointer to instance to be released
+ * @return -ENOENT if instance does not match
+ */
+ int ReleaseHLTOUT(const AliHLTOUT* instance);
+
/**
* Process the HLTOUT data.
* The provided instance of AliHLTOUT provides the access to the data.
/** active HLTOUT task for the reconstruction */
AliHLTOUTTask* fpHLTOUTTask; //!transient
+ /** HLTOUT instance for the current event */
+ AliHLTOUT* fpHLTOUT; //!transient
+
+ /** HLTOUT use counter */
+ int fHLTOUTUse; //!transient
+
/** special task to publish the control events */
AliHLTControlTask* fpControlTask; //!transient
/// ECS parameter string
TString fECSParams; //!transient
- ClassDef(AliHLTSystem, 13);
+ /// indicate the argument 'hltout-type'
+ bool fUseHLTOUTComponentTypeGlobal; //!transient
+
+ ClassDef(AliHLTSystem, 0);
};
#endif