68{
69
70
71 SG::ThinningHandle<xAOD::TrackParticleContainer> importedTrackParticles
73 SG::ReadHandle<xAOD::TrackParticleContainer> tracks(
m_inDetSGKey,ctx);
74
75
76 unsigned int nTracks = importedTrackParticles->size();
77 if (nTracks==0) return StatusCode::SUCCESS;
78
79
80 std::vector<bool>
mask;
81 mask.assign(nTracks,
false);
83
84
85
86 SG::ReadHandle<xAOD::JetContainer> importedJets(
m_jetKey,ctx);
87 if (!importedJets.isValid()) {
89 return StatusCode::FAILURE;
90 }
91 unsigned int nJets(importedJets->size());
92 std::vector<const xAOD::Jet*> jetToCheck; jetToCheck.clear();
93
94
98
99 if (nJets != nEntries ) {
100 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used jets??");
101 return StatusCode::FAILURE;
102 } else {
103
104 for (
unsigned int i=0;
i<nJets; ++
i)
if (
entries[i]==1) jetToCheck.push_back((*importedJets)[i]);
105 }
106 }
107
108
109
110 static const SG::AuxElement::ConstAccessor<std::vector<ElementLink<DataVector<xAOD::IParticle> > > > ghostTrackLRT ("GhostTrackLRT");
111
114 const std::vector< ElementLink<DataVector<xAOD::IParticle> > > &jetTrackLinks = ghostTrackLRT( **jetIt );
115 for (const auto &jetTrkIt : jetTrackLinks) {
117 int index = trackPart->index();
119 }
120 }
121 } else {
122 for (std::vector<const xAOD::Jet*>::const_iterator jetIt=jetToCheck.begin(); jetIt!=jetToCheck.end(); ++jetIt) {
123 const std::vector< ElementLink<DataVector<xAOD::IParticle> > > &jetTrackLinks = ghostTrackLRT( **jetIt );
124 for (const auto &jetTrkIt : jetTrackLinks) {
126 int index = trackPart->index();
128 }
129 }
130 }
131
132
136
137 if (nTracks != nEntries ) {
138 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your track selection string used tracks??");
139 return StatusCode::FAILURE;
140 } else {
141
144 }
145 }
146 }
147
148
149 unsigned int n_pass=0;
150 for (
unsigned int i=0;
i<nTracks; ++
i) {
151 if (mask[i]) ++n_pass;
152 }
154
155
156 importedTrackParticles.keep (mask);
157
158 return StatusCode::SUCCESS;
159}
DataModel_detail::const_iterator< DataVector > const_iterator
std::atomic< unsigned int > m_npass
std::atomic< unsigned int > m_ntot
StringProperty m_selectionString
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetSGKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetKey
StringProperty m_trackSelectionString
TrackParticle_v1 TrackParticle
Reference the current persistent version: