CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
PixelVertexProducerMedian Class Reference

#include <PixelVertexProducerMedian.h>

Inheritance diagram for PixelVertexProducerMedian:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 PixelVertexProducerMedian (const edm::ParameterSet &ps)
 
void produce (edm::Event &ev, const edm::EventSetup &es) override
 
 ~PixelVertexProducerMedian () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () 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
 
std::vector< bool > const & recordProvenanceList () 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)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

edm::ParameterSet theConfig
 
double thePtMin
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer 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
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsInputProcessBlocks ()
 
static bool wantsProcessBlocks ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Definition at line 12 of file PixelVertexProducerMedian.h.

Constructor & Destructor Documentation

◆ PixelVertexProducerMedian()

PixelVertexProducerMedian::PixelVertexProducerMedian ( const edm::ParameterSet ps)
explicit

Definition at line 29 of file PixelVertexProducerMedian.cc.

29  : theConfig(ps) {
30  produces<reco::VertexCollection>();
31 }

◆ ~PixelVertexProducerMedian()

PixelVertexProducerMedian::~PixelVertexProducerMedian ( )
override

Definition at line 34 of file PixelVertexProducerMedian.cc.

34 {}

Member Function Documentation

◆ produce()

void PixelVertexProducerMedian::produce ( edm::Event ev,
const edm::EventSetup es 
)
overridevirtual

Implements edm::EDProducer.

Definition at line 37 of file PixelVertexProducerMedian.cc.

37  {
38  // Get pixel tracks
40  std::string trackCollectionName = theConfig.getParameter<std::string>("TrackCollection");
41  ev.getByLabel(trackCollectionName, trackCollection);
42  const reco::TrackCollection tracks_ = *(trackCollection.product());
43 
44  thePtMin = theConfig.getParameter<double>("PtMin");
45 
46  // Select tracks
47  std::vector<const reco::Track*> tracks;
48  for (unsigned int i = 0; i < tracks_.size(); i++) {
49  if (tracks_[i].pt() > thePtMin) {
50  reco::TrackRef recTrack(trackCollection, i);
51  tracks.push_back(&(*recTrack));
52  }
53  }
54 
55  LogTrace("MinBiasTracking") << " [VertexProducer] selected tracks: " << tracks.size() << " (out of " << tracks_.size()
56  << ")";
57 
58  auto vertices = std::make_unique<reco::VertexCollection>();
59 
60  if (!tracks.empty()) {
61  // Sort along vertex z position
62  std::sort(tracks.begin(), tracks.end(), ComparePairs());
63 
64  // Median
65  float med;
66  if (tracks.size() % 2 == 0)
67  med = (tracks[tracks.size() / 2 - 1]->vz() + tracks[tracks.size() / 2]->vz()) / 2;
68  else
69  med = tracks[tracks.size() / 2]->vz();
70 
71  LogTrace("MinBiasTracking") << " [vertex position] median = " << med << " cm";
72 
73  if (tracks.size() > 10) {
74  // Binning around med, halfWidth
75  int nBin = 100;
76  float halfWidth = 0.1; // cm
77 
78  // Most probable
79  TH1F histo("histo", "histo", nBin, -halfWidth, halfWidth);
80 
81  for (std::vector<const reco::Track*>::const_iterator track = tracks.begin(); track != tracks.end(); track++)
82  if (fabs((*track)->vz() - med) < halfWidth)
83  histo.Fill((*track)->vz() - med);
84 
85  LogTrace("MinBiasTracking") << " [vertex position] most prob = "
86  << med + histo.GetBinCenter(histo.GetMaximumBin()) << " cm";
87 
88  // Fit above max/2
89  histo.Sumw2();
90 
91  TF1 f1("f1", "[0]*exp(-0.5 * ((x-[1])/[2])^2) + [3]");
92  f1.SetParameters(10., 0., 0.01, 1.);
93 
94  histo.Fit(&f1, "QN");
95 
96  LogTrace("MinBiasTracking") << " [vertex position] fitted = " << med + f1.GetParameter(1) << " +- "
97  << f1.GetParError(1) << " cm";
98 
99  // Store
101  err(2, 2) = f1.GetParError(1) * f1.GetParError(1);
102  reco::Vertex ver(reco::Vertex::Point(0, 0, med + f1.GetParameter(1)), err, 0, 1, 1);
103  vertices->push_back(ver);
104  } else {
105  // Store
107  err(2, 2) = 0.1 * 0.1;
108  reco::Vertex ver(reco::Vertex::Point(0, 0, med), err, 0, 1, 1);
109  vertices->push_back(ver);
110  }
111  }
112  ev.put(std::move(vertices));
113 }

References submitPVResolutionJobs::err, ev, DeadROC_duringRun::f1, edm::ParameterSet::getParameter(), timingPdfMaker::histo, mps_fire::i, LogTrace, eostools::move(), PFElectronDQMAnalyzer_cfi::nBin, DiDispStaMuonMonitor_cfi::pt, AlCaHLTBitMon_QueryRunRegistry::string, tools::TF1, theConfig, thePtMin, HLT_FULL_cff::track, duplicaterechits_cfi::trackCollection, PDWG_EXOHSCP_cff::tracks, and pwdgSkimBPark_cfi::vertices.

Member Data Documentation

◆ theConfig

edm::ParameterSet PixelVertexProducerMedian::theConfig
private

Definition at line 19 of file PixelVertexProducerMedian.h.

Referenced by produce().

◆ thePtMin

double PixelVertexProducerMedian::thePtMin
private

Definition at line 20 of file PixelVertexProducerMedian.h.

Referenced by produce().

PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
reco::Vertex::Error
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:44
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:279
tools.TF1
TF1
Definition: tools.py:23
edm::Handle< reco::TrackCollection >
PFElectronDQMAnalyzer_cfi.nBin
nBin
Definition: PFElectronDQMAnalyzer_cfi.py:25
edm::Ref< TrackCollection >
PixelVertexProducerMedian::thePtMin
double thePtMin
Definition: PixelVertexProducerMedian.h:20
ComparePairs
Definition: HIPixelMedianVtxProducer.h:34
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
submitPVResolutionJobs.err
err
Definition: submitPVResolutionJobs.py:85
reco::Vertex::Point
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
eostools.move
def move(src, dest)
Definition: eostools.py:511
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:224
DeadROC_duringRun.f1
f1
Definition: DeadROC_duringRun.py:219
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
reco::Vertex
Definition: Vertex.h:35
pwdgSkimBPark_cfi.vertices
vertices
Definition: pwdgSkimBPark_cfi.py:7
PixelVertexProducerMedian::theConfig
edm::ParameterSet theConfig
Definition: PixelVertexProducerMedian.h:19