Possibility to select events accorindg to the trigger class pattern. Some minors...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Jul 2008 15:41:06 +0000 (15:41 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Jul 2008 15:41:06 +0000 (15:41 +0000)
RAW/AliRawReader.cxx
RAW/AliRawReader.h
RAW/AliRawReaderDateOnline.cxx

index 53c3e74..9656644 100644 (file)
@@ -62,6 +62,7 @@ AliRawReader::AliRawReader() :
   fSelectMaxEquipmentId(-1),
   fSkipInvalid(kFALSE),
   fSelectEventType(-1),
+  fSelectTriggerMask(0),
   fErrorCode(0),
   fEventNumber(-1),
   fErrorLogs("AliRawDataErrorLog",100),
@@ -118,6 +119,7 @@ AliRawReader::AliRawReader(const AliRawReader& rawReader) :
   fSelectMaxEquipmentId(rawReader.fSelectMaxEquipmentId),
   fSkipInvalid(rawReader.fSkipInvalid),
   fSelectEventType(rawReader.fSelectEventType),
+  fSelectTriggerMask(rawReader.fSelectTriggerMask),
   fErrorCode(0),
   fEventNumber(-1),
   fErrorLogs("AliRawDataErrorLog",100),
@@ -144,6 +146,7 @@ AliRawReader& AliRawReader::operator = (const AliRawReader& rawReader)
   fSelectMaxEquipmentId = rawReader.fSelectMaxEquipmentId;
   fSkipInvalid = rawReader.fSkipInvalid;
   fSelectEventType = rawReader.fSelectEventType;
+  fSelectTriggerMask = rawReader.fSelectTriggerMask;
 
   fErrorCode = rawReader.fErrorCode;
 
@@ -312,12 +315,14 @@ void AliRawReader::SelectEquipment(Int_t equipmentType,
   fSelectMaxEquipmentId = maxEquipmentId;
 }
 
-void AliRawReader::SelectEvents(Int_t type)
+void AliRawReader::SelectEvents(Int_t type, ULong64_t triggerMask)
 {
-// read only events with the given type.
+// read only events with the given type and optionally
+// trigger mask.
 // no selection is applied if a value < 0 is used.
 
   fSelectEventType = type;
+  fSelectTriggerMask = triggerMask;
 }
 
 Bool_t AliRawReader::IsSelected() const
@@ -347,12 +352,19 @@ Bool_t AliRawReader::IsSelected() const
 
 Bool_t AliRawReader::IsEventSelected() const
 {
-// apply the event selection (if any)
+  // apply the event selection (if any)
 
+  // First check the event type
   if (fSelectEventType >= 0) {
     if (GetType() != (UInt_t) fSelectEventType) return kFALSE;
   }
 
+  // Then check the trigger pattern and compared it
+  // to the required trigger mask
+  if (fSelectTriggerMask != 0) {
+    if ((GetClassMask() & fSelectTriggerMask) != fSelectTriggerMask) return kFALSE;
+  }
+
   return kTRUE;
 }
 
index dd6082e..d6c1fbf 100644 (file)
@@ -38,7 +38,7 @@ class AliRawReader: public TObject {
                                     Int_t maxEquipmentId = -1);
     virtual void     SkipInvalid(Bool_t skip = kTRUE)
       {fSkipInvalid = skip;};
-    virtual void     SelectEvents(Int_t type);
+    virtual void     SelectEvents(Int_t type, ULong64_t triggerMask = 0);
     virtual void     RequireHeader(Bool_t required)
       {fRequireHeader = required;};
 
@@ -171,6 +171,7 @@ class AliRawReader: public TObject {
     Int_t            fSelectMaxEquipmentId; // maximal index of selected equipment (<0 = no selection)
     Bool_t           fSkipInvalid;          // skip invalid data
     Int_t            fSelectEventType;      // type of selected events (<0 = no selection)
+    ULong64_t        fSelectTriggerMask;    // trigger mask for selecting events (0 = no selection)
 
     Int_t            fErrorCode;            // code of last error
 
index 39091c8..2f0acf6 100644 (file)
@@ -52,6 +52,8 @@ AliRawReaderDateOnline::AliRawReaderDateOnline(
 
 #ifdef ALI_DATE
 
+  fSelectEventType = PHYSICS_EVENT;
+
   int status;
 
   /* define data source : this is argument 1 */  
@@ -92,7 +94,7 @@ Bool_t AliRawReaderDateOnline::NextEvent()
     /* get next event (blocking call until timeout) */
     int status=monitorGetEventDynamic((void**)&fEvent);
 
-    if ((unsigned int)status==MON_ERR_EOF) {
+    if (status==MON_ERR_EOF) {
       AliInfo("End of File detected");
       Reset();
       fEvent = NULL;
@@ -120,11 +122,11 @@ Bool_t AliRawReaderDateOnline::NextEvent()
       return kFALSE;
     }
     
-    if (eventT!=PHYSICS_EVENT) {
+    if (!IsEventSelected()) {
       continue;
     }
 
-    AliInfo(Form("Run #%lu, event size: %lu, BC:%u, Orbit:%u, Period:%u",
+    AliInfo(Form("Run #%lu, event size: %lu, BC:0x%x, Orbit:0x%x, Period:0x%x",
                 (unsigned long)fEvent->eventRunNb,
                 (unsigned long)fEvent->eventSize,
                 EVENT_ID_GET_BUNCH_CROSSING(fEvent->eventId),