MpdEmcTrackExtrap.cxx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "MpdEmcTrackExtrap.h"
  2. #include "MpdEmcClusterKI.h"
  3. MpdEmcTrackExtrap::MpdEmcTrackExtrap(int trckInd, double xTop, double yTop, double zTop, double xD, double yD,
  4. double zD)
  5. : fIndex(trckInd), fX1(xTop), fY1(yTop), fZ1(zTop), fX2(xD), fY2(yD), fZ2(zD)
  6. {
  7. }
  8. double MpdEmcTrackExtrap::Distance(MpdEmcClusterKI* clu) const
  9. {
  10. double dx = fX2 - clu->GetX(), dy = fY2 - clu->GetY(), dz = fZ2 - clu->GetZ();
  11. return sqrt(dx * dx + dy * dy + dz * dz);
  12. }
  13. void MpdEmcTrackExtrap::DistanceDphiDz(MpdEmcClusterKI* clu, double& dphi, double& dz) const
  14. {
  15. double dx = fX2 - clu->GetX(), dy = fY2 - clu->GetY();
  16. dphi = (dx * fY2 - dy * fX2) / sqrt(fX2 * fX2 + fY2 * fY2); // TODO: Check sign!
  17. dz = fZ2 - clu->GetZ();
  18. }
  19. void MpdEmcTrackExtrap::DistanceLongPerp(MpdEmcClusterKI* clu, double& dLong, double& dPerp) const
  20. {
  21. double dx = fX2 - clu->GetX(), dy = fY2 - clu->GetY(), dz = fZ2 - clu->GetZ();
  22. double dxT = fX2 - fX1, dyT = fY2 - fY1, dzT = fZ2 - fZ1;
  23. double dl = sqrt(dxT * dxT + dyT * dyT + dzT * dzT);
  24. if (dl > 0) {
  25. dLong = (dx * dxT + dy * dyT + dz * dzT) / dl; // scalar product
  26. double xi = dy * dzT - dz * dyT;
  27. double yi = dz * dxT - dz * dzT;
  28. dPerp = TMath::Sign(sqrt(xi * xi + yi * yi) / dl, xi * fX2 + yi * fY2); // vector product
  29. }
  30. }
  31. ClassImp(MpdEmcTrackExtrap)