11 #include <alignment/reconstruction/AlignableBKLMRecoHit.h>
13 #include <alignment/GlobalDerivatives.h>
14 #include <alignment/GlobalLabel.h>
15 #include <alignment/Hierarchy.h>
16 #include <framework/geometry/B2Vector3.h>
17 #include <klm/dataobjects/bklm/BKLMHit2d.h>
18 #include <klm/bklm/geometry/GeometryPar.h>
19 #include <klm/dbobjects/bklm/BKLMAlignment.h>
20 #include <klm/dataobjects/KLMElementNumbers.h>
22 #include <genfit/DetPlane.h>
28 genfit::PlanarMeasurement(HIT_DIMENSIONS)
30 int section = hit->getSection();
31 int sector = hit->getSector();
40 global[0] = hit->getGlobalPosition()[0];
41 global[1] = hit->getGlobalPosition()[1];
42 global[2] = hit->getGlobalPosition()[2];
48 double localU = local[1];
49 double localV = local[2];
55 int nStrips = hit->getPhiStripMax() - hit->getPhiStripMin() + 1;
56 double dn = nStrips - 1.5;
57 double factor = std::pow((0.9 + 0.4 * dn * dn), 1.5) * 0.60;
58 errorU = errorU * sqrt(factor);
60 nStrips = hit->getZStripMax() - hit->getZStripMin() + 1;
62 factor = std::pow((0.9 + 0.4 * dn * dn), 1.5) * 0.55;
63 errorV = errorV * sqrt(factor);
67 rawHitCoords_(0) = localU;
68 rawHitCoords_(1) = localV;
70 rawHitCov_(0, 0) = errorU * errorU;
71 rawHitCov_(0, 1) = 0.;
72 rawHitCov_(1, 0) = 0.;
73 rawHitCov_(1, 1) = errorV * errorV;
79 CLHEP::Hep3Vector uAxis(0, 1, 0);
80 CLHEP::Hep3Vector vAxis(0, 0, 1);
85 B2Vector3D origin_mid(gOrigin_midway[0], gOrigin_midway[1], gOrigin_midway[2]);
88 B2Vector3D uGlobal(gUaxis[0], gUaxis[1], gUaxis[2]);
90 B2Vector3D vGlobal(gVaxis[0], gVaxis[1], gVaxis[2]);
103 TVectorD predFglo = state.get6DState();
104 TVectorD correctedLocal(2);
105 CLHEP::Hep3Vector localmom(predFglo[3], predFglo[4], predFglo[5]);
110 CLHEP::Hep3Vector global_shift_z(0, 0, predFglo[5]*
halfheight_sci / sqrt(predFglo[3]*predFglo[3] + predFglo[4]*predFglo[4]));
112 double local_shift_u = localmom[1] / localmom[0] *
halfheight_sci;
113 correctedLocal[0] = local_corrected_z[1] + local_shift_u;
115 correctedLocal[1] = local_corrected_z[2];
117 correctedLocal[0] = rawHitCoords_[0];
118 correctedLocal[1] = rawHitCoords_[1];
122 return std::vector<genfit::MeasurementOnPlane*>(1,
new genfit::MeasurementOnPlane(correctedLocal, rawHitCov_, state.getPlane(),
123 state.getRep(), this->constructHMatrix(state.getRep())));
128 std::vector<int> labGlobal;
138 TMatrixD derGlobal(2, 6);
142 double uSlope = sop->getState()[1];
144 double vSlope = sop->getState()[2];
146 double uPos = sop->getState()[3];
148 double vPos = sop->getState()[4];
151 derGlobal(0, 0) = 1.0;
152 derGlobal(0, 1) = 0.0;
153 derGlobal(0, 2) = - uSlope;
154 derGlobal(0, 3) = vPos * uSlope;
155 derGlobal(0, 4) = -uPos * uSlope;
156 derGlobal(0, 5) = vPos;
158 derGlobal(1, 0) = 0.0;
159 derGlobal(1, 1) = 1.0;
160 derGlobal(1, 2) = - vSlope;
161 derGlobal(1, 3) = vPos * vSlope;
162 derGlobal(1, 4) = -uPos * vSlope;
163 derGlobal(1, 5) = -uPos;