18 , TopFolderName_ ( pSet.getParameter<
std::
string>(
"TopFolderName") )
19 , AlignmentLabel_( pSet.getParameter<
std::
string>(
"AlignmentLabel") )
20 , ndof_ ( pSet.getParameter<
int> (
"ndof") )
21 , errorPrinted_ (
false )
80 nbvtx = iBooker.
book1D(
"vtxNbr",
"Reconstructed Vertices in Event",80,-0.5,79.5);
81 nbgvtx = iBooker.
book1D(
"goodvtxNbr",
"Reconstructed Good Vertices in Event",80,-0.5,79.5);
87 nbtksinvtx[0] = iBooker.
book1D(
"otherVtxTrksNbr",
"Reconstructed Tracks in Vertex (other Vtx)",40,-0.5,99.5);
88 ntracksVsZ[0] = iBooker.
bookProfile(
"otherVtxTrksVsZ",
"Reconstructed Tracks in Vertex (other Vtx) vs Z",80,-20.,20.,50,0,100,
"");
92 score[0] = iBooker.
book1D(
"otherVtxScore",
"sqrt(score) (other Vtx)",100,0.,400.);
93 trksWeight[0] = iBooker.
book1D(
"otherVtxTrksWeight",
"Total weight of Tracks in Vertex (other Vtx)",40,0,100.);
94 vtxchi2[0] = iBooker.
book1D(
"otherVtxChi2",
"#chi^{2} (other Vtx)",100,0.,200.);
95 vtxndf[0] = iBooker.
book1D(
"otherVtxNdf",
"ndof (other Vtx)",100,0.,200.);
96 vtxprob[0] = iBooker.
book1D(
"otherVtxProb",
"#chi^{2} probability (other Vtx)",100,0.,1.);
97 nans[0] = iBooker.
book1D(
"otherVtxNans",
"Illegal values for x,y,z,xx,xy,xz,yy,yz,zz (other Vtx)",9,0.5,9.5);
99 nbtksinvtx[1] = iBooker.
book1D(
"tagVtxTrksNbr",
"Reconstructed Tracks in Vertex (tagged Vtx)",100,-0.5,99.5);
100 ntracksVsZ[1] = iBooker.
bookProfile(
"tagVtxTrksVsZ",
"Reconstructed Tracks in Vertex (tagged Vtx) vs Z",80,-20.,20.,50,0,100,
"");
104 score[1] = iBooker.
book1D(
"tagVtxScore",
"sqrt(score) (tagged Vtx)",100,0.,400.);
105 trksWeight[1] = iBooker.
book1D(
"tagVtxTrksWeight",
"Total weight of Tracks in Vertex (tagged Vtx)",100,0,100.);
106 vtxchi2[1] = iBooker.
book1D(
"tagVtxChi2",
"#chi^{2} (tagged Vtx)",100,0.,200.);
107 vtxndf[1] = iBooker.
book1D(
"tagVtxNdf",
"ndof (tagged Vtx)",100,0.,200.);
108 vtxprob[1] = iBooker.
book1D(
"tagVtxProb",
"#chi^{2} probability (tagged Vtx)",100,0.,1.);
109 nans[1] = iBooker.
book1D(
"tagVtxNans",
"Illegal values for x,y,z,xx,xy,xz,yy,yz,zz (tagged Vtx)",9,0.5,9.5);
111 xrec[0] = iBooker.
book1D(
"otherPosX",
"Position x Coordinate (other Vtx)",100,vposx-0.1,vposx+0.1);
112 yrec[0] = iBooker.
book1D(
"otherPosY",
"Position y Coordinate (other Vtx)",100,vposy-0.1,vposy+0.1);
113 zrec[0] = iBooker.
book1D(
"otherPosZ",
"Position z Coordinate (other Vtx)",100,-20.,20.);
114 xDiff[0] = iBooker.
book1D(
"otherDiffX",
"X distance from BeamSpot (other Vtx)",100,-500,500);
115 yDiff[0] = iBooker.
book1D(
"otherDiffY",
"Y distance from BeamSpot (other Vtx)",100,-500,500);
116 xerr[0] = iBooker.
book1D(
"otherErrX",
"Uncertainty x Coordinate (other Vtx)",100,0.,100);
117 yerr[0] = iBooker.
book1D(
"otherErrY",
"Uncertainty y Coordinate (other Vtx)",100,0.,100);
118 zerr[0] = iBooker.
book1D(
"otherErrZ",
"Uncertainty z Coordinate (other Vtx)",100,0.,100);
119 xerrVsTrks[0] = iBooker.
book2D(
"otherErrVsWeightX",
"Uncertainty x Coordinate vs. track weight (other Vtx)",100,0,100.,100,0.,100);
120 yerrVsTrks[0] = iBooker.
book2D(
"otherErrVsWeightY",
"Uncertainty y Coordinate vs. track weight (other Vtx)",100,0,100.,100,0.,100);
121 zerrVsTrks[0] = iBooker.
book2D(
"otherErrVsWeightZ",
"Uncertainty z Coordinate vs. track weight (other Vtx)",100,0,100.,100,0.,100);
124 xrec[1] = iBooker.
book1D(
"tagPosX",
"Position x Coordinate (tagged Vtx)",100,vposx-0.1,vposx+0.1);
125 yrec[1] = iBooker.
book1D(
"tagPosY",
"Position y Coordinate (tagged Vtx)",100,vposy-0.1,vposy+0.1);
126 zrec[1] = iBooker.
book1D(
"tagPosZ",
"Position z Coordinate (tagged Vtx)",100,-20.,20.);
127 xDiff[1] = iBooker.
book1D(
"tagDiffX",
"X distance from BeamSpot (tagged Vtx)",100,-500, 500);
128 yDiff[1] = iBooker.
book1D(
"tagDiffY",
"Y distance from BeamSpot (tagged Vtx)",100,-500, 500);
129 xerr[1] = iBooker.
book1D(
"tagErrX",
"Uncertainty x Coordinate (tagged Vtx)",100,0.,100);
130 yerr[1] = iBooker.
book1D(
"tagErrY",
"Uncertainty y Coordinate (tagged Vtx)",100,0.,100);
131 zerr[1] = iBooker.
book1D(
"tagErrZ",
"Uncertainty z Coordinate (tagged Vtx)",100,0.,100);
132 xerrVsTrks[1] = iBooker.
book2D(
"tagErrVsWeightX",
"Uncertainty x Coordinate vs. track weight (tagged Vtx)",100,0,100.,100,0.,100);
133 yerrVsTrks[1] = iBooker.
book2D(
"tagErrVsWeightY",
"Uncertainty y Coordinate vs. track weight (tagged Vtx)",100,0,100.,100,0.,100);
134 zerrVsTrks[1] = iBooker.
book2D(
"tagErrVsWeightZ",
"Uncertainty z Coordinate vs. track weight (tagged Vtx)",100,0,100.,100,0.,100);
136 type[0] = iBooker.
book1D(
"otherType",
"Vertex type (other Vtx)",3,-0.5,2.5);
137 type[1] = iBooker.
book1D(
"tagType",
"Vertex type (tagged Vtx)",3,-0.5,2.5);
138 for (
int i=0;
i<2;++
i){
139 type[
i]->
getTH1F()->GetXaxis()->SetBinLabel(1,
"Valid, real");
140 type[
i]->getTH1F()->GetXaxis()->SetBinLabel(2,
"Valid, fake");
141 type[
i]->getTH1F()->GetXaxis()->SetBinLabel(3,
"Invalid");
149 bsX = iBooker.
book1D(
"bsX",
"BeamSpot x0", 100,-0.1,0.1);
150 bsY = iBooker.
book1D(
"bsY",
"BeamSpot y0", 100,-0.1,0.1);
151 bsZ = iBooker.
book1D(
"bsZ",
"BeamSpot z0", 100,-2.,2.);
152 bsSigmaZ = iBooker.
book1D(
"bsSigmaZ",
"BeamSpot sigmaZ", 100, 0., 10. );
153 bsDxdz = iBooker.
book1D(
"bsDxdz",
"BeamSpot dxdz", 100, -0.0003, 0.0003);
154 bsDydz = iBooker.
book1D(
"bsDydz",
"BeamSpot dydz", 100, -0.0003, 0.0003);
157 bsType = iBooker.
book1D(
"bsType",
"BeamSpot type", 4, -1.5, 2.5);
189 ntracks = iBooker.
book1D(
"ntracks",
"number of PV tracks (p_{T} > 1 GeV)", TKNoBin, TKNoMin, TKNoMax);
190 ntracks->
setAxisTitle(
"Number of PV Tracks (p_{T} > 1 GeV) per Event", 1);
191 ntracks->setAxisTitle(
"Number of Event", 2);
193 weight = iBooker.
book1D(
"weight",
"weight of PV tracks (p_{T} > 1 GeV)", 100, 0., 1.);
194 weight->setAxisTitle(
"weight of PV Tracks (p_{T} > 1 GeV) per Event", 1);
195 weight->setAxisTitle(
"Number of Event", 2);
197 sumpt = iBooker.
book1D(
"sumpt",
"#Sum p_{T} of PV tracks (p_{T} > 1 GeV)", 100,-0.5,249.5);
198 chi2ndf = iBooker.
book1D(
"chi2ndf",
"PV tracks (p_{T} > 1 GeV) #chi^{2}/ndof", 100, 0., 20. );
199 chi2prob = iBooker.
book1D(
"chi2prob",
"PV tracks (p_{T} > 1 GeV) #chi^{2} probability",100, 0., 1. );
201 dxy = iBooker.
book1D(
"dxy",
"PV tracks (p_{T} > 1 GeV) d_{xy} (#mum)", DxyBin, DxyMin, DxyMax);
202 dxy2 = iBooker.
book1D(
"dxyzoom",
"PV tracks (p_{T} > 1 GeV) d_{xy} (#mum)", DxyBin, DxyMin/5., DxyMax/5.);
203 dxyErr = iBooker.
book1D(
"dxyErr",
"PV tracks (p_{T} > 1 GeV) d_{xy} error (#mum)", 100, 0., 2000. );
204 dz = iBooker.
book1D(
"dz",
"PV tracks (p_{T} > 1 GeV) d_{z} (#mum)", DzBin, DzMin, DzMax );
205 dzErr = iBooker.
book1D(
"dzErr",
"PV tracks (p_{T} > 1 GeV) d_{z} error(#mum)", 100, 0., 10000. );
207 dxyVsPhi_pt1 = iBooker.
bookProfile(
"dxyVsPhi_pt1",
"PV tracks (p_{T} > 1 GeV) d_{xy} (#mum) VS track #phi",PhiBin, PhiMin, PhiMax, DxyBin, DxyMin, DxyMax,
"");
211 dzVsPhi_pt1 = iBooker.
bookProfile(
"dzVsPhi_pt1",
"PV tracks (p_{T} > 1 GeV) d_{z} (#mum) VS track #phi", PhiBin, PhiMin, PhiMax, DzBin, DzMin, DzMax,
"");
215 dxyVsEta_pt1 = iBooker.
bookProfile(
"dxyVsEta_pt1",
"PV tracks (p_{T} > 1 GeV) d_{xy} (#mum) VS track #eta",EtaBin, EtaMin, EtaMax, DxyBin, DxyMin, DxyMax,
"");
219 dzVsEta_pt1 = iBooker.
bookProfile(
"dzVsEta_pt1",
"PV tracks (p_{T} > 1 GeV) d_{z} (#mum) VS track #eta", EtaBin, EtaMin, EtaMax, DzBin, DzMin, DzMax,
"");
223 dxyVsPhi_pt10 = iBooker.
bookProfile(
"dxyVsPhi_pt10",
"PV tracks (p_{T} > 10 GeV) d_{xy} (#mum) VS track #phi",PhiBin, PhiMin, PhiMax, DxyBin, DxyMin, DxyMax,
"");
227 dzVsPhi_pt10 = iBooker.
bookProfile(
"dzVsPhi_pt10",
"PV tracks (p_{T} > 10 GeV) d_{z} (#mum) VS track #phi", PhiBin, PhiMin, PhiMax, DzBin, DzMin, DzMax,
"");
231 dxyVsEta_pt10 = iBooker.
bookProfile(
"dxyVsEta_pt10",
"PV tracks (p_{T} > 10 GeV) d_{xy} (#mum) VS track #eta",EtaBin, EtaMin, EtaMax, DxyBin, DxyMin, DxyMax,
"");
235 dzVsEta_pt10 = iBooker.
bookProfile(
"dzVsEta_pt10",
"PV tracks (p_{T} > 10 GeV) d_{z} (#mum) VS track #eta", EtaBin, EtaMin, EtaMax, DzBin, DzMin, DzMax,
"");
261 if (recVtxs.
isValid() ==
false || beamSpotHandle.
isValid()==
false){
263 <<
" Some products not available in the event: VertexCollection " 265 <<recVtxs.
isValid() <<
" BeamSpot " 267 <<beamSpotHandle.
isValid()<<
". Skipping plots for this event";
274 for(
const auto&
v: *recVtxs) {
275 if(
v.tracksSize() > 0) {
276 const auto& ref =
v.trackRefAt(0);
277 if(ref.isNull() || !ref.isAvailable()) {
280 <<
"Skipping vertex collection: " <<
vertexInputTag_ <<
" since likely the track collection the vertex has refs pointing to is missing (at least the first TrackBaseRef is null or not available)";
295 for (
auto const & vx : (*recVtxs) )
296 if (vx.isValid() && !vx.isFake() && vx.ndof()>=
ndof_) ++ng;
299 if (scores.
isValid() && !(*scores).empty()) {
300 auto pvScore = (*scores).get(0);
302 for (
unsigned int i=1;
i<(*scores).size(); ++
i)
307 if (!recVtxs->empty()) {
312 for(reco::VertexCollection::const_iterator
v=recVtxs->begin()+1;
313 v!=recVtxs->end(); ++
v)
351 if ( !isHighPurity )
continue;
353 float pt = (**t).pt();
354 if ( pt < 1. )
continue;
358 float eta = (**t).eta();
359 float phi = (**t).phi();
362 float chi2NDF = (**t).normalizedChi2();
363 float chi2Prob = TMath::Prob((**t).chi2(),(
int)(**t).ndof());
364 float Dxy = (**t).dxy(myVertex)*
cmToUm;
365 float Dz = (**t).dz(myVertex)*
cmToUm;
366 float DxyErr = (**t).dxyError()*
cmToUm;
367 float DzErr = (**t).dzError()*
cmToUm;
386 if ( pt < 10. )
continue;
400 if (i < 0 || i > 1)
return;
403 else type[
i]->Fill(0.);
421 float xb = beamSpot.
x0() + beamSpot.
dxdz() * (v.
position().z() - beamSpot.
z0());
422 float yb = beamSpot.
y0() + beamSpot.
dydz() * (v.
position().z() - beamSpot.
z0());
438 for (
int k = 0;
k != 3;
k++) {
439 for (
int j =
k; j != 3; j++) {
std::string AlignmentLabel_
MonitorElement * xerrVsTrks[2]
T getParameter(std::string const &) const
double z0() const
z coordinate
const unsigned int nTracks(const reco::Vertex &sv)
MonitorElement * vtxndf[2]
MonitorElement * dxyVsEta_pt1
MonitorElement * dzVsPhi_pt10
MonitorElement * dzVsPhi_pt1
void pvTracksPlots(const reco::Vertex &v)
trackRef_iterator tracks_end() const
last iterator over tracks
MonitorElement * bookProfile(Args &&...args)
void vertexPlots(const reco::Vertex &v, const reco::BeamSpot &beamSpot, int i)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double zError() const
error on z
#define DEFINE_FWK_MODULE(type)
MonitorElement * bsSigmaZ
edm::InputTag beamSpotInputTag_
bool isValid() const
Tells whether the vertex is valid.
edm::EDGetTokenT< VertexScore > scoreToken_
double covariance(int i, int j) const
(i, j)-th element of error matrix, i, j = 0, ... 2
MonitorElement * dxyVsPhi_pt10
const double EtaMax[kNumberCalorimeter]
MonitorElement * xDiff[2]
const Point & position() const
position
MonitorElement * dzVsEta_pt1
static const float cmToUm
MonitorElement * ntracksVsZ[2]
MonitorElement * zerrVsTrks[2]
double dydz() const
dydz slope
~PrimaryVertexMonitor() override
void setCurrentFolder(std::string const &fullpath)
MonitorElement * yerrVsTrks[2]
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * dxyVsEta_pt10
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * book1D(Args &&...args)
double chi2() const
chi-squares
float ChiSquaredProbability(double chiSquared, double nrDOF)
double BeamWidthX() const
beam width X
const double EtaMin[kNumberCalorimeter]
float trackWeight(const TREF &r) const
returns the weight with which a Track has contributed to the vertex-fit.
MonitorElement * vtxchi2[2]
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
edm::EDGetTokenT< reco::VertexCollection > vertexToken_
double dxdz() const
dxdz slope
MonitorElement * dzVsEta_pt10
edm::InputTag vertexInputTag_
std::string TopFolderName_
double xError() const
error on x
MonitorElement * chi2prob
MonitorElement * book2D(Args &&...args)
XYZPointD XYZPoint
point in space with cartesian internal representation
MonitorElement * nbtksinvtx[2]
double sigmaZ() const
sigma z
double BeamWidthY() const
beam width Y
void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
double y0() const
y coordinate
MonitorElement * vtxprob[2]
trackRef_iterator tracks_begin() const
first iterator over tracks
MonitorElement * bsBeamWidthY
MonitorElement * score[2]
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * yDiff[2]
double yError() const
error on y
MonitorElement * trksWeight[2]
size_t tracksSize() const
number of tracks
PrimaryVertexMonitor(const edm::ParameterSet &pSet)
MonitorElement * bsBeamWidthX
MonitorElement * dxyVsPhi_pt1
double x0() const
x coordinate