]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/PHOSLEDda.cxx
DA are updated to a new raw data decoder AliCaloRawStreamV3
[u/mrichter/AliRoot.git] / PHOS / PHOSLEDda.cxx
index 3e652f194d77bb5a0ff8f7b1a13c2db45ae852f1..5e2c3c36b4bb81886d6aa2bd260455e328403365 100644 (file)
@@ -27,8 +27,9 @@ extern "C" {
 #include "AliRawReader.h"
 #include "AliRawReaderDate.h"
 #include "AliPHOSRcuDA1.h"
-#include "AliPHOSRawDecoder.h"
+#include "AliPHOSRawFitterv0.h"
 #include "AliCaloAltroMapping.h"
+#include "AliCaloRawStreamV3.h"
 
 
 /* Main routine
@@ -106,10 +107,12 @@ int main(int argc, char **argv) {
   Float_t e[64][56][2];
   Float_t t[64][56][2];
 
-  Int_t gain = -1;
-  Int_t X = -1;
-  Int_t Z = -1;
-  Int_t nFired = -1;
+  Int_t gain     = -1;
+  Int_t cellX    = -1;
+  Int_t cellZ    = -1;
+  Int_t nBunches =  0;
+  Int_t nFired   = -1;
+  Int_t sigStart, sigLength;
 
   TH1I fFiredCells("fFiredCells","Number of fired cells per event",100,0,1000);
 
@@ -156,27 +159,42 @@ int main(int argc, char **argv) {
       nFired = 0;
 
       rawReader = new AliRawReaderDate((void*)event);
-//       AliPHOSRawDecoderv1 dc(rawReader,mapping);
-      AliPHOSRawDecoder dc(rawReader,mapping);
-      dc.SubtractPedestals(kTRUE);
+      AliCaloRawStreamV3 stream(rawReader,"PHOS",mapping);
+      AliPHOSRawFitterv0 fitter();
+      fitter.SubtractPedestals(kTRUE); // assume that data is non-ZS
       
-      while(dc.NextDigit()) {
-
-       X = dc.GetRow() - 1;
-       Z = dc.GetColumn() - 1;
+      while (stream.NextDDL()) {
+       while (stream.NextChannel()) {
+
+         cellX    = stream.GetCellX();
+         cellZ    = stream.GetCellZ();
+         caloFlag = stream.GetCaloFlag();  // 0=LG, 1=HG, 2=TRU
+
+         // In case of oscillating signals with ZS, a channel can have several bunches
+         nBunches = 0;
+         while (stream.NextBunch()) {
+           nBunches++;
+           if (nBunches > 1) continue;
+           sigStart  = fRawStream.GetStartTimeBin();
+           sigLength = fRawStream.GetBunchLength();
+           fitter.SetSamples(fRawStream->GetSignals(),sigStart,sigLength);
+         } // End of NextBunch()
+         
+         fitter.SetNBunches(nBunches);
+         fitter.SetChannelGeo(module,cellX,cellZ,caloFlag);
+         fitter.Eval();
+
+         if (nBunches>1 || caloFlag!=0 || caloFlag!=1 || fitter.GetSignalQuality()>1) continue;
+         
+         e[cellX][cellZ][caloFlag] = fitter.GetEnergy();
+         t[cellX][cellZ][caloFlag] = fitter.GetTime();
+
+         if(caloFlag==1 && fitter.GetEnergy()>40)
+           nFired++;
+       }
+      }
 
-       if(dc.IsLowGain()) gain = 0;
-       else
-         gain = 1;
-       
-       e[X][Z][gain] = dc.GetEnergy();
-       t[X][Z][gain] = dc.GetTime();
-       
-       if(gain && dc.GetEnergy()>40)
-         nFired++;
 
-      }
-      
       da1.FillHistograms(e,t);
       fFiredCells.Fill(nFired);