/// root > while (input.Next()) .....
///////////////////////////////////////////////////////////////////////////////
+#include <TString.h>
+#include <TSystem.h>
+
#include "AliPHOSRawStream.h"
#include "AliRawReader.h"
+#include "AliPHOSAltroMapping.h"
ClassImp(AliPHOSRawStream)
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);
}
//_____________________________________________________________________________
fRow(-1),
fPrevRow(-1),
fColumn(-1),
- fPrevColumn(-1)
+ fPrevColumn(-1),
+ fGain(0)
{
Fatal("AliPHOSRawStream", "copy constructor not implemented");
}
AliPHOSRawStream::~AliPHOSRawStream()
{
// destructor
+
+ for(Int_t i = 0; i < 4; i++) delete fMapping[i];
}
//_____________________________________________________________________________
// reset phos raw stream params
AliAltroRawStream::Reset();
fModule = fPrevModule = fRow = fPrevRow = fColumn = fPrevColumn = -1;
+ fGain = 0;
}
//_____________________________________________________________________________
fPrevRow = fRow;
fPrevColumn = fColumn;
if (AliAltroRawStream::Next()) {
- // if (IsNewHWAddress())
- ApplyAltroMapping();
+ if (IsNewHWAddress())
+ ApplyAltroMapping();
return kTRUE;
}
else
// 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);
+
}
// --- AliRoot header files ---
#include "AliAltroRawStream.h"
class AliRawReader;
-
+class AliAltroMapping;
class AliPHOSRawStream: public AliAltroRawStream {
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