27 mXAnode = mGeo->cdrHght() + mGeo->camHght() / 2;
32 double rowPos = padPlane->getRowPos(
padrow);
33 double rowSize = padPlane->getRowSize(
padrow);
34 double middleRowPos = padPlane->getRowPos(padPlane->getNrows() / 2);
36 return rowPos - rowSize / 2. - middleRowPos;
41 double padWidth = padPlane->getWidthIPad();
43 float vDrift = mCalVdriftExB->
getVdrift(detector);
44 float exb = mCalVdriftExB->
getExB(detector);
53 double lorentzCorrection = TMath::Tan(exb) * mXAnode;
56 double calibratedDy = rawDy - lorentzCorrection;
64 float t0Correction = -0.279;
65 return x += t0Correction;
70 auto transformationMatrix = mGeo->
getMatrixT2L(detector);
72 ROOT::Math::Impl::Transform3D<double>::Point localPoint(point[0], point[1], point[2]);
73 auto gobalPoint = transformationMatrix ^ localPoint;
75 return {(float)gobalPoint.x(), (float)gobalPoint.y(), (float)gobalPoint.z()};
80 auto detector = tracklet.getDetector();
81 auto hcid = tracklet.getHCID();
82 auto padrow = tracklet.getPadRow();
83 auto column = tracklet.getColumn();
87 position = tracklet.getPosition() ^ 0x80;
91 slope = tracklet.getSlope() ^ 0x80;
96 position = tracklet.getPositionBinSigned();
97 slope = tracklet.getSlopeBinSigned();
101 const auto padPlane = mGeo->getPadPlane(detector);
104 float x = mGeo->cdrHght() - 0.5;
105 float y = tracklet.getUncalibratedY(mApplyShift);
114 std::array<float, 3> sectorSpacePoint =
transformL2T(detector, std::array<double, 3>{calibratedX,
y,
z});
115 LOG(
debug) <<
"x: " << sectorSpacePoint[0] <<
" | "
116 <<
"y: " << sectorSpacePoint[1] <<
" | "
117 <<
"z: " << sectorSpacePoint[2];
118 return CalibratedTracklet(sectorSpacePoint[0], sectorSpacePoint[1], sectorSpacePoint[2], dy);
127 float vDrift = mCalVdriftExB->
getVdrift(detector);
132 if (x < -mGeo->camHght() / 2) {
134 timebin =
t0 - (
x + mGeo->camHght() / 2) / (vDrift * 0.1);
137 timebin =
t0 - 1.0 + fabs(
x);
Definition of the GeometryManager class.
const Mat3D & getMatrixT2L(int sensID) const
float getExB(int iDet) const
float getVdrift(int iDet) const
void createPadPlaneArray()
bool createClusterMatrixArray()
static Geometry * instance()
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t0
GLdouble GLdouble GLdouble z
constexpr int NBITSTRKLSLOPE
number of bits for slope in tracklet64 word
constexpr float GRANULARITYTRKLSLOPE
granularity of slope in tracklet64 word in pads/timebin
constexpr int NBITSTRKLPOS
number of bits for position in tracklet64 word
constexpr int ADDBITSHIFTSLOPE
in the TRAP the slope is shifted by 3 additional bits compared to the position
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"