1234567891011121314151617181920212223242526272829303132333435363738 |
- #include "MpdEmcTrackExtrap.h"
- #include "MpdEmcClusterKI.h"
- MpdEmcTrackExtrap::MpdEmcTrackExtrap(int trckInd, double xTop, double yTop, double zTop, double xD, double yD,
- double zD)
- : fIndex(trckInd), fX1(xTop), fY1(yTop), fZ1(zTop), fX2(xD), fY2(yD), fZ2(zD)
- {
- }
- double MpdEmcTrackExtrap::Distance(MpdEmcClusterKI* clu) const
- {
- double dx = fX2 - clu->GetX(), dy = fY2 - clu->GetY(), dz = fZ2 - clu->GetZ();
- return sqrt(dx * dx + dy * dy + dz * dz);
- }
- void MpdEmcTrackExtrap::DistanceDphiDz(MpdEmcClusterKI* clu, double& dphi, double& dz) const
- {
- double dx = fX2 - clu->GetX(), dy = fY2 - clu->GetY();
- dphi = (dx * fY2 - dy * fX2) / sqrt(fX2 * fX2 + fY2 * fY2); // TODO: Check sign!
- dz = fZ2 - clu->GetZ();
- }
- void MpdEmcTrackExtrap::DistanceLongPerp(MpdEmcClusterKI* clu, double& dLong, double& dPerp) const
- {
- double dx = fX2 - clu->GetX(), dy = fY2 - clu->GetY(), dz = fZ2 - clu->GetZ();
- double dxT = fX2 - fX1, dyT = fY2 - fY1, dzT = fZ2 - fZ1;
- double dl = sqrt(dxT * dxT + dyT * dyT + dzT * dzT);
- if (dl > 0) {
- dLong = (dx * dxT + dy * dyT + dz * dzT) / dl; // scalar product
- double xi = dy * dzT - dz * dyT;
- double yi = dz * dxT - dz * dzT;
- dPerp = TMath::Sign(sqrt(xi * xi + yi * yi) / dl, xi * fX2 + yi * fY2); // vector product
- }
- }
- ClassImp(MpdEmcTrackExtrap)
|