104 : m_useweight( iConfig.getParameter< bool >(
"useWeight" ) )
105 , m_doubleToken( consumes< double >( iConfig.getParameter< edm::InputTag >(
"weightProduct" ) ) )
106 , m_vecPileupSummaryInfoToken( consumes< std::vector<
PileupSummaryInfo> >( iConfig.getParameter< edm::InputTag >(
"pileupSummaryCollection" ) ) )
107 , m_hepMCProductToken( consumes< edm::
HepMCProduct >( iConfig.getParameter< edm::InputTag >(
"mcTruthCollection" ) ) )
115 m_hnvtx = tfserv->
make<TH1F>(
"nvtx",
"Number of pileup vertices",60,-0.5,59.5);
116 m_hnvtx->GetXaxis()->SetTitle(
"Number of Interactions");
118 m_hnvtxvsbx = tfserv->
make<TH2F>(
"nvtxvsbx",
"Number of pileup vertices vs BX",9,-4.5,4.5,60,-0.5,59.5);
120 m_hnvtxvsbx->GetYaxis()->SetTitle(
"Number of Interactions");
122 m_hlumi = tfserv->
make<TH1F>(
"lumi",
"BX luminosity*xsect",200,0.,50.);
123 m_hlumi->GetXaxis()->SetTitle(
"Average Number of Interactions");
125 m_hnvtxvslumi = tfserv->
make<TH2F>(
"nvtxvslumi",
"Npileup vs BX luminosity*xsect",200,0.,50.,60,-0.5,59.5);
126 m_hnvtxvslumi->GetXaxis()->SetTitle(
"Average Number of Interactions");
m_hnvtxvslumi->GetYaxis()->SetTitle(
"Number of Interactions");
129 m_hnvtxweight = tfserv->
make<TH1F>(
"nvtxweight",
"Number of pileup vertices (1-w)",60,-0.5,59.5);
130 m_hnvtxweight->GetXaxis()->SetTitle(
"Number of Interactions");
131 m_hnvtxweightprof = tfserv->
make<TProfile>(
"nvtxweightprof",
"Mean (1-w) vs Number of pileup interactions",60,-0.5,59.5);
135 m_hmainvtxx = tfserv->
make<TH1F>(
"mainvtxx",
"Main vertex x position",200,-.5,.5);
137 m_hmainvtxy = tfserv->
make<TH1F>(
"mainvtxy",
"Main vertex y position",200,-.5,.5);
139 m_hmainvtxz = tfserv->
make<TH1F>(
"mainvtxz",
"Main vertex z position",600,-30.,30.);
141 m_hpileupvtxz = tfserv->
make<TH1F>(
"pileupvtxz",
"PileUp vertices z position",600,-30.,30.);
171 weight = *weightprod;
185 std::vector<PileupSummaryInfo>::const_iterator pileupinfo;
187 for(pileupinfo = pileupinfos->begin(); pileupinfo != pileupinfos->end() ; ++pileupinfo) {
188 m_hnvtxvsbx->Fill(pileupinfo->getBunchCrossing(),pileupinfo->getPU_NumInteractions(),
weight);
192 for(pileupinfo = pileupinfos->begin(); pileupinfo != pileupinfos->end() ; ++pileupinfo) {
193 if(pileupinfo->getBunchCrossing()==0)
break;
198 if(pileupinfo->getBunchCrossing()!=0) {
199 edm::LogError(
"NoInTimePileUpInfo") <<
"Cannot find the in-time pileup info " << pileupinfo->getBunchCrossing();
205 m_hnvtxvslumi->Fill(pileupinfo->getTrueNumInteractions(),pileupinfo->getPU_NumInteractions(),
weight);
212 const std::vector<float>& zpositions = pileupinfo->getPU_zpositions();
214 for(std::vector<float>::const_iterator zpos = zpositions.begin() ; zpos != zpositions.end() ; ++zpos) {
228 const HepMC::GenEvent* Evt = EvtHandle->GetEvent();
232 if(Evt->vertices_begin() != Evt->vertices_end()) {
edm::EDGetTokenT< double > m_doubleToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
TProfile * m_hnvtxweightprof
T * make(const Args &...args) const
make new ROOT object
edm::EDGetTokenT< std::vector< PileupSummaryInfo > > m_vecPileupSummaryInfoToken
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
MCVerticesAnalyzer(const edm::ParameterSet &)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
edm::EDGetTokenT< edm::HepMCProduct > m_hepMCProductToken
virtual void endRun(const edm::Run &, const edm::EventSetup &)