26 #define BOOST_TEST_MODULE ( tracktrajectory_test ) 27 #include "boost/test/unit_test.hpp" 62 if (!
tag.empty()) BOOST_TEST_MESSAGE(
tag);
63 if (
std::abs(exp) < (tol / 100.)) BOOST_CHECK_SMALL(v, tol);
64 else BOOST_CHECK_CLOSE(v, exp, tol);
67 template <
typename VectA,
typename VectB>
69 BOOST_TEST(v.X() == exp.X());
70 BOOST_TEST(v.Y() == exp.Y());
71 BOOST_TEST(v.Z() == exp.Z());
74 template <
typename VectA,
typename VectB>
84 m.SetRotationMatrix(Tm);
97 BOOST_TEST(NPoints == expected.
positions.size());
100 for (
size_t i = 0; i <= NPoints + 1; ++i) {
101 BOOST_TEST_MESSAGE(
"HasPoint() position #" << i);
102 BOOST_TEST(traj.
HasPoint(i) == (i < NPoints));
105 if (NPoints == 0)
return;
110 BOOST_TEST(traj.
LastPoint() == NPoints - 1);
113 BOOST_TEST_MESSAGE(
"Vertex()");
116 BOOST_TEST_MESSAGE(
"Start()");
119 BOOST_TEST_MESSAGE(
"End()");
123 for (
size_t i = 0; i < NPoints; ++i) {
125 BOOST_TEST_MESSAGE(
"LocationAtPoint() position #" << i);
132 TVector3 Vstart, Vend;
133 std::tie(Vstart, Vend) = traj.
Extent<TVector3>();
134 BOOST_TEST(Vstart[0] == expected.
positions[0].X());
135 BOOST_TEST(Vstart[1] == expected.
positions[0].Y());
136 BOOST_TEST(Vstart[2] == expected.
positions[0].Z());
137 BOOST_TEST(Vend[0] == expected.
positions[NPoints - 1].X());
138 BOOST_TEST(Vend[1] == expected.
positions[NPoints - 1].Y());
139 BOOST_TEST(Vend[2] == expected.
positions[NPoints - 1].Z());
143 std::tie(start, end) = traj.
Extent();
144 BOOST_TEST_MESSAGE(
"Extent() start");
146 BOOST_TEST_MESSAGE(
"Extent() end");
151 BOOST_CHECK_CLOSE(traj.
Length(), expected.
length, 0.01);
153 BOOST_CHECK_CLOSE(traj.
Length(1),
161 BOOST_TEST_MESSAGE(
"VertexDirection()");
165 BOOST_TEST_MESSAGE(
"StartDirection()");
169 BOOST_TEST_MESSAGE(
"EndDirection()");
171 BOOST_CHECK_CLOSE(traj.
EndDirection().Mag2(), 1.0, 0.01);
175 BOOST_CHECK_CLOSE(traj.
Theta(), expected.
theta, 0.01);
176 BOOST_CHECK_CLOSE(traj.
Phi(), expected.
phi, 0.01);
183 BOOST_TEST_MESSAGE(
"VertexMomentumVector()");
186 BOOST_TEST_MESSAGE(
"StartMomentumVector()");
189 BOOST_TEST_MESSAGE(
"EndMomentumVector()");
194 BOOST_TEST_MESSAGE(
"VertexMomentum()");
197 BOOST_TEST_MESSAGE(
"StartMomentum()");
200 BOOST_TEST_MESSAGE(
"EndMomentum()");
206 for (
size_t i = 0; i < NPoints; ++i) {
208 BOOST_TEST_MESSAGE(
"DirectionAtPoint() position #" << i);
215 for (
size_t i = 0; i < NPoints; ++i) {
217 BOOST_TEST_MESSAGE(
"MomentumVectorAtPoint() position #" << i);
225 BOOST_TEST_MESSAGE(
"MomentumAtPoint() position #" << i);
237 TVector3 AstartDir, AendDir;
238 std::tie(AstartDir, AendDir) = traj.
Direction<TVector3>();
239 BOOST_CHECK_CLOSE(AstartDir[0], expected.
momenta[0].Unit().X(), 0.01);
240 BOOST_CHECK_CLOSE(AstartDir[1], expected.
momenta[0].Unit().Y(), 0.01);
241 BOOST_CHECK_CLOSE(AstartDir[2], expected.
momenta[0].Unit().Z(), 0.01);
242 BOOST_CHECK_CLOSE(AendDir[0], expected.
momenta[NPoints - 1].Unit().X(), 0.01);
243 BOOST_CHECK_CLOSE(AendDir[1], expected.
momenta[NPoints - 1].Unit().Y(), 0.01);
244 BOOST_CHECK_CLOSE(AendDir[2], expected.
momenta[NPoints - 1].Unit().Z(), 0.01);
247 std::tie(startDir, endDir) = traj.
Direction();
248 BOOST_TEST_MESSAGE(
"Direction() start");
250 BOOST_TEST_MESSAGE(
"Direction() end");
256 for (
size_t i = 0; i < NPoints; ++i) {
261 BOOST_TEST_MESSAGE(
"Test transformation to local at point #" << i);
265 BOOST_TEST_MESSAGE(
"Test transformation to global at point #" << i);
272 for (
size_t i = 0; i < NPoints; ++i) {
277 BOOST_TEST_MESSAGE(
"Test legacy transformation to local at point #" << i);
282 BOOST_TEST_MESSAGE(
"Test legacy transformation to global at point #" << i);
297 BOOST_TEST_MESSAGE(
"Testing the default recob::Trajectory constructor");
316 std::cout <<
"Default-constructed trajectory dump with verbosity level " 318 traj.
Dump(std::cout, v,
" ",
" ");
331 BOOST_TEST_MESSAGE(
"Testing the main recob::Trajectory constructor");
396 = (expected.
positions.size() - 1) * std::sqrt(3.0 - 2.0 * V2_2);
411 std::cout <<
"Trajectory dump with verbosity level " 413 traj.
Dump(std::cout, v,
" ",
" ");
426 expected.
momenta.begin(), [](
auto const& v){
return v.unit(); });
435 std::cout <<
"Momentumless trajectory dump with verbosity level " 437 mltraj.
Dump(std::cout, v,
" ",
" ");
end
while True: pbar.update(maxval-len(onlies[E][S])) #print iS, "/", len(onlies[E][S]) found = False for...
Point_t const & Vertex() const
Returns the position of the first point of the trajectory [cm].
double Phi(size_t p=0) const
Azimuthal angle at a point on the trajectory, with respect to z.
Data product for reconstructed trajectory in space.
recob::Trajectory::Rotation_t makeRotationMatrix(TMatrixD const &Tm)
double EndMomentum() const
Computes and returns the modulus of momentum at the last point [GeV/c].
bool HasPoint(size_t i) const
Returns whether the specified trajectory point is available.
recob::TrackTrajectory::Positions_t positions
Vector_t EndDirection() const
Returns the direction of the trajectory at the last point.
Vector_t const & StartMomentumVector() const
Returns the momentum of the trajectory at the first point [GeV/c].
tracking::Coord_t Coord_t
Type used for coordinates and values in general.
Point_t const & End() const
Returns the position of the last point of the trajectory [cm].
double AzimuthAngle(size_t p=0) const
"Azimuth" angle of trajectory, with respect to the sky.
double ZenithAngle(size_t p=0) const
"Zenith" angle of trajectory, with respect to the vertical axis.
double Length(size_t startAt=0) const
Returns the approximate length of the trajectory.
Rotation_t LocalToGlobalRotationAtPoint(size_t p) const
Returns a rotation matrix bringing relative directions to global.
double VertexMomentum() const
Computes and returns the modulus of momentum at the first point [GeV/c].
double StartMomentum() const
Computes and returns the modulus of momentum at the first point [GeV/c].
Vector_t DirectionAtPoint(size_t i) const
Computes and returns the direction of the trajectory at a point.
Rotation_t GlobalToLocalRotationAtPoint(size_t p) const
Returns a rotation matrix that brings trajectory direction along z.
recob::Trajectory::Momenta_t momenta
tracking::Vector_t Vector_t
Type for representation of momenta in 3D space.
size_t LastPoint() const
Returns the index of the last point in the trajectory.
std::pair< T, T > Extent() const
Fills the first and last point in the trajectory.
double MomentumAtPoint(size_t i) const
Computes and returns the modulus of the momentum at a point.
void TestTrajectory(recob::Trajectory const &traj, Expected_t const &expected)
std::pair< T, T > Direction() const
Fills the starting and ending direction of the trajectory.
Point_t const & LocationAtPoint(size_t i) const
Returns the position at the specified trajectory point.
Vector_t VertexDirection() const
Returns the direction of the trajectory at the first point.
recob::Trajectory::Positions_t positions
tracking::Positions_t Positions_t
Type of trajectory point list.
static constexpr unsigned int MaxDumpVerbosity
Largest verbosity level supported by Dump().
size_t NumberTrajectoryPoints() const
Returns the number of stored trajectory points.
recob::TrackTrajectory::Momenta_t momenta
tracking::Momenta_t Momenta_t
Type of momentum list.
void CheckVectorsClose(VectA const &v, VectB const &exp, double tol=0.01)
Vector_t const & MomentumVectorAtPoint(size_t i) const
Returns the momentum vector at a point.
Vector_t StartDirection() const
Returns the direction of the trajectory at the first point.
A trajectory in space reconstructed from hits.
bool HasMomentum() const
Returns whether information about the momentum is available.
tracking::Point_t Point_t
Type for representation of position in physical 3D space.
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
void TrajectoryTestDefaultConstructor()
void CheckVectorsEqual(VectA const &v, VectB const &exp)
Vector_t const & VertexMomentumVector() const
Returns the momentum of the trajectory at the first point [GeV/c].
double Theta(size_t p=0) const
Trajectory angle at point, with respect to positive z direction.
void Dump(Stream &&out, unsigned int verbosity, std::string indent, std::string indentFirst) const
Prints trajectory content into a stream.
Collection of Physical constants used in LArSoft.
Point_t const & Start() const
Returns the position of the first point of the trajectory [cm].
void CheckValue(T v, T exp, T tol, std::string tag="")
BOOST_AUTO_TEST_CASE(TrajectoryTestDefaultConstructorTestCase)
tracking::Rotation_t Rotation_t
Type for representation of space rotations.
QTextStream & endl(QTextStream &s)
void TrajectoryTestMainConstructor()
Vector_t const & EndMomentumVector() const
Returns the momentum of the trajectory at the last point [GeV/c].