]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updated AliPHOSRawStream now uses the correct ALTOR mapping (Boris)
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Aug 2006 16:33:17 +0000 (16:33 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 8 Aug 2006 16:33:17 +0000 (16:33 +0000)
PHOS/AliPHOSRawStream.cxx
PHOS/AliPHOSRawStream.h

index 0a0f409391126bbf18394c1ffa9a14541b27ff56..b41eb9d7192305cd399a43f1530843ef553dfa20 100644 (file)
 /// root > while (input.Next()) ..... 
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <TString.h>
+#include <TSystem.h>
+
 #include "AliPHOSRawStream.h"
 #include "AliRawReader.h"
+#include "AliPHOSAltroMapping.h"
 
 ClassImp(AliPHOSRawStream)
 
@@ -43,13 +47,24 @@ AliPHOSRawStream::AliPHOSRawStream(AliRawReader* rawReader) :
   fRow(-1),
   fPrevRow(-1),
   fColumn(-1),
-  fPrevColumn(-1)
+  fPrevColumn(-1),
+  fGain(0)
 {
 // create an object to read PHOS raw digits
 
   SelectRawData("PHOS");
 
-  fNoAltroMapping = kTRUE;
+  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);
 }
 
 //_____________________________________________________________________________
@@ -60,7 +75,8 @@ AliPHOSRawStream::AliPHOSRawStream(const AliPHOSRawStream& stream) :
   fRow(-1),
   fPrevRow(-1),
   fColumn(-1),
-  fPrevColumn(-1)
+  fPrevColumn(-1),
+  fGain(0)
 {  
   Fatal("AliPHOSRawStream", "copy constructor not implemented");
 }
@@ -77,6 +93,8 @@ AliPHOSRawStream& AliPHOSRawStream::operator = (const AliPHOSRawStream&
 AliPHOSRawStream::~AliPHOSRawStream()
 {
 // destructor
+
+  for(Int_t i = 0; i < 4; i++) delete fMapping[i];
 }
 
 //_____________________________________________________________________________
@@ -85,6 +103,7 @@ void AliPHOSRawStream::Reset()
   // reset phos raw stream params
   AliAltroRawStream::Reset();
   fModule = fPrevModule = fRow = fPrevRow = fColumn = fPrevColumn = -1;
+  fGain = 0;
 }
 
 //_____________________________________________________________________________
@@ -97,8 +116,8 @@ Bool_t AliPHOSRawStream::Next()
   fPrevRow = fRow;
   fPrevColumn = fColumn;
   if (AliAltroRawStream::Next()) {
-    //    if (IsNewHWAddress())
-    ApplyAltroMapping();
+    if (IsNewHWAddress())
+      ApplyAltroMapping();
     return kTRUE;
   }
   else
@@ -111,7 +130,14 @@ void AliPHOSRawStream::ApplyAltroMapping()
   // Take the DDL index, load
   // the corresponding altro mapping
   // object and fill the sector,row and pad indeces
-  fModule = fSegmentation[0];
-  fRow = fSegmentation[1];
-  fColumn = fSegmentation[2];
+  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);
+
 }
index bdfcfac60f9e7af73eb20e39611b77f8f7178e29..489d59fa5d0ca81aa80bd62676ef43d796f41029 100644 (file)
@@ -16,7 +16,7 @@
 // --- AliRoot header files ---
 #include "AliAltroRawStream.h"
 class AliRawReader;
-
+class AliAltroMapping;
 
 class AliPHOSRawStream: public AliAltroRawStream {
 
@@ -27,31 +27,37 @@ public :
   virtual void             Reset();
   virtual Bool_t           Next();
   
-  Int_t            GetColumn() const {return fColumn;}
-  Int_t            GetModule() const {return fModule;}
-  Int_t            GetPrevColumn() const {return fPrevColumn;}
+  Int_t            GetModule()     const {return fModule;}
+  Int_t            GetRow()        const {return fRow;}
+  Int_t            GetColumn()     const {return fColumn;}
   Int_t            GetPrevModule() const {return fPrevModule;}
-  Int_t            GetPrevRow() const {return fPrevRow;}
-  Int_t            GetRow() const {return fRow;}
-  Bool_t           IsNewColumn() const {return (GetColumn() != GetPrevColumn()) || IsNewRow();}
-  Bool_t           IsNewModule() const {return GetModule() != GetPrevModule();}
-  Bool_t           IsNewRow() const {return (GetRow() != GetPrevRow()) || IsNewModule();}
+  Int_t            GetPrevRow()    const {return fPrevRow;}
+  Int_t            GetPrevColumn() const {return fPrevColumn;}
+  Bool_t           IsNewModule()   const {return GetModule() != GetPrevModule();}
+  Bool_t           IsNewRow()      const {return (GetRow() != GetPrevRow()) || IsNewModule();}
+  Bool_t           IsNewColumn()   const {return (GetColumn() != GetPrevColumn()) || IsNewRow();}
+  Bool_t           IsLowGain()     const {return (!fGain);} 
 
 protected:
-    AliPHOSRawStream(const AliPHOSRawStream& stream);
-    AliPHOSRawStream& operator = (const AliPHOSRawStream& stream);
 
-    virtual void ApplyAltroMapping();
+  AliPHOSRawStream(const AliPHOSRawStream& stream);
+  AliPHOSRawStream& operator = (const AliPHOSRawStream& stream);
 
-    Int_t            fModule;       // index of current module
-    Int_t            fPrevModule;   // index of previous module
-    Int_t            fRow;          // index of current row
-    Int_t            fPrevRow;      // index of previous row
-    Int_t            fColumn;       // index of current column
-    Int_t            fPrevColumn;   // index of previous column
+  virtual void ApplyAltroMapping();
+
+  Int_t            fModule;       // index of current module
+  Int_t            fPrevModule;   // index of previous module
+  Int_t            fRow;          // index of current row
+  Int_t            fPrevRow;      // index of previous row
+  Int_t            fColumn;       // index of current column
+  Int_t            fPrevColumn;   // index of previous column
+  Bool_t           fGain;         // low (0) or (1) high gain
   
+  AliAltroMapping *fMapping[4];   // pointers to ALTRO mapping
+
   ClassDef(AliPHOSRawStream, 0)   // class for reading PHOS raw digits
-    };
+
+};
 
 #endif