Check that the current event passes this filter.
65{
66 const EventContext& ctx = Gaudi::Hive::currentContext();
67
69 if(!PV_col.isValid()) {
70 ATH_MSG_ERROR (
"Couldn't retrieve VertexContainer with key PrimaryVertices");
71 return StatusCode::FAILURE;
72 }
74
75 std::vector<bool>
mask(PV_col->size(),
false);
76
81
82
83
85 SG::ReadHandle<xAOD::VertexContainer> Container(str, ctx);
87 size_t s = Container->size();
88 for(
size_t i = 0;
i<
s;
i++) {
89 xAOD::BPhysHelper vtx(Container->at(i));
90
91 for(
size_t i =0;
i < 4;
i++) {
93 if(origPv==nullptr) continue;
94 auto pvit = std::find (PV_col->begin(), PV_col->end(), origPv);
95 if(pvit == PV_col->end()) {
97 continue;
98 }
99 size_t x = std::distance(PV_col->begin(), pvit);
101 }
102
103 }
104 }
105
107
109 SG::ThinningHandle<xAOD::TrackParticleContainer> importedTrackParticles(
m_TrackContainerName, ctx);
110 std::vector<bool> trackmask(importedTrackParticles->size(), false);
111 size_t pvnum =
mask.size();
112 for(
size_t i =0;
i<pvnum;
i++){
113 if(mask[i] == false) continue;
114 auto vtx = PV_col->at(i);
115 size_t s = vtx->nTrackParticles();
116 for(
size_t j=0;j<
s;j++){
117 auto trackit = std::find(importedTrackParticles->begin(), importedTrackParticles->end(), vtx->trackParticle(j));
118 if(trackit == importedTrackParticles->end()){
120 continue;
121 }
122 size_t x = std::distance(importedTrackParticles->begin(), trackit);
123 trackmask.at(
x) =
true;
124 }
125 }
126 importedTrackParticles.keep(trackmask);
127 m_tracks_kept += std::accumulate(trackmask.begin(), trackmask.end(), 0);
128 }
129 PV_col.keep(mask);
130
131 return StatusCode::SUCCESS;
132}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
pv_type
: Enum type of the PV
Vertex_v1 Vertex
Define the latest version of the vertex class.