39 #define COUT(x) std::cout << x << ' ' 41 #define COUT(x) LogDebug(x) 48 : confID_(iConfig.
id()),
50 NumberOfTracks(nullptr),
51 NumberOfMeanRecHitsPerTrack(nullptr),
52 NumberOfMeanLayersPerTrack(nullptr)
55 FractionOfGoodTracks(nullptr),
56 NumberOfTrackingRegions(nullptr),
57 NumberOfSeeds(nullptr),
58 NumberOfSeeds_lumiFlag(nullptr),
59 NumberOfTrackCandidates(nullptr),
60 FractionCandidatesOverSeeds(nullptr)
63 NumberEventsOfVsLS(nullptr),
64 NumberOfTracksVsLS(nullptr)
67 GoodTracksFractionVsLS(nullptr)
72 NumberOfGoodPVtxVsLS(nullptr),
73 NumberOfGoodPVtxWO0VsLS(nullptr),
74 NumberEventsOfVsBX(nullptr),
75 NumberOfTracksVsBX(nullptr),
76 GoodTracksFractionVsBX(nullptr),
77 NumberOfRecHitsPerTrackVsBX(nullptr),
78 NumberOfGoodPVtxVsBX(nullptr),
79 NumberOfGoodPVtxWO0VsBX(nullptr),
80 NumberOfTracksVsBXlumi(nullptr),
81 NumberOfTracksVsGoodPVtx(nullptr),
82 NumberOfTracksVsPUPVtx(nullptr),
83 NumberEventsOfVsGoodPVtx(nullptr),
84 GoodTracksFractionVsGoodPVtx(nullptr),
85 NumberOfRecHitsPerTrackVsGoodPVtx(nullptr),
86 NumberOfPVtxVsGoodPVtx(nullptr),
87 NumberOfPixelClustersVsGoodPVtx(nullptr),
88 NumberOfStripClustersVsGoodPVtx(nullptr),
89 NumberEventsOfVsLUMI(nullptr),
90 NumberOfTracksVsLUMI(nullptr),
91 GoodTracksFractionVsLUMI(nullptr),
92 NumberOfRecHitsPerTrackVsLUMI(nullptr),
93 NumberOfGoodPVtxVsLUMI(nullptr),
94 NumberOfGoodPVtxWO0VsLUMI(nullptr),
95 NumberOfPixelClustersVsLUMI(nullptr),
96 NumberOfStripClustersVsLUMI(nullptr),
97 NumberOfTracks_lumiFlag(nullptr)
101 builderName(iConfig.getParameter<
std::
string>(
"TTRHBuilder")),
102 doTrackerSpecific_(iConfig.getParameter<
bool>(
"doTrackerSpecific")),
104 doProfilesVsLS_(iConfig.getParameter<
bool>(
"doProfilesVsLS")),
105 doAllSeedPlots(iConfig.getParameter<
bool>(
"doSeedParameterHistos")),
107 doGeneralPropertiesPlots_(iConfig.getParameter<
bool>(
"doGeneralPropertiesPlots")),
108 doHitPropertiesPlots_(iConfig.getParameter<
bool>(
"doHitPropertiesPlots")),
109 doTkCandPlots(iConfig.getParameter<
bool>(
"doTrackCandHistos")),
110 doPUmonitoring_(iConfig.getParameter<
bool>(
"doPUmonitoring")),
112 iConfig.getParameter<
edm::
ParameterSet>(
"genericTriggerEventPSet"), consumesCollector(), *this)),
113 numSelection_(iConfig.getParameter<
std::
string>(
"numCut")),
114 denSelection_(iConfig.getParameter<
std::
string>(
"denCut")),
115 pvNDOF_(iConfig.getParameter<
int>(
"pvNDOF")),
116 forceSCAL_(iConfig.getParameter<
bool>(
"forceSCAL")) {
133 allTrackToken_ = consumes<edm::View<reco::Track> >(alltrackProducer);
136 seedToken_ = consumes<edm::View<TrajectorySeed> >(seedProducer);
143 return std::make_tuple(consumes<MVACollection>(edm::InputTag(tag,
"MVAValues")),
144 consumes<QualityMaskCollection>(edm::InputTag(tag,
"QualityMasks")));
157 if (!regionLayersTag.label().empty()) {
160 <<
"Only one of 'RegionProducer' and 'RegionSeedingLayersProducer' can be non-empty, now both are.";
164 throw cms::Exception(
"Configuration") <<
"With doRegionPlots=True either 'RegionProducer' or " 165 "'RegionSeedingLayersProducer' must be non-empty, now both are empty.";
209 iConfig.
getParameter<std::vector<edm::InputTag> >(
"primaryVertexInputTags");
211 iConfig.
getParameter<std::vector<edm::InputTag> >(
"selPrimaryVertexInputTags");
212 std::vector<std::string>
pvLabels = iConfig.
getParameter<std::vector<std::string> >(
"pvLabels");
252 edm::LogWarning(
"TrackingMonitor") <<
"Qualty Name is invalid, using no quality criterea by default";
261 int TKNoBin = conf->getParameter<
int>(
"TkSizeBin");
262 double TKNoMin = conf->getParameter<
double>(
"TkSizeMin");
263 double TKNoMax = conf->getParameter<
double>(
"TkSizeMax");
265 int TCNoBin = conf->getParameter<
int>(
"TCSizeBin");
266 double TCNoMin = conf->getParameter<
double>(
"TCSizeMin");
267 double TCNoMax = conf->getParameter<
double>(
"TCSizeMax");
269 int TKNoSeedBin = conf->getParameter<
int>(
"TkSeedSizeBin");
270 double TKNoSeedMin = conf->getParameter<
double>(
"TkSeedSizeMin");
271 double TKNoSeedMax = conf->getParameter<
double>(
"TkSeedSizeMax");
274 double RecHitMin = conf->getParameter<
double>(
"RecHitMin");
275 double RecHitMax = conf->getParameter<
double>(
"RecHitMax");
277 int MeanHitBin = conf->getParameter<
int>(
"MeanHitBin");
278 double MeanHitMin = conf->getParameter<
double>(
"MeanHitMin");
279 double MeanHitMax = conf->getParameter<
double>(
"MeanHitMax");
281 int MeanLayBin = conf->getParameter<
int>(
"MeanLayBin");
282 double MeanLayMin = conf->getParameter<
double>(
"MeanLayMin");
283 double MeanLayMax = conf->getParameter<
double>(
"MeanLayMax");
285 int LSBin = conf->getParameter<
int>(
"LSBin");
286 int LSMin = conf->getParameter<
double>(
"LSMin");
287 int LSMax = conf->getParameter<
double>(
"LSMax");
290 if (StateName !=
"OuterSurface" && StateName !=
"InnerSurface" && StateName !=
"ImpactPoint" &&
291 StateName !=
"default" && StateName !=
"All") {
293 edm::LogWarning(
"TrackingMonitor") <<
"State Name is invalid, using 'ImpactPoint' by default";
304 histname =
"NumberOfTracks_" + CategoryName;
311 histname =
"NumberOfTracks_PUvtx_" + CategoryName;
316 histname =
"NumberofTracks_Hardvtx_" + CategoryName;
322 histname =
"NumberofTracks_Hardvtx_PUvtx_" + CategoryName;
330 histname =
"NumberOfMeanRecHitsPerTrack_" + CategoryName;
335 histname =
"NumberOfMeanLayersPerTrack_" + CategoryName;
341 histname =
"FractionOfGoodTracks_" + CategoryName;
353 histname =
"NumberOfTracks_lumiFlag_" + CategoryName;
365 histname =
"NumberOfTracksVsLS_" + CategoryName;
371 histname =
"NumberOfRecHitsPerTrackVsLS_" + CategoryName;
378 histname =
"NumberEventsVsLS_" + CategoryName;
389 histname =
"NumberOfGoodPVtxVsLS_" + CategoryName;
396 histname =
"NumberOfGoodPVtxWO0VsLS_" + CategoryName;
403 histname =
"GoodTracksFractionVsLS_" + CategoryName;
414 double BXMax = 3564.5;
416 histname =
"NumberEventsVsBX_" + CategoryName;
421 histname =
"NumberOfTracksVsBX_" + CategoryName;
426 histname =
"NumberOfRecHitsPerTrackVsBX_" + CategoryName;
432 histname =
"NumberOfGoodPVtxVsBX_" + CategoryName;
438 histname =
"NumberOfGoodPVtxWO0VsBX_" + CategoryName;
445 histname =
"GoodTracksFractionVsBX_" + CategoryName;
464 int PVBin = conf->getParameter<
int>(
"PVBin");
465 float PVMin = conf->getParameter<
double>(
"PVMin");
466 float PVMax = conf->getParameter<
double>(
"PVMax");
468 histname =
"NumberOfTracksVsGoodPVtx";
473 histname =
"NumberOfTracksVsPUPVtx";
478 histname =
"NumberEventsVsGoodPVtx";
484 histname =
"GoodTracksFractionVsGoodPVtx";
490 histname =
"NumberOfRecHitsPerTrackVsGoodPVtx";
495 histname =
"NumberOfPVtxVsGoodPVtx";
500 double NClusPxMin = conf->getParameter<
double>(
"NClusPxMin");
501 double NClusPxMax = conf->getParameter<
double>(
"NClusPxMax");
502 histname =
"NumberOfPixelClustersVsGoodPVtx";
508 double NClusStrMin = conf->getParameter<
double>(
"NClusStrMin");
509 double NClusStrMax = conf->getParameter<
double>(
"NClusStrMax");
510 histname =
"NumberOfStripClustersVsGoodPVtx";
521 int LUMIBin = conf->getParameter<
int>(
"LUMIBin");
522 float LUMIMin = conf->getParameter<
double>(
"LUMIMin");
523 float LUMIMax = conf->getParameter<
double>(
"LUMIMax");
536 histname =
"GoodTracksFractionVsLUMI";
542 histname =
"NumberOfRecHitsPerTrackVsLUMI";
548 double PVMin = conf->getParameter<
double>(
"PVMin");
549 double PVMax = conf->getParameter<
double>(
"PVMax");
551 histname =
"NumberOfGoodPVtxVsLUMI";
556 histname =
"NumberOfGoodPVtxWO0VsLUMI";
562 double NClusPxMin = conf->getParameter<
double>(
"NClusPxMin");
563 double NClusPxMax = conf->getParameter<
double>(
"NClusPxMax");
564 histname =
"NumberOfPixelClustersVsGoodPVtx";
570 double NClusStrMin = conf->getParameter<
double>(
"NClusStrMin");
571 double NClusStrMax = conf->getParameter<
double>(
"NClusStrMax");
572 histname =
"NumberOfStripClustersVsLUMI";
587 histname =
"NumberOfTracksVsBXlumi_" + CategoryName;
614 histname =
"NumberOfSeeds_" + seedProducer.label() +
"_" + CategoryName;
622 histname =
"NumberOfSeeds_lumiFlag_" + seedProducer.label() +
"_" + CategoryName;
632 ClusterLabels = conf->getParameter<std::vector<std::string> >(
"ClusterLabels");
634 std::vector<double> histoMin, histoMax;
635 std::vector<int> histoBin;
637 int NClusPxBin = conf->getParameter<
int>(
"NClusPxBin");
638 double NClusPxMin = conf->getParameter<
double>(
"NClusPxMin");
639 double NClusPxMax = conf->getParameter<
double>(
"NClusPxMax");
641 int NClusStrBin = conf->getParameter<
int>(
"NClusStrBin");
642 double NClusStrMin = conf->getParameter<
double>(
"NClusStrMin");
643 double NClusStrMax = conf->getParameter<
double>(
"NClusStrMax");
651 histname,
histname, histoBin[
i], histoMin[
i], histoMax[
i], TKNoSeedBin, TKNoSeedMin, TKNoSeedMax)));
661 int regionBin = conf->getParameter<
int>(
"RegionSizeBin");
662 double regionMin = conf->getParameter<
double>(
"RegionSizeMin");
663 double regionMax = conf->getParameter<
double>(
"RegionSizeMax");
665 histname =
"TrackingRegionsNumberOf_" + seedProducer.label() +
"_" + CategoryName;
676 histname =
"NumberOfTrackCandidates_" + tcProducer.
label() +
"_" + CategoryName;
681 histname =
"FractionOfCandOverSeeds_" + tcProducer.
label() +
"_" + CategoryName;
690 ClusterLabels = conf->getParameter<std::vector<std::string> >(
"ClusterLabels");
692 std::vector<double> histoMin, histoMax;
693 std::vector<int> histoBin;
695 int NClusStrBin = conf->getParameter<
int>(
"NClusStrBin");
696 double NClusStrMin = conf->getParameter<
double>(
"NClusStrMin");
697 double NClusStrMax = conf->getParameter<
double>(
"NClusStrMax");
699 int NClusPxBin = conf->getParameter<
int>(
"NClusPxBin");
700 double NClusPxMin = conf->getParameter<
double>(
"NClusPxMin");
701 double NClusPxMax = conf->getParameter<
double>(
"NClusPxMax");
704 int NTrk2DBin = ParametersNTrk2D.getParameter<
int>(
"NTrk2DBin");
705 double NTrk2DMin = ParametersNTrk2D.getParameter<
double>(
"NTrk2DMin");
706 double NTrk2DMax = ParametersNTrk2D.getParameter<
double>(
"NTrk2DMax");
720 title =
"# of Clusters in (Pixel+Strip) Detectors";
754 LumiScalersCollection::const_iterator scalit =
lumiScalers->begin();
755 lumi = scalit->instantLumi();
777 int numberOfTracks_den = 0;
779 if (allTrackHandle.
isValid()) {
783 numberOfTracks_den++;
790 pv0 = &pvHandle->front();
800 int numberOfTracks = trackHandle->size();
801 int numberOfTracks_num = 0;
802 int numberOfTracks_pv0 = 0;
806 int totalRecHits = 0, totalLayers = 0;
816 numberOfTracks_num++;
818 ++numberOfTracks_pv0;
823 track->numberOfValidHits());
828 totalRecHits +=
track->numberOfValidHits();
829 totalLayers +=
track->hitPattern().trackerLayersWithMeasurement();
837 if (numberOfTracks_den > 0)
838 frac =
static_cast<double>(numberOfTracks_num) / static_cast<double>(numberOfTracks_den);
864 if (numberOfTracks > 0) {
865 double meanRecHits =
static_cast<double>(totalRecHits) / static_cast<double>(numberOfTracks);
866 double meanLayers =
static_cast<double>(totalLayers) / static_cast<double>(numberOfTracks);
873 float nLS =
static_cast<double>(
iEvent.id().luminosityBlock());
911 for (TrackCandidateCollection::const_iterator
cand = theTCCollection.begin();
cand != theTCCollection.end();
916 edm::LogWarning(
"TrackingMonitor") <<
"No Track Candidates in the event. Not filling associated histograms";
921 std::vector<const MVACollection*> mvaCollections;
922 std::vector<const QualityMaskCollection*> qualityMaskCollections;
929 hmva =
iEvent.getHandle(std::get<0>(tokenTpl));
930 hqual =
iEvent.getHandle(std::get<1>(tokenTpl));
931 mvaCollections.push_back(hmva.
product());
932 qualityMaskCollections.push_back(hqual.
product());
955 std::vector<int> NClus;
964 const auto& seedStopInfo = *stopHandle;
983 <<
") differs from seed stop info collection size (" << seedStopInfo.size()
984 <<
"). This is a sign of inconsistency in the configuration. Not filling associated histograms.";
989 edm::LogWarning(
"TrackingMonitor") <<
"No Trajectory seeds in the event. Not filling associated histograms";
997 const auto&
regions = *hregions;
1003 const auto&
regions = *hregions;
1016 std::vector<int> NClus;
1029 size_t totalNumGoodPV = 0;
1031 for (reco::VertexCollection::const_iterator
pv = pvHandle->begin();
pv != pvHandle->end(); ++
pv) {
1033 if (
pv->isFake() ||
pv->tracksSize() == 0)
1044 if (totalNumGoodPV > 1)
1046 double(numberOfTracks - numberOfTracks_pv0) /
double(totalNumGoodPV - 1));
1066 std::vector<int> NClus;
1068 std::ostringstream
ss;
1069 ss <<
"VI stat " << totalNumGoodPV <<
' ' << numberOfTracks;
1071 ss <<
' ' << NClus[
i];
1090 if (totalNumGoodPV != 0)
1093 if (totalNumGoodPV != 0)
1096 if (totalNumGoodPV != 0)
1105 std::vector<double>& arrayMax,
1106 std::vector<int>& arrayBin,
1128 arrayMax[
i] = smax + pmax;
1132 <<
" not defined, using strip parameters ";
1141 int ncluster_pix = -1;
1142 int ncluster_strip = -1;
1148 ncluster_pix = (*pixel_clusters).dataSize();
1149 ncluster_strip = (*strip_clusters).dataSize();
1155 arrayNclus[
i] = ncluster_pix;
1157 arrayNclus[
i] = ncluster_strip;
1159 arrayNclus[
i] = ncluster_pix + ncluster_strip;
1162 <<
" not defined using stri parametrs ";
1163 arrayNclus[
i] = ncluster_strip;
edm::EDGetTokenT< std::vector< SeedStopInfo > > seedStopInfoToken_
edm::EDGetTokenT< edm::View< reco::Track > > trackToken_
StringCutObjectSelector< reco::Track, true > denSelection_
edm::EDGetTokenT< edm::OwnVector< TrackingRegion > > regionToken_
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken_
std::vector< MonitorElement * > NumberOfTrkVsClusters
MonitorElement * FractionOfGoodTracks
T getParameter(std::string const &) const
virtual void setMaxMinBin(std::vector< double > &, std::vector< double > &, std::vector< int > &, double, double, int, double, double, int)
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrajectorySeed &seed, const SeedStopInfo &stopInfo, const reco::BeamSpot &bs, const MagneticField &theMF, const TransientTrackingRecHitBuilder &theTTRHBuilder)
MonitorElement * NumberOfTracksVsBX
bool getMapped(key_type const &k, value_type &result) const
edm::EDGetTokenT< OnlineLuminosityRecord > metaDataToken_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
MonitorElement * NumberOfRecHitsPerTrackVsBX
MonitorElement * NumberOfRecHitsPerTrackVsLUMI
double z() const
z coordinate
virtual void setNclus(const edm::Event &, std::vector< int > &)
virtual void setCurrentFolder(std::string const &fullpath)
~TrackingMonitor() override
MonitorElement * NumberEventsOfVsGoodPVtx
GetLumi * theLumiDetails_
const Point & position() const
position
RunAuxiliary const & runAuxiliary() const final
std::vector< TrackCandidate > TrackCandidateCollection
T const * product() const
constexpr bool isUninitialized() const noexcept
MonitorElement * FractionCandidatesOverSeeds
void setBX(const edm::Event &)
MonitorElement * GoodTracksFractionVsLUMI
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
MonitorElement * NumberOfPVtxVsGoodPVtx
MonitorElement * NumberOfMeanRecHitsPerTrack
MonitorElement * NumberOfTracksVsGoodPVtx
float instLumi() const
Return the luminosity for the current nibble.
void initHisto(DQMStore::IBooker &ibooker, const edm::ParameterSet &)
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
void analyze(const edm::Event &, const edm::EventSetup &) override
void initHisto(DQMStore::IBooker &ibooker, const edm::EventSetup &, const edm::ParameterSet &)
MonitorElement * NumberOfStripClustersVsLUMI
MonitorElement * GoodTracksFractionVsLS
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const reco::Track &track)
size_t tracksSize() const
number of tracks
selPrimaryVertexInputTags
MonitorElement * NumberofTracks_Hardvtx_PUvtx
edm::EDGetTokenT< edm::View< reco::Track > > mvaTrackToken_
double getValue(const edm::Event &)
MonitorElement * NumberOfGoodPVtxWO0VsLUMI
MonitorElement * NumberOfSeeds
MonitorElement * NumberOfTrackingRegions
MonitorElement * NumberOfGoodPVtxVsLS
edm::EDGetTokenT< edm::View< reco::Track > > allTrackToken_
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
MonitorElement * NumberOfGoodPVtxVsLUMI
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
MonitorElement * NumberOfTracks_PUvtx
MonitorElement * NumberOfTracksVsLS
Abs< T >::type abs(const T &t)
MonitorElement * NumberOfGoodPVtxWO0VsLS
bool doRegionCandidatePlots
#define DEFINE_FWK_MODULE(type)
MonitorElement * NumberOfTracksVsPUPVtx
edm::EDGetTokenT< LumiScalersCollection > lumiscalersToken_
UseScope< MonitorElementData::Scope::LUMI > UseLumiScope
MonitorElement * NumberEventsOfVsBX
bool runTrackBuildingAnalyzerForSeed
MonitorElement * NumberOfStripClustersVsGoodPVtx
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * NumberOfPixelClustersVsGoodPVtx
MonitorElement * NumberOfRecHitsPerTrackVsLS
Timestamp const & beginTime() const
MonitorElement * GoodTracksFractionVsGoodPVtx
MonitorElement * NumberOfRecHitsPerTrackVsGoodPVtx
edm::EDGetTokenT< TrackingRegionsSeedingLayerSets > regionLayerSetsToken_
edm::ParameterSetID confID_
MonitorElement * NumberOfPixelClustersVsLUMI
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
std::vector< VertexMonitor * > theVertexMonitor
MonitorElement * NumberOfTracksVsBXlumi
edm::InputTag stripClusterInputTag_
bool doGeneralPropertiesPlots_
edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > transientTrackingRecHitBuilderToken_
void setLumi(const edm::Event &, const edm::EventSetup &iSetup)
TrackBuildingAnalyzer * theTrackBuildingAnalyzer
void setNumberOfGoodVertices(const edm::Event &)
TimeValue_t value() const
edm::EDGetTokenT< TrackCandidateCollection > trackCandidateToken_
MonitorElement * NumberOfMeanLayersPerTrack
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
tadqm::TrackAnalyzer * theTrackAnalyzer
GenericTriggerEventFlag * genTriggerEventFlag_
edm::EDGetTokenT< reco::CandidateView > regionCandidateToken_
MonitorElement * GoodTracksFractionVsBX
edm::InputTag pixelClusterInputTag_
MonitorElement * NumberOfSeeds_lumiFlag
TrackingMonitor(const edm::ParameterSet &)
MonitorElement * NumberofTracks_Hardvtx
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
trackProducer
Run2: False; Run1: True.
MonitorElement * NumberOfTrackCandidates
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > pixelClustersToken_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > stripClustersToken_
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
Log< level::Warning, false > LogWarning
MonitorElement * NumberOfGoodPVtxVsBX
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * NumberEventsOfVsLUMI
std::vector< MonitorElement * > SeedsVsClusters
std::vector< std::tuple< edm::EDGetTokenT< MVACollection >, edm::EDGetTokenT< QualityMaskCollection > > > mvaQualityTokens_
MonitorElement * NumberOfTracks_lumiFlag
StringCutObjectSelector< reco::Track, true > numSelection_
edm::EDGetTokenT< reco::BeamSpot > bsSrcToken_
MonitorElement * NumberOfTracks
static Registry * instance()
edm::EDGetTokenT< reco::VertexCollection > pvSrcToken_
MonitorElement * NumberEventsOfVsLS
MonitorElement * NumberOfTracksVsLUMI
std::vector< std::string > ClusterLabels
MonitorElement * NumberOfGoodPVtxWO0VsBX
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)