X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONTrackerDataMaker.cxx;h=92193f2dc5b829137cd32e7431def76fa363c717;hb=6299d56ca074e2246e5a19c1316c4622e4b1d98c;hp=fa78ec0e2ede600f8f1714b8ae2d3852a1e544aa;hpb=b3d5776767e4241b5cb5f3a9870767739d5ffe9f;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONTrackerDataMaker.cxx b/MUON/AliMUONTrackerDataMaker.cxx index fa78ec0e2ed..92193f2dc5b 100644 --- a/MUON/AliMUONTrackerDataMaker.cxx +++ b/MUON/AliMUONTrackerDataMaker.cxx @@ -67,7 +67,10 @@ fIsEventByEvent(kFALSE), fLogger(0x0), fLastEventWasEmpty(kFALSE), fNumberOfPhysicsEvents(0), -fNumberOfGoodPhysicsEvents(0) +fNumberOfGoodPhysicsEvents(0), +fTryRecover(kFALSE), +fFirstEvent(-1), +fLastEvent(-1) { /// Root IO ctor } @@ -99,7 +102,10 @@ fIsEventByEvent(kFALSE), 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. @@ -133,14 +139,16 @@ fIsEventByEvent(kFALSE), 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(); } @@ -168,12 +176,14 @@ fIsEventByEvent(kFALSE), 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(); } @@ -258,7 +268,7 @@ AliMUONTrackerDataMaker::Ctor(const AliMUONRecoParam* recoParam, 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 ? } } @@ -322,7 +332,32 @@ AliMUONTrackerDataMaker::NextEvent() 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) { @@ -367,6 +402,15 @@ Bool_t AliMUONTrackerDataMaker::ProcessEvent() stream.DisableWarnings(); stream.DisableRawReaderErrorLogger(); stream.DisableMUONErrorLogger(); + + if ( fTryRecover ) + { + stream.TryRecover(kTRUE); + } + else + { + stream.TryRecover(kFALSE); + } if (fLogger) { @@ -485,7 +529,7 @@ Long64_t AliMUONTrackerDataMaker::Merge(TCollection* list) while ( ( o = next() ) ) { const AliMUONTrackerDataMaker* data = dynamic_cast(o); - if (!o) + if (!data) { AliError(Form("Object named %s is not an AliMUONTrackerDataMaker ! Skipping it", o->GetName()));