#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