CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
PatVertexAnalyzer Class Reference
Inheritance diagram for PatVertexAnalyzer:
edm::one::EDAnalyzer< edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &es) override
 
void beginJob () override
 
 PatVertexAnalyzer (const edm::ParameterSet &params)
 constructor and destructor More...
 
 ~PatVertexAnalyzer () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::SharedResources >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () 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
 
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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

edm::EDGetTokenT< reco::GenParticleCollectiongenParticlesToken_
 
TH1 * nTracks_
 
TH1 * nVertices_
 
edm::EDGetTokenT< reco::VertexCollectionsrcToken_
 
TH1 * x_
 
TH1 * xDelta_
 
TH1 * xErr_
 
TH1 * xPull_
 
TH1 * y_
 
TH1 * yDelta_
 
TH1 * yErr_
 
TH1 * yPull_
 
TH1 * z_
 
TH1 * zDelta_
 
TH1 * zErr_
 
TH1 * zPull_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 26 of file PatVertexAnalyzer.cc.

Constructor & Destructor Documentation

◆ PatVertexAnalyzer()

PatVertexAnalyzer::PatVertexAnalyzer ( const edm::ParameterSet params)

constructor and destructor

Definition at line 48 of file PatVertexAnalyzer.cc.

References TFileService::kSharedResource.

49  : srcToken_(consumes<reco::VertexCollection>(params.getParameter<edm::InputTag>("src"))),
50  genParticlesToken_(consumes<reco::GenParticleCollection>(params.getParameter<edm::InputTag>("mc"))) {
51  usesResource(TFileService::kSharedResource);
52 }
static const std::string kSharedResource
Definition: TFileService.h:76
edm::EDGetTokenT< reco::GenParticleCollection > genParticlesToken_
edm::EDGetTokenT< reco::VertexCollection > srcToken_

◆ ~PatVertexAnalyzer()

PatVertexAnalyzer::~PatVertexAnalyzer ( )
override

Definition at line 54 of file PatVertexAnalyzer.cc.

54 {}

Member Function Documentation

◆ analyze()

void PatVertexAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup es 
)
overridevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 77 of file PatVertexAnalyzer.cc.

References genParticlesToken_, nTracks_, nVertices_, MetAnalyzer::pv(), srcToken_, x_, xDelta_, xErr_, xPull_, y_, yDelta_, yErr_, yPull_, z_, zDelta_, zErr_, and zPull_.

77  {
78  // handle to the primary vertex collection
80  event.getByToken(srcToken_, pvHandle);
81 
82  // handle to the generator particles (i.e. the MC truth)
84  event.getByToken(genParticlesToken_, genParticlesHandle);
85 
86  // extract the position of the simulated vertex
87  math::XYZPoint simPV = (*genParticlesHandle)[2].vertex();
88 
89  // the number of reconstructed primary vertices
90  nVertices_->Fill(pvHandle->size());
91 
92  // if we have at least one, use the first (highest pt^2 sum)
93  if (!pvHandle->empty()) {
94  const reco::Vertex &pv = (*pvHandle)[0];
95 
96  nTracks_->Fill(pv.tracksSize());
97 
98  x_->Fill(pv.x());
99  y_->Fill(pv.y());
100  z_->Fill(pv.z());
101 
102  xErr_->Fill(pv.xError());
103  yErr_->Fill(pv.yError());
104  zErr_->Fill(pv.zError());
105 
106  xDelta_->Fill(pv.x() - simPV.X());
107  yDelta_->Fill(pv.y() - simPV.Y());
108  zDelta_->Fill(pv.z() - simPV.Z());
109 
110  xPull_->Fill((pv.x() - simPV.X()) / pv.xError());
111  yPull_->Fill((pv.y() - simPV.Y()) / pv.yError());
112  zPull_->Fill((pv.z() - simPV.Z()) / pv.zError());
113 
114  // we could access the tracks using the
115  // pv.tracks_begin() ... pv.tracks_end() iterators
116  }
117 }
edm::EDGetTokenT< reco::GenParticleCollection > genParticlesToken_
edm::EDGetTokenT< reco::VertexCollection > srcToken_
def pv(vc)
Definition: MetAnalyzer.py:7
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12

◆ beginJob()

void PatVertexAnalyzer::beginJob ( void  )
overridevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 56 of file PatVertexAnalyzer.cc.

References compareTotals::fs, nTracks_, nVertices_, x_, xDelta_, xErr_, xPull_, y_, yDelta_, yErr_, yPull_, z_, zDelta_, zErr_, and zPull_.

56  {
57  // retrieve handle to auxiliary service
58  // used for storing histograms into ROOT file
60 
61  nVertices_ = fs->make<TH1F>("nVertices", "number of reconstructed primary vertices", 50, 0, 50);
62  nTracks_ = fs->make<TH1F>("nTracks", "number of tracks at primary vertex", 100, 0, 300);
63  x_ = fs->make<TH1F>("pvX", "primary vertex x", 100, -0.1, 0.1);
64  y_ = fs->make<TH1F>("pvY", "primary vertex y", 100, -0.1, 0.1);
65  z_ = fs->make<TH1F>("pvZ", "primary vertex z", 100, -30, 30);
66  xErr_ = fs->make<TH1F>("pvErrorX", "primary vertex x error", 100, 0, 0.005);
67  yErr_ = fs->make<TH1F>("pvErrorY", "primary vertex y error", 100, 0, 0.005);
68  zErr_ = fs->make<TH1F>("pvErrorZ", "primary vertex z error", 100, 0, 0.01);
69  xDelta_ = fs->make<TH1F>("pvDeltaX", "x shift wrt simulated vertex", 100, -0.01, 0.01);
70  yDelta_ = fs->make<TH1F>("pvDeltaY", "y shift wrt simulated vertex", 100, -0.01, 0.01);
71  zDelta_ = fs->make<TH1F>("pvDeltaZ", "z shift wrt simulated vertex", 100, -0.02, 0.02);
72  xPull_ = fs->make<TH1F>("pvPullX", "primary vertex x pull", 100, -5, 5);
73  yPull_ = fs->make<TH1F>("pvPullY", "primary vertex y pull", 100, -5, 5);
74  zPull_ = fs->make<TH1F>("pvPullZ", "primary vertex z pull", 100, -5, 5);
75 }

Member Data Documentation

◆ genParticlesToken_

edm::EDGetTokenT<reco::GenParticleCollection> PatVertexAnalyzer::genParticlesToken_
private

Definition at line 39 of file PatVertexAnalyzer.cc.

Referenced by analyze().

◆ nTracks_

TH1 * PatVertexAnalyzer::nTracks_
private

Definition at line 41 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ nVertices_

TH1* PatVertexAnalyzer::nVertices_
private

Definition at line 41 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ srcToken_

edm::EDGetTokenT<reco::VertexCollection> PatVertexAnalyzer::srcToken_
private

Definition at line 38 of file PatVertexAnalyzer.cc.

Referenced by analyze().

◆ x_

TH1* PatVertexAnalyzer::x_
private

Definition at line 42 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ xDelta_

TH1* PatVertexAnalyzer::xDelta_
private

Definition at line 44 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ xErr_

TH1* PatVertexAnalyzer::xErr_
private

Definition at line 43 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ xPull_

TH1* PatVertexAnalyzer::xPull_
private

Definition at line 45 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ y_

TH1 * PatVertexAnalyzer::y_
private

Definition at line 42 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ yDelta_

TH1 * PatVertexAnalyzer::yDelta_
private

Definition at line 44 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ yErr_

TH1 * PatVertexAnalyzer::yErr_
private

Definition at line 43 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ yPull_

TH1 * PatVertexAnalyzer::yPull_
private

Definition at line 45 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ z_

TH1 * PatVertexAnalyzer::z_
private

Definition at line 42 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ zDelta_

TH1 * PatVertexAnalyzer::zDelta_
private

Definition at line 44 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ zErr_

TH1 * PatVertexAnalyzer::zErr_
private

Definition at line 43 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().

◆ zPull_

TH1 * PatVertexAnalyzer::zPull_
private

Definition at line 45 of file PatVertexAnalyzer.cc.

Referenced by analyze(), and beginJob().