9#include <alignment/Hierarchy.h>
10#include <alignment/Manager.h>
12#include <gtest/gtest.h>
16using namespace alignment;
20 class TestTopLevelDBObj {
22 static unsigned short getGlobalUniqueID() {
return 10; }
26 class TestLevelDBObj {
28 static unsigned short getGlobalUniqueID() {
return 20; }
32 class HierarchyTest :
public ::testing::Test {
34 unsigned short topElement {1};
35 unsigned short element1 = {1};
36 unsigned short element2 = {2};
41 auto& hierarchy = GlobalCalibrationManager::getInstance().getAlignmentHierarchy();
43 G4Transform3D unitTrafo;
44 hierarchy.insertG4Transform<TestLevelDBObj, TestTopLevelDBObj>(element1, topElement, unitTrafo);
45 hierarchy.insertG4Transform<TestLevelDBObj, TestTopLevelDBObj>(element2, topElement, unitTrafo);
49 virtual void TearDown()
57 TEST_F(HierarchyTest, HierarchyDerivatives)
59 auto& hierarchy = GlobalCalibrationManager::getInstance().getAlignmentHierarchy();
61 auto sop =
new genfit::StateOnPlane(
nullptr);
71 EXPECT_EQ(hierarchy.getGlobalDerivatives<TestLevelDBObj>(element1, sop).second(0, 0), 1.);
76 TEST_F(HierarchyTest, HierarchyConstraints)
78 auto& hierarchy = GlobalCalibrationManager::getInstance().getAlignmentHierarchy();
80 Constraints constraints;
81 hierarchy.buildConstraints(constraints);
84 EXPECT_EQ(constraints.size(), 6);
88 for (
auto checksum_constraint : constraints) {
89 auto& constraint = checksum_constraint.second;
90 EXPECT_EQ(constraint.size(), 2);
92 EXPECT_EQ(fabs(constraint[0].second), 1.);
Abstract base class for different kinds of events.