11 #include <tracking/dataobjects/RecoTrack.h>
12 #include <framework/datastore/StoreArray.h>
14 #include <framework/utilities/TestHelpers.h>
15 #include <framework/gearbox/Const.h>
17 #include <genfit/WireTrackCandHit.h>
34 m_storeArrayNameOfRecoTracks =
"ILoveRecoTracks";
36 m_storeArrayNameOfCDCHits =
"CDCHitsAreCool";
38 m_storeArrayNameOfSVDHits =
"WhatAboutSVD";
40 m_storeArrayNameOfPXDHits =
"PXDsILike";
42 m_storeArrayNameOfBKLMHits =
"KeepBKLMsAlive";
44 m_storeArrayNameOfEKLMHits =
"EKLMsAreImportant";
46 m_storeArrayNameOfHitInformation =
"ConnectingAll";
50 DataStore::Instance().setInitializeActive(
true);
52 cdcHits.registerInDataStore();
54 svdHits.registerInDataStore();
56 pxdHits.registerInDataStore();
58 recoTracks.registerInDataStore();
60 recoHitInformations.registerInDataStore();
83 TVector3 position(0, 1, 2);
84 TVector3 momentum(-1, -0.5, 1.123);
86 m_recoTrack = recoTracks.
appendNew(position, momentum, charge,
87 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
88 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfEKLMHits, m_storeArrayNameOfHitInformation);
89 m_recoTrack2 = recoTracks.
appendNew(position, momentum, charge,
90 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
91 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfEKLMHits, m_storeArrayNameOfHitInformation);
110 EXPECT_FALSE(m_recoTrack->hasCDCHits());
113 m_recoTrack->addCDCHit(cdcHits[0], 1);
114 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right);
115 m_recoTrack->addCDCHit(cdcHits[2], 2);
117 EXPECT_TRUE(m_recoTrack->hasCDCHits());
119 EXPECT_TRUE(m_recoTrack->hasHit(cdcHits[0]));
120 EXPECT_TRUE(m_recoTrack->hasHit(cdcHits[1]));
121 EXPECT_TRUE(m_recoTrack->hasHit(cdcHits[2]));
123 EXPECT_FALSE(m_recoTrack->hasHit(cdcHits[4]));
125 ASSERT_EQ(m_recoTrack->getNumberOfCDCHits(), 3);
126 const std::vector<CDCHit*> addedCDCHits = m_recoTrack->getCDCHitList();
127 ASSERT_EQ(addedCDCHits.size(), 3);
128 EXPECT_EQ(addedCDCHits[0], cdcHits[0]);
129 EXPECT_EQ(addedCDCHits[1], cdcHits[1]);
130 EXPECT_EQ(addedCDCHits[2], cdcHits[2]);
132 const std::vector<CDCHit*> sortedCDCHits = m_recoTrack->getSortedCDCHitList();
133 ASSERT_EQ(sortedCDCHits.size(), 3);
134 EXPECT_EQ(sortedCDCHits[0], cdcHits[1]);
135 EXPECT_EQ(sortedCDCHits[1], cdcHits[0]);
136 EXPECT_EQ(sortedCDCHits[2], cdcHits[2]);
139 CDCHit* cdcHit = cdcHits[0];
142 EXPECT_NE(recoHitInformation,
nullptr);
143 EXPECT_EQ(recoHitInformation->
getTrackingDetector(), RecoHitInformation::RecoHitDetector::c_CDC);
144 EXPECT_EQ(recoHitInformation->
getRightLeftInformation(), RecoHitInformation::RightLeftInformation::c_undefinedRightLeftInformation);
145 EXPECT_EQ(recoHitInformation->
getFoundByTrackFinder(), RecoHitInformation::OriginTrackFinder::c_undefinedTrackFinder);
149 recoHitInformation = m_recoTrack->getRecoHitInformation(cdcHit);
150 EXPECT_NE(recoHitInformation,
nullptr);
159 EXPECT_EQ(m_recoTrack->getTrackingDetector(cdcHit), RecoHitInformation::RecoHitDetector::c_CDC);
160 EXPECT_EQ(m_recoTrack->getRightLeftInformation(cdcHit), RecoHitInformation::RightLeftInformation::c_undefinedRightLeftInformation);
161 EXPECT_EQ(m_recoTrack->getFoundByTrackFinder(cdcHit), RecoHitInformation::OriginTrackFinder::c_undefinedTrackFinder);
162 EXPECT_EQ(m_recoTrack->getSortingParameter(cdcHit), 1);
164 EXPECT_NO_THROW(m_recoTrack->setFoundByTrackFinder(cdcHit, RecoHitInformation::OriginTrackFinder::c_SegmentTrackCombiner));
165 EXPECT_NO_THROW(m_recoTrack->setRightLeftInformation(cdcHit, RecoHitInformation::RightLeftInformation::c_left));
166 EXPECT_NO_THROW(m_recoTrack->setSortingParameter(cdcHit, 3));
168 EXPECT_EQ(m_recoTrack->getFoundByTrackFinder(cdcHit), RecoHitInformation::OriginTrackFinder::c_SegmentTrackCombiner);
169 EXPECT_EQ(m_recoTrack->getRightLeftInformation(cdcHit), RecoHitInformation::RightLeftInformation::c_left);
170 EXPECT_EQ(m_recoTrack->getSortingParameter(cdcHit), 3);
175 EXPECT_B2FATAL(m_recoTrack->getTrackingDetector(cdcHit));
176 EXPECT_B2FATAL(m_recoTrack->getRightLeftInformation(cdcHit));
177 EXPECT_B2FATAL(m_recoTrack->getFoundByTrackFinder(cdcHit));
178 EXPECT_B2FATAL(m_recoTrack->getSortingParameter(cdcHit));
180 EXPECT_B2FATAL(m_recoTrack->setFoundByTrackFinder(cdcHit, RecoHitInformation::OriginTrackFinder::c_SegmentTrackCombiner));
181 EXPECT_B2FATAL(m_recoTrack->setRightLeftInformation(cdcHit, RecoHitInformation::RightLeftInformation::c_left));
189 EXPECT_FALSE(m_recoTrack->hasCDCHits());
192 m_recoTrack->addCDCHit(cdcHits[0], 1, RecoHitInformation::RightLeftInformation::c_right,
193 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderPriorityHit);
194 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right,
195 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderAuxiliaryHit);
197 m_recoTrack->addCDCHit(cdcHits[2], 2);
200 EXPECT_EQ(m_recoTrack->getRecoHitInformation(cdcHits[0])->getFoundByTrackFinder(),
201 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderPriorityHit);
202 EXPECT_EQ(m_recoTrack->getRecoHitInformation(cdcHits[1])->getFoundByTrackFinder(),
203 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderAuxiliaryHit);
204 EXPECT_EQ(m_recoTrack->getRecoHitInformation(cdcHits[2])->getFoundByTrackFinder(),
205 RecoHitInformation::OriginTrackFinder::c_undefinedTrackFinder);
213 TVector3 position(4, 23, 5.6);
214 TVector3 momentum(4, 23, 5.6);
215 short int charge = 1;
217 newCreatedTrackCand.
setPosMomSeed(position, momentum, charge);
223 RecoTrack* recoTrackFromGenfit = RecoTrack::createFromTrackCand(newCreatedTrackCand, m_storeArrayNameOfRecoTracks,
224 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits,
225 m_storeArrayNameOfPXDHits, m_storeArrayNameOfBKLMHits,
226 m_storeArrayNameOfEKLMHits,
227 m_storeArrayNameOfHitInformation);
234 ASSERT_EQ(exportedTrackCand.getNHits(), newCreatedTrackCand.getNHits());
241 EXPECT_EQ(exportedTrackCand.getChargeSeed(), newCreatedTrackCand.getChargeSeed());
242 EXPECT_EQ(exportedTrackCand.getHit(0)->getHitId(), newCreatedTrackCand.getHit(0)->getHitId());
243 EXPECT_EQ(exportedTrackCand.getHit(1)->getSortingParameter(), newCreatedTrackCand.getHit(1)->getSortingParameter());
244 EXPECT_EQ(exportedTrackCand.getHit(2)->getHitId(), newCreatedTrackCand.getHit(2)->getHitId());
250 EXPECT_FALSE(m_recoTrack->hasCDCHits());
254 m_recoTrack->addCDCHit(cdcHits[0], 1);
255 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right);
256 m_recoTrack->addCDCHit(cdcHits[2], 2);
258 EXPECT_TRUE(m_recoTrack->hasCDCHits());
260 const genfit::TrackCand& exportedTrackCand = m_recoTrack->createGenfitTrackCand();
262 ASSERT_EQ(exportedTrackCand.getNHits(), m_recoTrack->getNumberOfTotalHits());
263 ASSERT_EQ(m_recoTrack->getNumberOfTotalHits(), 3);
265 RecoTrack* recoTrackFromGenfit = RecoTrack::createFromTrackCand(exportedTrackCand, m_storeArrayNameOfRecoTracks,
266 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits,
267 m_storeArrayNameOfPXDHits, m_storeArrayNameOfBKLMHits,
268 m_storeArrayNameOfEKLMHits,
269 m_storeArrayNameOfHitInformation);
273 ASSERT_EQ(recoTrackFromGenfit->
getNumberOfCDCHits(), m_recoTrack->getNumberOfCDCHits());
274 const auto& cdcHitListOne = recoTrackFromGenfit->
getCDCHitList();
275 const auto& cdcHitListTwo = m_recoTrack->getCDCHitList();
276 ASSERT_EQ(cdcHitListOne.size(), 3);
277 ASSERT_EQ(cdcHitListTwo.size(), 3);
286 m_recoTrack->addCDCHit(cdcHits[0], 1);
287 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right);
288 m_recoTrack->addCDCHit(cdcHits[2], 2);
293 auto recoTrack = recoTracks.
appendNew(m_recoTrack->getPositionSeed(), m_recoTrack->getMomentumSeed(), m_recoTrack->getChargeSeed(),
294 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
295 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfBKLMHits,
296 m_storeArrayNameOfHitInformation);
297 EXPECT_FALSE(recoTrack->hasCDCHits());
301 recoTrack->addHitsFromRecoTrack(m_recoTrack, offset);
302 ASSERT_EQ(recoTrack->getNumberOfCDCHits(), 3);
304 size_t this_i = offset;
305 for (
auto pHit : recoTrack->getSortedCDCHitList()) {
306 auto sortParam = recoTrack->getSortingParameter(pHit);
307 ASSERT_EQ(this_i, sortParam);
317 m_recoTrack->addCDCHit(cdcHits[0], 1);
322 RecoTrack* recoTrack2 = recoTracks.
appendNew(m_recoTrack->getPositionSeed(), m_recoTrack->getMomentumSeed(),
323 m_recoTrack->getChargeSeed(),
324 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
325 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfBKLMHits,
326 m_storeArrayNameOfHitInformation);
329 ASSERT_EQ(m_recoTrack->getRecoHitInformations().size(), 1);
330 ASSERT_EQ(m_recoTrack->getRecoHitInformations()[0]->getSortingParameter(), 1);