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