]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSRawStream.cxx
Reducing the search window used to find the max in the ADC samples. Needed because...
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRawStream.cxx
index 4e2b1414e4bda5084ebc078e0ceb6b3e15548cbd..b41eb9d7192305cd399a43f1530843ef553dfa20 100644 (file)
 /// root > while (input.Next()) ..... 
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <TString.h>
+#include <TSystem.h>
+
 #include "AliPHOSRawStream.h"
 #include "AliRawReader.h"
+#include "AliPHOSAltroMapping.h"
 
 ClassImp(AliPHOSRawStream)
 
 
 //_____________________________________________________________________________
 AliPHOSRawStream::AliPHOSRawStream(AliRawReader* rawReader) :
-  AliAltroRawStream(rawReader)
+  AliAltroRawStream(rawReader),
+  fModule(-1),
+  fPrevModule(-1),
+  fRow(-1),
+  fPrevRow(-1),
+  fColumn(-1),
+  fPrevColumn(-1),
+  fGain(0)
 {
 // create an object to read PHOS raw digits
 
-  fRawReader->Select(6);
+  SelectRawData("PHOS");
+
+  TString path = gSystem->Getenv("ALICE_ROOT");
+  path += "/PHOS/mapping/RCU";
+  TString path2;
+  for(Int_t i = 0; i < 4; i++) {
+    path2 = path;
+    path2 += i;
+    path2 += ".data";
+    fMapping[i] = new AliPHOSAltroMapping(path2.Data());
+  }
+
+  SetNoAltroMapping(kFALSE);
+}
+
+//_____________________________________________________________________________
+AliPHOSRawStream::AliPHOSRawStream(const AliPHOSRawStream& stream) :
+  AliAltroRawStream(stream),
+  fModule(-1),
+  fPrevModule(-1),
+  fRow(-1),
+  fPrevRow(-1),
+  fColumn(-1),
+  fPrevColumn(-1),
+  fGain(0)
+{  
+  Fatal("AliPHOSRawStream", "copy constructor not implemented");
+}
+
+//_____________________________________________________________________________
+AliPHOSRawStream& AliPHOSRawStream::operator = (const AliPHOSRawStream& 
+                                             /* stream */)
+{
+  Fatal("operator =", "assignment operator not implemented");
+  return *this;
+}
+
+//_____________________________________________________________________________
+AliPHOSRawStream::~AliPHOSRawStream()
+{
+// destructor
+
+  for(Int_t i = 0; i < 4; i++) delete fMapping[i];
+}
+
+//_____________________________________________________________________________
+void AliPHOSRawStream::Reset()
+{
+  // reset phos raw stream params
+  AliAltroRawStream::Reset();
+  fModule = fPrevModule = fRow = fPrevRow = fColumn = fPrevColumn = -1;
+  fGain = 0;
+}
+
+//_____________________________________________________________________________
+Bool_t AliPHOSRawStream::Next()
+{
+  // Read next PHOS signal
+  // Apply the PHOS altro mapping to get
+  // the module,row and column indeces
+  fPrevModule = fModule;
+  fPrevRow = fRow;
+  fPrevColumn = fColumn;
+  if (AliAltroRawStream::Next()) {
+    if (IsNewHWAddress())
+      ApplyAltroMapping();
+    return kTRUE;
+  }
+  else
+    return kFALSE;
+}
+
+//_____________________________________________________________________________
+void AliPHOSRawStream::ApplyAltroMapping()
+{
+  // Take the DDL index, load
+  // the corresponding altro mapping
+  // object and fill the sector,row and pad indeces
+  Int_t ddlNumber = GetDDLNumber();
+  fModule = ddlNumber / 4;
+
+  Int_t rcuIndex = ddlNumber % 4;
+
+  Short_t hwAddress = GetHWAddress();
+  fRow = fMapping[rcuIndex]->GetPadRow(hwAddress);
+  fColumn = fMapping[rcuIndex]->GetPad(hwAddress);
+  fGain = fMapping[rcuIndex]->GetSector(hwAddress);
+
 }