File indexing completed on 2024-04-06 12:33:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021
0022
0023
0024 #include <vector>
0025 #include <map>
0026 #include <limits>
0027 #include <string>
0028
0029 #include "FWCore/Framework/interface/Frameworkfwd.h"
0030 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0031 #include "FWCore/Framework/interface/ConsumesCollector.h"
0032 #include "FWCore/Framework/interface/Event.h"
0033 #include "FWCore/Framework/interface/Run.h"
0034 #include "FWCore/Framework/interface/MakerMacros.h"
0035
0036 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0037
0038 #include "FWCore/Utilities/interface/InputTag.h"
0039
0040 #include "Validation/RecoVertex/interface/VertexHistogramMaker.h"
0041 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0042 #include "DataFormats/VertexReco/interface/Vertex.h"
0043
0044 #include "CommonTools/TriggerUtils/interface/PrescaleWeightProvider.h"
0045
0046
0047
0048
0049
0050 class AnotherPrimaryVertexAnalyzer : public edm::one::EDAnalyzer<edm::one::WatchRuns, edm::one::SharedResources> {
0051 public:
0052 explicit AnotherPrimaryVertexAnalyzer(const edm::ParameterSet&);
0053 ~AnotherPrimaryVertexAnalyzer() override;
0054
0055 private:
0056 void beginJob() override;
0057 void analyze(const edm::Event&, const edm::EventSetup&) override;
0058 void beginRun(const edm::Run&, const edm::EventSetup&) override;
0059 void endRun(const edm::Run&, const edm::EventSetup&) override;
0060 void endJob() override;
0061
0062
0063
0064 VertexHistogramMaker _vhm;
0065 edm::EDGetTokenT<reco::VertexCollection> _recoVertexCollectionToken;
0066 bool _firstOnly;
0067
0068 std::unique_ptr<PrescaleWeightProvider> _weightprov;
0069 };
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082 AnotherPrimaryVertexAnalyzer::AnotherPrimaryVertexAnalyzer(const edm::ParameterSet& iConfig)
0083 : _vhm(iConfig.getParameter<edm::ParameterSet>("vHistogramMakerPSet"), consumesCollector()),
0084 _recoVertexCollectionToken(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("pvCollection"))),
0085 _firstOnly(iConfig.getUntrackedParameter<bool>("firstOnly", false)),
0086 _weightprov(
0087 iConfig.getParameter<bool>("usePrescaleWeight")
0088 ? new PrescaleWeightProvider(
0089 iConfig.getParameter<edm::ParameterSet>("prescaleWeightProviderPSet"), consumesCollector(), *this)
0090 : nullptr) {
0091
0092 usesResource(TFileService::kSharedResource);
0093
0094 _vhm.book();
0095 }
0096
0097 AnotherPrimaryVertexAnalyzer::~AnotherPrimaryVertexAnalyzer() {}
0098
0099
0100
0101
0102
0103
0104 void AnotherPrimaryVertexAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0105
0106 auto const weight = _weightprov ? _weightprov->prescaleWeight<double>(iEvent, iSetup) : 1.;
0107
0108
0109 edm::Handle<reco::VertexCollection> pvcoll;
0110 iEvent.getByToken(_recoVertexCollectionToken, pvcoll);
0111
0112 if (_firstOnly) {
0113 reco::VertexCollection firstpv;
0114 if (!pvcoll->empty())
0115 firstpv.push_back((*pvcoll)[0]);
0116 _vhm.fill(iEvent, firstpv, weight);
0117 } else {
0118 _vhm.fill(iEvent, *pvcoll, weight);
0119 }
0120 }
0121
0122
0123 void AnotherPrimaryVertexAnalyzer::beginJob() {}
0124
0125 void AnotherPrimaryVertexAnalyzer::beginRun(const edm::Run& iRun, const edm::EventSetup& iSetup) {
0126 _vhm.beginRun(iRun);
0127
0128 if (_weightprov)
0129 _weightprov->initRun(iRun, iSetup);
0130 }
0131
0132 void AnotherPrimaryVertexAnalyzer::endRun(const edm::Run& iRun, const edm::EventSetup& iSetup) {}
0133
0134 void AnotherPrimaryVertexAnalyzer::endJob() {}
0135
0136
0137 DEFINE_FWK_MODULE(AnotherPrimaryVertexAnalyzer);