2 #include <alignment/dbobjects/VXDAlignment.h>
3 #include <alignment/GlobalParam.h>
4 #include <alignment/Manager.h>
5 #include <cdc/dbobjects/CDCTimeZeros.h>
6 #include <cdc/dbobjects/CDCTimeWalks.h>
7 #include <cdc/dbobjects/CDCAlignment.h>
8 #include <cdc/dbobjects/CDCXtRelations.h>
9 #include <framework/dataobjects/EventMetaData.h>
10 #include <klm/dbobjects/bklm/BKLMAlignment.h>
11 #include <klm/dbobjects/eklm/EKLMAlignment.h>
13 #include <gtest/gtest.h>
20 using namespace alignment;
49 class MockDetectorInterface :
public IGlobalParamInterface {
51 explicit MockDetectorInterface(
int id) : m_id(id) {}
52 int hasBeenCalled() {
return m_called; }
53 virtual void readFromResult(std::vector<std::tuple<unsigned short, unsigned short, unsigned short, double>>&,
54 GlobalParamVector&)
override final
56 std::cout <<
" Interface " << m_id <<
": called readFromResult()" << std::endl;
65 class GlobalParamTest :
public ::testing::Test {
75 virtual void TearDown()
85 TEST_F(GlobalParamTest, GlobalParamComponentsInterfaces)
88 GlobalParamVector gpv;
90 GlobalParamVector gpvComp({
"BeamSpot"});
93 auto interface1 =
new MockDetectorInterface(1);
94 auto interface2 =
new MockDetectorInterface(2);
95 auto interface3 =
new MockDetectorInterface(3);
97 auto iptr1 = std::shared_ptr<IGlobalParamInterface>(interface1);
98 auto iptr2 = std::shared_ptr<IGlobalParamInterface>(interface2);
99 auto iptr3 = std::shared_ptr<IGlobalParamInterface>(interface3);
102 for (
auto vect : std::vector<GlobalParamVector*>({&gpv, &gpvComp})) {
112 vect->addSubDetectorInterface(iptr3);
113 vect->addSubDetectorInterface(iptr3);
114 vect->addSubDetectorInterface(iptr3);
118 EXPECT_EQ(interface1->hasBeenCalled() , 0);
119 EXPECT_EQ(interface2->hasBeenCalled() , 0);
120 EXPECT_EQ(interface3->hasBeenCalled() , 0);
122 std::vector<std::tuple<unsigned short, unsigned short, unsigned short, double>> emptyResult;
125 gpv.postReadFromResult(emptyResult);
126 EXPECT_EQ(interface1->hasBeenCalled() , 1);
127 EXPECT_EQ(interface2->hasBeenCalled() , 1);
128 EXPECT_EQ(interface3->hasBeenCalled() , 1);
132 gpvComp.postReadFromResult(emptyResult);
133 EXPECT_EQ(interface1->hasBeenCalled() , 2);
134 EXPECT_EQ(interface2->hasBeenCalled() , 1);
135 EXPECT_EQ(interface3->hasBeenCalled() , 2);
137 EXPECT_EQ(gpv.getGlobalParamSet<
VXDAlignment>().isConstructed(),
false);
138 EXPECT_EQ(gpvComp.getGlobalParamSet<
VXDAlignment>().isConstructed(),
false);
145 EXPECT_EQ(!!gpv.getDBObj<
BeamSpot>(),
true);
148 EXPECT_EQ(!!gpvComp.getDBObj<
BeamSpot>(),
true);
151 EXPECT_EQ(gpv.getGlobalParamSet<
VXDAlignment>().isConstructed(),
true);
152 EXPECT_EQ(gpv.getGlobalParamSet<
BeamSpot>().isConstructed(),
true);
154 EXPECT_EQ(gpvComp.getGlobalParamSet<
VXDAlignment>().isConstructed(),
false);
155 EXPECT_EQ(gpvComp.getGlobalParamSet<
BeamSpot>().isConstructed(),
true);
159 EXPECT_EQ(gpvComp.getGlobalParamSet<
VXDAlignment>().is<EmptyGlobalParamSet>(),
true);
160 EXPECT_EQ(gpvComp.getGlobalParamSet<
VXDAlignment>().empty(),
true);
161 EXPECT_EQ(gpvComp.getGlobalParamSet<
VXDAlignment>().isConstructed(),
false);
162 EXPECT_EQ((
bool) gpvComp.getGlobalParamSet<
VXDAlignment>(),
false);
165 EXPECT_EQ(gpv.getGlobalParamSet<
BeamSpot>().is<EmptyGlobalParamSet>(),
false);
166 EXPECT_EQ(gpv.getGlobalParamSet<
BeamSpot>().empty(),
false);
167 EXPECT_EQ(gpv.getGlobalParamSet<
BeamSpot>().isConstructed(),
true);
168 EXPECT_EQ((
bool) gpv.getGlobalParamSet<
BeamSpot>(),
true);
171 EXPECT_EQ(gpvComp.getGlobalParamSet<EmptyGlobalParamSet>().is<EmptyGlobalParamSet>(),
true);
196 GlobalParamVector newgpv({
"VXDAlignment",
"CDCAlignment"});
197 GlobalCalibrationManager::initGlobalVector(newgpv);
199 EXPECT_EQ(newgpv.getGlobalParamSet<
VXDAlignment>().isConstructed(),
false);
201 EXPECT_EQ(newgpv.getGlobalParamSet<
VXDAlignment>().isConstructed(),
true);
203 newgpv.setGlobalParam(42., VXDAlignment::getGlobalUniqueID(), 0, 1);
204 EXPECT_EQ(newgpv.getGlobalParam(VXDAlignment::getGlobalUniqueID(), 0, 1), 42.);
206 EXPECT_EQ(newgpv.getGlobalParam(VXDAlignment::getGlobalUniqueID(), 0, 1), 0.);
208 newgpv.updateGlobalParam(42., VXDAlignment::getGlobalUniqueID(), 0, 1);
209 EXPECT_EQ(newgpv.getGlobalParam(VXDAlignment::getGlobalUniqueID(), 0, 1), 42.);
211 newgpv.setGlobalParam(42., CDCAlignment::getGlobalUniqueID(), 0, 1);
212 EXPECT_EQ(newgpv.getGlobalParam(CDCAlignment::getGlobalUniqueID(), 0, 1), 42.);