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 
13 #include "TMath.h"
14 
16  const edm::InputTag& primaryVertexInputTag,
17  const edm::InputTag& selectedPrimaryVertexInputTag,
18  std::string pvLabel)
19  : conf_(iConfig),
20  primaryVertexInputTag_(primaryVertexInputTag),
21  selectedPrimaryVertexInputTag_(selectedPrimaryVertexInputTag),
22  label_(pvLabel),
23  NumberOfPVtx(nullptr),
24  NumberOfPVtxVsBXlumi(nullptr),
25  NumberOfPVtxVsGoodPVtx(nullptr),
26  NumberOfGoodPVtx(nullptr),
27  NumberOfGoodPVtxVsBXlumi(nullptr),
28  FractionOfGoodPVtx(nullptr),
29  FractionOfGoodPVtxVsBXlumi(nullptr),
30  FractionOfGoodPVtxVsGoodPVtx(nullptr),
31  FractionOfGoodPVtxVsPVtx(nullptr),
32  NumberOfBADndofPVtx(nullptr),
33  NumberOfBADndofPVtxVsBXlumi(nullptr),
34  NumberOfBADndofPVtxVsGoodPVtx(nullptr),
35  GoodPVtxSumPt(nullptr),
36  GoodPVtxSumPtVsBXlumi(nullptr),
37  GoodPVtxSumPtVsGoodPVtx(nullptr),
38  GoodPVtxNumberOfTracks(nullptr),
39  GoodPVtxNumberOfTracksVsBXlumi(nullptr),
40  GoodPVtxNumberOfTracksVsGoodPVtx(nullptr),
41  GoodPVtxNumberOfTracksVsGoodPVtxNdof(nullptr),
42  GoodPVtxChi2oNDFVsGoodPVtx(nullptr),
43  GoodPVtxChi2oNDFVsBXlumi(nullptr),
44  GoodPVtxChi2ProbVsGoodPVtx(nullptr),
45  GoodPVtxChi2ProbVsBXlumi(nullptr),
46  doAllPlots_(conf_.getParameter<bool>("doAllPlots")),
47  doPlotsVsBXlumi_(conf_.getParameter<bool>("doPlotsVsBXlumi")),
48  doPlotsVsGoodPVtx_(conf_.getParameter<bool>("doPlotsVsGoodPVtx"))
49 
50 {
51  //now do what ever initialization is needed
52  if (doPlotsVsBXlumi_)
53  lumiDetails_ = new GetLumi(iConfig.getParameter<edm::ParameterSet>("BXlumiSetup"));
54 }
55 
57  const edm::InputTag& primaryVertexInputTag,
58  const edm::InputTag& selectedPrimaryVertexInputTag,
59  std::string pvLabel,
61  : VertexMonitor(iConfig, primaryVertexInputTag, selectedPrimaryVertexInputTag, pvLabel) {
62  if (doPlotsVsBXlumi_)
63  lumiDetails_ = new GetLumi(iConfig.getParameter<edm::ParameterSet>("BXlumiSetup"), iC);
64 
67 }
68 
70 
71 //
72 // member functions
73 //
74 
75 // -- Analyse
76 // ------------ method called for each event ------------
77 // ------------------------------------------------------- //
79  double bxlumi = 0.;
80  if (doPlotsVsBXlumi_)
81  bxlumi = lumiDetails_->getValue(iEvent);
82  // std::cout << "bxlumi : " << bxlumi << std::endl;
83 
84  size_t totalNumPV = 0;
85  size_t totalNumBADndofPV = 0;
87  if (pvHandle.isValid()) {
88  totalNumPV = pvHandle->size();
89  // std::cout << "totalNumPV : " << totalNumPV << std::endl;
90  for (reco::VertexCollection::const_iterator pv = pvHandle->begin(); pv != pvHandle->end(); ++pv) {
91  //--- count pv w/ ndof < 4
92  if (pv->ndof() < 4.)
93  totalNumBADndofPV++;
94  }
95  } else
96  return;
97  NumberOfPVtx->Fill(totalNumPV);
98  NumberOfBADndofPVtx->Fill(totalNumBADndofPV);
99  if (doPlotsVsBXlumi_) {
100  NumberOfPVtxVsBXlumi->Fill(bxlumi, totalNumPV);
101  NumberOfBADndofPVtxVsBXlumi->Fill(bxlumi, totalNumBADndofPV);
102  }
103 
104  size_t totalNumGoodPV = 0;
105  edm::Handle<reco::VertexCollection> selpvHandle = iEvent.getHandle(selpvToken_);
106  if (selpvHandle.isValid())
107  totalNumGoodPV = selpvHandle->size();
108  else
109  return;
110  // std::cout << "totalNumGoodPV: " << totalNumGoodPV << std::endl;
111  if (doPlotsVsGoodPVtx_) {
112  NumberOfPVtxVsGoodPVtx->Fill(totalNumGoodPV, totalNumPV);
113  NumberOfBADndofPVtxVsGoodPVtx->Fill(totalNumGoodPV, totalNumBADndofPV);
114  }
115 
116  double fracGoodPV = double(totalNumGoodPV) / double(totalNumPV);
117  // std::cout << "fracGoodPV: " << fracGoodPV << std::endl;
118 
119  NumberOfGoodPVtx->Fill(totalNumGoodPV);
120  FractionOfGoodPVtx->Fill(fracGoodPV);
121  if (doPlotsVsBXlumi_) {
122  NumberOfGoodPVtxVsBXlumi->Fill(bxlumi, totalNumGoodPV);
123  FractionOfGoodPVtxVsBXlumi->Fill(bxlumi, fracGoodPV);
124  }
125  if (doPlotsVsGoodPVtx_) {
126  FractionOfGoodPVtxVsGoodPVtx->Fill(totalNumGoodPV, fracGoodPV);
127  FractionOfGoodPVtxVsPVtx->Fill(totalNumPV, fracGoodPV);
128  }
129 
130  if (!selpvHandle->empty()) {
131  double sumpt = 0;
132  size_t ntracks = 0;
133  double chi2ndf = 0.;
134  double chi2prob = 0.;
135 
136  if (!selpvHandle->at(0).isFake()) {
137  reco::Vertex pv = selpvHandle->at(0);
138 
139  ntracks = pv.tracksSize();
140  chi2ndf = pv.normalizedChi2();
141  chi2prob = TMath::Prob(pv.chi2(), (int)pv.ndof());
142 
143  for (reco::Vertex::trackRef_iterator itrk = pv.tracks_begin(); itrk != pv.tracks_end(); ++itrk) {
144  double pt = (**itrk).pt();
145  sumpt += pt * pt;
146  }
147  GoodPVtxSumPt->Fill(sumpt);
149 
150  if (doPlotsVsBXlumi_) {
151  GoodPVtxSumPtVsBXlumi->Fill(bxlumi, sumpt);
153  GoodPVtxChi2oNDFVsBXlumi->Fill(bxlumi, chi2ndf);
154  GoodPVtxChi2ProbVsBXlumi->Fill(bxlumi, chi2prob);
155  }
156  if (doPlotsVsGoodPVtx_) {
157  GoodPVtxSumPtVsGoodPVtx->Fill(totalNumGoodPV, sumpt);
159  GoodPVtxChi2oNDFVsGoodPVtx->Fill(totalNumGoodPV, chi2ndf);
160  GoodPVtxChi2ProbVsGoodPVtx->Fill(totalNumGoodPV, chi2prob);
161  }
162  }
163  }
164 }
165 
166 // ------------ method called once each job just before starting event loop ------------
168  // parameters from the configuration
169  std::string MEFolderName = conf_.getParameter<std::string>("PVFolderName");
170 
171  // get binning from the configuration
172  edm::ParameterSet ParametersGoodPVtx = conf_.getParameter<edm::ParameterSet>("GoodPVtx");
173  int GoodPVtxBin = ParametersGoodPVtx.getParameter<int>("GoodPVtxBin");
174  double GoodPVtxMin = ParametersGoodPVtx.getParameter<double>("GoodPVtxMin");
175  double GoodPVtxMax = ParametersGoodPVtx.getParameter<double>("GoodPVtxMax");
176 
177  edm::ParameterSet ParametersNTrkPVtx = conf_.getParameter<edm::ParameterSet>("NTrkPVtx");
178  int NTrkPVtxBin = ParametersNTrkPVtx.getParameter<int>("NTrkPVtxBin");
179  double NTrkPVtxMin = ParametersNTrkPVtx.getParameter<double>("NTrkPVtxMin");
180  double NTrkPVtxMax = ParametersNTrkPVtx.getParameter<double>("NTrkPVtxMax");
181 
182  edm::ParameterSet ParametersSumPtPVtx = conf_.getParameter<edm::ParameterSet>("SumPtPVtx");
183  int SumPtPVtxBin = ParametersSumPtPVtx.getParameter<int>("SumPtPVtxBin");
184  double SumPtPVtxMin = ParametersSumPtPVtx.getParameter<double>("SumPtPVtxMin");
185  double SumPtPVtxMax = ParametersSumPtPVtx.getParameter<double>("SumPtPVtxMax");
186 
187  // book histo
188  // ----------------------//
189  ibooker.setCurrentFolder(MEFolderName + "/" + label_);
190 
191  histname = "NumberOfPVtx_" + label_;
193  NumberOfPVtx->setAxisTitle("Number of PV", 1);
194  NumberOfPVtx->setAxisTitle("Number of Events", 2);
195 
196  histname = "NumberOfGoodPVtx_" + label_;
198  NumberOfGoodPVtx->setAxisTitle("Number of Good PV", 1);
199  NumberOfGoodPVtx->setAxisTitle("Number of Events", 2);
200 
201  histname = "FractionOfGoodPVtx_" + label_;
202  FractionOfGoodPVtx = ibooker.book1D(histname, histname, 100, 0., 1.);
203  FractionOfGoodPVtx->setAxisTitle("fraction of Good PV", 1);
204  FractionOfGoodPVtx->setAxisTitle("Number of Events", 2);
205 
206  histname = "NumberOfBADndofPVtx_" + label_;
208  NumberOfBADndofPVtx->setAxisTitle("Number of BADndof #PV", 1);
209  NumberOfBADndofPVtx->setAxisTitle("Number of Events", 2);
210 
211  histname = "GoodPVtxSumPt_" + label_;
213  GoodPVtxSumPt->setAxisTitle("primary vertex #Sum p_{T}^{2} [GeV^{2}/c^{2}]", 1);
214  GoodPVtxSumPt->setAxisTitle("Number of events", 2);
215 
216  histname = "GoodPVtxNumberOfTracks_" + label_;
218  GoodPVtxNumberOfTracks->setAxisTitle("primary vertex number of tracks", 1);
219  GoodPVtxNumberOfTracks->setAxisTitle("Number of events", 2);
220 
221  if (doPlotsVsBXlumi_) {
222  // get binning from the configuration
223  edm::ParameterSet BXlumiParameters = conf_.getParameter<edm::ParameterSet>("BXlumiSetup");
224  int BXlumiBin = BXlumiParameters.getParameter<int>("BXlumiBin");
225  double BXlumiMin = BXlumiParameters.getParameter<double>("BXlumiMin");
226  double BXlumiMax = BXlumiParameters.getParameter<double>("BXlumiMax");
227 
228  ibooker.setCurrentFolder(MEFolderName + "/" + label_ + "/PUmonitoring/");
229 
230  histname = "NumberOfPVtxVsBXlumi_" + label_;
233  NumberOfPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
234  NumberOfPVtxVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
235  NumberOfPVtxVsBXlumi->setAxisTitle("Mean number of PV", 2);
236 
237  histname = "NumberOfGoodPVtxVsBXlumi_" + label_;
240  NumberOfGoodPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
241  NumberOfGoodPVtxVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
242  NumberOfGoodPVtxVsBXlumi->setAxisTitle("Mean number of PV", 2);
243 
244  histname = "FractionOfGoodPVtxVsBXlumi_" + label_;
246  FractionOfGoodPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
247  FractionOfGoodPVtxVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
248  FractionOfGoodPVtxVsBXlumi->setAxisTitle("Mean number of PV", 2);
249 
250  histname = "NumberOfBADndofPVtxVsBXlumi_" + label_;
253  NumberOfBADndofPVtxVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
254  NumberOfBADndofPVtxVsBXlumi->setAxisTitle("BADndof #PV", 1);
255  NumberOfBADndofPVtxVsBXlumi->setAxisTitle("Number of Events", 2);
256 
257  histname = "GoodPVtxSumPtVsBXlumi_" + label_;
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_;
267  GoodPVtxNumberOfTracksVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
268  GoodPVtxNumberOfTracksVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
269  GoodPVtxNumberOfTracksVsBXlumi->setAxisTitle("Mean pv number of tracks", 2);
270 
271  // get binning from the configuration
272  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
273  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
274 
275  double Chi2ProbMin = conf_.getParameter<double>("Chi2ProbMin");
276  double Chi2ProbMax = conf_.getParameter<double>("Chi2ProbMax");
277 
278  histname = "Chi2oNDFVsBXlumi_" + label_;
281  Chi2oNDFVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
282  Chi2oNDFVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
283  Chi2oNDFVsBXlumi->setAxisTitle("Mean #chi^{2}/ndof", 2);
284 
285  histname = "Chi2ProbVsBXlumi_" + label_;
288  Chi2ProbVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
289  Chi2ProbVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
290  Chi2ProbVsBXlumi->setAxisTitle("Mean #chi^{2}/prob", 2);
291 
292  histname = "GoodPVtxChi2oNDFVsBXlumi_" + label_;
295  GoodPVtxChi2oNDFVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
296  GoodPVtxChi2oNDFVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
297  GoodPVtxChi2oNDFVsBXlumi->setAxisTitle("Mean PV #chi^{2}/ndof", 2);
298 
299  histname = "GoodPVtxChi2ProbVsBXlumi_" + label_;
302  GoodPVtxChi2ProbVsBXlumi->getTH1()->SetCanExtend(TH1::kAllAxes);
303  GoodPVtxChi2ProbVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
304  GoodPVtxChi2ProbVsBXlumi->setAxisTitle("Mean PV #chi^{2}/prob", 2);
305  }
306 
307  if (doPlotsVsGoodPVtx_) {
308  ibooker.setCurrentFolder(MEFolderName + "/" + label_ + "/PUmonitoring/VsGoodPVtx");
309 
310  histname = "NumberOfPVtxVsGoodPVtx_" + label_;
313  NumberOfPVtxVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
314  NumberOfPVtxVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
315  NumberOfPVtxVsGoodPVtx->setAxisTitle("Mean number of PV", 2);
316 
317  histname = "FractionOfGoodPVtxVsGoodPVtx_" + label_;
320  FractionOfGoodPVtxVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
321  FractionOfGoodPVtxVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
322  FractionOfGoodPVtxVsGoodPVtx->setAxisTitle("Mean fraction of Good PV", 2);
323 
324  histname = "FractionOfGoodPVtxVsPVtx_" + label_;
327  FractionOfGoodPVtxVsPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
328  FractionOfGoodPVtxVsPVtx->setAxisTitle("Number of Good PV", 1);
329  FractionOfGoodPVtxVsPVtx->setAxisTitle("Mean number of Good PV", 2);
330 
331  histname = "NumberOfBADndofPVtxVsGoodPVtx_" + label_;
334  NumberOfBADndofPVtxVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
335  NumberOfBADndofPVtxVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
336  NumberOfBADndofPVtxVsGoodPVtx->setAxisTitle("Mean Number of BAD PV", 2);
337 
338  histname = "GoodPVtxSumPtVsGoodPVtx_" + label_;
341  GoodPVtxSumPtVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
342  GoodPVtxSumPtVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
343  GoodPVtxSumPtVsGoodPVtx->setAxisTitle("Mean pv #Sum p_{T}^{2} [GeV^{2}/c]^{2}", 2);
344 
345  histname = "GoodPVtxNumberOfTracksVsGoodPVtx_" + label_;
348  GoodPVtxNumberOfTracksVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
349  GoodPVtxNumberOfTracksVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
350  GoodPVtxNumberOfTracksVsGoodPVtx->setAxisTitle("Mean pv number of tracks", 2);
351 
352  // get binning from the configuration
353  double Chi2NDFMin = conf_.getParameter<double>("Chi2NDFMin");
354  double Chi2NDFMax = conf_.getParameter<double>("Chi2NDFMax");
355 
356  double Chi2ProbMin = conf_.getParameter<double>("Chi2ProbMin");
357  double Chi2ProbMax = conf_.getParameter<double>("Chi2ProbMax");
358 
359  histname = "GoodPVtxChi2oNDFVsGoodPVtx_" + label_;
362  GoodPVtxChi2oNDFVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
363  GoodPVtxChi2oNDFVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
364  GoodPVtxChi2oNDFVsGoodPVtx->setAxisTitle("Mean PV #chi^{2}/ndof", 2);
365 
366  histname = "GoodPVtxChi2ProbVsGoodPVtx_" + label_;
369  GoodPVtxChi2ProbVsGoodPVtx->getTH1()->SetCanExtend(TH1::kAllAxes);
370  GoodPVtxChi2ProbVsGoodPVtx->setAxisTitle("Number of Good PV", 1);
371  GoodPVtxChi2ProbVsGoodPVtx->setAxisTitle("Mean PV #chi^{2}/prob", 2);
372  }
373 }
374 
375 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
377  //The following says we do not know what parameters are allowed so do no validation
378  // Please change this to state exactly what you do use, even if it is no parameters
380  desc.setUnknown();
381  descriptions.addDefault(desc);
382 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
bool doPlotsVsGoodPVtx_
Definition: VertexMonitor.h:94
edm::EDGetTokenT< reco::VertexCollection > pvToken_
Definition: VertexMonitor.h:52
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MonitorElement * GoodPVtxNumberOfTracks
Definition: VertexMonitor.h:82
std::string label_
Definition: VertexMonitor.h:50
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * GoodPVtxChi2oNDFVsBXlumi
Definition: VertexMonitor.h:88
edm::ParameterSet conf_
Definition: VertexMonitor.h:46
std::string histname
Definition: VertexMonitor.h:96
MonitorElement * GoodPVtxSumPtVsBXlumi
Definition: VertexMonitor.h:79
MonitorElement * GoodPVtxNumberOfTracksVsBXlumi
Definition: VertexMonitor.h:83
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
virtual void initHisto(DQMStore::IBooker &ibooker)
bool doPlotsVsBXlumi_
Definition: VertexMonitor.h:93
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * NumberOfBADndofPVtxVsGoodPVtx
Definition: VertexMonitor.h:71
MonitorElement * GoodPVtxNumberOfTracksVsGoodPVtx
Definition: VertexMonitor.h:84
MonitorElement * GoodPVtxChi2oNDFVsGoodPVtx
Definition: VertexMonitor.h:87
void Fill(long long x)
MonitorElement * FractionOfGoodPVtxVsPVtx
Definition: VertexMonitor.h:65
double getValue(const edm::Event &)
Definition: GetLumi.cc:48
int iEvent
Definition: GenABIO.cc:224
void addDefault(ParameterSetDescription const &psetDescription)
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
virtual ~VertexMonitor()
edm::InputTag primaryVertexInputTag_
Definition: VertexMonitor.h:48
MonitorElement * Chi2oNDFVsBXlumi
Definition: VertexMonitor.h:74
def pv(vc)
Definition: MetAnalyzer.py:7
MonitorElement * FractionOfGoodPVtx
Definition: VertexMonitor.h:62
MonitorElement * FractionOfGoodPVtxVsBXlumi
Definition: VertexMonitor.h:63
MonitorElement * GoodPVtxSumPtVsGoodPVtx
Definition: VertexMonitor.h:80
MonitorElement * NumberOfPVtxVsBXlumi
Definition: VertexMonitor.h:58
MonitorElement * NumberOfPVtxVsGoodPVtx
Definition: VertexMonitor.h:59
edm::EDGetTokenT< reco::VertexCollection > selpvToken_
Definition: VertexMonitor.h:53
MonitorElement * FractionOfGoodPVtxVsGoodPVtx
Definition: VertexMonitor.h:64
MonitorElement * NumberOfBADndofPVtx
Definition: VertexMonitor.h:69
VertexMonitor(const edm::ParameterSet &, const edm::InputTag &, const edm::InputTag &, std::string pvLabel)
MonitorElement * GoodPVtxSumPt
Definition: VertexMonitor.h:78
MonitorElement * Chi2ProbVsBXlumi
Definition: VertexMonitor.h:76
MonitorElement * GoodPVtxChi2ProbVsGoodPVtx
Definition: VertexMonitor.h:89
bool isValid() const
Definition: HandleBase.h:70
virtual TH1 * getTH1() const
edm::InputTag selectedPrimaryVertexInputTag_
Definition: VertexMonitor.h:49
MonitorElement * NumberOfGoodPVtxVsBXlumi
Definition: VertexMonitor.h:61
MonitorElement * GoodPVtxChi2ProbVsBXlumi
Definition: VertexMonitor.h:90
MonitorElement * NumberOfBADndofPVtxVsBXlumi
Definition: VertexMonitor.h:70
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * NumberOfPVtx
Definition: VertexMonitor.h:57
virtual void analyze(const edm::Event &, const edm::EventSetup &)
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
Definition: Vertex.h:38
GetLumi * lumiDetails_
Definition: VertexMonitor.h:55
MonitorElement * NumberOfGoodPVtx
Definition: VertexMonitor.h:60
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)