functionality of raw readers extended to read more than one event
[u/mrichter/AliRoot.git] / RAW / AliRawReader.cxx
index 2fcdc13b8cf2a1e0229709564e10f51f03882150..ced8011bc65640fb6ac7dacabb624c5f4f84d5d5 100644 (file)
@@ -49,6 +49,7 @@ AliRawReader::AliRawReader() :
   fSelectMinEquipmentId(-1),
   fSelectMaxEquipmentId(-1),
   fSkipInvalid(kFALSE),
+  fSelectEventType(-1),
   fErrorCode(0)
 {
 // default constructor: initialize data members
@@ -63,6 +64,7 @@ AliRawReader::AliRawReader(const AliRawReader& rawReader) :
   fSelectMinEquipmentId(rawReader.fSelectMinEquipmentId),
   fSelectMaxEquipmentId(rawReader.fSelectMaxEquipmentId),
   fSkipInvalid(rawReader.fSkipInvalid),
+  fSelectEventType(rawReader.fSelectEventType),
   fErrorCode(0)
 {
 // copy constructor
@@ -80,6 +82,7 @@ AliRawReader& AliRawReader::operator = (const AliRawReader& rawReader)
   fSelectMinEquipmentId = rawReader.fSelectMinEquipmentId;
   fSelectMaxEquipmentId = rawReader.fSelectMaxEquipmentId;
   fSkipInvalid = rawReader.fSkipInvalid;
+  fSelectEventType = rawReader.fSelectEventType;
 
   fErrorCode = rawReader.fErrorCode;
 
@@ -112,6 +115,14 @@ void AliRawReader::SelectEquipment(Int_t equipmentType,
   fSelectMaxEquipmentId = maxEquipmentId;
 }
 
+void AliRawReader::SelectEvents(Int_t type)
+{
+// read only events with the given type.
+// no selection is applied if a value < 0 is used.
+
+  fSelectEventType = type;
+}
+
 Bool_t AliRawReader::IsSelected() const
 {
 // apply the selection (if any)
@@ -131,6 +142,17 @@ Bool_t AliRawReader::IsSelected() const
   return kTRUE;
 }
 
+Bool_t AliRawReader::IsEventSelected() const
+{
+// apply the event selection (if any)
+
+  if (fSelectEventType >= 0) {
+    if (GetType() != (UInt_t) fSelectEventType) return kFALSE;
+  }
+
+  return kTRUE;
+}
+
 
 Bool_t AliRawReader::ReadNextInt(UInt_t& data)
 {