113 m_pileupcollection(iConfig.getParameter<edm::InputTag>(
"pileupSummaryCollection")),
114 m_mctruthcollection(iConfig.getParameter<edm::InputTag>(
"mcTruthCollection")),
115 m_pvcollection(iConfig.getParameter<edm::InputTag>(
"pvCollection")),
116 m_useweight(iConfig.getParameter<bool>(
"useWeight")),
117 m_weight(iConfig.getParameter<edm::InputTag>(
"weightProduct")),
118 m_useVisibleVertices(iConfig.getParameter<bool>(
"useVisibleVertices")),
127 m_hrecovsmcnvtx2d = tfserv->
make<TH2F>(
"recovsmcnvtx2d",
"Number of reco vertices vs pileup interactions",60,-0.5,59.5,60,-0.5,59.5);
129 m_hrecovsmcnvtxprof = tfserv->
make<TProfile>(
"recovsmcnvtxprof",
"Mean number of reco vs pileup vertices",60,-0.5,59.5);
132 m_hrecovsmclumi2d = tfserv->
make<TH2F>(
"recovsmclumi2d",
"Number of reco vertices vs ave pileup interactions",200,0.,50.,60,-0.5,59.5);
134 m_hrecovsmclumiprof = tfserv->
make<TProfile>(
"recovsmclumiprof",
"Mean number of reco vs ave pileup vertices",200,0.,50.);
147 m_hdeltazfirst = tfserv->
make<TH1F>(
"deltazfirst",
"Reco-MC vertex z position (first vertex)",
153 m_hdeltazclose = tfserv->
make<TH1F>(
"deltazclose",
"Reco-MC vertex z position (closest vertex)",
159 m_hclosestvtx = tfserv->
make<TH1F>(
"closestvtx",
"Closest reco vtx ID",30,-0.5,29.5);
162 m_hdeltazfirstvsnpu = tfserv->
make<TH2F>(
"deltazfirstvsnpu",
"Reco-MC vertex z position (first vertex) vs Npileup",30,-0.5,29.5,
168 m_hdeltazclosevsnpu = tfserv->
make<TH2F>(
"deltazclosevsnpu",
"Reco-MC vertex z position (closest vertex) v Npileup",30,-0.5,29.5,
174 m_hclosestvtxvsnpu = tfserv->
make<TH2F>(
"closestvtxvsnpu",
"Closest reco vtx ID vs Npileup",30,-0.5,29.5,30,-0.5,29.5);
214 std::vector<PileupSummaryInfo>::const_iterator pileupinfo;
216 for(pileupinfo = pileupinfos->begin(); pileupinfo != pileupinfos->end() ; ++pileupinfo) {
218 if(pileupinfo->getBunchCrossing()==0)
break;
230 if(pileupinfo->getBunchCrossing()!=0) {
232 edm::LogError(
"NoInTimePileUpInfo") <<
"Cannot find the in-time pileup info " << pileupinfo->getBunchCrossing();
237 int npileup = pileupinfo->getPU_NumInteractions();
256 const HepMC::GenEvent* Evt = EvtHandle->GetEvent();
260 if(pvcoll->size() !=0) {
261 if(!(*pvcoll)[0].isFake()) {
263 if(Evt->vertices_begin() != Evt->vertices_end()) {
272 double minabsdist = -1.;
273 double mindist = -999.;
276 for(
unsigned int ivtx = 0 ; ivtx < pvcoll->size() ; ++ivtx) {
278 if(closestvtx < 0 || minabsdist >
std::abs((*pvcoll)[ivtx].
z()-(*Evt->vertices_begin())->point3d().z()/10.)) {
279 mindist = (*pvcoll)[ivtx].z()-(*Evt->vertices_begin())->point3d().z()/10.;
285 if(closestvtx >= 0) {
edm::InputTag m_pileupcollection
TProfile * m_hrecovsmclumiweightedprof
T getUntrackedParameter(std::string const &, T const &) const
TProfile * m_hrecovsmcnvtxprof
TH2F * m_hdeltazclosevsnpu
#define DEFINE_FWK_MODULE(type)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
TH2F * m_hdeltazfirstvsnpu
TH2F * m_hclosestvtxvsnpu
edm::InputTag m_mctruthcollection
TProfile * m_hrecovsmcnvtxweightedprof
const bool m_useVisibleVertices
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MCvsRecoVerticesAnalyzer(const edm::ParameterSet &)
~MCvsRecoVerticesAnalyzer()
T * make() const
make new ROOT object
const edm::ParameterSet m_histoParameters
edm::InputTag m_pvcollection
virtual void endRun(const edm::Run &, const edm::EventSetup &)
TProfile * m_hrecovsmclumiprof