11 #include <tracking/pxdDataReductionClasses/ROIDetPlane.h>
13 #include <vxd/geometry/GeoCache.h>
14 #include <vxd/geometry/SensorInfoBase.h>
15 #include <framework/logging/Logger.h>
21 ROIDetPlane::ROIDetPlane(
const VxdID& vxdID) :
ROIDetPlane(vxdID, 10.0, 0.4999999 * M_PI)
26 ROIDetPlane::ROIDetPlane(
const VxdID& vxdID,
double toleranceZ,
double tolerancePhi)
27 : m_vxdID(vxdID), m_orthoVec_upper(0, 0, 0), m_orthoVec_lower(0, 0, 0)
33 TVector3 local(0, 0, 0);
34 TVector3 uVector(1, 0, 0);
35 TVector3 vVector(0, 1, 0);
37 TVector3 globalSensorPos = aSensorInfo.
pointToGlobal(local,
true);
38 TVector3 globaluVector = aSensorInfo.
vectorToGlobal(uVector,
true);
39 TVector3 globalvVector = aSensorInfo.
vectorToGlobal(vVector,
true);
41 setO(globalSensorPos);
43 setUV(globaluVector, globalvVector);
50 if (tolerancePhi >= 0 && tolerancePhi < M_PI / 2.0) {
51 maxDistU += fabs(std::tan(tolerancePhi) * globalSensorPos.Perp());
53 B2WARNING(
"No valid value for the phi tolerance given! Will use 0 tolerance!" <<
LogVar(
"tolerance phi", tolerancePhi));
58 TVector3 edgepoint_upper = globalSensorPos + maxDistU * globaluVector;
59 TVector3 edgepoint_lower = globalSensorPos - maxDistU * globaluVector;
67 TVector3 minVecV(0, -aSensorInfo.
getVSize() / 2.0, 0);
68 TVector3 maxVecV(0, aSensorInfo.
getVSize() / 2.0, 0);
82 double trackZ = trackPosition.Z();