fLogger(0x0),
fLastEventWasEmpty(kFALSE),
fNumberOfPhysicsEvents(0),
-fNumberOfGoodPhysicsEvents(0)
+fNumberOfGoodPhysicsEvents(0),
+fTryRecover(kFALSE),
+fFirstEvent(-1),
+fLastEvent(-1)
{
/// Root IO ctor
}
fLogger(0x0),
fLastEventWasEmpty(kFALSE),
fNumberOfPhysicsEvents(0),
-fNumberOfGoodPhysicsEvents(0)
+fNumberOfGoodPhysicsEvents(0),
+fTryRecover(kFALSE),
+fFirstEvent(-1),
+fLastEvent(-1)
{
/// Ctor in which this object will NOT be the owner of the reader
/// and can NOT apply rewind to it, nor use Next on it.
fLogger(0x0),
fLastEventWasEmpty(kFALSE),
fNumberOfPhysicsEvents(0),
-fNumberOfGoodPhysicsEvents(0)
+fNumberOfGoodPhysicsEvents(0),
+fTryRecover(kFALSE),
+fFirstEvent(-1),
+fLastEvent(-1)
{
/// Ctor in which we take the ownership of the rawReader, so we can rewind
/// and advance it as we wish
- if (fRawReader)
+ if ( fRawReader && fRawReader->NextEvent() )
{
- fRawReader->NextEvent(); // to be sure to get run number available
fRunNumber = fRawReader->GetRunNumber();
fRawReader->RewindEvents();
}
fLogger(0x0),
fLastEventWasEmpty(kFALSE),
fNumberOfPhysicsEvents(0),
-fNumberOfGoodPhysicsEvents(0)
+fNumberOfGoodPhysicsEvents(0),
+fTryRecover(kFALSE),
+fFirstEvent(-1),
+fLastEvent(-1)
{
/// Ctor from raw data reader
- if (fRawReader)
+ if ( fRawReader && fRawReader->NextEvent() )
{
- fRawReader->NextEvent(); // to be sure to get run number available
fRunNumber = fRawReader->GetRunNumber();
fRawReader->RewindEvents();
}
AliCDBManager::Instance()->SetDefaultStorage(storage);
}
- fDigitCalibrator = new AliMUONDigitCalibrator(*fCalibrationData,recoParam,calibMode);
+ fDigitCalibrator = new AliMUONDigitCalibrator(*fCalibrationData,recoParam);
//FIXME: get the reco param from GUI and/or from OCDB if not used from the QA code ?
}
}
if ( !IsRunning() ) return kTRUE;
- Bool_t ok = fRawReader->NextEvent();
+ Bool_t ok(kTRUE);
+
+ if ( fLastEvent >= fFirstEvent && fLastEvent > 0 ) // do we have an event range to consider ?
+ {
+ // skip up to first event
+
+ while ( (fNumberOfEvents-1) < fFirstEvent && ( ok = fRawReader->NextEvent() ) )
+ {
+ ++fNumberOfEvents;
+ }
+
+ if ( ok && (fNumberOfEvents-1) <= fLastEvent )
+ {
+ ok = fRawReader->NextEvent();
+ }
+ else
+ {
+ fNumberOfEvents=fLastEvent+1;
+ return kFALSE;
+ }
+ }
+ else
+ {
+ // no event range, just proceed...
+ ok = fRawReader->NextEvent();
+ }
if (!ok)
{
stream.DisableWarnings();
stream.DisableRawReaderErrorLogger();
stream.DisableMUONErrorLogger();
+
+ if ( fTryRecover )
+ {
+ stream.TryRecover(kTRUE);
+ }
+ else
+ {
+ stream.TryRecover(kFALSE);
+ }
if (fLogger)
{
while ( ( o = next() ) )
{
const AliMUONTrackerDataMaker* data = dynamic_cast<const AliMUONTrackerDataMaker*>(o);
- if (!o)
+ if (!data)
{
AliError(Form("Object named %s is not an AliMUONTrackerDataMaker ! Skipping it",
o->GetName()));