CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
MCvsRecoVerticesAnalyzer Class Reference

#include <TrackingPFG/PileUp/src/MCvsRecoVerticesAnalyzer.cc>

Inheritance diagram for MCvsRecoVerticesAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 MCvsRecoVerticesAnalyzer (const edm::ParameterSet &)
 
 ~MCvsRecoVerticesAnalyzer ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndex indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
virtual void beginJob ()
 
virtual void beginRun (const edm::Run &, const edm::EventSetup &)
 
virtual void endJob ()
 
virtual void endRun (const edm::Run &, const edm::EventSetup &)
 

Private Attributes

TH1F * m_hclosestvtx
 
TH2F * m_hclosestvtxvsnpu
 
TH1F * m_hdeltazclose
 
TH2F * m_hdeltazclosevsnpu
 
TH1F * m_hdeltazfirst
 
TH2F * m_hdeltazfirstvsnpu
 
const edm::ParameterSet m_histoParameters
 
TH2F * m_hrecovsmclumi2d
 
TProfile * m_hrecovsmclumiprof
 
TProfile * m_hrecovsmclumiweightedprof
 
TH2F * m_hrecovsmcnvtx2d
 
TProfile * m_hrecovsmcnvtxprof
 
TProfile * m_hrecovsmcnvtxweightedprof
 
edm::InputTag m_mctruthcollection
 
edm::InputTag m_pileupcollection
 
edm::InputTag m_pvcollection
 
const bool m_useVisibleVertices
 
const bool m_useweight
 
edm::InputTag m_weight
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 60 of file MCvsRecoVerticesAnalyzer.cc.

Constructor & Destructor Documentation

MCvsRecoVerticesAnalyzer::MCvsRecoVerticesAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 112 of file MCvsRecoVerticesAnalyzer.cc.

References edm::ParameterSet::getUntrackedParameter(), m_hclosestvtx, m_hclosestvtxvsnpu, m_hdeltazclose, m_hdeltazclosevsnpu, m_hdeltazfirst, m_hdeltazfirstvsnpu, m_histoParameters, m_hrecovsmclumi2d, m_hrecovsmclumiprof, m_hrecovsmclumiweightedprof, m_hrecovsmcnvtx2d, m_hrecovsmcnvtxprof, m_hrecovsmcnvtxweightedprof, m_useVisibleVertices, m_useweight, and TFileDirectory::make().

112  :
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")),
120 {
121  //now do what ever initialization is needed
122 
123  if(m_useVisibleVertices) edm::LogInfo("UseVisibleVertices") << "Only visible vertices will be used to compute Npileup";
124 
126 
127  m_hrecovsmcnvtx2d = tfserv->make<TH2F>("recovsmcnvtx2d","Number of reco vertices vs pileup interactions",60,-0.5,59.5,60,-0.5,59.5);
128  m_hrecovsmcnvtx2d->GetXaxis()->SetTitle("Pileup Interactions"); m_hrecovsmcnvtx2d->GetYaxis()->SetTitle("Reco Vertices");
129  m_hrecovsmcnvtxprof = tfserv->make<TProfile>("recovsmcnvtxprof","Mean number of reco vs pileup vertices",60,-0.5,59.5);
130  m_hrecovsmcnvtxprof->GetXaxis()->SetTitle("Pileup Interactions"); m_hrecovsmcnvtxprof->GetYaxis()->SetTitle("Reco Vertices");
131 
132  m_hrecovsmclumi2d = tfserv->make<TH2F>("recovsmclumi2d","Number of reco vertices vs ave pileup interactions",200,0.,50.,60,-0.5,59.5);
133  m_hrecovsmclumi2d->GetXaxis()->SetTitle("Average Pileup Interactions"); m_hrecovsmclumi2d->GetYaxis()->SetTitle("Reco Vertices");
134  m_hrecovsmclumiprof = tfserv->make<TProfile>("recovsmclumiprof","Mean number of reco vs ave pileup vertices",200,0.,50.);
135  m_hrecovsmclumiprof->GetXaxis()->SetTitle("Average Pileup Interactions"); m_hrecovsmclumiprof->GetYaxis()->SetTitle("Reco Vertices");
136 
137  if(m_useweight) {
138  m_hrecovsmcnvtxweightedprof = tfserv->make<TProfile>("recovsmcnvtxweightedprof","Mean number of reco vs pileup vertices (1-w) weight",60,-0.5,59.5);
139  m_hrecovsmcnvtxweightedprof->GetXaxis()->SetTitle("Pileup Interactions"); m_hrecovsmcnvtxweightedprof->GetYaxis()->SetTitle("Reco Vertices (1-w)");
140 
141  m_hrecovsmclumiweightedprof = tfserv->make<TProfile>("recovsmclumiweightedprof","Mean number of reco vs ave pileup vertices (1-w) weight",
142  200,0.,50.);
143  m_hrecovsmclumiweightedprof->GetXaxis()->SetTitle("Average Pileup Interactions");
144  m_hrecovsmclumiweightedprof->GetYaxis()->SetTitle("Reco Vertices (1-w)");
145  }
146 
147  m_hdeltazfirst = tfserv->make<TH1F>("deltazfirst","Reco-MC vertex z position (first vertex)",
148  m_histoParameters.getUntrackedParameter<unsigned int>("zBins",1000),
149  m_histoParameters.getUntrackedParameter<double>("zMin",-1.),
150  m_histoParameters.getUntrackedParameter<double>("zMax",1.));
151  m_hdeltazfirst->GetXaxis()->SetTitle("#Delta z (cm)"); m_hdeltazfirst->GetYaxis()->SetTitle("Events");
152 
153  m_hdeltazclose = tfserv->make<TH1F>("deltazclose","Reco-MC vertex z position (closest vertex)",
154  m_histoParameters.getUntrackedParameter<unsigned int>("zBins",1000),
155  m_histoParameters.getUntrackedParameter<double>("zMin",-1.),
156  m_histoParameters.getUntrackedParameter<double>("zMax",1.));
157  m_hdeltazclose->GetXaxis()->SetTitle("#Delta z (cm)"); m_hdeltazclose->GetYaxis()->SetTitle("Events");
158 
159  m_hclosestvtx = tfserv->make<TH1F>("closestvtx","Closest reco vtx ID",30,-0.5,29.5);
160  m_hclosestvtx->GetXaxis()->SetTitle("Vtx ID"); m_hclosestvtx->GetYaxis()->SetTitle("Events");
161 
162  m_hdeltazfirstvsnpu = tfserv->make<TH2F>("deltazfirstvsnpu","Reco-MC vertex z position (first vertex) vs Npileup",30,-0.5,29.5,
163  m_histoParameters.getUntrackedParameter<unsigned int>("zBins",1000),
164  m_histoParameters.getUntrackedParameter<double>("zMin",-1.),
165  m_histoParameters.getUntrackedParameter<double>("zMax",1.));
166  m_hdeltazfirstvsnpu->GetXaxis()->SetTitle("pileup Interactions"); m_hdeltazfirstvsnpu->GetYaxis()->SetTitle("#Delta z (cm)");
167 
168  m_hdeltazclosevsnpu = tfserv->make<TH2F>("deltazclosevsnpu","Reco-MC vertex z position (closest vertex) v Npileup",30,-0.5,29.5,
169  m_histoParameters.getUntrackedParameter<unsigned int>("zBins",1000),
170  m_histoParameters.getUntrackedParameter<double>("zMin",-1.),
171  m_histoParameters.getUntrackedParameter<double>("zMax",1.));
172  m_hdeltazclosevsnpu->GetXaxis()->SetTitle("Pileup Interactions"); m_hdeltazclosevsnpu->GetYaxis()->SetTitle("#Delta z (cm)");
173 
174  m_hclosestvtxvsnpu = tfserv->make<TH2F>("closestvtxvsnpu","Closest reco vtx ID vs Npileup",30,-0.5,29.5,30,-0.5,29.5);
175  m_hclosestvtxvsnpu->GetXaxis()->SetTitle("Pileup Interactions"); m_hclosestvtxvsnpu->GetYaxis()->SetTitle("Vtx ID");
176 
177 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
T * make() const
make new ROOT object
const edm::ParameterSet m_histoParameters
MCvsRecoVerticesAnalyzer::~MCvsRecoVerticesAnalyzer ( )

Definition at line 180 of file MCvsRecoVerticesAnalyzer.cc.

181 {
182 
183  // do anything here that needs to be done at desctruction time
184  // (e.g. close files, deallocate resources etc.)
185 
186 }

Member Function Documentation

void MCvsRecoVerticesAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements edm::EDAnalyzer.

Definition at line 195 of file MCvsRecoVerticesAnalyzer.cc.

References abs, edm::Event::getByLabel(), m_hclosestvtx, m_hclosestvtxvsnpu, m_hdeltazclose, m_hdeltazclosevsnpu, m_hdeltazfirst, m_hdeltazfirstvsnpu, m_hrecovsmclumi2d, m_hrecovsmclumiprof, m_hrecovsmclumiweightedprof, m_hrecovsmcnvtx2d, m_hrecovsmcnvtxprof, m_hrecovsmcnvtxweightedprof, m_mctruthcollection, m_pileupcollection, m_pvcollection, m_useVisibleVertices, m_useweight, m_weight, histoStyle::weight, and detailsBasic3DVector::z.

196 {
197  using namespace edm;
198 
199  double weight = 1.;
200 
201  if(m_useweight) {
202  Handle<double> weightprod;
203  iEvent.getByLabel(m_weight,weightprod);
204 
205  weight = *weightprod;
206 
207  }
208 
210  iEvent.getByLabel(m_pileupcollection,pileupinfos);
211 
212  // look for the intime PileupSummaryInfo
213 
214  std::vector<PileupSummaryInfo>::const_iterator pileupinfo;
215 
216  for(pileupinfo = pileupinfos->begin(); pileupinfo != pileupinfos->end() ; ++pileupinfo) {
217 
218  if(pileupinfo->getBunchCrossing()==0) break;
219 
220  }
221 
222  //
223 
225  iEvent.getByLabel(m_pvcollection,pvcoll);
226 
227 
228  //
229 
230  if(pileupinfo->getBunchCrossing()!=0) {
231 
232  edm::LogError("NoInTimePileUpInfo") << "Cannot find the in-time pileup info " << pileupinfo->getBunchCrossing();
233 
234  }
235  else {
236 
237  int npileup = pileupinfo->getPU_NumInteractions();
238 
239  if(m_useVisibleVertices) npileup = pileupinfo->getPU_zpositions().size();
240 
241  m_hrecovsmcnvtx2d->Fill(npileup,pvcoll->size(),weight);
242  m_hrecovsmcnvtxprof->Fill(npileup,pvcoll->size(),weight);
243 
244  m_hrecovsmclumi2d->Fill(pileupinfo->getTrueNumInteractions(),pvcoll->size(),weight);
245  m_hrecovsmclumiprof->Fill(pileupinfo->getTrueNumInteractions(),pvcoll->size(),weight);
246 
247  if(m_useweight) {
248  m_hrecovsmcnvtxweightedprof->Fill(npileup,pvcoll->size(),1.-weight);
249  m_hrecovsmclumiweightedprof->Fill(pileupinfo->getTrueNumInteractions(),pvcoll->size(),1.-weight);
250  }
251  //
252 
253  Handle< HepMCProduct > EvtHandle ;
254  iEvent.getByLabel(m_mctruthcollection, EvtHandle ) ;
255 
256  const HepMC::GenEvent* Evt = EvtHandle->GetEvent();
257 
258  // compute the difference between the main interaction vertex z position and the first vertex of the collection
259 
260  if(pvcoll->size() !=0) {
261  if(!(*pvcoll)[0].isFake()) {
262  // get the first vertex
263  if(Evt->vertices_begin() != Evt->vertices_end()) {
264  m_hdeltazfirst->Fill((*pvcoll)[0].z()-(*Evt->vertices_begin())->point3d().z()/10.,weight);
265  m_hdeltazfirstvsnpu->Fill(npileup,(*pvcoll)[0].z()-(*Evt->vertices_begin())->point3d().z()/10.,weight);
266  }
267  }
268  }
269 
270  // compute the difference between the main interaction vertex z position and the closest reco vertex
271 
272  double minabsdist = -1.;
273  double mindist = -999.;
274  int closestvtx = -1;
275 
276  for(unsigned int ivtx = 0 ; ivtx < pvcoll->size() ; ++ivtx) {
277 
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.;
280  closestvtx = ivtx;
281  minabsdist = std::abs(mindist);
282  }
283 
284  }
285  if(closestvtx >= 0) {
286  m_hdeltazclose->Fill(mindist,weight);
287  m_hdeltazclosevsnpu->Fill(npileup,mindist,weight);
288  m_hclosestvtx->Fill(closestvtx,weight);
289  m_hclosestvtxvsnpu->Fill(npileup,closestvtx,weight);
290  }
291 
292  }
293 }
#define abs(x)
Definition: mlp_lapack.h:159
float float float z
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
int weight
Definition: histoStyle.py:50
void MCvsRecoVerticesAnalyzer::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 309 of file MCvsRecoVerticesAnalyzer.cc.

310 {
311 }
void MCvsRecoVerticesAnalyzer::beginRun ( const edm::Run iRun,
const edm::EventSetup  
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 296 of file MCvsRecoVerticesAnalyzer.cc.

297 {
298 }
void MCvsRecoVerticesAnalyzer::endJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 315 of file MCvsRecoVerticesAnalyzer.cc.

316 {
317 }
void MCvsRecoVerticesAnalyzer::endRun ( const edm::Run iRun,
const edm::EventSetup  
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 301 of file MCvsRecoVerticesAnalyzer.cc.

302 {
303 }

Member Data Documentation

TH1F* MCvsRecoVerticesAnalyzer::m_hclosestvtx
private

Definition at line 92 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TH2F* MCvsRecoVerticesAnalyzer::m_hclosestvtxvsnpu
private

Definition at line 96 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TH1F* MCvsRecoVerticesAnalyzer::m_hdeltazclose
private

Definition at line 91 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TH2F* MCvsRecoVerticesAnalyzer::m_hdeltazclosevsnpu
private

Definition at line 95 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TH1F* MCvsRecoVerticesAnalyzer::m_hdeltazfirst
private

Definition at line 90 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TH2F* MCvsRecoVerticesAnalyzer::m_hdeltazfirstvsnpu
private

Definition at line 94 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

const edm::ParameterSet MCvsRecoVerticesAnalyzer::m_histoParameters
private

Definition at line 82 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by MCvsRecoVerticesAnalyzer().

TH2F* MCvsRecoVerticesAnalyzer::m_hrecovsmclumi2d
private

Definition at line 87 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TProfile* MCvsRecoVerticesAnalyzer::m_hrecovsmclumiprof
private

Definition at line 88 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TProfile* MCvsRecoVerticesAnalyzer::m_hrecovsmclumiweightedprof
private

Definition at line 89 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TH2F* MCvsRecoVerticesAnalyzer::m_hrecovsmcnvtx2d
private

Definition at line 84 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TProfile* MCvsRecoVerticesAnalyzer::m_hrecovsmcnvtxprof
private

Definition at line 85 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

TProfile* MCvsRecoVerticesAnalyzer::m_hrecovsmcnvtxweightedprof
private

Definition at line 86 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

edm::InputTag MCvsRecoVerticesAnalyzer::m_mctruthcollection
private

Definition at line 77 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze().

edm::InputTag MCvsRecoVerticesAnalyzer::m_pileupcollection
private

Definition at line 76 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze().

edm::InputTag MCvsRecoVerticesAnalyzer::m_pvcollection
private

Definition at line 78 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze().

const bool MCvsRecoVerticesAnalyzer::m_useVisibleVertices
private

Definition at line 81 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

const bool MCvsRecoVerticesAnalyzer::m_useweight
private

Definition at line 79 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze(), and MCvsRecoVerticesAnalyzer().

edm::InputTag MCvsRecoVerticesAnalyzer::m_weight
private

Definition at line 80 of file MCvsRecoVerticesAnalyzer.cc.

Referenced by analyze().