100 : m_useweight( iConfig.getParameter< bool >(
"useWeight" ) )
101 , m_doubleToken( consumes< double >( iConfig.getParameter< edm::
InputTag >(
"weightProduct" ) ) )
102 , m_vecPileupSummaryInfoToken( consumes< std::vector<
PileupSummaryInfo> >( iConfig.getParameter< edm::
InputTag >(
"pileupSummaryCollection" ) ) )
103 , m_hepMCProductToken( consumes< edm::
HepMCProduct >( iConfig.getParameter< edm::
InputTag >(
"mcTruthCollection" ) ) )
109 usesResource(
"TFileService");
112 m_hnvtx = tfserv->
make<TH1F>(
"nvtx",
"Number of pileup vertices",60,-0.5,59.5);
113 m_hnvtx->GetXaxis()->SetTitle(
"Number of Interactions");
115 m_hnvtxvsbx = tfserv->
make<TH2F>(
"nvtxvsbx",
"Number of pileup vertices vs BX",9,-4.5,4.5,60,-0.5,59.5);
117 m_hnvtxvsbx->GetYaxis()->SetTitle(
"Number of Interactions");
119 m_hlumi = tfserv->
make<TH1F>(
"lumi",
"BX luminosity*xsect",200,0.,50.);
120 m_hlumi->GetXaxis()->SetTitle(
"Average Number of Interactions");
122 m_hnvtxvslumi = tfserv->
make<TH2F>(
"nvtxvslumi",
"Npileup vs BX luminosity*xsect",200,0.,50.,60,-0.5,59.5);
123 m_hnvtxvslumi->GetXaxis()->SetTitle(
"Average Number of Interactions");
m_hnvtxvslumi->GetYaxis()->SetTitle(
"Number of Interactions");
126 m_hnvtxweight = tfserv->
make<TH1F>(
"nvtxweight",
"Number of pileup vertices (1-w)",60,-0.5,59.5);
127 m_hnvtxweight->GetXaxis()->SetTitle(
"Number of Interactions");
128 m_hnvtxweightprof = tfserv->
make<TProfile>(
"nvtxweightprof",
"Mean (1-w) vs Number of pileup interactions",60,-0.5,59.5);
132 m_hmainvtxx = tfserv->
make<TH1F>(
"mainvtxx",
"Main vertex x position",200,-.5,.5);
134 m_hmainvtxy = tfserv->
make<TH1F>(
"mainvtxy",
"Main vertex y position",200,-.5,.5);
136 m_hmainvtxz = tfserv->
make<TH1F>(
"mainvtxz",
"Main vertex z position",600,-30.,30.);
138 m_hpileupvtxz = tfserv->
make<TH1F>(
"pileupvtxz",
"PileUp vertices z position",600,-30.,30.);
168 weight = *weightprod;
182 std::vector<PileupSummaryInfo>::const_iterator pileupinfo;
184 for(pileupinfo = pileupinfos->begin(); pileupinfo != pileupinfos->end() ; ++pileupinfo) {
185 m_hnvtxvsbx->Fill(pileupinfo->getBunchCrossing(),pileupinfo->getPU_NumInteractions(),
weight);
189 for(pileupinfo = pileupinfos->begin(); pileupinfo != pileupinfos->end() ; ++pileupinfo) {
190 if(pileupinfo->getBunchCrossing()==0)
break;
195 if(pileupinfo->getBunchCrossing()!=0) {
196 edm::LogError(
"NoInTimePileUpInfo") <<
"Cannot find the in-time pileup info " << pileupinfo->getBunchCrossing();
202 m_hnvtxvslumi->Fill(pileupinfo->getTrueNumInteractions(),pileupinfo->getPU_NumInteractions(),
weight);
209 const std::vector<float>& zpositions = pileupinfo->getPU_zpositions();
211 for(std::vector<float>::const_iterator zpos = zpositions.begin() ; zpos != zpositions.end() ; ++zpos) {
225 const HepMC::GenEvent* Evt = EvtHandle->GetEvent();
229 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
MCVerticesAnalyzer(const edm::ParameterSet &)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
edm::EDGetTokenT< edm::HepMCProduct > m_hepMCProductToken