propagating the timestamp of the event from rawreader to the HLT components during...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 27 Aug 2010 13:31:29 +0000 (13:31 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 27 Aug 2010 13:31:29 +0000 (13:31 +0000)
HLT/BASE/AliHLTSystem.cxx
HLT/BASE/AliHLTSystem.h
HLT/BASE/AliHLTTask.cxx
HLT/BASE/AliHLTTask.h

index e3e67bd..af9b2c7 100644 (file)
@@ -339,7 +339,8 @@ void AliHLTSystem::PrintTaskList()
   }
 }
 
-int AliHLTSystem::Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask)
+int AliHLTSystem::Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask,
+                     AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype)
 {
   // see header file for class documentation
   int iResult=0;
@@ -363,7 +364,12 @@ int AliHLTSystem::Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask)
          // reset and prepare for new data
          fpHLTOUTTask->Reset();
        }
-       if ((iResult=ProcessTasks(i, trgMask))>=0) {
+       if (eventtype) {
+         // TODO: translate RawReader event types into the HLT event types
+         // this needs to be done after the analysis framework has been extended to
+         // handle all different cases correctly
+       }
+       if ((iResult=ProcessTasks(i, trgMask, timestamp, gkAliEventTypeData))>=0) {
          fGoodEvents++;
          iCount++;
        } else {
@@ -575,7 +581,8 @@ int AliHLTSystem::StartTasks()
   return iResult;
 }
 
-int AliHLTSystem::ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask)
+int AliHLTSystem::ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask,
+         AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype)
 {
   // see header file for class documentation
   int iResult=0;
@@ -585,7 +592,7 @@ int AliHLTSystem::ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask)
     TObject* obj=lnk->GetObject();
     if (obj) {
       AliHLTTask* pTask=(AliHLTTask*)obj;
-      iResult=pTask->ProcessTask(eventNo, gkAliEventTypeData, trgMask);
+      iResult=pTask->ProcessTask(eventNo, eventtype, trgMask, timestamp);
 //       ProcInfo_t ProcInfo;
 //       gSystem->GetProcInfo(&ProcInfo);
 //       HLTInfo("task %s processed (%d), current memory usage %d %d", pTask->GetName(), iResult, ProcInfo.fMemResident, ProcInfo.fMemVirtual);
@@ -678,7 +685,7 @@ int AliHLTSystem::SendControlEvent(AliHLTComponentDataType dt)
       if (dt==kAliHLTDataTypeSOR) eventType=gkAliEventTypeStartOfRun;
       else if (dt==kAliHLTDataTypeEOR) eventType=gkAliEventTypeEndOfRun;
       else HLTWarning("unknown control event %s", AliHLTComponent::DataType2Text(dt).c_str());
-      iResult=pTask->ProcessTask(-1, eventType);
+      iResult=pTask->ProcessTask(-1, eventType, 0, 0);
     } else {
     }
     lnk = lnk->Next();
@@ -801,6 +808,8 @@ int AliHLTSystem::Reconstruct(int nofEvents, AliRunLoader* runLoader,
       } else {
       if ((iResult=AliHLTOfflineInterface::SetParamsToComponents(runLoader, rawReader))>=0) {
        AliHLTUInt64_t trgMask=0x1;
+       AliHLTUInt32_t timestamp=0;
+       AliHLTUInt32_t eventtype=0;
        if (runLoader==NULL) {
          // this is a quick workaround for the case of simulation
          // the trigger framework is still under development, secondly, AliHLTSimulation
@@ -808,10 +817,15 @@ int AliHLTSystem::Reconstruct(int nofEvents, AliRunLoader* runLoader,
          // AliHLTTask will initialize one dummy CTP trigger class with bit 0, that's why the
          // default trigger mask is 0x1
          trgMask=AliHLTMisc::Instance().GetTriggerMask(rawReader);
+
+         // get the timestamp and type of the event from the raw reader
+         // this is currently only meaningfull for reconstruction (runloader==NULL)
+         timestamp=AliHLTMisc::Instance().GetTimeStamp(rawReader);
+         eventtype=AliHLTMisc::Instance().GetEventType(rawReader);
        }
        // the system always remains started after event processing, a specific
        // call with nofEvents==0 is needed to execute the stop sequence
-       if ((iResult=Run(nofEvents, 0, trgMask))<0) SetStatusFlags(kError);
+       if ((iResult=Run(nofEvents, 0, trgMask, timestamp, eventtype))<0) SetStatusFlags(kError);
       }
       }
     } else {
index f08c70b..cb840ff 100644 (file)
@@ -203,9 +203,13 @@ class AliHLTSystem : public AliHLTLogging {
    * nofEvents==0 is needed to execute the stop sequence.
    * @param iNofEvents number of events
    * @param bStop      stop the chain after processing
+   * @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
    * @return number of reconstructed events, neg error code if failed
    */
-  int Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask);
+  int Run(Int_t iNofEvents, int bStop, AliHLTUInt64_t trgMask,
+         AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype);
 
   /**
    * Run the tasklist
@@ -213,7 +217,7 @@ class AliHLTSystem : public AliHLTLogging {
    * Re-introducing the original function, and forwarding it.
    */
   int Run(Int_t iNofEvents=1, int bStop=1)
-  {return Run(iNofEvents, bStop, 0);}
+  {return Run(iNofEvents, bStop, 0, 0, 0);}
 
   /**
    * Init all tasks from the list.
@@ -269,7 +273,8 @@ class AliHLTSystem : public AliHLTLogging {
    * The @ref AliHLTTask::ProcessTask method is called for each task.
    * @return neg error code if failed
    */
-  int ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask=0);
+  int ProcessTasks(Int_t eventNo, AliHLTUInt64_t trgMask,
+                  AliHLTUInt32_t timestamp, AliHLTUInt32_t eventtype);
 
   /**
    * Stop task list.
index 9fa0adb..d964041 100644 (file)
@@ -450,7 +450,7 @@ int AliHLTTask::EndRun()
   return iResult;
 }
 
-int AliHLTTask::ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType, AliHLTUInt64_t trgMask)
+int AliHLTTask::ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType, AliHLTUInt64_t trgMask, AliHLTUInt32_t timestamp)
 {
   // see header file for function documentation
   int iResult=0;
@@ -572,6 +572,8 @@ int AliHLTTask::ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType, AliHLTUInt6
       AliHLTComponent::FillEventData(evtData);
       if (eventNo>=0)
        evtData.fEventID=(AliHLTEventID_t)eventNo;
+      if (timestamp) evtData.fEventCreation_s=timestamp;
+      else
       evtData.fEventCreation_s=static_cast<AliHLTUInt32_t>(time(NULL));
       AliHLTComponentTriggerData trigData;
       AliHLTEventTriggerData evtTrigData;
index f4474dc..26cd21d 100644 (file)
@@ -206,7 +206,8 @@ class AliHLTTask : public TObject, public AliHLTLogging {
    * processing, the data blocks are released. <br>
    * The @ref StartRun method must be called before.
    */
-  int ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType=gkAliEventTypeData, AliHLTUInt64_t trgMask=0);
+  int ProcessTask(Int_t eventNo, AliHLTUInt32_t eventType,
+                 AliHLTUInt64_t trgMask, AliHLTUInt32_t timestamp);
 
   /**
    * Determine the number of matching data block between the component and the