diff --git a/DDSegmentation/src/PolarGridRPhi2.cpp b/DDSegmentation/src/PolarGridRPhi2.cpp index 5863b2e4feb8b605714dca0f152ae1055d83fe3b..9e8e2026c58928efc802610ac9c9d3b57bd8c21e 100644 --- a/DDSegmentation/src/PolarGridRPhi2.cpp +++ b/DDSegmentation/src/PolarGridRPhi2.cpp @@ -1,8 +1,8 @@ /* * PolarGridRPhi2.cpp * - * Created on: Sept 16, 2014 - * Author: Marko Petric + * Created on: March 17, 2015 + * Author: Marko Petric, Andre Sailer */ #include "DDSegmentation/PolarGridRPhi2.h" @@ -35,8 +35,9 @@ PolarGridRPhi2::~PolarGridRPhi2() { Vector3D PolarGridRPhi2::position(const CellID& cellID) const { _decoder->setValue(cellID); Vector3D position; - double R = binToPosition((*_decoder)[_rId].value(), _gridRValues[0], _offsetR); - double phi = binToPosition((*_decoder)[_phiId].value(), _gridPhiValues[0], _offsetPhi); + const int rBin = (*_decoder)[_rId].value(); + double R = binToPosition(rBin, _gridRValues, _offsetR); + double phi = binToPosition((*_decoder)[_phiId].value(), _gridPhiValues[rBin], _offsetPhi+_gridPhiValues[rBin]*0.5); position.X = R * cos(phi); position.Y = R * sin(phi); @@ -50,8 +51,9 @@ Vector3D PolarGridRPhi2::position(const CellID& cellID) const { double phi = atan2(localPosition.Y,localPosition.X); double R = sqrt( localPosition.X * localPosition.X + localPosition.Y * localPosition.Y ); - (*_decoder)[_rId] = positionToBin(R, _gridRValues[0], _offsetR); - (*_decoder)[_phiId] = positionToBin(phi, _gridPhiValues[0], _offsetPhi); + const int rBin = positionToBin(R, _gridRValues, _offsetR); + (*_decoder)[_rId] = rBin; + (*_decoder)[_phiId] = positionToBin(phi, _gridPhiValues[rBin], _offsetPhi+_gridPhiValues[rBin]*0.5); return _decoder->getValue(); }