CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
PrimaryVertexResolution Class Reference
Inheritance diagram for PrimaryVertexResolution:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  BinningX
 
struct  BinningY
 
class  DiffPlots
 
class  Plots
 
class  Resolution
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 PrimaryVertexResolution (const edm::ParameterSet &iConfig)
 
 ~PrimaryVertexResolution () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

std::vector< reco::TransientTracksortTracksByPt (const reco::Vertex &thePV, const TransientTrackBuilder &ttBuilder, const reco::BeamSpot &beamspot)
 

Private Attributes

edm::EDGetTokenT< reco::BeamSpotbeamspotSrc_
 
BinningX binningX_
 
BinningY binningY_
 
std::mt19937 engine_
 
AdaptiveVertexFitter fitter_
 
Plots hOtherV_
 
Plots hPV_
 
edm::EDGetTokenT< LumiScalersCollectionlumiScalersSrc_
 
std::string rootFolder_
 
std::string transientTrackBuilder_
 
edm::EDGetTokenT< reco::VertexCollectionvertexSrc_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 47 of file PrimaryVertexResolution.cc.

Constructor & Destructor Documentation

PrimaryVertexResolution::PrimaryVertexResolution ( const edm::ParameterSet iConfig)

Definition at line 274 of file PrimaryVertexResolution.cc.

274  :
275  vertexSrc_(consumes<reco::VertexCollection>(iConfig.getUntrackedParameter<edm::InputTag>("vertexSrc"))),
276  beamspotSrc_(consumes<reco::BeamSpot>(iConfig.getUntrackedParameter<edm::InputTag>("beamspotSrc"))),
277  lumiScalersSrc_(consumes<LumiScalersCollection>(iConfig.getUntrackedParameter<edm::InputTag>("lumiScalersSrc"))),
278  rootFolder_(iConfig.getUntrackedParameter<std::string>("rootFolder")),
279  transientTrackBuilder_(iConfig.getUntrackedParameter<std::string>("transientTrackBuilder")),
280  binningX_(iConfig),
281  binningY_(iConfig),
284 {}
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< LumiScalersCollection > lumiScalersSrc_
edm::EDGetTokenT< reco::VertexCollection > vertexSrc_
edm::EDGetTokenT< reco::BeamSpot > beamspotSrc_
PrimaryVertexResolution::~PrimaryVertexResolution ( )
override

Definition at line 286 of file PrimaryVertexResolution.cc.

286 {}

Member Function Documentation

void PrimaryVertexResolution::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 329 of file PrimaryVertexResolution.cc.

References beamspotSrc_, PrimaryVertexResolution::Plots::calculateAndFillResolution(), engine_, edm::EventID::event(), fitter_, edm::EventSetup::get(), edm::Event::getByToken(), hOtherV_, hPV_, edm::EventBase::id(), edm::EventID::luminosityBlock(), lumiScalersSrc_, edm::EventID::run(), reco::Vertex::size, sortTracksByPt(), reco::Vertex::tracksSize(), transientTrackBuilder_, vertexSrc_, and electrons_cff::vertices.

329  {
331  iEvent.getByToken(vertexSrc_, hvertices);
332  const reco::VertexCollection& vertices = *hvertices;
333  if(vertices.empty())
334  return;
335 
336  edm::Handle<reco::BeamSpot> hbeamspot;
337  iEvent.getByToken(beamspotSrc_, hbeamspot);
338  const reco::BeamSpot& beamspot = *hbeamspot;
339 
341  iEvent.getByToken(lumiScalersSrc_, hscalers);
342  const LumiScalersCollection& lumiScalers = *hscalers;
343 
344  edm::ESHandle<TransientTrackBuilder> ttBuilderHandle;
345  iSetup.get<TransientTrackRecord>().get(transientTrackBuilder_, ttBuilderHandle);
346  const TransientTrackBuilder& ttBuilder = *ttBuilderHandle;
347 
348  // deterministic seed from the event number
349  // should not bias the result as the event number is already
350  // assigned randomly-enough
351  engine_.seed( iEvent.id().event() + (iEvent.id().luminosityBlock()<<10) + (iEvent.id().run()<<20) );
352 
353  // The PV
354  auto iPV = cbegin(vertices);
355  const reco::Vertex& thePV = *iPV;
356  const auto nvertices = vertices.size();
357  if(thePV.tracksSize() >= 4) {
358  auto sortedTracks = sortTracksByPt(thePV, ttBuilder, beamspot);
359  hPV_.calculateAndFillResolution(sortedTracks, nvertices, lumiScalers, engine_, fitter_);
360  }
361  ++iPV;
362 
363  // Other vertices
364  for(auto endPV = cend(vertices); iPV != endPV; ++iPV) {
365  if(iPV->tracksSize() >= 4) {
366  auto sortedTracks = sortTracksByPt(*iPV, ttBuilder, beamspot);
367  hOtherV_.calculateAndFillResolution(sortedTracks, nvertices, lumiScalers, engine_, fitter_);
368  }
369  }
370 }
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
void calculateAndFillResolution(const std::vector< reco::TransientTrack > &tracks, size_t nvertices, const LumiScalersCollection &lumiScalers, std::mt19937 &engine, AdaptiveVertexFitter &fitter)
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:40
edm::EDGetTokenT< LumiScalersCollection > lumiScalersSrc_
edm::EDGetTokenT< reco::VertexCollection > vertexSrc_
edm::EDGetTokenT< reco::BeamSpot > beamspotSrc_
std::vector< reco::TransientTrack > sortTracksByPt(const reco::Vertex &thePV, const TransientTrackBuilder &ttBuilder, const reco::BeamSpot &beamspot)
edm::EventID id() const
Definition: EventBase.h:60
T get() const
Definition: EventSetup.h:63
std::vector< LumiScalers > LumiScalersCollection
Definition: LumiScalers.h:160
size_t tracksSize() const
number of tracks
Definition: Vertex.cc:71
void PrimaryVertexResolution::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 321 of file PrimaryVertexResolution.cc.

References PrimaryVertexResolution::Plots::book(), hOtherV_, hPV_, rootFolder_, and DQMStore::IBooker::setCurrentFolder().

321  {
322  iBooker.setCurrentFolder(rootFolder_+"/PV");
323  hPV_.book(iBooker);
324 
325  iBooker.setCurrentFolder(rootFolder_+"/OtherV");
326  hOtherV_.book(iBooker);
327 }
void book(DQMStore::IBooker &iBooker)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
void PrimaryVertexResolution::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 288 of file PrimaryVertexResolution.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), SiPixelPhase1TrackClustersV_cfi::e3, and AlCaHLTBitMon_QueryRunRegistry::string.

288  {
290  desc.addUntracked<edm::InputTag>("vertexSrc", edm::InputTag("trackingDQMgoodOfflinePrimaryVertices"));
291  desc.addUntracked<edm::InputTag>("beamspotSrc", edm::InputTag("offlineBeamSpot"));
292  desc.addUntracked<edm::InputTag>("lumiScalersSrc", edm::InputTag("scalersRawToDigi"));
293  desc.addUntracked<std::string>("rootFolder", "OfflinePV/Resolution");
294  desc.addUntracked<std::string>("transientTrackBuilder", "TransientTrackBuilder");
295 
296  // Y axes
297  desc.addUntracked<double>("maxResol", 0.02);
298  desc.addUntracked<int>("binsResol", 100);
299 
300  desc.addUntracked<double>("maxPull", 5);
301  desc.addUntracked<int>("binsPull", 100);
302 
303  // X axes
304  desc.addUntracked<double>("minNtracks", -0.5);
305  desc.addUntracked<double>("maxNtracks", 119.5);
306  desc.addUntracked<int>("binsNtracks", 60);
307 
308  desc.addUntracked<double>("minNvertices", -0.5);
309  desc.addUntracked<double>("maxNvertices", 199.5);
310  desc.addUntracked<int>("binsNvertices", 100);
311 
312  desc.addUntracked<double>("minPt", 1);
313  desc.addUntracked<double>("maxPt", 1e3);
314 
315  desc.addUntracked<double>("minLumi", 200.);
316  desc.addUntracked<double>("maxLumi", 20000.);
317 
318  descriptions.add("primaryVertexResolution", desc);
319 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< reco::TransientTrack > PrimaryVertexResolution::sortTracksByPt ( const reco::Vertex thePV,
const TransientTrackBuilder ttBuilder,
const reco::BeamSpot beamspot 
)
private

Definition at line 372 of file PrimaryVertexResolution.cc.

References a, b, TransientTrackBuilder::build(), reco::TrackBase::pt(), HiIsolationCommonParameters_cff::track, reco::Vertex::tracks_begin(), reco::Vertex::tracks_end(), reco::Vertex::tracksSize(), create_public_lumi_plots::transform, and groupFilesInBlocks::tt.

Referenced by analyze().

374  {
375  std::vector<const reco::Track *> sortedTracks;
376  sortedTracks.reserve(thePV.tracksSize());
377  std::transform(thePV.tracks_begin(), thePV.tracks_end(), std::back_inserter(sortedTracks), [](const reco::TrackBaseRef& ref) {
378  return &(*ref);
379  });
380  std::sort(sortedTracks.begin(), sortedTracks.end(), [](const reco::Track *a, const reco::Track *b) {
381  return a->pt() > b->pt();
382  });
383 
384  std::vector<reco::TransientTrack> ttracks;
385  ttracks.reserve(sortedTracks.size());
386  std::transform(sortedTracks.begin(), sortedTracks.end(), std::back_inserter(ttracks), [&](const reco::Track *track) {
387  auto tt = ttBuilder.build(track);
388  tt.setBeamSpot(beamspot);
389  return tt;
390  });
391  return ttracks;
392 }
trackRef_iterator tracks_end() const
last iterator over tracks
Definition: Vertex.cc:81
reco::TransientTrack build(const reco::Track *p) const
double pt() const
track transverse momentum
Definition: TrackBase.h:621
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
trackRef_iterator tracks_begin() const
first iterator over tracks
Definition: Vertex.cc:76
size_t tracksSize() const
number of tracks
Definition: Vertex.cc:71

Member Data Documentation

edm::EDGetTokenT<reco::BeamSpot> PrimaryVertexResolution::beamspotSrc_
private

Definition at line 63 of file PrimaryVertexResolution.cc.

Referenced by analyze().

BinningX PrimaryVertexResolution::binningX_
private

Definition at line 264 of file PrimaryVertexResolution.cc.

Referenced by PrimaryVertexResolution::Plots::book().

BinningY PrimaryVertexResolution::binningY_
private
std::mt19937 PrimaryVertexResolution::engine_
private

Definition at line 271 of file PrimaryVertexResolution.cc.

Referenced by analyze().

AdaptiveVertexFitter PrimaryVertexResolution::fitter_
private

Definition at line 68 of file PrimaryVertexResolution.cc.

Referenced by analyze().

Plots PrimaryVertexResolution::hOtherV_
private

Definition at line 269 of file PrimaryVertexResolution.cc.

Referenced by analyze(), and bookHistograms().

Plots PrimaryVertexResolution::hPV_
private

Definition at line 268 of file PrimaryVertexResolution.cc.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<LumiScalersCollection> PrimaryVertexResolution::lumiScalersSrc_
private

Definition at line 64 of file PrimaryVertexResolution.cc.

Referenced by analyze().

std::string PrimaryVertexResolution::rootFolder_
private

Definition at line 65 of file PrimaryVertexResolution.cc.

Referenced by bookHistograms().

std::string PrimaryVertexResolution::transientTrackBuilder_
private

Definition at line 66 of file PrimaryVertexResolution.cc.

Referenced by analyze().

edm::EDGetTokenT<reco::VertexCollection> PrimaryVertexResolution::vertexSrc_
private

Definition at line 62 of file PrimaryVertexResolution.cc.

Referenced by analyze().