2 #include <alignment/Hierarchy.h>
3 #include <alignment/Manager.h>
4 #include <alignment/PedeResult.h>
5 #include <framework/database/EventDependency.h>
6 #include <vxd/dataobjects/VxdID.h>
8 #include <gtest/gtest.h>
14 using namespace alignment;
18 class TestTopLevelDBObj {
20 static unsigned short getGlobalUniqueID() {
return 10; }
24 class TestLevelDBObj {
26 static unsigned short getGlobalUniqueID() {
return 20; }
30 class HierarchyTest :
public ::testing::Test {
32 unsigned short topElement {1};
33 unsigned short element1 = {1};
34 unsigned short element2 = {2};
39 auto& hierarchy = GlobalCalibrationManager::getInstance().getAlignmentHierarchy();
41 G4Transform3D unitTrafo;
42 hierarchy.insertG4Transform<TestLevelDBObj, TestTopLevelDBObj>(element1, topElement, unitTrafo);
43 hierarchy.insertG4Transform<TestLevelDBObj, TestTopLevelDBObj>(element2, topElement, unitTrafo);
47 virtual void TearDown()
55 TEST_F(HierarchyTest, HierarchyDerivatives)
57 auto& hierarchy = GlobalCalibrationManager::getInstance().getAlignmentHierarchy();
69 EXPECT_EQ(hierarchy.getGlobalDerivatives<TestLevelDBObj>(element1, sop).second(0, 0), 1.);
74 TEST_F(HierarchyTest, HierarchyConstraints)
76 auto& hierarchy = GlobalCalibrationManager::getInstance().getAlignmentHierarchy();
78 Constraints constraints;
79 hierarchy.buildConstraints(constraints);
82 EXPECT_EQ(constraints.size(), 6);
86 for (
auto checksum_constraint : constraints) {
87 auto& constraint = checksum_constraint.second;
88 EXPECT_EQ(constraint.size(), 2);
90 EXPECT_EQ(fabs(constraint[0].second), 1.);