9 #include <tracking/dataobjects/RecoTrack.h>
10 #include <framework/datastore/StoreArray.h>
12 #include <framework/utilities/TestHelpers.h>
13 #include <framework/gearbox/Const.h>
15 #include <genfit/WireTrackCandHit.h>
32 m_storeArrayNameOfRecoTracks =
"ILoveRecoTracks";
34 m_storeArrayNameOfCDCHits =
"CDCHitsAreCool";
36 m_storeArrayNameOfSVDHits =
"WhatAboutSVD";
38 m_storeArrayNameOfPXDHits =
"PXDsILike";
40 m_storeArrayNameOfBKLMHits =
"KeepBKLMsAlive";
42 m_storeArrayNameOfEKLMHits =
"EKLMsAreImportant";
44 m_storeArrayNameOfHitInformation =
"ConnectingAll";
48 DataStore::Instance().setInitializeActive(
true);
81 TVector3 position(0, 1, 2);
82 TVector3 momentum(-1, -0.5, 1.123);
84 m_recoTrack = recoTracks.
appendNew(position, momentum, charge,
85 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
86 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfEKLMHits, m_storeArrayNameOfHitInformation);
87 m_recoTrack2 = recoTracks.
appendNew(position, momentum, charge,
88 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
89 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfEKLMHits, m_storeArrayNameOfHitInformation);
108 EXPECT_FALSE(m_recoTrack->hasCDCHits());
111 m_recoTrack->addCDCHit(cdcHits[0], 1);
112 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right);
113 m_recoTrack->addCDCHit(cdcHits[2], 2);
115 EXPECT_TRUE(m_recoTrack->hasCDCHits());
117 EXPECT_TRUE(m_recoTrack->hasHit(cdcHits[0]));
118 EXPECT_TRUE(m_recoTrack->hasHit(cdcHits[1]));
119 EXPECT_TRUE(m_recoTrack->hasHit(cdcHits[2]));
121 EXPECT_FALSE(m_recoTrack->hasHit(cdcHits[4]));
123 ASSERT_EQ(m_recoTrack->getNumberOfCDCHits(), 3);
124 const std::vector<CDCHit*> addedCDCHits = m_recoTrack->getCDCHitList();
125 ASSERT_EQ(addedCDCHits.size(), 3);
126 EXPECT_EQ(addedCDCHits[0], cdcHits[0]);
127 EXPECT_EQ(addedCDCHits[1], cdcHits[1]);
128 EXPECT_EQ(addedCDCHits[2], cdcHits[2]);
130 const std::vector<CDCHit*> sortedCDCHits = m_recoTrack->getSortedCDCHitList();
131 ASSERT_EQ(sortedCDCHits.size(), 3);
132 EXPECT_EQ(sortedCDCHits[0], cdcHits[1]);
133 EXPECT_EQ(sortedCDCHits[1], cdcHits[0]);
134 EXPECT_EQ(sortedCDCHits[2], cdcHits[2]);
137 CDCHit* cdcHit = cdcHits[0];
140 EXPECT_NE(recoHitInformation,
nullptr);
141 EXPECT_EQ(recoHitInformation->
getTrackingDetector(), RecoHitInformation::RecoHitDetector::c_CDC);
142 EXPECT_EQ(recoHitInformation->
getRightLeftInformation(), RecoHitInformation::RightLeftInformation::c_undefinedRightLeftInformation);
143 EXPECT_EQ(recoHitInformation->
getFoundByTrackFinder(), RecoHitInformation::OriginTrackFinder::c_undefinedTrackFinder);
147 recoHitInformation = m_recoTrack->getRecoHitInformation(cdcHit);
148 EXPECT_NE(recoHitInformation,
nullptr);
157 EXPECT_EQ(m_recoTrack->getTrackingDetector(cdcHit), RecoHitInformation::RecoHitDetector::c_CDC);
158 EXPECT_EQ(m_recoTrack->getRightLeftInformation(cdcHit), RecoHitInformation::RightLeftInformation::c_undefinedRightLeftInformation);
159 EXPECT_EQ(m_recoTrack->getFoundByTrackFinder(cdcHit), RecoHitInformation::OriginTrackFinder::c_undefinedTrackFinder);
160 EXPECT_EQ(m_recoTrack->getSortingParameter(cdcHit), 1);
162 EXPECT_NO_THROW(m_recoTrack->setFoundByTrackFinder(cdcHit, RecoHitInformation::OriginTrackFinder::c_SegmentTrackCombiner));
163 EXPECT_NO_THROW(m_recoTrack->setRightLeftInformation(cdcHit, RecoHitInformation::RightLeftInformation::c_left));
164 EXPECT_NO_THROW(m_recoTrack->setSortingParameter(cdcHit, 3));
166 EXPECT_EQ(m_recoTrack->getFoundByTrackFinder(cdcHit), RecoHitInformation::OriginTrackFinder::c_SegmentTrackCombiner);
167 EXPECT_EQ(m_recoTrack->getRightLeftInformation(cdcHit), RecoHitInformation::RightLeftInformation::c_left);
168 EXPECT_EQ(m_recoTrack->getSortingParameter(cdcHit), 3);
173 EXPECT_B2FATAL(m_recoTrack->getTrackingDetector(cdcHit));
174 EXPECT_B2FATAL(m_recoTrack->getRightLeftInformation(cdcHit));
175 EXPECT_B2FATAL(m_recoTrack->getFoundByTrackFinder(cdcHit));
176 EXPECT_B2FATAL(m_recoTrack->getSortingParameter(cdcHit));
178 EXPECT_B2FATAL(m_recoTrack->setFoundByTrackFinder(cdcHit, RecoHitInformation::OriginTrackFinder::c_SegmentTrackCombiner));
179 EXPECT_B2FATAL(m_recoTrack->setRightLeftInformation(cdcHit, RecoHitInformation::RightLeftInformation::c_left));
187 EXPECT_FALSE(m_recoTrack->hasCDCHits());
190 m_recoTrack->addCDCHit(cdcHits[0], 1, RecoHitInformation::RightLeftInformation::c_right,
191 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderPriorityHit);
192 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right,
193 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderAuxiliaryHit);
195 m_recoTrack->addCDCHit(cdcHits[2], 2);
198 EXPECT_EQ(m_recoTrack->getRecoHitInformation(cdcHits[0])->getFoundByTrackFinder(),
199 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderPriorityHit);
200 EXPECT_EQ(m_recoTrack->getRecoHitInformation(cdcHits[1])->getFoundByTrackFinder(),
201 RecoHitInformation::OriginTrackFinder::c_MCTrackFinderAuxiliaryHit);
202 EXPECT_EQ(m_recoTrack->getRecoHitInformation(cdcHits[2])->getFoundByTrackFinder(),
203 RecoHitInformation::OriginTrackFinder::c_undefinedTrackFinder);
211 TVector3 position(4, 23, 5.6);
212 TVector3 momentum(4, 23, 5.6);
213 short int charge = 1;
215 newCreatedTrackCand.
setPosMomSeed(position, momentum, charge);
221 RecoTrack* recoTrackFromGenfit = RecoTrack::createFromTrackCand(newCreatedTrackCand, m_storeArrayNameOfRecoTracks,
222 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits,
223 m_storeArrayNameOfPXDHits, m_storeArrayNameOfBKLMHits,
224 m_storeArrayNameOfEKLMHits,
225 m_storeArrayNameOfHitInformation);
232 ASSERT_EQ(exportedTrackCand.getNHits(), newCreatedTrackCand.getNHits());
239 EXPECT_EQ(exportedTrackCand.getChargeSeed(), newCreatedTrackCand.getChargeSeed());
240 EXPECT_EQ(exportedTrackCand.getHit(0)->getHitId(), newCreatedTrackCand.getHit(0)->getHitId());
241 EXPECT_EQ(exportedTrackCand.getHit(1)->getSortingParameter(), newCreatedTrackCand.getHit(1)->getSortingParameter());
242 EXPECT_EQ(exportedTrackCand.getHit(2)->getHitId(), newCreatedTrackCand.getHit(2)->getHitId());
248 EXPECT_FALSE(m_recoTrack->hasCDCHits());
252 m_recoTrack->addCDCHit(cdcHits[0], 1);
253 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right);
254 m_recoTrack->addCDCHit(cdcHits[2], 2);
256 EXPECT_TRUE(m_recoTrack->hasCDCHits());
258 const genfit::TrackCand& exportedTrackCand = m_recoTrack->createGenfitTrackCand();
260 ASSERT_EQ(exportedTrackCand.getNHits(), m_recoTrack->getNumberOfTotalHits());
261 ASSERT_EQ(m_recoTrack->getNumberOfTotalHits(), 3);
263 RecoTrack* recoTrackFromGenfit = RecoTrack::createFromTrackCand(exportedTrackCand, m_storeArrayNameOfRecoTracks,
264 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits,
265 m_storeArrayNameOfPXDHits, m_storeArrayNameOfBKLMHits,
266 m_storeArrayNameOfEKLMHits,
267 m_storeArrayNameOfHitInformation);
271 ASSERT_EQ(recoTrackFromGenfit->
getNumberOfCDCHits(), m_recoTrack->getNumberOfCDCHits());
272 const auto& cdcHitListOne = recoTrackFromGenfit->
getCDCHitList();
273 const auto& cdcHitListTwo = m_recoTrack->getCDCHitList();
274 ASSERT_EQ(cdcHitListOne.size(), 3);
275 ASSERT_EQ(cdcHitListTwo.size(), 3);
284 m_recoTrack->addCDCHit(cdcHits[0], 1);
285 m_recoTrack->addCDCHit(cdcHits[1], 0, RecoHitInformation::RightLeftInformation::c_right);
286 m_recoTrack->addCDCHit(cdcHits[2], 2);
291 auto recoTrack = recoTracks.
appendNew(m_recoTrack->getPositionSeed(), m_recoTrack->getMomentumSeed(), m_recoTrack->getChargeSeed(),
292 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
293 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfEKLMHits,
294 m_storeArrayNameOfHitInformation);
295 EXPECT_FALSE(recoTrack->hasCDCHits());
299 recoTrack->addHitsFromRecoTrack(m_recoTrack, offset);
300 ASSERT_EQ(recoTrack->getNumberOfCDCHits(), 3);
302 size_t this_i = offset;
303 for (
auto pHit : recoTrack->getSortedCDCHitList()) {
304 auto sortParam = recoTrack->getSortingParameter(pHit);
305 ASSERT_EQ(this_i, sortParam);
315 m_recoTrack->addCDCHit(cdcHits[0], 1);
320 RecoTrack* recoTrack2 = recoTracks.
appendNew(m_recoTrack->getPositionSeed(), m_recoTrack->getMomentumSeed(),
321 m_recoTrack->getChargeSeed(),
322 m_storeArrayNameOfCDCHits, m_storeArrayNameOfSVDHits, m_storeArrayNameOfPXDHits,
323 m_storeArrayNameOfBKLMHits, m_storeArrayNameOfEKLMHits,
324 m_storeArrayNameOfHitInformation);
327 ASSERT_EQ(m_recoTrack->getRecoHitInformations().size(), 1);
328 ASSERT_EQ(m_recoTrack->getRecoHitInformations()[0]->getSortingParameter(), 1);
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Test class for the RecoTrack object.
std::string m_storeArrayNameOfHitInformation
name of storeArray with hit information
std::string m_storeArrayNameOfCDCHits
name of storeArray with CDC hits
void SetUp() override
Setup a "working environment" with store arrays for the hits and the correct relations.
std::string m_storeArrayNameOfBKLMHits
name of storeArray with BKLM hits
std::string m_storeArrayNameOfRecoTracks
name of recoTracks storeArray
std::string m_storeArrayNameOfSVDHits
name of storeArray with SVD hits
RecoTrack * m_recoTrack2
pointer to other recoTrack
std::string m_storeArrayNameOfEKLMHits
name of storeArray with EKLM hits
RecoTrack * m_recoTrack
pointer to recoTrack
std::string m_storeArrayNameOfPXDHits
name of storeArray with PXD hits
This is the Reconstruction Event-Data Model Track.
bool addCDCHit(const UsedCDCHit *cdcHit, const unsigned int sortingParameter, RightLeftInformation rightLeftInformation=RightLeftInformation::c_undefinedRightLeftInformation, OriginTrackFinder foundByTrackFinder=OriginTrackFinder::c_undefinedTrackFinder)
Adds a cdc hit with the given information to the reco track.
unsigned int getNumberOfCDCHits() const
Return the number of cdc hits.
std::vector< Belle2::RecoTrack::UsedCDCHit * > getCDCHitList() const
Return an unsorted list of cdc hits.
genfit::TrackCand createGenfitTrackCand() const
Create a genfit::TrackCand out of this reco track and copy all information to the track candidate.
std::vector< RecoHitInformation * > getRecoHitInformations(bool getSorted=false) const
Return a list of all RecoHitInformations associated with the RecoTrack.
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.
Accessor to arrays stored in the data store.
T * appendNew()
Construct a new T object at the end of the array.
bool registerRelationTo(const StoreArray< TO > &toArray, DataStore::EDurability durability=DataStore::c_Event, DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut, const std::string &namedRelation="") const
Register a relation to the given StoreArray.
Track candidate – seed values and indices.
TVector3 getMomSeed() const
get the seed value for track: mom.
void setPosMomSeed(const TVector3 &pos, const TVector3 &mom, const double charge)
sets the state to seed the track fitting.
TVector3 getPosSeed() const
get the seed value for track: pos.
Hit object for use in TrackCand.
TEST_F(RecoTrackTest, recoHitInformations)
Test the getRecoHitInformations() function.
Abstract base class for different kinds of events.