CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
PVFitter Class Reference

#include <PVFitter.h>

Public Member Functions

void compressStore ()
 reduce size of primary vertex cache by increasing quality limit More...
 
void dumpTxtFile ()
 
void FitPerBunchCrossing ()
 
reco::BeamSpot getBeamSpot ()
 
std::map< int, reco::BeamSpotgetBeamSpotMap ()
 
int * getFitLSRange ()
 
int getNPVs ()
 
const std::map< int, int > & getNPVsperBX ()
 
std::vector< BeamSpotFitPVDatagetpvStore ()
 
time_t * getRefTime ()
 
double getWidthX ()
 
double getWidthXerr ()
 
double getWidthY ()
 
double getWidthYerr ()
 
double getWidthZ ()
 
double getWidthZerr ()
 
void initialize (const edm::ParameterSet &iConfig, edm::ConsumesCollector &iColl)
 
bool IsFitPerBunchCrossing ()
 
 PVFitter ()
 
 PVFitter (const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iColl)
 
 PVFitter (const edm::ParameterSet &iConfig, edm::ConsumesCollector &iColl)
 
double pvQuality (const BeamSpotFitPVData &pv) const
 vertex quality measure More...
 
double pvQuality (const reco::Vertex &pv) const
 vertex quality measure More...
 
void readEvent (const edm::Event &iEvent)
 
void resetAll ()
 
void resetLSRange ()
 
void resetRefTime ()
 
void resizepvStore (unsigned int rmSize)
 
bool runBXFitter ()
 
bool runFitter ()
 
void setFitLSRange (int ls0, int ls1)
 
void setRefTime (std::time_t t0, std::time_t t1)
 
void setTree (TTree *tree)
 
virtual ~PVFitter ()
 

Private Attributes

std::map< int, std::vector< BeamSpotFitPVData > > bxMap_
 
bool debug_
 
bool do3DFit_
 
double dynamicQualityCut_
 
double errorScale_
 
std::ofstream fasciiFile
 
reco::BeamSpot fbeamspot
 
int fbeginLumiOfFit
 
std::map< int, reco::BeamSpotfbspotMap
 
int fendLumiOfFit
 
bool fFitPerBunchCrossing
 
std::time_t freftime [2]
 
TTree * ftree_
 
double fwidthX
 
double fwidthXerr
 
double fwidthY
 
double fwidthYerr
 
double fwidthZ
 
double fwidthZerr
 
std::unique_ptr< TH2F > hPVx
 
std::unique_ptr< TH2F > hPVy
 
unsigned int maxNrVertices_
 
double maxVtxNormChi2_
 
double maxVtxR_
 
double maxVtxZ_
 
unsigned int minNrVertices_
 
double minSumPt_
 
double minVtxNdf_
 
unsigned int minVtxTracks_
 
double minVtxWgt_
 
std::map< int, int > npvsmap_
 
std::string outputTxt_
 
std::vector< double > pvQualities_
 
std::vector< BeamSpotFitPVDatapvStore_
 
double sigmaCut_
 
BeamSpotTreeData theBeamSpotTreeData_
 
bool useOnlyFirstPV_
 
edm::EDGetTokenT< reco::VertexCollectionvertexToken_
 

Detailed Description

Definition at line 44 of file PVFitter.h.

Constructor & Destructor Documentation

◆ PVFitter() [1/3]

PVFitter::PVFitter ( )
inline

Definition at line 46 of file PVFitter.h.

46 {}

◆ PVFitter() [2/3]

PVFitter::PVFitter ( const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  iColl 
)

Definition at line 46 of file PVFitter.cc.

46  : ftree_(nullptr) {
47  initialize(iConfig, iColl);
48 }

References initialize().

◆ PVFitter() [3/3]

PVFitter::PVFitter ( const edm::ParameterSet iConfig,
edm::ConsumesCollector iColl 
)

Definition at line 50 of file PVFitter.cc.

50  : ftree_(nullptr) {
51  initialize(iConfig, iColl);
52 }

References initialize().

◆ ~PVFitter()

PVFitter::~PVFitter ( )
virtual

Definition at line 95 of file PVFitter.cc.

95 {}

Member Function Documentation

◆ compressStore()

void PVFitter::compressStore ( )

reduce size of primary vertex cache by increasing quality limit

Definition at line 464 of file PVFitter.cc.

464  {
465  //
466  // fill vertex qualities
467  //
468  pvQualities_.resize(pvStore_.size());
469  for (unsigned int i = 0; i < pvStore_.size(); ++i)
471  sort(pvQualities_.begin(), pvQualities_.end());
472  //
473  // Set new quality cut to median. This cut will be used to reduce the
474  // number of vertices in the store and also apply to all new vertices
475  // until the next reset
476  //
478  //
479  // remove all vertices failing the cut from the store
480  // (to be moved to a more efficient memory management!)
481  //
482  unsigned int iwrite(0);
483  for (unsigned int i = 0; i < pvStore_.size(); ++i) {
485  continue;
486  if (i != iwrite)
487  pvStore_[iwrite] = pvStore_[i];
488  ++iwrite;
489  }
490  pvStore_.resize(iwrite);
491  edm::LogInfo("PVFitter") << "Reduced primary vertex store size to " << pvStore_.size()
492  << " ; new dynamic quality cut = " << dynamicQualityCut_ << std::endl;
493 }

References dynamicQualityCut_, mps_fire::i, pvQualities_, pvQuality(), and pvStore_.

Referenced by readEvent().

◆ dumpTxtFile()

void PVFitter::dumpTxtFile ( )

Definition at line 462 of file PVFitter.cc.

462 {}

◆ FitPerBunchCrossing()

void PVFitter::FitPerBunchCrossing ( )
inline

Definition at line 64 of file PVFitter.h.

64 { fFitPerBunchCrossing = true; }

References fFitPerBunchCrossing.

◆ getBeamSpot()

reco::BeamSpot PVFitter::getBeamSpot ( )
inline

Definition at line 91 of file PVFitter.h.

91 { return fbeamspot; }

References fbeamspot.

Referenced by AlcaBeamMonitor::dqmEndLuminosityBlock(), and BeamFitter::runPVandTrkFitter().

◆ getBeamSpotMap()

std::map<int, reco::BeamSpot> PVFitter::getBeamSpotMap ( )
inline

Definition at line 92 of file PVFitter.h.

92 { return fbspotMap; }

References fbspotMap.

Referenced by BeamFitter::runPVandTrkFitter().

◆ getFitLSRange()

int* PVFitter::getFitLSRange ( )
inline

Definition at line 94 of file PVFitter.h.

94  {
95  int* tmp = new int[2];
96  tmp[0] = fbeginLumiOfFit;
97  tmp[1] = fendLumiOfFit;
98  return tmp;
99  }

References fbeginLumiOfFit, fendLumiOfFit, and createJobs::tmp.

◆ getNPVs()

int PVFitter::getNPVs ( )
inline

Definition at line 117 of file PVFitter.h.

117 { return pvStore_.size(); }

References pvStore_.

Referenced by BeamFitter::getNPVs().

◆ getNPVsperBX()

const std::map<int, int>& PVFitter::getNPVsperBX ( )
inline

Definition at line 119 of file PVFitter.h.

119  {
120  npvsmap_.clear();
121 
122  for (std::map<int, std::vector<BeamSpotFitPVData> >::const_iterator pvStore = bxMap_.begin();
123  pvStore != bxMap_.end();
124  ++pvStore) {
125  npvsmap_[pvStore->first] = (pvStore->second).size();
126  }
127  return npvsmap_;
128  }

References bxMap_, genParticles_cff::map, npvsmap_, and findQualityFiles::size.

Referenced by BeamFitter::getNPVsperBX().

◆ getpvStore()

std::vector<BeamSpotFitPVData> PVFitter::getpvStore ( )
inline

Definition at line 62 of file PVFitter.h.

62 { return pvStore_; }

References pvStore_.

Referenced by BeamFitter::getPVvectorSize().

◆ getRefTime()

time_t* PVFitter::getRefTime ( )
inline

Definition at line 101 of file PVFitter.h.

101  {
102  time_t* tmptime = new time_t[2];
103  tmptime[0] = freftime[0];
104  tmptime[1] = freftime[1];
105  return tmptime;
106  }

References freftime.

◆ getWidthX()

double PVFitter::getWidthX ( )
inline

Definition at line 55 of file PVFitter.h.

55 { return fwidthX; }

References fwidthX.

◆ getWidthXerr()

double PVFitter::getWidthXerr ( )
inline

Definition at line 58 of file PVFitter.h.

58 { return fwidthXerr; }

References fwidthXerr.

Referenced by BeamFitter::runPVandTrkFitter().

◆ getWidthY()

double PVFitter::getWidthY ( )
inline

Definition at line 56 of file PVFitter.h.

56 { return fwidthY; }

References fwidthY.

◆ getWidthYerr()

double PVFitter::getWidthYerr ( )
inline

Definition at line 59 of file PVFitter.h.

59 { return fwidthYerr; }

References fwidthYerr.

◆ getWidthZ()

double PVFitter::getWidthZ ( )
inline

Definition at line 57 of file PVFitter.h.

57 { return fwidthZ; }

References fwidthZ.

◆ getWidthZerr()

double PVFitter::getWidthZerr ( )
inline

Definition at line 60 of file PVFitter.h.

60 { return fwidthZerr; }

References fwidthZerr.

◆ initialize()

void PVFitter::initialize ( const edm::ParameterSet iConfig,
edm::ConsumesCollector iColl 
)

Definition at line 54 of file PVFitter.cc.

54  {
55  //In order to make fitting ROOT histograms thread safe
56  // one must call this undocumented function
57  TMinuitMinimizer::UseStaticMinuit(false);
58  debug_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<bool>("Debug");
60  iConfig.getParameter<edm::ParameterSet>("PVFitter")
61  .getUntrackedParameter<edm::InputTag>("VertexCollection", edm::InputTag("offlinePrimaryVertices")));
62  do3DFit_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<bool>("Apply3DFit");
63  //writeTxt_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<bool>("WriteAscii");
64  //outputTxt_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<std::string>("AsciiFileName");
66  iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<unsigned int>("maxNrStoredVertices");
68  iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<unsigned int>("minNrVerticesForFit");
69  minVtxNdf_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("minVertexNdf");
71  iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("maxVertexNormChi2");
73  iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<unsigned int>("minVertexNTracks");
74  minVtxWgt_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("minVertexMeanWeight");
75  maxVtxR_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("maxVertexR");
76  maxVtxZ_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("maxVertexZ");
77  errorScale_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("errorScale");
78  sigmaCut_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("nSigmaCut");
80  iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<bool>("FitPerBunchCrossing");
81  useOnlyFirstPV_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<bool>("useOnlyFirstPV");
82  minSumPt_ = iConfig.getParameter<edm::ParameterSet>("PVFitter").getUntrackedParameter<double>("minSumPt");
83 
84  // preset quality cut to "infinite"
85  dynamicQualityCut_ = 1.e30;
86 
87  hPVx = std::unique_ptr<TH2F>(
88  new TH2F("hPVx", "PVx vs PVz distribution", 200, -maxVtxR_, maxVtxR_, 200, -maxVtxZ_, maxVtxZ_));
89  hPVy = std::unique_ptr<TH2F>(
90  new TH2F("hPVy", "PVy vs PVz distribution", 200, -maxVtxR_, maxVtxR_, 200, -maxVtxZ_, maxVtxZ_));
91  hPVx->SetDirectory(nullptr);
92  hPVy->SetDirectory(nullptr);
93 }

References edm::ConsumesCollector::consumes(), debug_, do3DFit_, dynamicQualityCut_, errorScale_, fFitPerBunchCrossing, edm::ParameterSet::getParameter(), hPVx, hPVy, maxNrVertices_, maxVtxNormChi2_, maxVtxR_, maxVtxZ_, minNrVertices_, minSumPt_, minVtxNdf_, minVtxTracks_, minVtxWgt_, sigmaCut_, useOnlyFirstPV_, and vertexToken_.

Referenced by PVFitter().

◆ IsFitPerBunchCrossing()

bool PVFitter::IsFitPerBunchCrossing ( )
inline

Definition at line 93 of file PVFitter.h.

93 { return fFitPerBunchCrossing; }

References fFitPerBunchCrossing.

Referenced by BeamFitter::dumpTxtFile(), and BeamFitter::runPVandTrkFitter().

◆ pvQuality() [1/2]

double PVFitter::pvQuality ( const BeamSpotFitPVData pv) const

vertex quality measure

Definition at line 502 of file PVFitter.cc.

502  {
503  //
504  // determinant of the transverse part of the PV covariance matrix
505  //
506  double ex = pv.posError[0];
507  double ey = pv.posError[1];
508  return ex * ex * ey * ey * (1 - pv.posCorr[0] * pv.posCorr[0]);
509 }

References MetAnalyzer::pv().

◆ pvQuality() [2/2]

double PVFitter::pvQuality ( const reco::Vertex pv) const

vertex quality measure

Definition at line 495 of file PVFitter.cc.

495  {
496  //
497  // determinant of the transverse part of the PV covariance matrix
498  //
499  return pv.covariance(0, 0) * pv.covariance(1, 1) - pv.covariance(0, 1) * pv.covariance(0, 1);
500 }

References MetAnalyzer::pv().

Referenced by compressStore(), and readEvent().

◆ readEvent()

void PVFitter::readEvent ( const edm::Event iEvent)

Definition at line 97 of file PVFitter.cc.

97  {
98  //------ Primary Vertices
100  bool hasPVs = false;
101 
102  if (iEvent.getByToken(vertexToken_, PVCollection)) {
103  hasPVs = true;
104  }
105  //------
106 
107  if (hasPVs) {
108  for (reco::VertexCollection::const_iterator pv = PVCollection->begin(); pv != PVCollection->end(); ++pv) {
109  if (useOnlyFirstPV_) {
110  if (pv != PVCollection->begin())
111  break;
112  }
113 
114  //--- vertex selection
115  if (pv->isFake() || pv->tracksSize() == 0)
116  continue;
117  if (pv->ndof() < minVtxNdf_ || (pv->ndof() + 3.) / pv->tracksSize() < 2 * minVtxWgt_)
118  continue;
119  //---
120 
121  if (pv->tracksSize() < minVtxTracks_)
122  continue;
123 
124  const auto& testTrack = pv->trackRefAt(0);
125  if (testTrack.isNull() || !testTrack.isAvailable()) {
126  edm::LogInfo("") << "Track collection not found. Skipping cut on sumPt.";
127  } else {
128  double sumPt = 0;
129  for (auto iTrack = pv->tracks_begin(); iTrack != pv->tracks_end(); ++iTrack) {
130  const auto pt = (*iTrack)->pt();
131  sumPt += pt;
132  }
133  if (sumPt < minSumPt_)
134  continue;
135  }
136 
137  hPVx->Fill(pv->x(), pv->z());
138  hPVy->Fill(pv->y(), pv->z());
139 
140  //
141  // 3D fit section
142  //
143  // apply additional quality cut
145  continue;
146  // if store exceeds max. size: reduce size and apply new quality cut
147  if (pvStore_.size() >= maxNrVertices_) {
148  compressStore();
150  continue;
151  }
152  //
153  // copy PV to store
154  //
155  int bx = iEvent.bunchCrossing();
156  BeamSpotFitPVData pvData;
157  pvData.bunchCrossing = bx;
158  pvData.position[0] = pv->x();
159  pvData.position[1] = pv->y();
160  pvData.position[2] = pv->z();
161  pvData.posError[0] = pv->xError();
162  pvData.posError[1] = pv->yError();
163  pvData.posError[2] = pv->zError();
164  pvData.posCorr[0] = pv->covariance(0, 1) / pv->xError() / pv->yError();
165  pvData.posCorr[1] = pv->covariance(0, 2) / pv->xError() / pv->zError();
166  pvData.posCorr[2] = pv->covariance(1, 2) / pv->yError() / pv->zError();
167  pvStore_.push_back(pvData);
168 
169  if (ftree_ != nullptr) {
170  theBeamSpotTreeData_.run(iEvent.id().run());
171  theBeamSpotTreeData_.lumi(iEvent.luminosityBlock());
174  ftree_->Fill();
175  }
176 
178  bxMap_[bx].push_back(pvData);
179  }
180  }
181 }

References BeamSpotFitPVData::bunchCrossing, BeamSpotTreeData::bunchCrossing(), l1GtPatternGenerator_cfi::bx, bxMap_, compressStore(), dynamicQualityCut_, fFitPerBunchCrossing, ftree_, hPVx, hPVy, iEvent, BeamSpotTreeData::lumi(), maxNrVertices_, minSumPt_, minVtxNdf_, minVtxTracks_, minVtxWgt_, BeamSpotFitPVData::posCorr, BeamSpotFitPVData::posError, BeamSpotFitPVData::position, DiDispStaMuonMonitor_cfi::pt, MetAnalyzer::pv(), L1TEGammaOffline_cfi::PVCollection, BeamSpotTreeData::pvData(), pvQuality(), pvStore_, BeamSpotTreeData::run(), TtFullHadEvtBuilder_cfi::sumPt, theBeamSpotTreeData_, useOnlyFirstPV_, and vertexToken_.

Referenced by AlcaBeamMonitor::analyze(), and BeamFitter::readEvent().

◆ resetAll()

void PVFitter::resetAll ( )
inline

Definition at line 80 of file PVFitter.h.

80  {
81  resetLSRange();
82  resetRefTime();
83  pvStore_.clear();
84  bxMap_.clear();
85  dynamicQualityCut_ = 1.e30;
86  hPVx->Reset();
87  hPVy->Reset();
89  fbspotMap.clear();
90  };

References align::BeamSpot, bxMap_, dynamicQualityCut_, fbeamspot, fbspotMap, hPVx, hPVy, pvStore_, resetLSRange(), and resetRefTime().

Referenced by BeamFitter::BeamFitter(), AlcaBeamMonitor::dqmEndLuminosityBlock(), and BeamFitter::resetPVFitter().

◆ resetLSRange()

void PVFitter::resetLSRange ( )
inline

Definition at line 67 of file PVFitter.h.

References fbeginLumiOfFit, and fendLumiOfFit.

Referenced by resetAll().

◆ resetRefTime()

void PVFitter::resetRefTime ( )
inline

Definition at line 68 of file PVFitter.h.

68 { freftime[0] = freftime[1] = 0; }

References freftime.

Referenced by resetAll().

◆ resizepvStore()

void PVFitter::resizepvStore ( unsigned int  rmSize)
inline

Definition at line 109 of file PVFitter.h.

109 { pvStore_.erase(pvStore_.begin(), pvStore_.begin() + rmSize); }

References pvStore_.

Referenced by BeamFitter::resizePVvector().

◆ runBXFitter()

bool PVFitter::runBXFitter ( )

Definition at line 188 of file PVFitter.cc.

188  {
189  using namespace ROOT::Minuit2;
190  edm::LogInfo("PVFitter") << " Number of bunch crossings: " << bxMap_.size() << std::endl;
191 
192  bool fit_ok = true;
193 
194  for (std::map<int, std::vector<BeamSpotFitPVData> >::const_iterator pvStore = bxMap_.begin(); pvStore != bxMap_.end();
195  ++pvStore) {
196  // first set null beam spot in case
197  // fit fails
198  fbspotMap[pvStore->first] = reco::BeamSpot();
199 
200  edm::LogInfo("PVFitter") << " Number of PVs collected for PVFitter: " << (pvStore->second).size()
201  << " in bx: " << pvStore->first << std::endl;
202 
203  if ((pvStore->second).size() <= minNrVertices_) {
204  edm::LogWarning("PVFitter") << " not enough PVs, continue" << std::endl;
205  fit_ok = false;
206  continue;
207  }
208 
209  edm::LogInfo("PVFitter") << "Calculating beam spot with PVs ..." << std::endl;
210 
211  //
212  // LL function and fitter
213  //
214  FcnBeamSpotFitPV fcn(pvStore->second);
215  //
216  // fit parameters: positions, widths, x-y correlations, tilts in xz and yz
217  //
218  MnUserParameters upar;
219  upar.Add("x", 0., 0.02, -10., 10.); // 0
220  upar.Add("y", 0., 0.02, -10., 10.); // 1
221  upar.Add("z", 0., 0.20, -30., 30.); // 2
222  upar.Add("ex", 0.015, 0.01, 0., 10.); // 3
223  upar.Add("corrxy", 0., 0.02, -1., 1.); // 4
224  upar.Add("ey", 0.015, 0.01, 0., 10.); // 5
225  upar.Add("dxdz", 0., 0.0002, -0.1, 0.1); // 6
226  upar.Add("dydz", 0., 0.0002, -0.1, 0.1); // 7
227  upar.Add("ez", 1., 0.1, 0., 30.); // 8
228  upar.Add("scale", errorScale_, errorScale_ / 10., errorScale_ / 2., errorScale_ * 2.); // 9
229  MnMigrad migrad(fcn, upar);
230 
231  //
232  // first iteration without correlations
233  //
234  upar.Fix(4);
235  upar.Fix(6);
236  upar.Fix(7);
237  upar.Fix(9);
238  FunctionMinimum ierr = migrad(0, 1.);
239  if (!ierr.IsValid()) {
240  edm::LogInfo("PVFitter") << "3D beam spot fit failed in 1st iteration" << std::endl;
241  fit_ok = false;
242  continue;
243  }
244  //
245  // refit with harder selection on vertices
246  //
247  fcn.setLimits(upar.Value(0) - sigmaCut_ * upar.Value(3),
248  upar.Value(0) + sigmaCut_ * upar.Value(3),
249  upar.Value(1) - sigmaCut_ * upar.Value(5),
250  upar.Value(1) + sigmaCut_ * upar.Value(5),
251  upar.Value(2) - sigmaCut_ * upar.Value(8),
252  upar.Value(2) + sigmaCut_ * upar.Value(8));
253  ierr = migrad(0, 1.);
254  if (!ierr.IsValid()) {
255  edm::LogInfo("PVFitter") << "3D beam spot fit failed in 2nd iteration" << std::endl;
256  fit_ok = false;
257  continue;
258  }
259  //
260  // refit with correlations
261  //
262  upar.Release(4);
263  upar.Release(6);
264  upar.Release(7);
265  ierr = migrad(0, 1.);
266  if (!ierr.IsValid()) {
267  edm::LogInfo("PVFitter") << "3D beam spot fit failed in 3rd iteration" << std::endl;
268  fit_ok = false;
269  continue;
270  }
271 
272  fwidthX = upar.Value(3);
273  fwidthY = upar.Value(5);
274  fwidthZ = upar.Value(8);
275  fwidthXerr = upar.Error(3);
276  fwidthYerr = upar.Error(5);
277  fwidthZerr = upar.Error(8);
278 
280  // need to get the full cov matrix
281  matrix(0, 0) = pow(upar.Error(0), 2);
282  matrix(1, 1) = pow(upar.Error(1), 2);
283  matrix(2, 2) = pow(upar.Error(2), 2);
284  matrix(3, 3) = fwidthZerr * fwidthZerr;
285  matrix(4, 4) = pow(upar.Error(6), 2);
286  matrix(5, 5) = pow(upar.Error(7), 2);
287  matrix(6, 6) = fwidthXerr * fwidthXerr;
288 
289  fbeamspot = reco::BeamSpot(reco::BeamSpot::Point(upar.Value(0), upar.Value(1), upar.Value(2)),
290  fwidthZ,
291  upar.Value(6),
292  upar.Value(7),
293  fwidthX,
294  matrix);
298 
299  fbspotMap[pvStore->first] = fbeamspot;
300  edm::LogInfo("PVFitter") << "3D PV fit done for this bunch crossing." << std::endl;
301  fit_ok = fit_ok & true;
302  }
303 
304  return fit_ok;
305 }

References align::BeamSpot, bxMap_, errorScale_, fbeamspot, fbspotMap, fcn(), fwidthX, fwidthXerr, fwidthY, fwidthYerr, fwidthZ, fwidthZerr, genParticles_cff::map, makeMuonMisalignmentScenario::matrix, minNrVertices_, funct::pow(), reco::BeamSpot::setBeamWidthX(), reco::BeamSpot::setBeamWidthY(), reco::BeamSpot::setType(), sigmaCut_, findQualityFiles::size, and reco::BeamSpot::Tracker.

Referenced by BeamFitter::runPVandTrkFitter().

◆ runFitter()

bool PVFitter::runFitter ( )

Definition at line 307 of file PVFitter.cc.

307  {
308  using namespace ROOT::Minuit2;
309  edm::LogInfo("PVFitter") << " Number of PVs collected for PVFitter: " << pvStore_.size() << std::endl;
310 
311  if (pvStore_.size() <= minNrVertices_)
312  return false;
313 
314  //need to create a unique histogram name to avoid ROOT trying to re-use one
315  // also tell ROOT to hide its global state
316  TDirectory::TContext guard{nullptr};
317  std::ostringstream str;
318  str << this;
319  std::unique_ptr<TH1D> h1PVx{hPVx->ProjectionX((std::string("h1PVx") + str.str()).c_str(), 0, -1, "e")};
320  std::unique_ptr<TH1D> h1PVy{hPVy->ProjectionX((std::string("h1PVy") + str.str()).c_str(), 0, -1, "e")};
321  std::unique_ptr<TH1D> h1PVz{hPVx->ProjectionY((std::string("h1PVz") + str.str()).c_str(), 0, -1, "e")};
322 
323  //Use our own copy for thread safety
324  // also do not add to global list of functions
325  TF1 gausx("localGausX", "gaus", 0., 1., TF1::EAddToList::kNo);
326  TF1 gausy("localGausY", "gaus", 0., 1., TF1::EAddToList::kNo);
327  TF1 gausz("localGausZ", "gaus", 0., 1., TF1::EAddToList::kNo);
328 
329  h1PVx->Fit(&gausx, "QLMN0 SERIAL");
330  h1PVy->Fit(&gausy, "QLMN0 SERIAL");
331  h1PVz->Fit(&gausz, "QLMN0 SERIAL");
332 
333  fwidthX = gausx.GetParameter(2);
334  fwidthY = gausy.GetParameter(2);
335  fwidthZ = gausz.GetParameter(2);
336  fwidthXerr = gausx.GetParError(2);
337  fwidthYerr = gausy.GetParError(2);
338  fwidthZerr = gausz.GetParError(2);
339 
340  double estX = gausx.GetParameter(1);
341  double estY = gausy.GetParameter(1);
342  double estZ = gausz.GetParameter(1);
343  double errX = fwidthX * 3.;
344  double errY = fwidthY * 3.;
345  double errZ = fwidthZ * 3.;
346 
347  if (!do3DFit_) {
349  matrix(2, 2) = gausz.GetParError(1) * gausz.GetParError(1);
350  matrix(3, 3) = fwidthZerr * fwidthZerr;
351  matrix(6, 6) = fwidthXerr * fwidthXerr;
352 
353  fbeamspot =
354  reco::BeamSpot(reco::BeamSpot::Point(gausx.GetParameter(1), gausy.GetParameter(1), gausz.GetParameter(1)),
355  fwidthZ,
356  0.,
357  0.,
358  fwidthX,
359  matrix);
363 
364  } else { // do 3D fit
365  //
366  // LL function and fitter
367  //
369  //
370  // fit parameters: positions, widths, x-y correlations, tilts in xz and yz
371  //
372  MnUserParameters upar;
373  upar.Add("x", estX, errX, -10., 10.); // 0
374  upar.Add("y", estY, errY, -10., 10.); // 1
375  upar.Add("z", estZ, errZ, -30., 30.); // 2
376  upar.Add("ex", 0.015, 0.01, 0., 10.); // 3
377  upar.Add("corrxy", 0., 0.02, -1., 1.); // 4
378  upar.Add("ey", 0.015, 0.01, 0., 10.); // 5
379  upar.Add("dxdz", 0., 0.0002, -0.1, 0.1); // 6
380  upar.Add("dydz", 0., 0.0002, -0.1, 0.1); // 7
381  upar.Add("ez", 1., 0.1, 0., 30.); // 8
382  upar.Add("scale", errorScale_, errorScale_ / 10., errorScale_ / 2., errorScale_ * 2.); // 9
383  MnMigrad migrad(fcn, upar);
384  //
385  // first iteration without correlations
386  //
387  migrad.Fix(4);
388  migrad.Fix(6);
389  migrad.Fix(7);
390  migrad.Fix(9);
391  FunctionMinimum ierr = migrad(0, 1.);
392  if (!ierr.IsValid()) {
393  edm::LogWarning("PVFitter") << "3D beam spot fit failed in 1st iteration" << std::endl;
394  return false;
395  }
396  //
397  // refit with harder selection on vertices
398  //
399 
400  vector<double> results;
401  vector<double> errors;
402  results = ierr.UserParameters().Params();
403  errors = ierr.UserParameters().Errors();
404 
405  fcn.setLimits(results[0] - sigmaCut_ * results[3],
406  results[0] + sigmaCut_ * results[3],
407  results[1] - sigmaCut_ * results[5],
408  results[1] + sigmaCut_ * results[5],
409  results[2] - sigmaCut_ * results[8],
410  results[2] + sigmaCut_ * results[8]);
411  ierr = migrad(0, 1.);
412  if (!ierr.IsValid()) {
413  edm::LogWarning("PVFitter") << "3D beam spot fit failed in 2nd iteration" << std::endl;
414  return false;
415  }
416  //
417  // refit with correlations
418  //
419  migrad.Release(4);
420  migrad.Release(6);
421  migrad.Release(7);
422  ierr = migrad(0, 1.);
423  if (!ierr.IsValid()) {
424  edm::LogWarning("PVFitter") << "3D beam spot fit failed in 3rd iteration" << std::endl;
425  return false;
426  }
427 
428  results = ierr.UserParameters().Params();
429  errors = ierr.UserParameters().Errors();
430 
431  fwidthX = results[3];
432  fwidthY = results[5];
433  fwidthZ = results[8];
434  fwidthXerr = errors[3];
435  fwidthYerr = errors[5];
436  fwidthZerr = errors[8];
437 
438  // check errors on widths and sigmaZ for nan
440  edm::LogWarning("PVFitter") << "3D beam spot fit returns nan in 3rd iteration" << std::endl;
441  return false;
442  }
443 
445  // need to get the full cov matrix
446  matrix(0, 0) = pow(errors[0], 2);
447  matrix(1, 1) = pow(errors[1], 2);
448  matrix(2, 2) = pow(errors[2], 2);
449  matrix(3, 3) = fwidthZerr * fwidthZerr;
450  matrix(6, 6) = fwidthXerr * fwidthXerr;
451 
457  }
458 
459  return true;
460 }

References align::BeamSpot, do3DFit_, MessageLogger_cfi::errors, errorScale_, fftjetvertexadder_cfi::errX, fftjetvertexadder_cfi::errY, fftjetvertexadder_cfi::errZ, fbeamspot, fcn(), fwidthX, fwidthXerr, fwidthY, fwidthYerr, fwidthZ, fwidthZerr, hPVx, hPVy, edm::isNotFinite(), makeMuonMisalignmentScenario::matrix, minNrVertices_, funct::pow(), pvStore_, bookConverter::results, reco::BeamSpot::setBeamWidthX(), reco::BeamSpot::setBeamWidthY(), reco::BeamSpot::setType(), sigmaCut_, str, AlCaHLTBitMon_QueryRunRegistry::string, tools::TF1, and reco::BeamSpot::Tracker.

Referenced by AlcaBeamMonitor::dqmEndLuminosityBlock(), and BeamFitter::runPVandTrkFitter().

◆ setFitLSRange()

void PVFitter::setFitLSRange ( int  ls0,
int  ls1 
)
inline

Definition at line 74 of file PVFitter.h.

74  {
75  fbeginLumiOfFit = ls0;
76  fendLumiOfFit = ls1;
77  }

References fbeginLumiOfFit, and fendLumiOfFit.

◆ setRefTime()

void PVFitter::setRefTime ( std::time_t  t0,
std::time_t  t1 
)
inline

Definition at line 70 of file PVFitter.h.

70  {
71  freftime[0] = t0;
72  freftime[1] = t1;
73  }

References freftime, FrontierCondition_GT_autoExpress_cfi::t0, and RandomServiceHelper::t1.

◆ setTree()

void PVFitter::setTree ( TTree *  tree)

Definition at line 183 of file PVFitter.cc.

183  {
184  ftree_ = tree;
186 }

References BeamSpotTreeData::branch(), ftree_, theBeamSpotTreeData_, and MainPageGenerator::tree.

Referenced by BeamFitter::BeamFitter().

Member Data Documentation

◆ bxMap_

std::map<int, std::vector<BeamSpotFitPVData> > PVFitter::bxMap_
private

Definition at line 174 of file PVFitter.h.

Referenced by getNPVsperBX(), readEvent(), resetAll(), and runBXFitter().

◆ debug_

bool PVFitter::debug_
private

Definition at line 139 of file PVFitter.h.

Referenced by initialize().

◆ do3DFit_

bool PVFitter::do3DFit_
private

Definition at line 140 of file PVFitter.h.

Referenced by initialize(), and runFitter().

◆ dynamicQualityCut_

double PVFitter::dynamicQualityCut_
private

Definition at line 175 of file PVFitter.h.

Referenced by compressStore(), initialize(), readEvent(), and resetAll().

◆ errorScale_

double PVFitter::errorScale_
private

Definition at line 152 of file PVFitter.h.

Referenced by initialize(), runBXFitter(), and runFitter().

◆ fasciiFile

std::ofstream PVFitter::fasciiFile
private

Definition at line 137 of file PVFitter.h.

◆ fbeamspot

reco::BeamSpot PVFitter::fbeamspot
private

Definition at line 132 of file PVFitter.h.

Referenced by getBeamSpot(), resetAll(), runBXFitter(), and runFitter().

◆ fbeginLumiOfFit

int PVFitter::fbeginLumiOfFit
private

Definition at line 164 of file PVFitter.h.

Referenced by getFitLSRange(), resetLSRange(), and setFitLSRange().

◆ fbspotMap

std::map<int, reco::BeamSpot> PVFitter::fbspotMap
private

Definition at line 133 of file PVFitter.h.

Referenced by getBeamSpotMap(), resetAll(), and runBXFitter().

◆ fendLumiOfFit

int PVFitter::fendLumiOfFit
private

Definition at line 165 of file PVFitter.h.

Referenced by getFitLSRange(), resetLSRange(), and setFitLSRange().

◆ fFitPerBunchCrossing

bool PVFitter::fFitPerBunchCrossing
private

Definition at line 134 of file PVFitter.h.

Referenced by FitPerBunchCrossing(), initialize(), IsFitPerBunchCrossing(), and readEvent().

◆ freftime

std::time_t PVFitter::freftime[2]
private

Definition at line 156 of file PVFitter.h.

Referenced by getRefTime(), resetRefTime(), and setRefTime().

◆ ftree_

TTree* PVFitter::ftree_
private

Definition at line 161 of file PVFitter.h.

Referenced by readEvent(), and setTree().

◆ fwidthX

double PVFitter::fwidthX
private

Definition at line 166 of file PVFitter.h.

Referenced by getWidthX(), runBXFitter(), and runFitter().

◆ fwidthXerr

double PVFitter::fwidthXerr
private

Definition at line 169 of file PVFitter.h.

Referenced by getWidthXerr(), runBXFitter(), and runFitter().

◆ fwidthY

double PVFitter::fwidthY
private

Definition at line 167 of file PVFitter.h.

Referenced by getWidthY(), runBXFitter(), and runFitter().

◆ fwidthYerr

double PVFitter::fwidthYerr
private

Definition at line 170 of file PVFitter.h.

Referenced by getWidthYerr(), runBXFitter(), and runFitter().

◆ fwidthZ

double PVFitter::fwidthZ
private

Definition at line 168 of file PVFitter.h.

Referenced by getWidthZ(), runBXFitter(), and runFitter().

◆ fwidthZerr

double PVFitter::fwidthZerr
private

Definition at line 171 of file PVFitter.h.

Referenced by getWidthZerr(), runBXFitter(), and runFitter().

◆ hPVx

std::unique_ptr<TH2F> PVFitter::hPVx
private

Definition at line 158 of file PVFitter.h.

Referenced by initialize(), readEvent(), resetAll(), and runFitter().

◆ hPVy

std::unique_ptr<TH2F> PVFitter::hPVy
private

Definition at line 159 of file PVFitter.h.

Referenced by initialize(), readEvent(), resetAll(), and runFitter().

◆ maxNrVertices_

unsigned int PVFitter::maxNrVertices_
private

Definition at line 144 of file PVFitter.h.

Referenced by initialize(), and readEvent().

◆ maxVtxNormChi2_

double PVFitter::maxVtxNormChi2_
private

Definition at line 147 of file PVFitter.h.

Referenced by initialize().

◆ maxVtxR_

double PVFitter::maxVtxR_
private

Definition at line 150 of file PVFitter.h.

Referenced by initialize().

◆ maxVtxZ_

double PVFitter::maxVtxZ_
private

Definition at line 151 of file PVFitter.h.

Referenced by initialize().

◆ minNrVertices_

unsigned int PVFitter::minNrVertices_
private

Definition at line 145 of file PVFitter.h.

Referenced by initialize(), runBXFitter(), and runFitter().

◆ minSumPt_

double PVFitter::minSumPt_
private

Definition at line 154 of file PVFitter.h.

Referenced by initialize(), and readEvent().

◆ minVtxNdf_

double PVFitter::minVtxNdf_
private

Definition at line 146 of file PVFitter.h.

Referenced by initialize(), and readEvent().

◆ minVtxTracks_

unsigned int PVFitter::minVtxTracks_
private

Definition at line 148 of file PVFitter.h.

Referenced by initialize(), and readEvent().

◆ minVtxWgt_

double PVFitter::minVtxWgt_
private

Definition at line 149 of file PVFitter.h.

Referenced by initialize(), and readEvent().

◆ npvsmap_

std::map<int, int> PVFitter::npvsmap_
private

Definition at line 131 of file PVFitter.h.

Referenced by getNPVsperBX().

◆ outputTxt_

std::string PVFitter::outputTxt_
private

Definition at line 142 of file PVFitter.h.

◆ pvQualities_

std::vector<double> PVFitter::pvQualities_
private

Definition at line 176 of file PVFitter.h.

Referenced by compressStore().

◆ pvStore_

std::vector<BeamSpotFitPVData> PVFitter::pvStore_
private

◆ sigmaCut_

double PVFitter::sigmaCut_
private

Definition at line 153 of file PVFitter.h.

Referenced by initialize(), runBXFitter(), and runFitter().

◆ theBeamSpotTreeData_

BeamSpotTreeData PVFitter::theBeamSpotTreeData_
private

Definition at line 178 of file PVFitter.h.

Referenced by readEvent(), and setTree().

◆ useOnlyFirstPV_

bool PVFitter::useOnlyFirstPV_
private

Definition at line 135 of file PVFitter.h.

Referenced by initialize(), and readEvent().

◆ vertexToken_

edm::EDGetTokenT<reco::VertexCollection> PVFitter::vertexToken_
private

Definition at line 141 of file PVFitter.h.

Referenced by initialize(), and readEvent().

FcnBeamSpotFitPV
Definition: FcnBeamSpotFitPV.h:22
PVFitter::hPVx
std::unique_ptr< TH2F > hPVx
Definition: PVFitter.h:158
PVFitter::minVtxNdf_
double minVtxNdf_
Definition: PVFitter.h:146
fftjetvertexadder_cfi.errZ
errZ
Definition: fftjetvertexadder_cfi.py:39
PVFitter::minVtxTracks_
unsigned int minVtxTracks_
Definition: PVFitter.h:148
PVFitter::maxVtxNormChi2_
double maxVtxNormChi2_
Definition: PVFitter.h:147
PVFitter::fwidthX
double fwidthX
Definition: PVFitter.h:166
mps_fire.i
i
Definition: mps_fire.py:355
reco::BeamSpot::setBeamWidthY
void setBeamWidthY(double v)
Definition: BeamSpot.h:105
PVFitter::minSumPt_
double minSumPt_
Definition: PVFitter.h:154
makeMuonMisalignmentScenario.matrix
list matrix
Definition: makeMuonMisalignmentScenario.py:141
PVFitter::fwidthXerr
double fwidthXerr
Definition: PVFitter.h:169
align::BeamSpot
Definition: StructureType.h:89
edm::isNotFinite
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
fftjetvertexadder_cfi.errY
errY
Definition: fftjetvertexadder_cfi.py:38
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
edm::LogInfo
Definition: MessageLogger.h:254
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
BeamSpotTreeData::branch
void branch(TTree *tree)
Definition: BeamSpotTreeData.cc:8
PVFitter::theBeamSpotTreeData_
BeamSpotTreeData theBeamSpotTreeData_
Definition: PVFitter.h:178
MessageLogger_cfi.errors
errors
Definition: MessageLogger_cfi.py:18
bookConverter.results
results
Definition: bookConverter.py:144
ROOT::Minuit2
Definition: HybridMinimizer.h:28
fcn
void fcn(int &, double *, double &, double *, int)
Definition: LASBarrelAlgorithm.cc:388
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
tools.TF1
TF1
Definition: tools.py:23
edm::Handle< reco::VertexCollection >
TtFullHadEvtBuilder_cfi.sumPt
sumPt
Definition: TtFullHadEvtBuilder_cfi.py:38
BeamSpotFitPVData::bunchCrossing
float bunchCrossing
Definition: BeamSpotFitPVData.h:8
PVFitter::maxVtxZ_
double maxVtxZ_
Definition: PVFitter.h:151
PVFitter::dynamicQualityCut_
double dynamicQualityCut_
Definition: PVFitter.h:175
RandomServiceHelper.t1
t1
Definition: RandomServiceHelper.py:256
PVFitter::fwidthZ
double fwidthZ
Definition: PVFitter.h:168
PVFitter::fwidthY
double fwidthY
Definition: PVFitter.h:167
errors
Definition: errors.py:1
FrontierCondition_GT_autoExpress_cfi.t0
t0
Definition: FrontierCondition_GT_autoExpress_cfi.py:148
L1TEGammaOffline_cfi.PVCollection
PVCollection
Definition: L1TEGammaOffline_cfi.py:34
reco::BeamSpot::Tracker
Definition: BeamSpot.h:24
str
#define str(s)
Definition: TestProcessor.cc:48
PVFitter::sigmaCut_
double sigmaCut_
Definition: PVFitter.h:153
PVFitter::npvsmap_
std::map< int, int > npvsmap_
Definition: PVFitter.h:131
reco::BeamSpot::setBeamWidthX
void setBeamWidthX(double v)
Definition: BeamSpot.h:104
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:49
BeamSpotFitPVData::posCorr
float posCorr[3]
Definition: BeamSpotFitPVData.h:11
PVFitter::fendLumiOfFit
int fendLumiOfFit
Definition: PVFitter.h:165
PVFitter::fbeamspot
reco::BeamSpot fbeamspot
Definition: PVFitter.h:132
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PVFitter::pvQuality
double pvQuality(const reco::Vertex &pv) const
vertex quality measure
Definition: PVFitter.cc:495
PVFitter::hPVy
std::unique_ptr< TH2F > hPVy
Definition: PVFitter.h:159
edm::LogWarning
Definition: MessageLogger.h:141
PVFitter::fwidthZerr
double fwidthZerr
Definition: PVFitter.h:171
PVFitter::freftime
std::time_t freftime[2]
Definition: PVFitter.h:156
edm::ParameterSet
Definition: ParameterSet.h:36
MainPageGenerator.tree
tree
Definition: MainPageGenerator.py:264
MetAnalyzer.pv
def pv(vc)
Definition: MetAnalyzer.py:7
iEvent
int iEvent
Definition: GenABIO.cc:224
PVFitter::fbeginLumiOfFit
int fbeginLumiOfFit
Definition: PVFitter.h:164
PVFitter::resetLSRange
void resetLSRange()
Definition: PVFitter.h:67
reco::BeamSpot::CovarianceMatrix
math::Error< dimension >::type CovarianceMatrix
Definition: BeamSpot.h:29
PVFitter::fwidthYerr
double fwidthYerr
Definition: PVFitter.h:170
PVFitter::bxMap_
std::map< int, std::vector< BeamSpotFitPVData > > bxMap_
Definition: PVFitter.h:174
BeamSpotTreeData::bunchCrossing
void bunchCrossing(unsigned int bunchCrossing)
Definition: BeamSpotTreeData.h:18
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
BeamSpotFitPVData::position
float position[3]
Definition: BeamSpotFitPVData.h:9
PVFitter::vertexToken_
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
Definition: PVFitter.h:141
BeamSpotTreeData::lumi
void lumi(unsigned int lumi)
Definition: BeamSpotTreeData.h:17
PVFitter::pvQualities_
std::vector< double > pvQualities_
Definition: PVFitter.h:176
BeamSpotTreeData::run
void run(unsigned int run)
Definition: BeamSpotTreeData.h:16
PVFitter::useOnlyFirstPV_
bool useOnlyFirstPV_
Definition: PVFitter.h:135
PVFitter::fFitPerBunchCrossing
bool fFitPerBunchCrossing
Definition: PVFitter.h:134
PVFitter::fbspotMap
std::map< int, reco::BeamSpot > fbspotMap
Definition: PVFitter.h:133
PVFitter::initialize
void initialize(const edm::ParameterSet &iConfig, edm::ConsumesCollector &iColl)
Definition: PVFitter.cc:54
PVFitter::minNrVertices_
unsigned int minNrVertices_
Definition: PVFitter.h:145
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
reco::BeamSpot::Point
math::XYZPoint Point
point in the space
Definition: BeamSpot.h:27
genParticles_cff.map
map
Definition: genParticles_cff.py:11
PVFitter::debug_
bool debug_
Definition: PVFitter.h:139
BeamSpotTreeData::pvData
void pvData(const BeamSpotFitPVData &pvData)
Definition: BeamSpotTreeData.h:19
reco::BeamSpot::setType
void setType(BeamType type)
set beam type
Definition: BeamSpot.h:124
PVFitter::errorScale_
double errorScale_
Definition: PVFitter.h:152
PVFitter::minVtxWgt_
double minVtxWgt_
Definition: PVFitter.h:149
PVFitter::ftree_
TTree * ftree_
Definition: PVFitter.h:161
BeamSpotFitPVData::posError
float posError[3]
Definition: BeamSpotFitPVData.h:10
PVFitter::compressStore
void compressStore()
reduce size of primary vertex cache by increasing quality limit
Definition: PVFitter.cc:464
PVFitter::maxNrVertices_
unsigned int maxNrVertices_
Definition: PVFitter.h:144
fftjetvertexadder_cfi.errX
errX
Definition: fftjetvertexadder_cfi.py:37
edm::InputTag
Definition: InputTag.h:15
PVFitter::do3DFit_
bool do3DFit_
Definition: PVFitter.h:140
PVFitter::pvStore_
std::vector< BeamSpotFitPVData > pvStore_
Definition: PVFitter.h:173
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
PVFitter::resetRefTime
void resetRefTime()
Definition: PVFitter.h:68
BeamSpotFitPVData
Definition: BeamSpotFitPVData.h:7
PVFitter::maxVtxR_
double maxVtxR_
Definition: PVFitter.h:150