#ifndef __JFIT__JVECTORNZ__ #define __JFIT__JVECTORNZ__ #include "JFit/JLine1Z.hh" #include "JMath/JVectorND.hh" #include "JGeometry3D/JVector3D.hh" /** * \author mdejong */ namespace JFIT {} namespace JPP { using namespace JFIT; } namespace JFIT { /** * Determination of the time residual vector of hits for a track along z-axis (JFIT::JLine1Z). */ class JVectorNZ : public JMATH::JVectorND { public: /** * Default contructor. */ JVectorNZ() {} /** * Constructor. * * The template argument T refers to an iterator of a data structure which should have the following member methods: * - double getX(); // [m] * - double getY(); // [m] * - double getZ(); // [m] * - double getT(); // [ns] * * \param track track * \param __begin begin of data * \param __end end of data */ template JVectorNZ(const JLine1Z& track, T __begin, T __end) { set(track, __begin, __end); } /** * Set time residual vector. * * The template argument T refers to an iterator of a data structure which should have the following member methods: * - double getX(); // [m] * - double getY(); // [m] * - double getZ(); // [m] * - double getT(); // [ns] * * \param track track * \param __begin begin of data * \param __end end of data */ template void set(const JLine1Z& track, T __begin, T __end) { using JGEOMETRY3D::JVector3D; this->clear(); for (T hit = __begin; hit != __end; ++hit) { this->push_back(hit->getT() - track.getT(JVector3D(hit->getX(), hit->getY(), hit->getZ()))); } } }; } #endif