Definition at line 144 of file PrimaryVertexProducer.cc.
149 if (recoBeamSpotHandle.
isValid()) {
152 edm::LogError(
"UnusableBeamSpot") <<
"No beam spot available from EventSetup";
157 if ((beamVertexState.error().cxx() <= 0.) || (beamVertexState.error().cyy() <= 0.) ||
158 (beamVertexState.error().czz() <= 0.)) {
160 edm::LogError(
"UnusableBeamSpot") <<
"Beamspot with invalid errors " << beamVertexState.error().matrix();
167 for (
auto const& old : oldVertices) {
168 if (!(old.isFake())) {
171 auto result = std::make_unique<reco::VertexCollection>();
186 std::vector<reco::TransientTrack> t_tks;
195 t_tks = (*theB).build(tks,
beamSpot);
198 std::cout <<
"RecoVertex/PrimaryVertexProducer"
199 <<
"Found: " << t_tks.size() <<
" reconstructed tracks"
210 std::cout <<
" clustering returned " <<
clusters.size() <<
" clusters from " << seltks.size()
211 <<
" selected tracks" << std::endl;
216 auto result = std::make_unique<reco::VertexCollection>();
219 std::vector<TransientVertex>
pvs;
220 for (
std::vector<std::vector<reco::TransientTrack> >::const_iterator iclus =
clusters.begin();
226 double meantime = 0.;
229 for (
const auto& tk : *iclus) {
230 const double time = tk.timeExt();
231 const double err = tk.dtErrorExt();
232 const double inverr =
err > 0. ? 1.0 /
err : 0.;
233 const double w = inverr * inverr;
238 meantime = sumwt / sumw;
239 double sumsq = sumwt2 - sumwt * sumwt / sumw;
240 double chisq = iclus->size() > 1 ? sumsq / double(iclus->size() - 1) : sumsq /
double(iclus->size());
241 vartime = chisq / sumw;
245 if (
algorithm->useBeamConstraint && validBS && (iclus->size() > 1)) {
247 }
else if (!(
algorithm->useBeamConstraint) && (iclus->size() > 1)) {
252 if (
f4D and
v.isValid()) {
253 auto err =
v.positionError().matrix4D();
255 auto trkWeightMap3d =
v.weightMap();
256 v =
TransientVertex(
v.position(), meantime,
err,
v.originalTracks(),
v.totalChiSquared(),
v.degreesOfFreedom());
257 v.weightMap(trkWeightMap3d);
265 std::cout <<
"=" <<
v.position().x() <<
" " <<
v.position().y() <<
" " <<
v.position().z();
268 std::cout <<
" cluster size = " << (*iclus).size() << std::endl;
270 std::cout <<
"Invalid fitted vertex, cluster size=" << (*iclus).size() << std::endl;
274 if (
v.isValid() && (
v.degreesOfFreedom() >=
algorithm->minNdof) &&
275 (!validBS || (*(
algorithm->vertexSelector))(
v, beamVertexState)))
280 std::cout <<
"PrimaryVertexProducerAlgorithm::vertices candidates =" <<
pvs.size() << std::endl;
285 <<
"more than half of candidate vertices lost " <<
pvs.size() <<
' ' <<
clusters.size();
287 if (
pvs.empty() && seltks.size() > 5)
289 <<
"no vertex found with " << seltks.size() <<
" tracks and " <<
clusters.size() <<
" vertex-candidates";
292 if (
pvs.size() > 1) {
297 for (std::vector<TransientVertex>::const_iterator
iv =
pvs.begin();
iv !=
pvs.end();
iv++) {
304 if ((bse.cxx() <= 0.) || (bse.cyy() <= 0.) || (bse.czz() <= 0.)) {
311 std::cout <<
"RecoVertex/PrimaryVertexProducer: "
312 <<
"Beamspot with invalid errors " << bse.matrix() << std::endl;
313 std::cout <<
"Will put Vertex derived from dummy-fake BeamSpot into Event.\n";
318 std::cout <<
"RecoVertex/PrimaryVertexProducer: "
319 <<
" will put Vertex derived from BeamSpot into Event.\n";
326 for (reco::VertexCollection::const_iterator
v = vColl.begin();
v != vColl.end(); ++
v) {
327 std::cout <<
"recvtx " << ivtx++ <<
"#trk " << std::setw(3) <<
v->tracksSize() <<
" chi2 " << std::setw(4)
328 <<
v->chi2() <<
" ndof " << std::setw(3) <<
v->ndof() <<
" x " << std::setw(6) <<
v->position().x()
329 <<
" dx " << std::setw(6) <<
v->xError() <<
" y " << std::setw(6) <<
v->position().y() <<
" dy "
330 << std::setw(6) <<
v->yError() <<
" z " << std::setw(6) <<
v->position().z() <<
" dz " << std::setw(6)
333 std::cout <<
" t " << std::setw(6) <<
v->t() <<
" dt " << std::setw(6) <<
v->tError();
References qcdUeDQM_cfi::algorithm, algorithms, pwdgSkimBPark_cfi::beamSpot, bsToken, TrackClusterizerInZ::clusterize(), bsc_activity_cfg::clusters, gather_cfg::cout, GlobalErrorBase< T, ErrorWeightType >::cxx(), GlobalErrorBase< T, ErrorWeightType >::cyy(), GlobalErrorBase< T, ErrorWeightType >::czz(), submitPVResolutionJobs::err, VertexState::error(), f4D, fRecoveryIteration, fVerbose, edm::EventSetup::getData(), iEvent, edm::HandleBase::isValid(), gpuVertexFinder::iv, GlobalErrorBase< T, ErrorWeightType >::matrix(), eostools::move(), edm::Handle< T >::product(), FSQDQM_cfi::pvs, recoveryVtxToken, mps_fire::result, TrackFilterForPVFindingBase::select(), jetUpdater_cfi::sort, theTrackClusterizer, theTrackFilter, theTTBToken, protons_cff::time, trkTimeResosToken, trkTimesToken, trkToken, findQualityFiles::v, trackerHitRTTI::vector, and w.