CMS 3D CMS Logo

VertexMonitor.cc
Go to the documentation of this file.
1 
2 /*
3  * See header file for a description of this class.
4  *
5  * \author: Mia Tosi,40 3-B32,+41227671609
6  */
7 
11 
13 
15 
16 #include "TMath.h"
17 
18 
19 VertexMonitor::VertexMonitor(const edm::ParameterSet& iConfig, const edm::InputTag& primaryVertexInputTag, const edm::InputTag& selectedPrimaryVertexInputTag, std::string pvLabel)
20  : conf_( iConfig )
21  , primaryVertexInputTag_ ( primaryVertexInputTag )
22  , selectedPrimaryVertexInputTag_ ( selectedPrimaryVertexInputTag )
23  , label_ ( pvLabel )
24  , NumberOfPVtx(nullptr)
25  , NumberOfPVtxVsBXlumi(nullptr)
26  , NumberOfPVtxVsGoodPVtx(nullptr)
27  , NumberOfGoodPVtx(nullptr)
28  , NumberOfGoodPVtxVsBXlumi(nullptr)
29  , FractionOfGoodPVtx(nullptr)
30  , FractionOfGoodPVtxVsBXlumi(nullptr)
31  , FractionOfGoodPVtxVsGoodPVtx(nullptr)
32  , FractionOfGoodPVtxVsPVtx(nullptr)
33  , NumberOfBADndofPVtx(nullptr)
34  , NumberOfBADndofPVtxVsBXlumi(nullptr)
35  , NumberOfBADndofPVtxVsGoodPVtx(nullptr)
36  , GoodPVtxSumPt(nullptr)
37  , GoodPVtxSumPtVsBXlumi(nullptr)
38  , GoodPVtxSumPtVsGoodPVtx(nullptr)
39  , GoodPVtxNumberOfTracks(nullptr)
40  , GoodPVtxNumberOfTracksVsBXlumi(nullptr)
41  , GoodPVtxNumberOfTracksVsGoodPVtx(nullptr)
42  , GoodPVtxNumberOfTracksVsGoodPVtxNdof(nullptr)
43  , GoodPVtxChi2oNDFVsGoodPVtx(nullptr)
44  , GoodPVtxChi2oNDFVsBXlumi(nullptr)
45  , GoodPVtxChi2ProbVsGoodPVtx(nullptr)
46  , GoodPVtxChi2ProbVsBXlumi(nullptr)
47  , doAllPlots_ ( conf_.getParameter<bool>("doAllPlots") )
48  , doPlotsVsBXlumi_ ( conf_.getParameter<bool>("doPlotsVsBXlumi") )
49  , doPlotsVsGoodPVtx_( conf_.getParameter<bool>("doPlotsVsGoodPVtx") )
50 
51 {
52  //now do what ever initialization is needed
53  if ( doPlotsVsBXlumi_ )
54  lumiDetails_ = new GetLumi( iConfig.getParameter<edm::ParameterSet>("BXlumiSetup") );
55 
56 }
57 
58 VertexMonitor::VertexMonitor(const edm::ParameterSet& iConfig, const edm::InputTag& primaryVertexInputTag, const edm::InputTag& selectedPrimaryVertexInputTag, std::string pvLabel, edm::ConsumesCollector& iC) : VertexMonitor(iConfig,primaryVertexInputTag,selectedPrimaryVertexInputTag,pvLabel)
59 {
60 
61  if ( doPlotsVsBXlumi_ )
62  lumiDetails_ = new GetLumi( iConfig.getParameter<edm::ParameterSet>("BXlumiSetup"), iC );
63 
66 }
67 
69 {
70 
71  // do anything here that needs to be done at desctruction time
72  // (e.g. close files, deallocate resources etc.)
73  // if (lumiDetails_) delete lumiDetails_;
74 }
75 
76 
77 //
78 // member functions
79 //
80 
81 // -- Analyse
82 // ------------ method called for each event ------------
83 // ------------------------------------------------------- //
84 void
86 {
87 
88  double bxlumi = 0.;
89  if ( doPlotsVsBXlumi_ )
90  bxlumi = lumiDetails_->getValue(iEvent);
91  // std::cout << "bxlumi : " << bxlumi << std::endl;
92 
93  size_t totalNumPV = 0;
94  size_t totalNumBADndofPV = 0;
96  iEvent.getByToken(pvToken_, pvHandle );
97  if ( pvHandle.isValid() )
98  {
99  totalNumPV = pvHandle->size();
100  // std::cout << "totalNumPV : " << totalNumPV << std::endl;
101  for (reco::VertexCollection::const_iterator pv = pvHandle->begin();
102  pv != pvHandle->end(); ++pv) {
103  //--- count pv w/ ndof < 4
104  if (pv->ndof() < 4.) totalNumBADndofPV++;
105  }
106  } else return;
107  NumberOfPVtx -> Fill( totalNumPV );
108  NumberOfBADndofPVtx -> Fill( totalNumBADndofPV );
109  if ( doPlotsVsBXlumi_ ) {
110  NumberOfPVtxVsBXlumi -> Fill( bxlumi, totalNumPV );
111  NumberOfBADndofPVtxVsBXlumi -> Fill( bxlumi, totalNumBADndofPV );
112  }
113 
114  size_t totalNumGoodPV = 0;
116  iEvent.getByToken(selpvToken_, selpvHandle );
117  if ( selpvHandle.isValid() )
118  totalNumGoodPV = selpvHandle->size();
119  else return;
120  // std::cout << "totalNumGoodPV: " << totalNumGoodPV << std::endl;
121  if ( doPlotsVsGoodPVtx_ ) {
122  NumberOfPVtxVsGoodPVtx -> Fill( totalNumGoodPV, totalNumPV );
123  NumberOfBADndofPVtxVsGoodPVtx -> Fill( totalNumGoodPV, totalNumBADndofPV );
124  }
125 
126  double fracGoodPV = double(totalNumGoodPV)/double(totalNumPV);
127  // std::cout << "fracGoodPV: " << fracGoodPV << std::endl;
128 
129  NumberOfGoodPVtx -> Fill( totalNumGoodPV );
130  FractionOfGoodPVtx -> Fill( fracGoodPV );
131  if ( doPlotsVsBXlumi_ ) {
132  NumberOfGoodPVtxVsBXlumi -> Fill( bxlumi, totalNumGoodPV );
133  FractionOfGoodPVtxVsBXlumi -> Fill( bxlumi, fracGoodPV );
134  }
135  if ( doPlotsVsGoodPVtx_ ) {
136  FractionOfGoodPVtxVsGoodPVtx -> Fill( totalNumGoodPV, fracGoodPV );
137  FractionOfGoodPVtxVsPVtx -> Fill( totalNumPV, fracGoodPV );
138  }
139 
140  if ( !selpvHandle->empty() ) {
141  double sumpt = 0;
142  size_t ntracks = 0;
143  double chi2ndf = 0.;
144  double chi2prob = 0.;
145 
146  if (!selpvHandle->at(0).isFake()) {
147 
148  reco::Vertex pv = selpvHandle->at(0);
149 
150  ntracks = pv.tracksSize();
151  chi2ndf = pv.normalizedChi2();
152  chi2prob = TMath::Prob(pv.chi2(),(int)pv.ndof());
153 
155  itrk != pv.tracks_end(); ++itrk) {
156  double pt = (**itrk).pt();
157  sumpt += pt*pt;
158  }
159  GoodPVtxSumPt -> Fill( sumpt );
160  GoodPVtxNumberOfTracks -> Fill( ntracks );
161 
162  if ( doPlotsVsBXlumi_ ) {
163  GoodPVtxSumPtVsBXlumi -> Fill( bxlumi, sumpt );
164  GoodPVtxNumberOfTracksVsBXlumi -> Fill( bxlumi, ntracks );
165  GoodPVtxChi2oNDFVsBXlumi -> Fill( bxlumi, chi2ndf );
166  GoodPVtxChi2ProbVsBXlumi -> Fill( bxlumi, chi2prob );
167  }
168  if ( doPlotsVsGoodPVtx_ ) {
169  GoodPVtxSumPtVsGoodPVtx -> Fill( totalNumGoodPV, sumpt );
170  GoodPVtxNumberOfTracksVsGoodPVtx -> Fill( totalNumGoodPV, ntracks );
171  GoodPVtxChi2oNDFVsGoodPVtx -> Fill( totalNumGoodPV, chi2ndf );
172  GoodPVtxChi2ProbVsGoodPVtx -> Fill( totalNumGoodPV, chi2prob );
173  }
174  }
175  }
176 }
177 
178 
179 // ------------ method called once each job just before starting event loop ------------
180 void
182 {
183  // parameters from the configuration
184  std::string MEFolderName = conf_.getParameter<std::string>("PVFolderName");
185 
186  // get binning from the configuration
187  int GoodPVtxBin = conf_.getParameter<int>("GoodPVtxBin");
188  double GoodPVtxMin = conf_.getParameter<double>("GoodPVtxMin");
189  double GoodPVtxMax = conf_.getParameter<double>("GoodPVtxMax");
190 
191  // book histo
192  // ----------------------//
193  ibooker.setCurrentFolder(MEFolderName+"/"+label_);
194 
195  histname = "NumberOfPVtx_" + label_;
196  NumberOfPVtx = ibooker.book1D(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax);
197  NumberOfPVtx->setAxisTitle("Number of PV",1);
198  NumberOfPVtx->setAxisTitle("Number of Events",2);
199 
200  histname = "NumberOfGoodPVtx_" + label_;
201  NumberOfGoodPVtx = ibooker.book1D(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax);
202  NumberOfGoodPVtx->setAxisTitle("Number of Good PV",1);
203  NumberOfGoodPVtx->setAxisTitle("Number of Events",2);
204 
205  histname = "FractionOfGoodPVtx_" + label_;
206  FractionOfGoodPVtx = ibooker.book1D(histname,histname, 100,0.,1.);
207  FractionOfGoodPVtx->setAxisTitle("fraction of Good PV",1);
208  FractionOfGoodPVtx->setAxisTitle("Number of Events",2);
209 
210  histname = "NumberOfBADndofPVtx_" + label_;
211  NumberOfBADndofPVtx = ibooker.book1D(histname,histname,GoodPVtxBin,GoodPVtxMin,GoodPVtxMax);
212  NumberOfBADndofPVtx->setAxisTitle("Number of BADndof #PV",1);
213  NumberOfBADndofPVtx->setAxisTitle("Number of Events",2);
214 
215  histname = "GoodPVtxSumPt_" + label_;
216  GoodPVtxSumPt = ibooker.book1D(histname,histname,100,0.,500.);
217  GoodPVtxSumPt->setAxisTitle("primary vertex #Sum p_{T}^{2} [GeV^{2}/c^{2}]",1);
218  GoodPVtxSumPt->setAxisTitle("Number of events",2);
219 
220  histname = "GoodPVtxNumberOfTracks_" + label_;
221  GoodPVtxNumberOfTracks = ibooker.book1D(histname,histname,100,0.,100.);
222  GoodPVtxNumberOfTracks->setAxisTitle("primary vertex number of tracks",1);
223  GoodPVtxNumberOfTracks->setAxisTitle("Number of events",2);
224 
225  if ( doPlotsVsBXlumi_ ) {
226  // get binning from the configuration
227  edm::ParameterSet BXlumiParameters = conf_.getParameter<edm::ParameterSet>("BXlumiSetup");
228  int BXlumiBin = BXlumiParameters.getParameter<int>("BXlumiBin");
229  double BXlumiMin = BXlumiParameters.getParameter<double>("BXlumiMin");
230  double BXlumiMax = BXlumiParameters.getParameter<double>("BXlumiMax");
231 
232  ibooker.setCurrentFolder(MEFolderName+"/"+label_+"/PUmonitoring/");
233 
234  histname = "NumberOfPVtxVsBXlumi_" + label_;
235  NumberOfPVtxVsBXlumi = ibooker.bookProfile(histname,histname, BXlumiBin,BXlumiMin,BXlumiMax,0.,60.,"");
236  NumberOfPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
237  NumberOfPVtxVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
238  NumberOfPVtxVsBXlumi->setAxisTitle("Mean number of PV",2);
239 
240  histname = "NumberOfGoodPVtxVsBXlumi_" + label_;
241  NumberOfGoodPVtxVsBXlumi = ibooker.bookProfile(histname,histname, BXlumiBin,BXlumiMin,BXlumiMax,0.,60.,"");
242  NumberOfGoodPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
243  NumberOfGoodPVtxVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
244  NumberOfGoodPVtxVsBXlumi->setAxisTitle("Mean number of PV",2);
245 
246  histname = "FractionOfGoodPVtxVsBXlumi_" + label_;
247  FractionOfGoodPVtxVsBXlumi = ibooker.bookProfile(histname,histname, BXlumiBin,BXlumiMin,BXlumiMax,0.,1.5,"");
248  FractionOfGoodPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
249  FractionOfGoodPVtxVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
250  FractionOfGoodPVtxVsBXlumi->setAxisTitle("Mean number of PV",2);
251 
252  histname = "NumberOfBADndofPVtxVsBXlumi_" + label_;
253  NumberOfBADndofPVtxVsBXlumi = ibooker.bookProfile(histname,histname, BXlumiBin,BXlumiMin,BXlumiMax,0.,60.,"");
254  NumberOfBADndofPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
255  NumberOfBADndofPVtxVsBXlumi->setAxisTitle("BADndof #PV",1);
256  NumberOfBADndofPVtxVsBXlumi->setAxisTitle("Number of Events",2);
257 
258  histname = "GoodPVtxSumPtVsBXlumi_" + label_;
259  GoodPVtxSumPtVsBXlumi = ibooker.bookProfile(histname,histname, BXlumiBin,BXlumiMin,BXlumiMax,0.,500.,"");
260  GoodPVtxSumPtVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
261  GoodPVtxSumPtVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
262  GoodPVtxSumPtVsBXlumi->setAxisTitle("Mean pv #Sum p_{T}^{2} [GeV^{2}/c]^{2}",2);
263 
264  histname = "GoodPVtxNumberOfTracksVsBXlumi_" + label_;
265  GoodPVtxNumberOfTracksVsBXlumi = ibooker.bookProfile(histname,histname, BXlumiBin,BXlumiMin,BXlumiMax,0.,100.,"");
266  GoodPVtxNumberOfTracksVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
267  GoodPVtxNumberOfTracksVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
268  GoodPVtxNumberOfTracksVsBXlumi->setAxisTitle("Mean pv number of tracks",2);
269 
270  // get binning from the configuration
271  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
272  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
273 
274  double Chi2ProbMin = conf_.getParameter<double>("Chi2ProbMin");
275  double Chi2ProbMax = conf_.getParameter<double>("Chi2ProbMax");
276 
277  histname = "Chi2oNDFVsBXlumi_" + label_;
278  Chi2oNDFVsBXlumi = ibooker.bookProfile(histname,histname,BXlumiBin, BXlumiMin,BXlumiMax,Chi2NDFMin,Chi2NDFMax,"");
279  Chi2oNDFVsBXlumi -> getTH1()->SetCanExtend(TH1::kAllAxes);
280  Chi2oNDFVsBXlumi -> setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
281  Chi2oNDFVsBXlumi -> setAxisTitle("Mean #chi^{2}/ndof",2);
282 
283  histname = "Chi2ProbVsBXlumi_" + label_;
284  Chi2ProbVsBXlumi = ibooker.bookProfile(histname,histname,BXlumiBin, BXlumiMin,BXlumiMax,Chi2ProbMin,Chi2ProbMax,"");
285  Chi2ProbVsBXlumi -> getTH1()->SetCanExtend(TH1::kAllAxes);
286  Chi2ProbVsBXlumi -> setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
287  Chi2ProbVsBXlumi -> setAxisTitle("Mean #chi^{2}/prob",2);
288 
289  histname = "GoodPVtxChi2oNDFVsBXlumi_" + label_;
290  GoodPVtxChi2oNDFVsBXlumi = ibooker.bookProfile(histname,histname,BXlumiBin, BXlumiMin,BXlumiMax,Chi2NDFMin,Chi2NDFMax,"");
291  GoodPVtxChi2oNDFVsBXlumi -> getTH1()->SetCanExtend(TH1::kAllAxes);
292  GoodPVtxChi2oNDFVsBXlumi -> setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
293  GoodPVtxChi2oNDFVsBXlumi -> setAxisTitle("Mean PV #chi^{2}/ndof",2);
294 
295  histname = "GoodPVtxChi2ProbVsBXlumi_" + label_;
296  GoodPVtxChi2ProbVsBXlumi = ibooker.bookProfile(histname,histname,BXlumiBin, BXlumiMin,BXlumiMax,Chi2ProbMin,Chi2ProbMax,"");
297  GoodPVtxChi2ProbVsBXlumi -> getTH1()->SetCanExtend(TH1::kAllAxes);
298  GoodPVtxChi2ProbVsBXlumi -> setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]",1);
299  GoodPVtxChi2ProbVsBXlumi -> setAxisTitle("Mean PV #chi^{2}/prob",2);
300  }
301 
302  if ( doPlotsVsGoodPVtx_ ) {
303 
304  ibooker.setCurrentFolder(MEFolderName+"/"+label_+"/PUmonitoring/VsGoodPVtx");
305 
306  histname = "NumberOfPVtxVsGoodPVtx_" + label_;
307  NumberOfPVtxVsGoodPVtx = ibooker.bookProfile(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax,0.,60.,"");
308  NumberOfPVtxVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
309  NumberOfPVtxVsGoodPVtx->setAxisTitle("Number of Good PV",1);
310  NumberOfPVtxVsGoodPVtx->setAxisTitle("Mean number of PV",2);
311 
312  histname = "FractionOfGoodPVtxVsGoodPVtx_" + label_;
313  FractionOfGoodPVtxVsGoodPVtx = ibooker.bookProfile(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax,0.,60.,"");
314  FractionOfGoodPVtxVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
315  FractionOfGoodPVtxVsGoodPVtx->setAxisTitle("Number of Good PV",1);
316  FractionOfGoodPVtxVsGoodPVtx->setAxisTitle("Mean fraction of Good PV",2);
317 
318  histname = "FractionOfGoodPVtxVsPVtx_" + label_;
319  FractionOfGoodPVtxVsPVtx = ibooker.bookProfile(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax,0.,60.,"");
320  FractionOfGoodPVtxVsPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
321  FractionOfGoodPVtxVsPVtx->setAxisTitle("Number of Good PV",1);
322  FractionOfGoodPVtxVsPVtx->setAxisTitle("Mean number of Good PV",2);
323 
324  histname = "NumberOfBADndofPVtxVsGoodPVtx_" + label_;
325  NumberOfBADndofPVtxVsGoodPVtx = ibooker.bookProfile(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax,0.,60.,"");
326  NumberOfBADndofPVtxVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
327  NumberOfBADndofPVtxVsGoodPVtx->setAxisTitle("Number of Good PV",1);
328  NumberOfBADndofPVtxVsGoodPVtx->setAxisTitle("Mean Number of BAD PV",2);
329 
330  histname = "GoodPVtxSumPtVsGoodPVtx_" + label_;
331  GoodPVtxSumPtVsGoodPVtx = ibooker.bookProfile(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax,0.,500.,"");
332  GoodPVtxSumPtVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
333  GoodPVtxSumPtVsGoodPVtx->setAxisTitle("Number of Good PV",1);
334  GoodPVtxSumPtVsGoodPVtx->setAxisTitle("Mean pv #Sum p_{T}^{2} [GeV^{2}/c]^{2}",2);
335 
336  histname = "GoodPVtxNumberOfTracksVsGoodPVtx_" + label_;
337  GoodPVtxNumberOfTracksVsGoodPVtx = ibooker.bookProfile(histname,histname, GoodPVtxBin,GoodPVtxMin,GoodPVtxMax,0.,100.,"");
338  GoodPVtxNumberOfTracksVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
339  GoodPVtxNumberOfTracksVsGoodPVtx->setAxisTitle("Number of Good PV",1);
340  GoodPVtxNumberOfTracksVsGoodPVtx->setAxisTitle("Mean pv number of tracks",2);
341 
342  // get binning from the configuration
343  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
344  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
345 
346  double Chi2ProbMin = conf_.getParameter<double>("Chi2ProbMin");
347  double Chi2ProbMax = conf_.getParameter<double>("Chi2ProbMax");
348 
349  histname = "GoodPVtxChi2oNDFVsGoodPVtx_" + label_;
350  GoodPVtxChi2oNDFVsGoodPVtx = ibooker.bookProfile(histname,histname,GoodPVtxBin, GoodPVtxMin,GoodPVtxMax,Chi2NDFMin,Chi2NDFMax,"");
351  GoodPVtxChi2oNDFVsGoodPVtx -> getTH1()->SetCanExtend(TH1::kAllAxes);
352  GoodPVtxChi2oNDFVsGoodPVtx -> setAxisTitle("Number of Good PV",1);
353  GoodPVtxChi2oNDFVsGoodPVtx -> setAxisTitle("Mean PV #chi^{2}/ndof",2);
354 
355  histname = "GoodPVtxChi2ProbVsGoodPVtx_" + label_;
356  GoodPVtxChi2ProbVsGoodPVtx = ibooker.bookProfile(histname,histname,GoodPVtxBin, GoodPVtxMin,GoodPVtxMax,Chi2ProbMin,Chi2ProbMax,"");
357  GoodPVtxChi2ProbVsGoodPVtx -> getTH1()->SetCanExtend(TH1::kAllAxes);
358  GoodPVtxChi2ProbVsGoodPVtx -> setAxisTitle("Number of Good PV",1);
359  GoodPVtxChi2ProbVsGoodPVtx -> setAxisTitle("Mean PV #chi^{2}/prob",2);
360 
361  }
362 }
363 
364 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
365 void
367  //The following says we do not know what parameters are allowed so do no validation
368  // Please change this to state exactly what you do use, even if it is no parameters
370  desc.setUnknown();
371  descriptions.addDefault(desc);
372 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
bool doPlotsVsGoodPVtx_
Definition: VertexMonitor.h:95
edm::EDGetTokenT< reco::VertexCollection > pvToken_
Definition: VertexMonitor.h:52
MonitorElement * GoodPVtxNumberOfTracks
Definition: VertexMonitor.h:83
std::string label_
Definition: VertexMonitor.h:50
trackRef_iterator tracks_end() const
last iterator over tracks
Definition: Vertex.cc:81
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:113
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
MonitorElement * GoodPVtxChi2oNDFVsBXlumi
Definition: VertexMonitor.h:89
TH1 * getTH1() const
edm::ParameterSet conf_
Definition: VertexMonitor.h:46
std::string histname
Definition: VertexMonitor.h:97
MonitorElement * GoodPVtxSumPtVsBXlumi
Definition: VertexMonitor.h:80
MonitorElement * GoodPVtxNumberOfTracksVsBXlumi
Definition: VertexMonitor.h:84
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
virtual void initHisto(DQMStore::IBooker &ibooker)
#define nullptr
bool doPlotsVsBXlumi_
Definition: VertexMonitor.h:94
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * NumberOfBADndofPVtxVsGoodPVtx
Definition: VertexMonitor.h:72
MonitorElement * GoodPVtxNumberOfTracksVsGoodPVtx
Definition: VertexMonitor.h:85
MonitorElement * GoodPVtxChi2oNDFVsGoodPVtx
Definition: VertexMonitor.h:88
MonitorElement * FractionOfGoodPVtxVsPVtx
Definition: VertexMonitor.h:66
double getValue(const edm::Event &)
Definition: GetLumi.cc:64
int iEvent
Definition: GenABIO.cc:230
void addDefault(ParameterSetDescription const &psetDescription)
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
virtual ~VertexMonitor()
edm::InputTag primaryVertexInputTag_
Definition: VertexMonitor.h:48
MonitorElement * Chi2oNDFVsBXlumi
Definition: VertexMonitor.h:75
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
def pv(vc)
Definition: MetAnalyzer.py:7
double chi2() const
chi-squares
Definition: Vertex.h:98
MonitorElement * FractionOfGoodPVtx
Definition: VertexMonitor.h:63
MonitorElement * FractionOfGoodPVtxVsBXlumi
Definition: VertexMonitor.h:64
MonitorElement * GoodPVtxSumPtVsGoodPVtx
Definition: VertexMonitor.h:81
MonitorElement * NumberOfPVtxVsBXlumi
Definition: VertexMonitor.h:59
MonitorElement * NumberOfPVtxVsGoodPVtx
Definition: VertexMonitor.h:60
edm::EDGetTokenT< reco::VertexCollection > selpvToken_
Definition: VertexMonitor.h:53
bool isValid() const
Definition: HandleBase.h:74
MonitorElement * FractionOfGoodPVtxVsGoodPVtx
Definition: VertexMonitor.h:65
double ndof() const
Definition: Vertex.h:105
MonitorElement * NumberOfBADndofPVtx
Definition: VertexMonitor.h:70
VertexMonitor(const edm::ParameterSet &, const edm::InputTag &, const edm::InputTag &, std::string pvLabel)
MonitorElement * GoodPVtxSumPt
Definition: VertexMonitor.h:79
MonitorElement * Chi2ProbVsBXlumi
Definition: VertexMonitor.h:77
MonitorElement * GoodPVtxChi2ProbVsGoodPVtx
Definition: VertexMonitor.h:90
edm::InputTag selectedPrimaryVertexInputTag_
Definition: VertexMonitor.h:49
MonitorElement * NumberOfGoodPVtxVsBXlumi
Definition: VertexMonitor.h:62
MonitorElement * GoodPVtxChi2ProbVsBXlumi
Definition: VertexMonitor.h:91
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
Definition: Vertex.h:37
double normalizedChi2() const
chi-squared divided by n.d.o.f.
Definition: Vertex.h:107
MonitorElement * NumberOfBADndofPVtxVsBXlumi
Definition: VertexMonitor.h:71
trackRef_iterator tracks_begin() const
first iterator over tracks
Definition: Vertex.cc:76
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * NumberOfPVtx
Definition: VertexMonitor.h:58
virtual void analyze(const edm::Event &, const edm::EventSetup &)
GetLumi * lumiDetails_
Definition: VertexMonitor.h:56
size_t tracksSize() const
number of tracks
Definition: Vertex.cc:71
MonitorElement * NumberOfGoodPVtx
Definition: VertexMonitor.h:61