indexUpdtDCSEvent=i;
} else if (fpInputBlocks[i].fDataType==kAliHLTDataTypeEvent) {
eventType=fpInputBlocks[i].fSpecification;
- bSkipDataProcessing=fpInputBlocks[i].fSpecification==gkAliEventTypeConfiguration;
+ bSkipDataProcessing|=(fpInputBlocks[i].fSpecification==gkAliEventTypeConfiguration);
+ bSkipDataProcessing|=(fpInputBlocks[i].fSpecification==gkAliEventTypeReadPreprocessor);
}
}
if (indexSOREvent>=0) {
HLTWarning("reconfiguration of component %p (%s) failed with error code %d", this, GetComponentID(), tmpResult);
}
}
- if (indexUpdtDCSEvent>=0) {
+ if (indexUpdtDCSEvent>=0 || eventType==gkAliEventTypeReadPreprocessor) {
TString modules;
if (fpInputBlocks[indexUpdtDCSEvent].fPtr!=NULL && fpInputBlocks[indexUpdtDCSEvent].fSize>0) {
modules.Append(reinterpret_cast<const char*>(fpInputBlocks[indexUpdtDCSEvent].fPtr), fpInputBlocks[indexUpdtDCSEvent].fSize);
}
- HLTDebug("received preprocessor update command: detectors %s", modules.IsNull()?"none":modules.Data());
- int tmpResult=ReadPreprocessorValues(modules[0]==0?NULL:modules.Data());
+ HLTDebug("received preprocessor update command: detectors %s", modules.IsNull()?"ALL":modules.Data());
+ int tmpResult=ReadPreprocessorValues(modules[0]==0?"ALL":modules.Data());
if (tmpResult<0) {
HLTWarning("preprocessor update of component %p (%s) failed with error code %d", this, GetComponentID(), tmpResult);
}
* updated data points. The component has to implement the CDB access to
* get the desired data points.
* @param modules detectors for which the Preprocessors have updated
- * data points: TPC, TRD, ITS, PHOS, MUON
+ * data points: TPC, TRD, ITS, PHOS, MUON, or ALL if
+ * no argument was received.
* @return neg. error code if failed
*/
virtual int ReadPreprocessorValues(const char* modules);
static const AliHLTUInt32_t gkAliEventTypeDataReplay=32;
/** Configuration eventType specification */
static const AliHLTUInt32_t gkAliEventTypeConfiguration=34;
+ /** Update DCS eventType specification */
+ static const AliHLTUInt32_t gkAliEventTypeReadPreprocessor=35;
/** Tick eventType specification */
static const AliHLTUInt32_t gkAliEventTypeTick=64;
/** Max eventType specification */
* data block received via the HOMER interface or from the file writer.
* <pre>
* AliHLTMessage msg(buffer, size);
- * TObject pObj=msg.ReadObject(msg.GetClass());
+ * TObject* pObj=msg.ReadObject(msg.GetClass());
* </pre>
+ *
+ * A simple test macro for a file can look like
+ * <pre>
+ * const char* filename="TPC_804.ddl";
+ * //const char* filename="TPC_768.ddl";
+ * TString param=filename;
+ * param+="?filetype=raw";
+ * TFile file(param);
+ * if (file.IsZombie()) {
+ * cout << "can not open file " << filename << endl;
+ * return;
+ * }
+ *
+ * TArrayC buffer(file.GetSize());
+ * TArrayC tgtbuffer(file.GetSize());
+ * if (file.ReadBuffer(buffer.GetArray(), buffer.GetSize())) {
+ * cout << "error reading file " << filename << endl;
+ * return;
+ * }
+ *
+ * AliHLTMessage msg(buffer.GetArray(), buffer.GetSize());
+ * TObject* pObj=msg.ReadObject(msg.GetClass());
+ * </pre>
+ *
+ * @see AliHLTRootFileWriterComponent for an easy way to save objects
+ * exported via AliHLTMessage in a ROOT file.
*/
class AliHLTMessage
: