}
int AliHLTSystem::Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask,
- AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype)
+ AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype,
+ AliHLTUInt32_t participatingDetectors)
{
// see header file for class documentation
int iResult=0;
}
if (eventtype == 0) {
eventtype = gkAliEventTypeData;
+ participatingDetectors = 0x0;
}
- if ((iResult=ProcessTasks(i, trgMask, timestamp, eventtype))>=0) {
+ if ((iResult=ProcessTasks(i, trgMask, timestamp, eventtype, participatingDetectors))>=0) {
fGoodEvents++;
iCount++;
} else {
}
int AliHLTSystem::ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask,
- AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype)
+ AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype,
+ AliHLTUInt32_t participatingDetectors)
{
// see header file for class documentation
int iResult=0;
TObject* obj=lnk->GetObject();
if (obj) {
AliHLTTask* pTask=(AliHLTTask*)obj;
- iResult=pTask->ProcessTask(eventNo, eventtype, trgMask, timestamp);
+ iResult=pTask->ProcessTask(eventNo, eventtype, trgMask, timestamp, participatingDetectors);
// ProcInfo_t ProcInfo;
// gSystem->GetProcInfo(&ProcInfo);
// HLTInfo("task %s processed (%d), current memory usage %d %d", pTask->GetName(), iResult, ProcInfo.fMemResident, ProcInfo.fMemVirtual);
* @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.
return iResult;
}
-int AliHLTTask::ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType, AliHLTUInt64_t trgMask, AliHLTUInt32_t timestamp)
+int AliHLTTask::ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType, AliHLTUInt64_t trgMask,
+ AliHLTUInt32_t timestamp, AliHLTUInt32_t participatingDetectors)
{
// see header file for function documentation
int iResult=0;
trigData.fStructSize=sizeof(trigData);
trigData.fDataSize=sizeof(AliHLTEventTriggerData);
memset(&evtTrigData, 0, trigData.fDataSize);
- // Setup the CDH in the trigger data, based on the event type and CTP trigger.
+ // Setup the CDH in the trigger data, based on the event type, CTP trigger
+ // mask and participating detectors.
evtTrigData.fCommonHeaderWordCnt=gkAliHLTCommonHeaderCount;
AliHLTUInt8_t l1msg = 0x0;
switch (eventType)
case gkAliEventTypeSoftware: l1msg = 0x01; break;
}
evtTrigData.fCommonHeader[1] = AliHLTUInt32_t(l1msg) << 14;
+ evtTrigData.fCommonHeader[3] = ((l1msg & 0x1) == 0x1) ? (participatingDetectors & 0xFFFFFF) : 0x0;
evtTrigData.fCommonHeader[5]=trgMask&0xffffffff;
trgMask>>=32;
evtTrigData.fCommonHeader[6]=trgMask&0x3ffff;
* The @ref StartRun method must be called before.
*/
int ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType,
- AliHLTUInt64_t trgMask, AliHLTUInt32_t timestamp);
+ AliHLTUInt64_t trgMask, AliHLTUInt32_t timestamp,
+ AliHLTUInt32_t participatingDetectors = 0);
/**
* Determine the number of matching data block between the component and the
*/
vector<AliHLTComponentBlockData> fBlockDataArray; //! transient
- ClassDef(AliHLTTask, 2);
+ ClassDef(AliHLTTask, 0);
};
#endif