]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCCalibRawBase.cxx
Move HMPID QA code to PWG1.
[u/mrichter/AliRoot.git] / TPC / AliTPCCalibRawBase.cxx
index 954d67c9fafb7cdb636b5aaf4425df0d5fc64936..561cf5126bbc837db7ebe14d5766be670c6fce88 100644 (file)
@@ -35,7 +35,9 @@
 #include "AliAltroRawStream.h"
 #include "AliTPCROC.h"
 #include "AliTPCRawStreamFast.h"
+#include "AliTPCRawStreamV3.h"
 #include "AliTPCRawStream.h"
+#include "AliLog.h"
 #include "TTreeStream.h"
 #include "event.h"
 
@@ -50,11 +52,17 @@ AliTPCCalibRawBase::AliTPCCalibRawBase() :
   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),
@@ -74,11 +82,17 @@ AliTPCCalibRawBase::AliTPCCalibRawBase(const AliTPCCalibRawBase &calib) :
   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),
@@ -110,7 +124,7 @@ AliTPCCalibRawBase::~AliTPCCalibRawBase()
     return *this;
   }
 //_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEventFast(AliTPCRawStreamFast *rawStreamFast)
+Bool_t AliTPCCalibRawBase::ProcessEventFast(AliTPCRawStreamFast * const rawStreamFast)
 {
   //
   // Event Processing loop - AliTPCRawStreamFast
@@ -128,7 +142,7 @@ Bool_t AliTPCCalibRawBase::ProcessEventFast(AliTPCRawStreamFast *rawStreamFast)
         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;
         }
       }
@@ -140,7 +154,7 @@ Bool_t AliTPCCalibRawBase::ProcessEventFast(AliTPCRawStreamFast *rawStreamFast)
   return withInput;
 }
 //_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEventFast(AliRawReader *rawReader)
+Bool_t AliTPCCalibRawBase::ProcessEventFast(AliRawReader * const rawReader)
 {
   //
   //  Event processing loop - AliRawReader
@@ -151,13 +165,87 @@ Bool_t AliTPCCalibRawBase::ProcessEventFast(AliRawReader *rawReader)
     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
@@ -174,6 +262,10 @@ Bool_t AliTPCCalibRawBase::ProcessEvent(AliTPCRawStream *rawStream)
       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
@@ -190,7 +282,7 @@ Bool_t AliTPCCalibRawBase::ProcessEvent(AliTPCRawStream *rawStream)
   return withInput;
 }
 //_____________________________________________________________________
-Bool_t AliTPCCalibRawBase::ProcessEvent(AliRawReader *rawReader)
+Bool_t AliTPCCalibRawBase::ProcessEventOld(AliRawReader * const rawReader)
 {
   //
   //  Event processing loop - AliRawReader
@@ -207,15 +299,23 @@ Bool_t AliTPCCalibRawBase::ProcessEvent(AliRawReader *rawReader)
   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;
 
 }
 //_____________________________________________________________________
@@ -260,3 +360,13 @@ TTreeSRedirector *AliTPCCalibRawBase::GetDebugStreamer(){
   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;
+}
+