#ifndef __JLINE3EZ__ #define __JLINE3EZ__ #include #include #include "JMath/JMath.hh" #include "JFit/JLine3Z.hh" #include "JFit/JEnergy.hh" /** * \author mdejong */ namespace JFIT {} namespace JPP { using namespace JFIT; } namespace JFIT { using JMATH::JMath; /** * Data structure for fit of straight line in positive z-direction with energy. * Note that the position coordinates are defined with respect to the given direction. */ class JLine3EZ : public JLine3Z, public JEnergy, public JMath { public: /** * Default constructor. */ JLine3EZ() : JLine3Z(), JEnergy() {} /** * Constructor. * * \param line line * \param x energy */ JLine3EZ(const JLine3Z& line, const JEnergy& x) : JLine3Z(line), JEnergy(x) {} /** * Prefix unary minus. * * \return line */ JLine3EZ& negate() { JLine3Z::negate(); JEnergy::negate(); return *this; } /** * Addition operator. * * \param value line * \return line */ JLine3EZ& add(const JLine3EZ& value) { JLine3Z::add(value); JEnergy::add(value); return *this; } /** * Subtraction operator. * * \param value line * \return line */ JLine3EZ& sub(const JLine3EZ& value) { JLine3Z::sub(value); JEnergy::sub(value); return *this; } /** * Multiplication operator. * * \param value multiplication factor * \return line */ JLine3EZ& mul(const double value) { JLine3Z::mul(value); JEnergy::mul(value); return *this; } /** * Division operator. * * \param value multiplication factor * \return line */ JLine3EZ& div(const double value) { JLine3Z::div(value); JEnergy::div(value); return *this; } /** * Read object from input. * * \param in input stream * \param object object * \return input stream */ friend inline std::istream& operator>>(std::istream& in, JLine3EZ& object) { in >> static_cast(object); in >> static_cast(object); return in; } /** * Write object to output. * * \param out output stream * \param object object * \return output stream */ friend inline std::ostream& operator<<(std::ostream& out, const JLine3EZ& object) { out << static_cast(object); out << static_cast(object); return out; } }; } #endif