11 #include <alignment/modules/CopyRecoTracksWithOverlap/CopyRecoTracksWithOverlapModule.h>
13 #include <analysis/dataobjects/Particle.h>
14 #include <analysis/dataobjects/ParticleList.h>
15 #include <framework/datastore/StoreArray.h>
16 #include <framework/datastore/StoreObjPtr.h>
17 #include <mdst/dataobjects/Track.h>
18 #include <tracking/dataobjects/RecoTrack.h>
33 setPropertyFlags(c_ParallelProcessingCertified);
35 setDescription(
"Copy RecoTracks with overlap hits in VXD to a new StoreArray (Will need a refit).\n"
36 "If particleList is specified, take only RecoTracks associated to the particles (allows to make prior cuts at analysis level)."
39 addParam(
"overlapRecoTracksStoreArrayName", m_overlapRecoTracksArrayName,
"Name of StoreArray with output RecoTracks with overlaps",
40 m_overlapRecoTracksArrayName);
41 addParam(
"particleList", m_particleList,
"Name of particle list for which associated RecoTracks should be copied", m_particleList);
51 overlapTracks.registerInDataStore();
58 particleList.isRequired();
68 auto nParticles = particleList->getListSize();
69 for (
unsigned int iParticle = 0; iParticle < nParticles; ++iParticle) {
70 auto particle = particleList->getParticle(iParticle);
71 auto track = particle->getTrack();
73 B2ERROR(
"No Track for particle.");
76 auto recoTrack = track->getRelatedTo<
RecoTrack>();
78 B2ERROR(
"No RecoTrack for Track");
86 for (
auto& recoTrack : recoTracks) {
97 std::array<int, 6> nHitsInLayer = {0, 0, 0, 0, 0, 0};
100 for (
auto hit : track.getPXDHitList())
101 ++nHitsInLayer.at(hit->getSensorID().getLayerNumber() - 1);
104 for (
auto hit : track.getSVDHitList())
105 ++nHitsInLayer.at(hit->getSensorID().getLayerNumber() - 1);
107 bool hasOverlap =
false;
114 if (nHitsInLayer[0] == 2) hasOverlap =
true;
115 if (nHitsInLayer[1] == 2) hasOverlap =
true;
117 if (nHitsInLayer[2] == 4) hasOverlap =
true;
118 if (nHitsInLayer[3] == 4) hasOverlap =
true;
119 if (nHitsInLayer[4] == 4) hasOverlap =
true;
120 if (nHitsInLayer[5] == 4) hasOverlap =
true;
124 auto overlapTrack = track.copyToStoreArray(overlapTracks);
125 overlapTrack->addHitsFromRecoTrack(&track);