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);
54 double lorentzCorrection = TMath::Tan(exb) * mGeo->cdrHght();
57 double calibratedDy = rawDy - lorentzCorrection;
65 float t0Correction = -0.279;
66 return x += t0Correction;
71 auto transformationMatrix = mGeo->
getMatrixT2L(detector);
73 ROOT::Math::Impl::Transform3D<double>::Point localPoint(point[0], point[1], point[2]);
74 auto gobalPoint = transformationMatrix ^ localPoint;
76 return {(float)gobalPoint.x(), (float)gobalPoint.y(), (float)gobalPoint.z()};
81 auto detector = tracklet.getDetector();
82 auto hcid = tracklet.getHCID();
83 auto padrow = tracklet.getPadRow();
84 auto column = tracklet.getColumn();
88 position = tracklet.getPosition() ^ 0x80;
92 slope = tracklet.getSlope() ^ 0x80;
97 position = tracklet.getPositionBinSigned();
98 slope = tracklet.getSlopeBinSigned();
102 const auto padPlane = mGeo->getPadPlane(detector);
105 float x = mGeo->cdrHght() - 0.5;
106 float y = tracklet.getUncalibratedY(mApplyShift);
115 std::array<float, 3> sectorSpacePoint =
transformL2T(detector, std::array<double, 3>{calibratedX,
y,
z});
116 LOG(
debug) <<
"x: " << sectorSpacePoint[0] <<
" | "
117 <<
"y: " << sectorSpacePoint[1] <<
" | "
118 <<
"z: " << sectorSpacePoint[2];
119 return CalibratedTracklet(sectorSpacePoint[0], sectorSpacePoint[1], sectorSpacePoint[2], dy);
128 float vDrift = mCalVdriftExB->
getVdrift(detector);
133 if (x < -mGeo->camHght() / 2) {
135 timebin =
t0 - (
x + mGeo->camHght() / 2) / (vDrift * 0.1);
138 timebin =
t0 - 1.0 + fabs(
x);
Definition of the GeometryManager class.
const Mat3D & getMatrixT2L(int sensID) const
float getExB(int iDet, bool defaultAvg=true) const
float getVdrift(int iDet, bool defaultAvg=true) 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"