#include "AliAltroRawStream.h"
#include "AliTPCROC.h"
#include "AliTPCRawStreamFast.h"
+#include "AliTPCRawStreamV3.h"
#include "AliTPCRawStream.h"
+#include "AliLog.h"
#include "TTreeStream.h"
#include "event.h"
fNevents(0),
fDebugLevel(0),
fStreamLevel(0),
- fTimeStamp(0),
fRunNumber(0),
+ fFirstTimeStamp(0),
+ fLastTimeStamp(0),
+ fTimeStamp(0),
fEventType(0),
fAltroL1Phase(0),
fAltroL1PhaseTB(0),
+ fCurrRCUId(-1),
+ fPrevRCUId(-1),
+ fCurrDDLNum(-1),
+ fPrevDDLNum(-1),
fUseL1Phase(kTRUE),
fDebugStreamer(0x0),
fAltroRawStream(0x0),
fNevents(calib.fNevents),
fDebugLevel(calib.fDebugLevel),
fStreamLevel(calib.fStreamLevel),
+ fRunNumber(calib.fRunNumber),
+ fFirstTimeStamp(calib.fFirstTimeStamp),
+ fLastTimeStamp(calib.fLastTimeStamp),
fTimeStamp(0),
- fRunNumber(0),
fEventType(0),
fAltroL1Phase(0),
fAltroL1PhaseTB(0),
+ fCurrRCUId(-1),
+ fPrevRCUId(-1),
+ fCurrDDLNum(-1),
+ fPrevDDLNum(-1),
fUseL1Phase(kTRUE),
fDebugStreamer(0x0),
fAltroRawStream(0x0),
return *this;
}
//_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEventFast(AliTPCRawStreamFast *rawStreamFast)
+Bool_t AliTPCCalibRawBase::ProcessEventFast(AliTPCRawStreamFast * const rawStreamFast)
{
//
// Event Processing loop - AliTPCRawStreamFast
Int_t endTbin = (Int_t)rawStreamFast->GetEndTimeBin();
for (Int_t iTimeBin = startTbin; iTimeBin < endTbin; iTimeBin++){
Float_t signal=(Float_t)rawStreamFast->GetSignals()[iTimeBin-startTbin];
- Update(isector,iRow,iPad,iTimeBin+1,signal);
+ Update(isector,iRow,iPad,iTimeBin+1,signal);
withInput = kTRUE;
}
}
return withInput;
}
//_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEventFast(AliRawReader *rawReader)
+Bool_t AliTPCCalibRawBase::ProcessEventFast(AliRawReader * const rawReader)
{
//
// Event processing loop - AliRawReader
fRunNumber = eventHeader->Get("RunNb");
fEventType = eventHeader->Get("Type");
}
+ if (!fFirstTimeStamp) fFirstTimeStamp=fTimeStamp;
+ fLastTimeStamp=fTimeStamp;
+
AliTPCRawStreamFast *rawStreamFast = new AliTPCRawStreamFast(rawReader, (AliAltroMapping**)fMapping);
Bool_t res=ProcessEventFast(rawStreamFast);
delete rawStreamFast;
return res;
}
//_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEvent(AliTPCRawStream *rawStream)
+Bool_t AliTPCCalibRawBase::ProcessEvent(AliTPCRawStreamV3 * const rawStreamV3)
+{
+ //
+ // Event Processing loop - AliTPCRawStreamV3
+ //
+ ResetEvent();
+ Bool_t withInput = kFALSE;
+ fAltroL1Phase=0;
+ fAltroL1PhaseTB=0;
+// fAltroRawStream = static_cast<AliAltroRawStream*>(rawStreamV3);
+ while ( rawStreamV3->NextDDL() ){
+ if (AliLog::GetGlobalDebugLevel()>2) rawStreamV3->PrintRCUTrailer();
+ fPrevDDLNum=-1;
+ fCurrRCUId=rawStreamV3->GetRCUId();
+ fCurrDDLNum=rawStreamV3->GetDDLNumber();
+ if (fUseL1Phase){
+// fAltroL1Phase = fAltroRawStream->GetL1Phase();
+ fAltroL1Phase = rawStreamV3->GetL1Phase();
+ fAltroL1PhaseTB = (fAltroL1Phase*1e09/100.);
+ AliDebug(1, Form("L1Phase: %.2e (%03d)\n",fAltroL1PhaseTB,fCurrDDLNum));
+ }
+ UpdateDDL();
+ while ( rawStreamV3->NextChannel() ){
+ Int_t isector = rawStreamV3->GetSector(); // current sector
+ Int_t iRow = rawStreamV3->GetRow(); // current row
+ Int_t iPad = rawStreamV3->GetPad(); // current pad
+ while ( rawStreamV3->NextBunch() ){
+ UInt_t startTbin = rawStreamV3->GetStartTimeBin();
+// Int_t endTbin = (Int_t)rawStreamV3->GetEndTimeBin();
+ Int_t bunchlength = rawStreamV3->GetBunchLength();
+ const UShort_t *sig = rawStreamV3->GetSignals();
+ ProcessBunch(isector,iRow,iPad,bunchlength,startTbin,sig);
+ for (Int_t iTimeBin = 0; iTimeBin<bunchlength; iTimeBin++){
+ Float_t signal=(Float_t)sig[iTimeBin];
+// printf("%02d - %03d - %03d - %04d: %.1f\n",isector,iRow,iPad,startTbin,signal);
+ Update(isector,iRow,iPad,startTbin--,signal);
+ fPrevRCUId=fCurrRCUId;
+ fPrevDDLNum=fCurrDDLNum;
+ withInput = kTRUE;
+ }
+ }
+ }
+ }
+ if (withInput){
+ EndEvent();
+ }
+ return withInput;
+}
+//_____________________________________________________________________
+Bool_t AliTPCCalibRawBase::ProcessEvent(AliRawReader * const rawReader)
+{
+ //
+ // Event processing loop - AliRawReader
+ //
+ AliRawEventHeaderBase* eventHeader = (AliRawEventHeaderBase*)rawReader->GetEventHeader();
+ if (eventHeader){
+ fTimeStamp = eventHeader->Get("Timestamp");
+ fRunNumber = eventHeader->Get("RunNb");
+ fEventType = eventHeader->Get("Type");
+ }
+ if (!fFirstTimeStamp) fFirstTimeStamp=fTimeStamp;
+
+ AliTPCRawStreamV3 *rawStreamV3 = new AliTPCRawStreamV3(rawReader, (AliAltroMapping**)fMapping);
+ Bool_t res=ProcessEvent(rawStreamV3);
+
+ fLastTimeStamp=fTimeStamp;
+
+ delete rawStreamV3;
+ return res;
+}
+//_____________________________________________________________________
+Bool_t AliTPCCalibRawBase::ProcessEvent(AliTPCRawStream * const rawStream)
{
//
// Event Processing loop - AliTPCRawStream
fAltroL1Phase = fAltroRawStream->GetL1Phase();
fAltroL1PhaseTB = (fAltroL1Phase*1e09/100.);
}
+ fPrevRCUId=fCurrRCUId;
+ fCurrRCUId=rawStream->GetRCUId();
+ fPrevDDLNum=fCurrDDLNum;
+ fCurrDDLNum=rawStream->GetDDLNumber();
Int_t isector = rawStream->GetSector(); // current sector
Int_t iRow = rawStream->GetRow(); // current row
Int_t iPad = rawStream->GetPad(); // current pad
return withInput;
}
//_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEvent(AliRawReader *rawReader)
+Bool_t AliTPCCalibRawBase::ProcessEventOld(AliRawReader * const rawReader)
{
//
// Event processing loop - AliRawReader
return ProcessEvent(&rawStream);
}
//_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEvent(eventHeaderStruct *event)
+Bool_t AliTPCCalibRawBase::ProcessEvent(eventHeaderStruct * const event)
{
//
// Event processing loop - date event
//
- AliRawReader *rawReader = new AliRawReaderDate((void*)event);
- Bool_t result=ProcessEvent(rawReader);
- delete rawReader;
- return result;
+
+ fRunNumber=event->eventRunNb;
+ fTimeStamp=event->eventTimestamp;
+ if (!fFirstTimeStamp) fFirstTimeStamp=fTimeStamp;
+ fLastTimeStamp=fTimeStamp;
+ fEventType=event->eventType;
+ AliRawReader *rawReader = new AliRawReaderDate((void*)event);
+ AliTPCRawStreamV3 *rawStreamV3 = new AliTPCRawStreamV3(rawReader, (AliAltroMapping**)fMapping);
+ Bool_t result=ProcessEvent(rawStreamV3);
+ delete rawStreamV3;
+ delete rawReader;
+ return result;
}
//_____________________________________________________________________
fDebugStreamer = new TTreeSRedirector(dsName.Data());
return fDebugStreamer;
}
+//_____________________________________________________________________
+void AliTPCCalibRawBase::MergeBase(const AliTPCCalibRawBase *calib)
+{
+ //
+ // merge this with base
+ //
+ if (calib->fFirstTimeStamp<fFirstTimeStamp) fFirstTimeStamp=calib->fFirstTimeStamp;
+ if (calib->fLastTimeStamp>fLastTimeStamp) fLastTimeStamp =calib->fLastTimeStamp;
+}
+