CMS 3D CMS Logo

PatVertexAnalyzer.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <cmath>
3 #include <vector>
4 #include <string>
5 
6 #include <TH1.h>
7 #include <TProfile.h>
8 
16 
18 
25 
27 public:
30  ~PatVertexAnalyzer() override;
31 
32  // virtual methods called from base class EDAnalyzer
33  void beginJob() override;
34  void analyze(const edm::Event &event, const edm::EventSetup &es) override;
35 
36 private:
37  // configuration parameters
40 
42  TH1 *x_, *y_, *z_;
43  TH1 *xErr_, *yErr_, *zErr_;
45  TH1 *xPull_, *yPull_, *zPull_;
46 };
47 
49  : srcToken_(consumes<reco::VertexCollection>(params.getParameter<edm::InputTag>("src"))),
50  genParticlesToken_(consumes<reco::GenParticleCollection>(params.getParameter<edm::InputTag>("mc"))) {}
51 
53 
55  // retrieve handle to auxiliary service
56  // used for storing histograms into ROOT file
58 
59  nVertices_ = fs->make<TH1F>("nVertices", "number of reconstructed primary vertices", 50, 0, 50);
60  nTracks_ = fs->make<TH1F>("nTracks", "number of tracks at primary vertex", 100, 0, 300);
61  x_ = fs->make<TH1F>("pvX", "primary vertex x", 100, -0.1, 0.1);
62  y_ = fs->make<TH1F>("pvY", "primary vertex y", 100, -0.1, 0.1);
63  z_ = fs->make<TH1F>("pvZ", "primary vertex z", 100, -30, 30);
64  xErr_ = fs->make<TH1F>("pvErrorX", "primary vertex x error", 100, 0, 0.005);
65  yErr_ = fs->make<TH1F>("pvErrorY", "primary vertex y error", 100, 0, 0.005);
66  zErr_ = fs->make<TH1F>("pvErrorZ", "primary vertex z error", 100, 0, 0.01);
67  xDelta_ = fs->make<TH1F>("pvDeltaX", "x shift wrt simulated vertex", 100, -0.01, 0.01);
68  yDelta_ = fs->make<TH1F>("pvDeltaY", "y shift wrt simulated vertex", 100, -0.01, 0.01);
69  zDelta_ = fs->make<TH1F>("pvDeltaZ", "z shift wrt simulated vertex", 100, -0.02, 0.02);
70  xPull_ = fs->make<TH1F>("pvPullX", "primary vertex x pull", 100, -5, 5);
71  yPull_ = fs->make<TH1F>("pvPullY", "primary vertex y pull", 100, -5, 5);
72  zPull_ = fs->make<TH1F>("pvPullZ", "primary vertex z pull", 100, -5, 5);
73 }
74 
76  // handle to the primary vertex collection
78  event.getByToken(srcToken_, pvHandle);
79 
80  // handle to the generator particles (i.e. the MC truth)
82  event.getByToken(genParticlesToken_, genParticlesHandle);
83 
84  // extract the position of the simulated vertex
85  math::XYZPoint simPV = (*genParticlesHandle)[2].vertex();
86 
87  // the number of reconstructed primary vertices
88  nVertices_->Fill(pvHandle->size());
89 
90  // if we have at least one, use the first (highest pt^2 sum)
91  if (!pvHandle->empty()) {
92  const reco::Vertex &pv = (*pvHandle)[0];
93 
94  nTracks_->Fill(pv.tracksSize());
95 
96  x_->Fill(pv.x());
97  y_->Fill(pv.y());
98  z_->Fill(pv.z());
99 
100  xErr_->Fill(pv.xError());
101  yErr_->Fill(pv.yError());
102  zErr_->Fill(pv.zError());
103 
104  xDelta_->Fill(pv.x() - simPV.X());
105  yDelta_->Fill(pv.y() - simPV.Y());
106  zDelta_->Fill(pv.z() - simPV.Z());
107 
108  xPull_->Fill((pv.x() - simPV.X()) / pv.xError());
109  yPull_->Fill((pv.y() - simPV.Y()) / pv.yError());
110  zPull_->Fill((pv.z() - simPV.Z()) / pv.zError());
111 
112  // we could access the tracks using the
113  // pv.tracks_begin() ... pv.tracks_end() iterators
114  }
115 }
116 
118 
PatVertexAnalyzer::PatVertexAnalyzer
PatVertexAnalyzer(const edm::ParameterSet &params)
constructor and destructor
Definition: PatVertexAnalyzer.cc:48
PatVertexAnalyzer::xDelta_
TH1 * xDelta_
Definition: PatVertexAnalyzer.cc:44
PatVertexAnalyzer::y_
TH1 * y_
Definition: PatVertexAnalyzer.cc:42
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
edm::EDGetTokenT< reco::VertexCollection >
edm
HLT enums.
Definition: AlignableModifier.h:19
PatVertexAnalyzer::genParticlesToken_
edm::EDGetTokenT< reco::GenParticleCollection > genParticlesToken_
Definition: PatVertexAnalyzer.cc:39
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
reco::GenParticleCollection
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
Definition: GenParticleFwd.h:13
PatVertexAnalyzer::z_
TH1 * z_
Definition: PatVertexAnalyzer.cc:42
EDAnalyzer.h
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
PatVertexAnalyzer::yPull_
TH1 * yPull_
Definition: PatVertexAnalyzer.cc:45
PatVertexAnalyzer::zErr_
TH1 * zErr_
Definition: PatVertexAnalyzer.cc:43
edm::Handle< reco::VertexCollection >
edm::EDAnalyzer
Definition: EDAnalyzer.h:29
GenParticle.h
PatVertexAnalyzer::srcToken_
edm::EDGetTokenT< reco::VertexCollection > srcToken_
Definition: PatVertexAnalyzer.cc:38
MakerMacros.h
PatVertexAnalyzer::~PatVertexAnalyzer
~PatVertexAnalyzer() override
Definition: PatVertexAnalyzer.cc:52
Track.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
BeamSpot.h
PatVertexAnalyzer::zDelta_
TH1 * zDelta_
Definition: PatVertexAnalyzer.cc:44
PatVertexAnalyzer::xErr_
TH1 * xErr_
Definition: PatVertexAnalyzer.cc:43
Service.h
GenParticleFwd.h
Vertex.h
PatVertexAnalyzer::beginJob
void beginJob() override
Definition: PatVertexAnalyzer.cc:54
TFileService.h
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
PatVertexAnalyzer::analyze
void analyze(const edm::Event &event, const edm::EventSetup &es) override
Definition: PatVertexAnalyzer.cc:75
Event.h
PatVertexAnalyzer::x_
TH1 * x_
Definition: PatVertexAnalyzer.cc:42
PatVertexAnalyzer::nTracks_
TH1 * nTracks_
Definition: PatVertexAnalyzer.cc:41
edm::Service< TFileService >
MetAnalyzer.pv
def pv(vc)
Definition: MetAnalyzer.py:7
PatVertexAnalyzer::xPull_
TH1 * xPull_
Definition: PatVertexAnalyzer.cc:45
edm::EventSetup
Definition: EventSetup.h:57
PatVertexAnalyzer::yDelta_
TH1 * yDelta_
Definition: PatVertexAnalyzer.cc:44
InputTag.h
VertexFwd.h
Frameworkfwd.h
EventSetup.h
ParameterSet.h
PatVertexAnalyzer::zPull_
TH1 * zPull_
Definition: PatVertexAnalyzer.cc:45
PatVertexAnalyzer::yErr_
TH1 * yErr_
Definition: PatVertexAnalyzer.cc:43
PatVertexAnalyzer
Definition: PatVertexAnalyzer.cc:26
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
reco::Vertex
Definition: Vertex.h:35
PatVertexAnalyzer::nVertices_
TH1 * nVertices_
Definition: PatVertexAnalyzer.cc:41
TFileService::make
T * make(const Args &... args) const
make new ROOT object
Definition: TFileService.h:64