CMS 3D CMS Logo

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

#include <DQM/TrackerMonitorTrack/src/TrackingMonitor.cc>

Inheritance diagram for TrackingMonitor:
DQMOneLumiEDAnalyzer<> DQMOneEDAnalyzer< edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, Args... > edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Types

using MVACollection = std::vector< float >
 
using QualityMaskCollection = std::vector< unsigned char >
 
- Public Types inherited from DQMOneEDAnalyzer< edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, Args... >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase 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
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginLuminosityBlock (const edm::LuminosityBlock &lumi, const edm::EventSetup &eSetup) override
 
void dqmEndRun (const edm::Run &, const edm::EventSetup &) override
 
virtual void setMaxMinBin (std::vector< double > &, std::vector< double > &, std::vector< int > &, double, double, int, double, double, int)
 
virtual void setNclus (const edm::Event &, std::vector< int > &)
 
 TrackingMonitor (const edm::ParameterSet &)
 
 ~TrackingMonitor () override
 
- Public Member Functions inherited from DQMOneLumiEDAnalyzer<>
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
 DQMOneLumiEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
bool getCanSaveByLumi () override
 
- Public Member Functions inherited from DQMOneEDAnalyzer< edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, Args... >
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMOneEDAnalyzer ()
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () 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
 
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)
 
 ~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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (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
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
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 Member Functions

void doProfileX (TH2 *th2, MonitorElement *me)
 
void doProfileX (MonitorElement *th2m, MonitorElement *me)
 

Private Attributes

std::string AlgoName_
 
edm::EDGetTokenT< edm::View< reco::Track > > allTrackToken_
 
edm::InputTag bsSrc_
 
edm::EDGetTokenT< reco::BeamSpotbsSrcToken_
 
std::string builderName
 
std::vector< std::string > ClusterLabels
 
edm::ParameterSetID confID_
 
StringCutObjectSelector< reco::Track, true > denSelection_
 
bool doAllPlots
 
bool doAllSeedPlots
 
bool doDCAPlots_
 
bool doFractionPlot_
 
bool doGeneralPropertiesPlots_
 
bool doHitPropertiesPlots_
 
bool doLumiAnalysis
 
bool doMVAPlots
 
bool doPlotsVsBX_
 
bool doPlotsVsBXlumi_
 
bool doPlotsVsGoodPVtx_
 
bool doPlotsVsLUMI_
 
bool doProfilesVsLS_
 
bool doPUmonitoring_
 
bool doRegionCandidatePlots
 
bool doRegionPlots
 
bool doSeedLumiAnalysis_
 
bool doSeedNumberPlot
 
bool doSeedVsClusterPlot
 
bool doTkCandPlots
 
bool doTrackerSpecific_
 
MonitorElementFractionCandidatesOverSeeds
 
MonitorElementFractionOfGoodTracks
 
GenericTriggerEventFlaggenTriggerEventFlag_
 
MonitorElementGoodTracksFractionVsBX
 
MonitorElementGoodTracksFractionVsGoodPVtx
 
MonitorElementGoodTracksFractionVsLS
 
MonitorElementGoodTracksFractionVsLUMI
 
std::string histname
 
edm::EDGetTokenT< LumiScalersCollectionlumiscalersToken_
 
std::string MEFolderName
 
std::vector< std::tuple< edm::EDGetTokenT< MVACollection >, edm::EDGetTokenT< QualityMaskCollection > > > mvaQualityTokens_
 
edm::EDGetTokenT< edm::View< reco::Track > > mvaTrackToken_
 
MonitorElementNumberEventsOfVsBX
 
MonitorElementNumberEventsOfVsGoodPVtx
 
MonitorElementNumberEventsOfVsLS
 
MonitorElementNumberEventsOfVsLUMI
 
MonitorElementNumberOfGoodPVtxVsBX
 
MonitorElementNumberOfGoodPVtxVsLS
 
MonitorElementNumberOfGoodPVtxVsLUMI
 
MonitorElementNumberOfGoodPVtxWO0VsBX
 
MonitorElementNumberOfGoodPVtxWO0VsLS
 
MonitorElementNumberOfGoodPVtxWO0VsLUMI
 
MonitorElementNumberOfMeanLayersPerTrack
 
MonitorElementNumberOfMeanRecHitsPerTrack
 
MonitorElementNumberOfPixelClustersVsGoodPVtx
 
MonitorElementNumberOfPixelClustersVsLUMI
 
MonitorElementNumberOfPVtxVsGoodPVtx
 
MonitorElementNumberOfRecHitsPerTrackVsBX
 
MonitorElementNumberOfRecHitsPerTrackVsGoodPVtx
 
MonitorElementNumberOfRecHitsPerTrackVsLS
 
MonitorElementNumberOfRecHitsPerTrackVsLUMI
 
MonitorElementNumberOfSeeds
 
MonitorElementNumberOfSeeds_lumiFlag
 
MonitorElementNumberOfStripClustersVsGoodPVtx
 
MonitorElementNumberOfStripClustersVsLUMI
 
MonitorElementNumberOfTrackCandidates
 
MonitorElementNumberOfTrackingRegions
 
MonitorElementNumberOfTracks
 
MonitorElementNumberofTracks_Hardvtx
 
MonitorElementNumberofTracks_Hardvtx_PUvtx
 
MonitorElementNumberOfTracks_lumiFlag
 
MonitorElementNumberOfTracks_PUvtx
 
MonitorElementNumberOfTracksVsBX
 
MonitorElementNumberOfTracksVsBXlumi
 
MonitorElementNumberOfTracksVsGoodPVtx
 
MonitorElementNumberOfTracksVsLS
 
MonitorElementNumberOfTracksVsLUMI
 
MonitorElementNumberOfTracksVsPUPVtx
 
MonitorElementNumberOfTrkVsClus
 
std::vector< MonitorElement * > NumberOfTrkVsClusters
 
MonitorElementNumberOfTrkVsPixelClus
 
MonitorElementNumberOfTrkVsStripClus
 
StringCutObjectSelector< reco::Track, true > numSelection_
 
edm::InputTag pixelClusterInputTag_
 
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > pixelClustersToken_
 
int pvNDOF_
 
edm::InputTag pvSrc_
 
edm::EDGetTokenT< reco::VertexCollectionpvSrcToken_
 
std::string Quality_
 
edm::EDGetTokenT< reco::CandidateViewregionCandidateToken_
 
edm::EDGetTokenT< TrackingRegionsSeedingLayerSetsregionLayerSetsToken_
 
edm::EDGetTokenT< edm::OwnVector< TrackingRegion > > regionToken_
 
bool runTrackBuildingAnalyzerForSeed
 
edm::EDGetTokenT< std::vector< SeedStopInfo > > seedStopInfoToken_
 
std::vector< MonitorElement * > SeedsVsClusters
 
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken_
 
edm::InputTag stripClusterInputTag_
 
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > stripClustersToken_
 
GetLumitheLumiDetails_
 
TrackAnalyzertheTrackAnalyzer
 
TrackBuildingAnalyzertheTrackBuildingAnalyzer
 
edm::ESHandle< TransientTrackingRecHitBuildertheTTRHBuilder
 
std::vector< VertexMonitor * > theVertexMonitor
 
edm::EDGetTokenT< TrackCandidateCollectiontrackCandidateToken_
 
edm::EDGetTokenT< edm::View< reco::Track > > trackToken_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from DQMOneLumiEDAnalyzer<>
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
- Protected Member Functions inherited from DQMOneEDAnalyzer< edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, Args... >
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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<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)
 
- Protected Attributes inherited from DQMOneLumiEDAnalyzer<>
edm::EDPutTokenT< DQMTokenlumiToken_
 
- Protected Attributes inherited from DQMOneEDAnalyzer< edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, Args... >
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Monitoring source for general quantities related to tracks.

Definition at line 58 of file TrackingMonitor.h.

Member Typedef Documentation

using TrackingMonitor::MVACollection = std::vector<float>

Definition at line 60 of file TrackingMonitor.h.

using TrackingMonitor::QualityMaskCollection = std::vector<unsigned char>

Definition at line 61 of file TrackingMonitor.h.

Constructor & Destructor Documentation

TrackingMonitor::TrackingMonitor ( const edm::ParameterSet iConfig)
explicit

Definition at line 51 of file TrackingMonitor.cc.

References AlgoName_, allTrackToken_, bsSrc_, bsSrcToken_, HltBtagPostValidation_cff::c, edm::EDConsumerBase::consumesCollector(), doFractionPlot_, doMVAPlots, doPlotsVsBX_, doPlotsVsBXlumi_, doPlotsVsGoodPVtx_, doPlotsVsLUMI_, doPUmonitoring_, doRegionCandidatePlots, doRegionPlots, Exception, edm::ParameterSet::getParameter(), mps_fire::i, edm::EDGetTokenT< T >::isUninitialized(), edm::InputTag::label(), lumiscalersToken_, mvaQualityTokens_, mvaTrackToken_, pixelClusterInputTag_, pixelClustersToken_, TrackerCollisionTrackingMonitor_cfi::primaryVertexInputTags, TrackerCollisionTrackingMonitor_cfi::pvLabels, pvSrc_, pvSrcToken_, Quality_, regionCandidateToken_, regionLayerSetsToken_, ValL1Emulator_cff::regionTag, regionToken_, seedStopInfoToken_, seedToken_, TrackerCollisionTrackingMonitor_cfi::selPrimaryVertexInputTags, AlCaHLTBitMon_QueryRunRegistry::string, stripClusterInputTag_, stripClustersToken_, GlobalPosition_Frontier_DevDB_cff::tag, theLumiDetails_, theTrackAnalyzer, theVertexMonitor, trackCandidateToken_, L1TCSCTF_cfi::trackProducer, trackToken_, and edm::vector_transform().

52  : confID_(iConfig.id()),
54  NumberOfTracks(nullptr),
57  // , NumberOfGoodTracks(NULL)
58  ,
59  FractionOfGoodTracks(nullptr),
60  NumberOfTrackingRegions(nullptr),
61  NumberOfSeeds(nullptr),
62  NumberOfSeeds_lumiFlag(nullptr),
63  NumberOfTrackCandidates(nullptr),
65  // , NumberOfGoodTrkVsClus(NULL)
66  ,
67  NumberEventsOfVsLS(nullptr),
68  NumberOfTracksVsLS(nullptr)
69  // , NumberOfGoodTracksVsLS(NULL)
70  ,
71  GoodTracksFractionVsLS(nullptr)
72  // , GoodTracksNumberOfRecHitsPerTrackVsLS(NULL)
73  // ADD by Mia for PU monitoring
74  // vertex plots to be moved in ad hoc class
75  ,
76  NumberOfGoodPVtxVsLS(nullptr),
77  NumberOfGoodPVtxWO0VsLS(nullptr),
78  NumberEventsOfVsBX(nullptr),
79  NumberOfTracksVsBX(nullptr),
80  GoodTracksFractionVsBX(nullptr),
82  NumberOfGoodPVtxVsBX(nullptr),
83  NumberOfGoodPVtxWO0VsBX(nullptr),
84  NumberOfTracksVsBXlumi(nullptr),
85  NumberOfTracksVsGoodPVtx(nullptr),
86  NumberOfTracksVsPUPVtx(nullptr),
87  NumberEventsOfVsGoodPVtx(nullptr),
90  NumberOfPVtxVsGoodPVtx(nullptr),
93  NumberEventsOfVsLUMI(nullptr),
94  NumberOfTracksVsLUMI(nullptr),
95  GoodTracksFractionVsLUMI(nullptr),
97  NumberOfGoodPVtxVsLUMI(nullptr),
101  NumberOfTracks_lumiFlag(nullptr)
102  // , NumberOfGoodTracks_lumiFlag(NULL)
103 
104  ,
105  builderName(iConfig.getParameter<std::string>("TTRHBuilder")),
106  doTrackerSpecific_(iConfig.getParameter<bool>("doTrackerSpecific")),
107  doLumiAnalysis(iConfig.getParameter<bool>("doLumiAnalysis")),
108  doProfilesVsLS_(iConfig.getParameter<bool>("doProfilesVsLS")),
109  doAllPlots(iConfig.getParameter<bool>("doAllPlots")),
110  doGeneralPropertiesPlots_(iConfig.getParameter<bool>("doGeneralPropertiesPlots")),
111  doHitPropertiesPlots_(iConfig.getParameter<bool>("doHitPropertiesPlots")),
112  doPUmonitoring_(iConfig.getParameter<bool>("doPUmonitoring")),
114  iConfig.getParameter<edm::ParameterSet>("genericTriggerEventPSet"), consumesCollector(), *this)),
115  numSelection_(iConfig.getParameter<std::string>("numCut")),
116  denSelection_(iConfig.getParameter<std::string>("denCut")),
117  pvNDOF_(iConfig.getParameter<int>("pvNDOF")) {
119  theTrackAnalyzer = new TrackAnalyzer(iConfig, c);
120 
121  // input tags for collections from the configuration
122  bsSrc_ = iConfig.getParameter<edm::InputTag>("beamSpot");
123  pvSrc_ = iConfig.getParameter<edm::InputTag>("primaryVertex");
124  bsSrcToken_ = consumes<reco::BeamSpot>(bsSrc_);
125  pvSrcToken_ = mayConsume<reco::VertexCollection>(pvSrc_);
126 
127  lumiscalersToken_ = consumes<LumiScalersCollection>(iConfig.getParameter<edm::InputTag>("scal"));
128 
129  edm::InputTag alltrackProducer = iConfig.getParameter<edm::InputTag>("allTrackProducer");
130  edm::InputTag trackProducer = iConfig.getParameter<edm::InputTag>("TrackProducer");
131  edm::InputTag tcProducer = iConfig.getParameter<edm::InputTag>("TCProducer");
132  edm::InputTag seedProducer = iConfig.getParameter<edm::InputTag>("SeedProducer");
133  allTrackToken_ = consumes<edm::View<reco::Track> >(alltrackProducer);
134  trackToken_ = consumes<edm::View<reco::Track> >(trackProducer);
135  trackCandidateToken_ = consumes<TrackCandidateCollection>(tcProducer);
136  seedToken_ = consumes<edm::View<TrajectorySeed> >(seedProducer);
137  seedStopInfoToken_ = consumes<std::vector<SeedStopInfo> >(tcProducer);
138 
139  doMVAPlots = iConfig.getParameter<bool>("doMVAPlots");
140  if (doMVAPlots) {
142  iConfig.getParameter<std::vector<std::string> >("MVAProducers"), [&](const std::string& tag) {
143  return std::make_tuple(consumes<MVACollection>(edm::InputTag(tag, "MVAValues")),
144  consumes<QualityMaskCollection>(edm::InputTag(tag, "QualityMasks")));
145  });
146  mvaTrackToken_ = consumes<edm::View<reco::Track> >(iConfig.getParameter<edm::InputTag>("TrackProducerForMVA"));
147  }
148 
149  doRegionPlots = iConfig.getParameter<bool>("doRegionPlots");
150  doRegionCandidatePlots = iConfig.getParameter<bool>("doRegionCandidatePlots");
151  if (doRegionPlots) {
152  const auto& regionTag = iConfig.getParameter<edm::InputTag>("RegionProducer");
153  if (!regionTag.label().empty()) {
154  regionToken_ = consumes<edm::OwnVector<TrackingRegion> >(regionTag);
155  }
156  const auto& regionLayersTag = iConfig.getParameter<edm::InputTag>("RegionSeedingLayersProducer");
157  if (!regionLayersTag.label().empty()) {
158  if (!regionToken_.isUninitialized()) {
159  throw cms::Exception("Configuration")
160  << "Only one of 'RegionProducer' and 'RegionSeedingLayersProducer' can be non-empty, now both are.";
161  }
162  regionLayerSetsToken_ = consumes<TrackingRegionsSeedingLayerSets>(regionLayersTag);
163  } else if (regionToken_.isUninitialized()) {
164  throw cms::Exception("Configuration") << "With doRegionPlots=True either 'RegionProducer' or "
165  "'RegionSeedingLayersProducer' must be non-empty, now both are empty.";
166  }
167 
168  if (doRegionCandidatePlots) {
169  regionCandidateToken_ = consumes<reco::CandidateView>(iConfig.getParameter<edm::InputTag>("RegionCandidates"));
170  }
171  }
172 
175  stripClustersToken_ = mayConsume<edmNew::DetSetVector<SiStripCluster> >(stripClusterInputTag_);
176  pixelClustersToken_ = mayConsume<edmNew::DetSetVector<SiPixelCluster> >(pixelClusterInputTag_);
177 
178  doFractionPlot_ = true;
179  if (alltrackProducer.label() == trackProducer.label())
180  doFractionPlot_ = false;
181 
182  Quality_ = iConfig.getParameter<std::string>("Quality");
183  AlgoName_ = iConfig.getParameter<std::string>("AlgoName");
184 
185  // get flag from the configuration
186  doPlotsVsBXlumi_ = iConfig.getParameter<bool>("doPlotsVsBXlumi");
187  if (doPlotsVsBXlumi_)
188  theLumiDetails_ = new GetLumi(iConfig.getParameter<edm::ParameterSet>("BXlumiSetup"), c);
189  doPlotsVsGoodPVtx_ = iConfig.getParameter<bool>("doPlotsVsGoodPVtx");
190  doPlotsVsLUMI_ = iConfig.getParameter<bool>("doPlotsVsLUMI");
191  doPlotsVsBX_ = iConfig.getParameter<bool>("doPlotsVsBX");
192 
193  if (doPUmonitoring_) {
194  std::vector<edm::InputTag> primaryVertexInputTags =
195  iConfig.getParameter<std::vector<edm::InputTag> >("primaryVertexInputTags");
196  std::vector<edm::InputTag> selPrimaryVertexInputTags =
197  iConfig.getParameter<std::vector<edm::InputTag> >("selPrimaryVertexInputTags");
198  std::vector<std::string> pvLabels = iConfig.getParameter<std::vector<std::string> >("pvLabels");
199 
200  if (primaryVertexInputTags.size() == pvLabels.size() and
201  primaryVertexInputTags.size() == selPrimaryVertexInputTags.size()) {
202  for (size_t i = 0; i < primaryVertexInputTags.size(); i++) {
203  edm::InputTag iPVinputTag = primaryVertexInputTags[i];
204  edm::InputTag iSelPVinputTag = selPrimaryVertexInputTags[i];
205  std::string iPVlabel = pvLabels[i];
206 
207  theVertexMonitor.push_back(new VertexMonitor(iConfig, iPVinputTag, iSelPVinputTag, iPVlabel, c));
208  }
209  }
210  }
211 }
edm::EDGetTokenT< std::vector< SeedStopInfo > > seedStopInfoToken_
edm::EDGetTokenT< edm::View< reco::Track > > trackToken_
StringCutObjectSelector< reco::Track, true > denSelection_
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::OwnVector< TrackingRegion > > regionToken_
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken_
MonitorElement * FractionOfGoodTracks
MonitorElement * NumberOfTracksVsBX
TrackAnalyzer * theTrackAnalyzer
MonitorElement * NumberOfRecHitsPerTrackVsBX
MonitorElement * NumberOfRecHitsPerTrackVsLUMI
MonitorElement * NumberEventsOfVsGoodPVtx
GetLumi * theLumiDetails_
ParameterSetID id() const
MonitorElement * FractionCandidatesOverSeeds
edm::InputTag pvSrc_
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
MonitorElement * NumberOfStripClustersVsLUMI
MonitorElement * GoodTracksFractionVsLS
edm::EDGetTokenT< edm::View< reco::Track > > mvaTrackToken_
std::string Quality_
MonitorElement * NumberOfGoodPVtxWO0VsLUMI
edm::InputTag bsSrc_
MonitorElement * NumberOfSeeds
MonitorElement * NumberOfTrackingRegions
MonitorElement * NumberOfGoodPVtxVsLS
edm::EDGetTokenT< edm::View< reco::Track > > allTrackToken_
MonitorElement * NumberOfGoodPVtxVsLUMI
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
MonitorElement * NumberOfTracksVsLS
MonitorElement * NumberOfGoodPVtxWO0VsLS
MonitorElement * NumberOfTracksVsPUPVtx
edm::EDGetTokenT< LumiScalersCollection > lumiscalersToken_
MonitorElement * NumberEventsOfVsBX
MonitorElement * NumberOfStripClustersVsGoodPVtx
MonitorElement * NumberOfPixelClustersVsGoodPVtx
MonitorElement * GoodTracksFractionVsGoodPVtx
MonitorElement * NumberOfRecHitsPerTrackVsGoodPVtx
edm::EDGetTokenT< TrackingRegionsSeedingLayerSets > regionLayerSetsToken_
edm::ParameterSetID confID_
MonitorElement * NumberOfPixelClustersVsLUMI
std::vector< VertexMonitor * > theVertexMonitor
MonitorElement * NumberOfTracksVsBXlumi
edm::InputTag stripClusterInputTag_
bool doGeneralPropertiesPlots_
TrackBuildingAnalyzer * theTrackBuildingAnalyzer
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 >
Definition: transform.h:11
std::string AlgoName_
edm::EDGetTokenT< TrackCandidateCollection > trackCandidateToken_
MonitorElement * NumberOfMeanLayersPerTrack
GenericTriggerEventFlag * genTriggerEventFlag_
edm::EDGetTokenT< reco::CandidateView > regionCandidateToken_
MonitorElement * GoodTracksFractionVsBX
edm::InputTag pixelClusterInputTag_
std::string const & label() const
Definition: InputTag.h:36
MonitorElement * NumberOfSeeds_lumiFlag
trackProducer
Run2: False; Run1: True.
Definition: L1TCSCTF_cfi.py:12
MonitorElement * NumberOfTrackCandidates
bool isUninitialized() const
Definition: EDGetToken.h:70
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > pixelClustersToken_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > stripClustersToken_
MonitorElement * NumberOfGoodPVtxVsBX
MonitorElement * NumberEventsOfVsLUMI
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
edm::EDGetTokenT< reco::VertexCollection > pvSrcToken_
MonitorElement * NumberEventsOfVsLS
MonitorElement * NumberOfTracksVsLUMI
MonitorElement * NumberOfGoodPVtxWO0VsBX
std::string builderName
TrackingMonitor::~TrackingMonitor ( )
override

Definition at line 213 of file TrackingMonitor.cc.

References doPUmonitoring_, genTriggerEventFlag_, mps_fire::i, theTrackAnalyzer, theTrackBuildingAnalyzer, and theVertexMonitor.

213  {
214  if (theTrackAnalyzer)
215  delete theTrackAnalyzer;
218  if (doPUmonitoring_)
219  for (size_t i = 0; i < theVertexMonitor.size(); i++)
220  if (theVertexMonitor[i])
221  delete theVertexMonitor[i];
223  delete genTriggerEventFlag_;
224 }
TrackAnalyzer * theTrackAnalyzer
std::vector< VertexMonitor * > theVertexMonitor
TrackBuildingAnalyzer * theTrackBuildingAnalyzer
GenericTriggerEventFlag * genTriggerEventFlag_

Member Function Documentation

void TrackingMonitor::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 748 of file TrackingMonitor.cc.

References funct::abs(), GenericTriggerEventFlag::accept(), allTrackToken_, TrackAnalyzer::analyze(), TrackBuildingAnalyzer::analyze(), edm::View< T >::begin(), bsSrcToken_, builderName, edm::EventBase::bunchCrossing(), l1GtPatternGenerator_cfi::bx, ClusterLabels, confID_, COUT, denSelection_, doAllPlots, doAllSeedPlots, doFractionPlot_, doGeneralPropertiesPlots_, doLumiAnalysis, doMVAPlots, doPlotsVsBX_, doPlotsVsBXlumi_, doPlotsVsGoodPVtx_, doPlotsVsLUMI_, doProfilesVsLS_, doPUmonitoring_, doRegionCandidatePlots, doRegionPlots, doSeedLumiAnalysis_, doSeedNumberPlot, doSeedVsClusterPlot, doTkCandPlots, doTrackerSpecific_, edm::View< T >::empty(), edm::View< T >::end(), dqm::impl::MonitorElement::Fill(), cropTnPTrees::frac, FractionCandidatesOverSeeds, FractionOfGoodTracks, genTriggerEventFlag_, edm::EventSetup::get(), edm::Event::getByToken(), edm::pset::Registry::getMapped(), GetLumi::getValue(), GoodTracksFractionVsBX, GoodTracksFractionVsGoodPVtx, GoodTracksFractionVsLS, GoodTracksFractionVsLUMI, mps_fire::i, edm::EventBase::id(), edm::pset::Registry::instance(), reco::Vertex::isFake(), edm::EDGetTokenT< T >::isUninitialized(), edm::HandleBase::isValid(), edm::EventID::luminosityBlock(), V0Monitor_cfi::lumiScalers, lumiscalersToken_, MEFolderName, mvaQualityTokens_, mvaTrackToken_, reco::Vertex::ndof(), NumberEventsOfVsBX, NumberEventsOfVsGoodPVtx, NumberEventsOfVsLS, NumberEventsOfVsLUMI, NumberOfGoodPVtxVsBX, NumberOfGoodPVtxVsLS, NumberOfGoodPVtxVsLUMI, NumberOfGoodPVtxWO0VsBX, NumberOfGoodPVtxWO0VsLS, NumberOfGoodPVtxWO0VsLUMI, NumberOfMeanLayersPerTrack, NumberOfMeanRecHitsPerTrack, NumberOfPixelClustersVsGoodPVtx, NumberOfPixelClustersVsLUMI, NumberOfPVtxVsGoodPVtx, NumberOfRecHitsPerTrackVsBX, NumberOfRecHitsPerTrackVsGoodPVtx, NumberOfRecHitsPerTrackVsLS, NumberOfRecHitsPerTrackVsLUMI, NumberOfSeeds, NumberOfSeeds_lumiFlag, NumberOfStripClustersVsGoodPVtx, NumberOfStripClustersVsLUMI, NumberOfTrackCandidates, NumberOfTrackingRegions, NumberOfTracks, NumberofTracks_Hardvtx, NumberofTracks_Hardvtx_PUvtx, NumberOfTracks_lumiFlag, NumberOfTracks_PUvtx, NumberOfTracksVsBX, NumberOfTracksVsBXlumi, NumberOfTracksVsGoodPVtx, NumberOfTracksVsLS, NumberOfTracksVsLUMI, NumberOfTracksVsPUPVtx, NumberOfTrkVsClusters, numSelection_, GenericTriggerEventFlag::on(), reco::Vertex::position(), edm::Handle< T >::product(), MetAnalyzer::pv(), pvNDOF_, pvSrcToken_, regionCandidateToken_, regionLayerSetsToken_, regionToken_, runTrackBuildingAnalyzerForSeed, ElectronSeedTrackRefFix_cfi::seedCollection, seedStopInfoToken_, SeedsVsClusters, seedToken_, TrackAnalyzer::setBX(), TrackAnalyzer::setLumi(), setNclus(), TrackAnalyzer::setNumberOfGoodVertices(), edm::View< T >::size(), contentValuesCheck::ss, AlCaHLTBitMon_QueryRunRegistry::string, theLumiDetails_, theTrackAnalyzer, theTrackBuildingAnalyzer, theTTRHBuilder, theVertexMonitor, HLT_2018_cff::track, trackCandidateToken_, duplicaterechits_cfi::trackCollection, reco::Vertex::tracksSize(), trackToken_, parallelization::uint, and reco::Vertex::z().

748  {
749  // Filter out events if Trigger Filtering is requested
750  if (genTriggerEventFlag_->on() && !genTriggerEventFlag_->accept(iEvent, iSetup))
751  return;
752  auto const* conf = edm::pset::Registry::instance()->getMapped(confID_);
753  MEFolderName = conf->getParameter<std::string>("FolderName");
754  std::string Folder = MEFolderName.substr(0, 2);
755  float lumi = -1.;
757  iEvent.getByToken(lumiscalersToken_, lumiScalers);
758  if (lumiScalers.isValid() && !lumiScalers->empty()) {
759  LumiScalersCollection::const_iterator scalit = lumiScalers->begin();
760  lumi = scalit->instantLumi();
761  } else
762  lumi = -1.;
763 
764  if (doPlotsVsLUMI_ || doAllPlots)
765  NumberEventsOfVsLUMI->Fill(lumi);
766 
767  // Analyse the tracks
768  // if the collection is empty, do not fill anything
769  // ---------------------------------------------------------------------------------//
770 
771  size_t bx = iEvent.bunchCrossing();
772  if (doPlotsVsBX_ || doAllPlots)
774 
775  // get the track collection
777  iEvent.getByToken(trackToken_, trackHandle);
778 
779  int numberOfTracks_den = 0;
780  edm::Handle<edm::View<reco::Track> > allTrackHandle;
781  iEvent.getByToken(allTrackToken_, allTrackHandle);
782  if (allTrackHandle.isValid()) {
783  for (edm::View<reco::Track>::const_iterator track = allTrackHandle->begin(); track != allTrackHandle->end();
784  ++track) {
785  if (denSelection_(*track))
786  numberOfTracks_den++;
787  }
788  }
789 
791  iEvent.getByToken(pvSrcToken_, pvHandle);
792  reco::Vertex const* pv0 = nullptr;
793  if (pvHandle.isValid()) {
794  pv0 = &pvHandle->front();
795  //--- pv fake (the pv collection should have size==1 and the pv==beam spot)
796  if (pv0->isFake() ||
797  pv0->tracksSize() == 0
798  // definition of goodOfflinePrimaryVertex
799  || pv0->ndof() < pvNDOF_ || pv0->z() > 24.)
800  pv0 = nullptr;
801  }
802 
803  if (trackHandle.isValid()) {
804  int numberOfTracks = trackHandle->size();
805  int numberOfTracks_num = 0;
806  int numberOfTracks_pv0 = 0;
807 
808  const edm::View<reco::Track>& trackCollection = *trackHandle;
809  // calculate the mean # rechits and layers
810  int totalRecHits = 0, totalLayers = 0;
811 
813  theTrackAnalyzer->setBX(iEvent);
814  theTrackAnalyzer->setLumi(iEvent, iSetup);
815  for (edm::View<reco::Track>::const_iterator track = trackCollection.begin(); track != trackCollection.end();
816  ++track) {
817  if (doPlotsVsBX_ || doAllPlots)
818  NumberOfRecHitsPerTrackVsBX->Fill(bx, track->numberOfValidHits());
819  if (numSelection_(*track)) {
820  numberOfTracks_num++;
821  if (pv0 && std::abs(track->dz(pv0->position())) < 0.15)
822  ++numberOfTracks_pv0;
823  }
824 
826  NumberOfRecHitsPerTrackVsLS->Fill(static_cast<double>(iEvent.id().luminosityBlock()),
827  track->numberOfValidHits());
828 
829  if (doPlotsVsLUMI_ || doAllPlots)
830  NumberOfRecHitsPerTrackVsLUMI->Fill(lumi, track->numberOfValidHits());
831 
832  totalRecHits += track->numberOfValidHits();
833  totalLayers += track->hitPattern().trackerLayersWithMeasurement();
834 
835  // do analysis per track
836  theTrackAnalyzer->analyze(iEvent, iSetup, *track);
837  }
838 
839  double frac = -1.;
840  // if (numberOfAllTracks > 0) frac = static_cast<double>(numberOfTracks)/static_cast<double>(numberOfAllTracks);
841  if (numberOfTracks_den > 0)
842  frac = static_cast<double>(numberOfTracks_num) / static_cast<double>(numberOfTracks_den);
843 
845  NumberOfTracks->Fill(double(numberOfTracks));
846 
847  if (Folder == "Tr") {
848  NumberofTracks_Hardvtx->Fill(double(numberOfTracks_pv0));
849  NumberOfTracks_PUvtx->Fill(double(numberOfTracks - numberOfTracks_pv0));
850  NumberofTracks_Hardvtx_PUvtx->Fill(0.5, double(numberOfTracks_pv0));
851  NumberofTracks_Hardvtx_PUvtx->Fill(1.5, double(numberOfTracks - numberOfTracks_pv0));
852  }
853 
854  if (doPlotsVsBX_ || doAllPlots)
855  NumberOfTracksVsBX->Fill(bx, numberOfTracks);
856  if (doPlotsVsLUMI_ || doAllPlots)
857  NumberOfTracksVsLUMI->Fill(lumi, numberOfTracks);
858  if (doFractionPlot_) {
859  FractionOfGoodTracks->Fill(frac);
860 
861  if (doFractionPlot_) {
862  if (doPlotsVsBX_ || doAllPlots)
863  GoodTracksFractionVsBX->Fill(bx, frac);
864  if (doPlotsVsLUMI_ || doAllPlots)
865  GoodTracksFractionVsLUMI->Fill(lumi, frac);
866  }
867  }
868  if (numberOfTracks > 0) {
869  double meanRecHits = static_cast<double>(totalRecHits) / static_cast<double>(numberOfTracks);
870  double meanLayers = static_cast<double>(totalLayers) / static_cast<double>(numberOfTracks);
871  NumberOfMeanRecHitsPerTrack->Fill(meanRecHits);
872  NumberOfMeanLayersPerTrack->Fill(meanLayers);
873  }
874  }
875 
876  if (doProfilesVsLS_ || doAllPlots) {
877  float nLS = static_cast<double>(iEvent.id().luminosityBlock());
878  NumberEventsOfVsLS->Fill(nLS);
879  NumberOfTracksVsLS->Fill(nLS, numberOfTracks);
880  if (doFractionPlot_)
881  GoodTracksFractionVsLS->Fill(nLS, frac);
882  }
883 
884  if (doLumiAnalysis) {
885  NumberOfTracks_lumiFlag->Fill(numberOfTracks);
886  }
887 
888  // Analyse the Track Building variables
889  // if the collection is empty, do not fill anything
890  // ---------------------------------------------------------------------------------//
891 
892  // fill the TrackCandidate info
893  if (doTkCandPlots) {
894  // magnetic field
896  iSetup.get<IdealMagneticFieldRecord>().get(theMF);
897 
898  // get the candidate collection
900  iEvent.getByToken(trackCandidateToken_, theTCHandle);
901  const TrackCandidateCollection& theTCCollection = *theTCHandle;
902 
903  if (theTCHandle.isValid()) {
904  // get the beam spot
905  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
906  iEvent.getByToken(bsSrcToken_, recoBeamSpotHandle);
907  const reco::BeamSpot& bs = *recoBeamSpotHandle;
908 
909  NumberOfTrackCandidates->Fill(theTCCollection.size());
910 
911  // get the seed collection
913  iEvent.getByToken(seedToken_, seedHandle);
914  const edm::View<TrajectorySeed>& seedCollection = *seedHandle;
915  if (seedHandle.isValid() && !seedCollection.empty())
916  FractionCandidatesOverSeeds->Fill(double(theTCCollection.size()) / double(seedCollection.size()));
917 
919  for (TrackCandidateCollection::const_iterator cand = theTCCollection.begin(); cand != theTCCollection.end();
920  ++cand) {
921  theTrackBuildingAnalyzer->analyze(iEvent, iSetup, *cand, bs, theMF, theTTRHBuilder);
922  }
923  } else {
924  edm::LogWarning("TrackingMonitor") << "No Track Candidates in the event. Not filling associated histograms";
925  }
926 
927  if (doMVAPlots) {
928  // Get MVA and quality mask collections
929  std::vector<const MVACollection*> mvaCollections;
930  std::vector<const QualityMaskCollection*> qualityMaskCollections;
931 
933  iEvent.getByToken(mvaTrackToken_, htracks);
934 
937  for (const auto& tokenTpl : mvaQualityTokens_) {
938  iEvent.getByToken(std::get<0>(tokenTpl), hmva);
939  iEvent.getByToken(std::get<1>(tokenTpl), hqual);
940 
941  mvaCollections.push_back(hmva.product());
942  qualityMaskCollections.push_back(hqual.product());
943  }
944  theTrackBuildingAnalyzer->analyze(*htracks, mvaCollections, qualityMaskCollections);
945  }
946  }
947 
948  //plots for trajectory seeds
949 
951  // get the seed collection
953  iEvent.getByToken(seedToken_, seedHandle);
954 
955  // fill the seed info
956  if (seedHandle.isValid()) {
957  const auto& seedCollection = *seedHandle;
958 
960  NumberOfSeeds->Fill(seedCollection.size());
962  NumberOfSeeds_lumiFlag->Fill(seedCollection.size());
963  }
964 
966  std::vector<int> NClus;
967  setNclus(iEvent, NClus);
968  for (uint i = 0; i < ClusterLabels.size(); i++) {
969  SeedsVsClusters[i]->Fill(NClus[i], seedCollection.size());
970  }
971  }
972 
975  iEvent.getByToken(seedStopInfoToken_, stopHandle);
976  const auto& seedStopInfo = *stopHandle;
977 
978  if (seedStopInfo.size() == seedCollection.size()) {
979  //here duplication of mag field and be informations is needed to allow seed and track cand histos to be independent
980  // magnetic field
982  iSetup.get<IdealMagneticFieldRecord>().get(theMF);
983 
984  // get the beam spot
985  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
986  iEvent.getByToken(bsSrcToken_, recoBeamSpotHandle);
987  const reco::BeamSpot& bs = *recoBeamSpotHandle;
988 
990  for (size_t i = 0; i < seedCollection.size(); ++i) {
992  iEvent, iSetup, seedCollection[i], seedStopInfo[i], bs, theMF, theTTRHBuilder);
993  }
994  } else {
995  edm::LogWarning("TrackingMonitor")
996  << "Seed collection size (" << seedCollection.size()
997  << ") differs from seed stop info collection size (" << seedStopInfo.size()
998  << "). This is a sign of inconsistency in the configuration. Not filling associated histograms.";
999  }
1000  }
1001 
1002  } else {
1003  edm::LogWarning("TrackingMonitor") << "No Trajectory seeds in the event. Not filling associated histograms";
1004  }
1005  }
1006 
1007  // plots for tracking regions
1008  if (doRegionPlots) {
1009  if (!regionToken_.isUninitialized()) {
1011  iEvent.getByToken(regionToken_, hregions);
1012  const auto& regions = *hregions;
1014 
1016  } else if (!regionLayerSetsToken_.isUninitialized()) {
1018  iEvent.getByToken(regionLayerSetsToken_, hregions);
1019  const auto& regions = *hregions;
1020  NumberOfTrackingRegions->Fill(regions.regionsSize());
1021 
1023  }
1024 
1025  if (doRegionCandidatePlots) {
1027  iEvent.getByToken(regionCandidateToken_, hcandidates);
1028  theTrackBuildingAnalyzer->analyze(*hcandidates);
1029  }
1030  }
1031 
1032  if (doTrackerSpecific_ || doAllPlots) {
1033  std::vector<int> NClus;
1034  setNclus(iEvent, NClus);
1035  for (uint i = 0; i < ClusterLabels.size(); i++) {
1036  NumberOfTrkVsClusters[i]->Fill(NClus[i], numberOfTracks);
1037  }
1038  }
1039 
1040  if (doPUmonitoring_) {
1041  // do vertex monitoring
1042  for (size_t i = 0; i < theVertexMonitor.size(); i++)
1043  theVertexMonitor[i]->analyze(iEvent, iSetup);
1044  }
1045  if (doPlotsVsGoodPVtx_) {
1046  size_t totalNumGoodPV = 0;
1047  if (pvHandle.isValid()) {
1048  for (reco::VertexCollection::const_iterator pv = pvHandle->begin(); pv != pvHandle->end(); ++pv) {
1049  //--- pv fake (the pv collection should have size==1 and the pv==beam spot)
1050  if (pv->isFake() || pv->tracksSize() == 0)
1051  continue;
1052 
1053  // definition of goodOfflinePrimaryVertex
1054  if (pv->ndof() < pvNDOF_ || pv->z() > 24.)
1055  continue;
1056  totalNumGoodPV++;
1057  }
1058 
1059  NumberEventsOfVsGoodPVtx->Fill(float(totalNumGoodPV));
1060  NumberOfTracksVsGoodPVtx->Fill(float(totalNumGoodPV), numberOfTracks);
1061  if (totalNumGoodPV > 1)
1062  NumberOfTracksVsPUPVtx->Fill(totalNumGoodPV - 1,
1063  double(numberOfTracks - numberOfTracks_pv0) / double(totalNumGoodPV - 1));
1064  NumberOfPVtxVsGoodPVtx->Fill(float(totalNumGoodPV), pvHandle->size());
1065 
1066  for (edm::View<reco::Track>::const_iterator track = trackCollection.begin(); track != trackCollection.end();
1067  ++track) {
1068  NumberOfRecHitsPerTrackVsGoodPVtx->Fill(float(totalNumGoodPV), track->numberOfValidHits());
1069  }
1070 
1071  if (doProfilesVsLS_ || doAllPlots)
1072  NumberOfGoodPVtxVsLS->Fill(static_cast<double>(iEvent.id().luminosityBlock()), totalNumGoodPV);
1073  if (doPlotsVsBX_ || doAllPlots)
1074  NumberOfGoodPVtxVsBX->Fill(bx, float(totalNumGoodPV));
1075 
1076  if (doFractionPlot_)
1077  GoodTracksFractionVsGoodPVtx->Fill(float(totalNumGoodPV), frac);
1078 
1079  if (doPlotsVsLUMI_ || doAllPlots)
1080  NumberOfGoodPVtxVsLUMI->Fill(lumi, float(totalNumGoodPV));
1081  }
1082 
1083  std::vector<int> NClus;
1084  setNclus(iEvent, NClus);
1085  std::ostringstream ss;
1086  ss << "VI stat " << totalNumGoodPV << ' ' << numberOfTracks;
1087  for (uint i = 0; i < ClusterLabels.size(); i++) {
1088  ss << ' ' << NClus[i];
1089  if (doPlotsVsLUMI_ || doAllPlots) {
1090  if (ClusterLabels[i] == "Pix")
1091  NumberOfPixelClustersVsLUMI->Fill(lumi, NClus[i]);
1092  if (ClusterLabels[i] == "Strip")
1093  NumberOfStripClustersVsLUMI->Fill(lumi, NClus[i]);
1094  }
1095  if (ClusterLabels[i] == "Pix")
1096  NumberOfPixelClustersVsGoodPVtx->Fill(float(totalNumGoodPV), NClus[i]);
1097  if (ClusterLabels[i] == "Strip")
1098  NumberOfStripClustersVsGoodPVtx->Fill(float(totalNumGoodPV), NClus[i]);
1099  }
1100  COUT(MEFolderName) << ss.str() << std::endl;
1101  if (doPlotsVsBXlumi_) {
1102  double bxlumi = theLumiDetails_->getValue(iEvent);
1103  NumberOfTracksVsBXlumi->Fill(bxlumi, numberOfTracks);
1104  }
1105 
1106  if (doProfilesVsLS_ || doAllPlots)
1107  if (totalNumGoodPV != 0)
1108  NumberOfGoodPVtxWO0VsLS->Fill(static_cast<double>(iEvent.id().luminosityBlock()), float(totalNumGoodPV));
1109  if (doPlotsVsBX_ || doAllPlots)
1110  if (totalNumGoodPV != 0)
1111  NumberOfGoodPVtxWO0VsBX->Fill(bx, float(totalNumGoodPV));
1112  if (doPlotsVsLUMI_ || doAllPlots)
1113  if (totalNumGoodPV != 0)
1114  NumberOfGoodPVtxWO0VsLUMI->Fill(lumi, float(totalNumGoodPV));
1115 
1116  } // PU monitoring
1117 
1118  } // trackHandle is valid
1119 }
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
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrajectorySeed &seed, const SeedStopInfo &stopInfo, const reco::BeamSpot &bs, const edm::ESHandle< MagneticField > &theMF, const edm::ESHandle< TransientTrackingRecHitBuilder > &theTTRHBuilder)
MonitorElement * NumberOfTracksVsBX
TrackAnalyzer * theTrackAnalyzer
MonitorElement * NumberOfRecHitsPerTrackVsBX
MonitorElement * NumberOfRecHitsPerTrackVsLUMI
virtual void setNclus(const edm::Event &, std::vector< int > &)
MonitorElement * NumberEventsOfVsGoodPVtx
GetLumi * theLumiDetails_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< TrackCandidate > TrackCandidateCollection
MonitorElement * FractionCandidatesOverSeeds
std::string MEFolderName
int bunchCrossing() const
Definition: EventBase.h:64
size_type size() const
MonitorElement * GoodTracksFractionVsLUMI
MonitorElement * NumberOfPVtxVsGoodPVtx
MonitorElement * NumberOfMeanRecHitsPerTrack
MonitorElement * NumberOfTracksVsGoodPVtx
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:39
const Point & position() const
position
Definition: Vertex.h:113
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * NumberOfStripClustersVsLUMI
MonitorElement * GoodTracksFractionVsLS
void setLumi(const edm::Event &, const edm::EventSetup &iSetup)
MonitorElement * NumberofTracks_Hardvtx_PUvtx
edm::EDGetTokenT< edm::View< reco::Track > > mvaTrackToken_
void Fill(long long x)
double getValue(const edm::Event &)
Definition: GetLumi.cc:49
MonitorElement * NumberOfGoodPVtxWO0VsLUMI
MonitorElement * NumberOfSeeds
const_iterator begin() const
MonitorElement * NumberOfTrackingRegions
MonitorElement * NumberOfGoodPVtxVsLS
edm::EDGetTokenT< edm::View< reco::Track > > allTrackToken_
MonitorElement * NumberOfGoodPVtxVsLUMI
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
void setBX(const edm::Event &)
#define COUT(x)
bool empty() const
MonitorElement * NumberOfTracks_PUvtx
MonitorElement * NumberOfTracksVsLS
def pv(vc)
Definition: MetAnalyzer.py:7
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * NumberOfGoodPVtxWO0VsLS
double z() const
z coordinate
Definition: Vertex.h:119
bool getMapped(key_type const &k, value_type &result) const
Definition: Registry.cc:17
MonitorElement * NumberOfTracksVsPUPVtx
edm::EDGetTokenT< LumiScalersCollection > lumiscalersToken_
MonitorElement * NumberEventsOfVsBX
bool runTrackBuildingAnalyzerForSeed
MonitorElement * NumberOfStripClustersVsGoodPVtx
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * NumberOfPixelClustersVsGoodPVtx
MonitorElement * NumberOfRecHitsPerTrackVsLS
MonitorElement * GoodTracksFractionVsGoodPVtx
double ndof() const
Definition: Vertex.h:109
MonitorElement * NumberOfRecHitsPerTrackVsGoodPVtx
edm::EDGetTokenT< TrackingRegionsSeedingLayerSets > regionLayerSetsToken_
edm::ParameterSetID confID_
MonitorElement * NumberOfPixelClustersVsLUMI
std::vector< VertexMonitor * > theVertexMonitor
MonitorElement * NumberOfTracksVsBXlumi
bool doGeneralPropertiesPlots_
TrackBuildingAnalyzer * theTrackBuildingAnalyzer
bool isFake() const
Definition: Vertex.h:75
T const * product() const
Definition: Handle.h:69
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const reco::Track &track)
edm::EDGetTokenT< TrackCandidateCollection > trackCandidateToken_
MonitorElement * NumberOfMeanLayersPerTrack
GenericTriggerEventFlag * genTriggerEventFlag_
edm::EDGetTokenT< reco::CandidateView > regionCandidateToken_
MonitorElement * GoodTracksFractionVsBX
MonitorElement * NumberOfSeeds_lumiFlag
edm::EventID id() const
Definition: EventBase.h:59
MonitorElement * NumberofTracks_Hardvtx
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
T get() const
Definition: EventSetup.h:73
MonitorElement * NumberOfTrackCandidates
bool isUninitialized() const
Definition: EDGetToken.h:70
const_iterator end() const
MonitorElement * NumberOfGoodPVtxVsBX
MonitorElement * NumberEventsOfVsLUMI
std::vector< MonitorElement * > SeedsVsClusters
void setNumberOfGoodVertices(const edm::Event &)
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
size_t tracksSize() const
number of tracks
Definition: Vertex.cc:69
static Registry * instance()
Definition: Registry.cc:12
edm::EDGetTokenT< reco::VertexCollection > pvSrcToken_
MonitorElement * NumberEventsOfVsLS
MonitorElement * NumberOfTracksVsLUMI
std::vector< std::string > ClusterLabels
MonitorElement * NumberOfGoodPVtxWO0VsBX
std::string builderName
void TrackingMonitor::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overridevirtual

Implements DQMOneEDAnalyzer< edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, Args... >.

Definition at line 226 of file TrackingMonitor.cc.

References HLTSiStripMonitoring_cff::AlgoName, AlgoName_, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), dqm::dqmstoreimpl::DQMStore::IBooker::bookProfile(), BXlumiParameters_cfi::BXlumiBin, BXlumiParameters_cfi::BXlumiMax, BXlumiParameters_cfi::BXlumiMin, ClusterLabels, confID_, doAllPlots, doAllSeedPlots, doFractionPlot_, doGeneralPropertiesPlots_, doLumiAnalysis, doPlotsVsBX_, doPlotsVsBXlumi_, doPlotsVsGoodPVtx_, doPlotsVsLUMI_, doProfilesVsLS_, doPUmonitoring_, doRegionPlots, doSeedLumiAnalysis_, doSeedNumberPlot, doSeedVsClusterPlot, doTkCandPlots, doTrackerSpecific_, FractionCandidatesOverSeeds, FractionOfGoodTracks, genTriggerEventFlag_, edm::pset::Registry::getMapped(), edm::ParameterSet::getParameter(), dqm::impl::MonitorElement::getTH1(), TrackerCollisionTrackingMonitor_cfi::GoodPVtxMax, TrackerCollisionTrackingMonitor_cfi::GoodPVtxMin, GoodTracksFractionVsBX, GoodTracksFractionVsGoodPVtx, GoodTracksFractionVsLS, GoodTracksFractionVsLUMI, histname, mps_fire::i, TrackAnalyzer::initHisto(), TrackBuildingAnalyzer::initHisto(), GenericTriggerEventFlag::initRun(), edm::pset::Registry::instance(), edm::InputTag::label(), siStripFEDCheck_cfi::LSBin, siStripFEDCheck_cfi::LSMax, siStripFEDCheck_cfi::LSMin, TrackingMonitor_cfi::LUMIBin, TrackingMonitor_cfi::LUMIMax, TrackingMonitor_cfi::LUMIMin, MonitorTrackSTAMuons_cfi::MeanHitBin, MonitorTrackSTAMuons_cfi::MeanHitMax, MonitorTrackSTAMuons_cfi::MeanHitMin, MonitorTrackSTAMuons_cfi::MeanLayBin, MonitorTrackSTAMuons_cfi::MeanLayMax, MonitorTrackSTAMuons_cfi::MeanLayMin, MEFolderName, MonitorTrackSTAMuons_cfi::NClusPxBin, MonitorTrackSTAMuons_cfi::NClusPxMax, MonitorTrackSTAMuons_cfi::NClusPxMin, MonitorTrackSTAMuons_cfi::NClusStrBin, MonitorTrackSTAMuons_cfi::NClusStrMax, MonitorTrackSTAMuons_cfi::NClusStrMin, MonitorTrackSTAMuons_cfi::NTrk2DBin, MonitorTrackSTAMuons_cfi::NTrk2DMax, MonitorTrackSTAMuons_cfi::NTrk2DMin, NumberEventsOfVsBX, NumberEventsOfVsGoodPVtx, NumberEventsOfVsLS, NumberEventsOfVsLUMI, NumberOfGoodPVtxVsBX, NumberOfGoodPVtxVsLS, NumberOfGoodPVtxVsLUMI, NumberOfGoodPVtxWO0VsBX, NumberOfGoodPVtxWO0VsLS, NumberOfGoodPVtxWO0VsLUMI, NumberOfMeanLayersPerTrack, NumberOfMeanRecHitsPerTrack, NumberOfPixelClustersVsGoodPVtx, NumberOfPixelClustersVsLUMI, NumberOfPVtxVsGoodPVtx, NumberOfRecHitsPerTrackVsBX, NumberOfRecHitsPerTrackVsGoodPVtx, NumberOfRecHitsPerTrackVsLS, NumberOfRecHitsPerTrackVsLUMI, NumberOfSeeds, NumberOfSeeds_lumiFlag, NumberOfStripClustersVsGoodPVtx, NumberOfStripClustersVsLUMI, NumberOfTrackCandidates, NumberOfTrackingRegions, NumberOfTracks, NumberofTracks_Hardvtx, NumberofTracks_Hardvtx_PUvtx, NumberOfTracks_lumiFlag, NumberOfTracks_PUvtx, NumberOfTracksVsBX, NumberOfTracksVsBXlumi, NumberOfTracksVsGoodPVtx, NumberOfTracksVsLS, NumberOfTracksVsLUMI, NumberOfTracksVsPUPVtx, NumberOfTrkVsClusters, GenericTriggerEventFlag::on(), MonitorTrackInnerTrackMuons_cff::PVBin, MonitorTrackInnerTrackMuons_cff::PVMax, MonitorTrackInnerTrackMuons_cff::PVMin, Quality_, runTrackBuildingAnalyzerForSeed, SeedsVsClusters, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), TrackAnalyzer::setLumiFlag(), dqm::impl::MonitorElement::setLumiFlag(), setMaxMinBin(), AlCaHLTBitMon_QueryRunRegistry::string, theTrackAnalyzer, theTrackBuildingAnalyzer, theVertexMonitor, overlapproblemtsosanalyzer_cfi::title, and parallelization::uint.

226  {
227  // parameters from the configuration
228  auto const* conf = edm::pset::Registry::instance()->getMapped(confID_);
229  assert(conf != nullptr);
230  std::string Quality = conf->getParameter<std::string>("Quality");
231  std::string AlgoName = conf->getParameter<std::string>("AlgoName");
232  MEFolderName = conf->getParameter<std::string>("FolderName");
233  std::string Folder = MEFolderName.substr(0, 2);
234 
235  // test for the Quality veriable validity
236  if (!Quality_.empty()) {
237  if (Quality_ != "highPurity" && Quality_ != "tight" && Quality_ != "loose") {
238  edm::LogWarning("TrackingMonitor") << "Qualty Name is invalid, using no quality criterea by default";
239  Quality_ = "";
240  }
241  }
242 
243  // use the AlgoName and Quality Name
244  std::string CategoryName = !Quality_.empty() ? AlgoName_ + "_" + Quality_ : AlgoName_;
245 
246  // get binning from the configuration
247  int TKNoBin = conf->getParameter<int>("TkSizeBin");
248  double TKNoMin = conf->getParameter<double>("TkSizeMin");
249  double TKNoMax = conf->getParameter<double>("TkSizeMax");
250 
251  int TCNoBin = conf->getParameter<int>("TCSizeBin");
252  double TCNoMin = conf->getParameter<double>("TCSizeMin");
253  double TCNoMax = conf->getParameter<double>("TCSizeMax");
254 
255  int TKNoSeedBin = conf->getParameter<int>("TkSeedSizeBin");
256  double TKNoSeedMin = conf->getParameter<double>("TkSeedSizeMin");
257  double TKNoSeedMax = conf->getParameter<double>("TkSeedSizeMax");
258 
259  int MeanHitBin = conf->getParameter<int>("MeanHitBin");
260  double MeanHitMin = conf->getParameter<double>("MeanHitMin");
261  double MeanHitMax = conf->getParameter<double>("MeanHitMax");
262 
263  int MeanLayBin = conf->getParameter<int>("MeanLayBin");
264  double MeanLayMin = conf->getParameter<double>("MeanLayMin");
265  double MeanLayMax = conf->getParameter<double>("MeanLayMax");
266 
267  int LSBin = conf->getParameter<int>("LSBin");
268  int LSMin = conf->getParameter<double>("LSMin");
269  int LSMax = conf->getParameter<double>("LSMax");
270 
271  std::string StateName = conf->getParameter<std::string>("MeasurementState");
272  if (StateName != "OuterSurface" && StateName != "InnerSurface" && StateName != "ImpactPoint" &&
273  StateName != "default" && StateName != "All") {
274  // print warning
275  edm::LogWarning("TrackingMonitor") << "State Name is invalid, using 'ImpactPoint' by default";
276  }
277 
278  ibooker.setCurrentFolder(MEFolderName);
279 
280  // book the General Property histograms
281  // ---------------------------------------------------------------------------------//
282 
284  ibooker.setCurrentFolder(MEFolderName + "/GeneralProperties");
285 
286  histname = "NumberOfTracks_" + CategoryName;
287  // MODIFY by Mia in order to cope w/ high multiplicity
288  NumberOfTracks = ibooker.book1D(histname, histname, 3 * TKNoBin, TKNoMin, (TKNoMax + 0.5) * 3. - 0.5);
289  NumberOfTracks->setAxisTitle("Number of Tracks per Event", 1);
290  NumberOfTracks->setAxisTitle("Number of Events", 2);
291 
292  if (Folder == "Tr") {
293  histname = "NumberOfTracks_PUvtx_" + CategoryName;
294  NumberOfTracks_PUvtx = ibooker.book1D(histname, histname, 3 * TKNoBin, TKNoMin, (TKNoMax + 0.5) * 3. - 0.5);
295  NumberOfTracks_PUvtx->setAxisTitle("Number of Tracks per Event (matched a PU vertex)", 1);
296  NumberOfTracks_PUvtx->setAxisTitle("Number of Events", 2);
297 
298  histname = "NumberofTracks_Hardvtx_" + CategoryName;
300  ibooker.book1D(histname, histname, TKNoBin / 10, TKNoMin, (TKNoMax / 10 + 0.5) * 3. - 0.5);
301  NumberofTracks_Hardvtx->setAxisTitle("Number of Tracks per Event (matched main vertex)", 1);
302  NumberofTracks_Hardvtx->setAxisTitle("Number of Events", 2);
303 
304  histname = "NumberofTracks_Hardvtx_PUvtx_" + CategoryName;
305  NumberofTracks_Hardvtx_PUvtx = ibooker.book1D(histname, histname, 2, 0., 2.);
306  NumberofTracks_Hardvtx_PUvtx->setAxisTitle("Number of Tracks per PU/Hard vertex", 1);
307  NumberofTracks_Hardvtx_PUvtx->setAxisTitle("Number of Tracks", 2);
308  NumberofTracks_Hardvtx_PUvtx->setBinLabel(1, "PU_Vertex");
309  NumberofTracks_Hardvtx_PUvtx->setBinLabel(2, "Hard_Vertex");
310  }
311 
312  histname = "NumberOfMeanRecHitsPerTrack_" + CategoryName;
313  NumberOfMeanRecHitsPerTrack = ibooker.book1D(histname, histname, MeanHitBin, MeanHitMin, MeanHitMax);
314  NumberOfMeanRecHitsPerTrack->setAxisTitle("Mean number of valid RecHits per Track", 1);
316 
317  histname = "NumberOfMeanLayersPerTrack_" + CategoryName;
318  NumberOfMeanLayersPerTrack = ibooker.book1D(histname, histname, MeanLayBin, MeanLayMin, MeanLayMax);
319  NumberOfMeanLayersPerTrack->setAxisTitle("Mean number of Layers per Track", 1);
321 
322  if (doFractionPlot_) {
323  histname = "FractionOfGoodTracks_" + CategoryName;
324  FractionOfGoodTracks = ibooker.book1D(histname, histname, 101, -0.005, 1.005);
325  FractionOfGoodTracks->setAxisTitle("Fraction of Tracks (w.r.t. generalTracks)", 1);
326  FractionOfGoodTracks->setAxisTitle("Entries", 2);
327  }
328  }
329 
330  if (doLumiAnalysis) {
331  // add by Mia in order to deal with LS transitions
332  ibooker.setCurrentFolder(MEFolderName + "/LSanalysis");
333 
334  histname = "NumberOfTracks_lumiFlag_" + CategoryName;
335  NumberOfTracks_lumiFlag = ibooker.book1D(histname, histname, 3 * TKNoBin, TKNoMin, (TKNoMax + 0.5) * 3. - 0.5);
336  NumberOfTracks_lumiFlag->setAxisTitle("Number of Tracks per Event", 1);
337  NumberOfTracks_lumiFlag->setAxisTitle("Number of Events", 2);
338  }
339 
340  // book profile plots vs LS :
341  //---------------------------
342 
343  if (doProfilesVsLS_ || doAllPlots) {
344  ibooker.setCurrentFolder(MEFolderName + "/GeneralProperties");
345 
346  histname = "NumberOfTracksVsLS_" + CategoryName;
347  NumberOfTracksVsLS = ibooker.bookProfile(histname, histname, LSBin, LSMin, LSMax, TKNoMin, TKNoMax * 3., "");
348  NumberOfTracksVsLS->getTH1()->SetCanExtend(TH1::kAllAxes);
349  NumberOfTracksVsLS->setAxisTitle("#Lumi section", 1);
350  NumberOfTracksVsLS->setAxisTitle("Number of Tracks", 2);
351 
352  histname = "NumberOfRecHitsPerTrackVsLS_" + CategoryName;
353  NumberOfRecHitsPerTrackVsLS = ibooker.bookProfile(histname, histname, LSBin, LSMin, LSMax, 0., 200., "");
354  NumberOfRecHitsPerTrackVsLS->getTH1()->SetCanExtend(TH1::kAllAxes);
355  NumberOfRecHitsPerTrackVsLS->setAxisTitle("#Lumi section", 1);
356  NumberOfRecHitsPerTrackVsLS->setAxisTitle("Mean number of Valid RecHits per track", 2);
357 
358  histname = "NumberEventsVsLS_" + CategoryName;
359  NumberEventsOfVsLS = ibooker.book1D(histname, histname, LSBin, LSMin, LSMax);
360  NumberEventsOfVsLS->getTH1()->SetCanExtend(TH1::kAllAxes);
361  NumberEventsOfVsLS->setAxisTitle("#Lumi section", 1);
362  NumberEventsOfVsLS->setAxisTitle("Number of events", 2);
363 
364  double GoodPVtxMin = conf->getParameter<double>("GoodPVtxMin");
365  double GoodPVtxMax = conf->getParameter<double>("GoodPVtxMax");
366 
367  histname = "NumberOfGoodPVtxVsLS_" + CategoryName;
369  ibooker.bookProfile(histname, histname, LSBin, LSMin, LSMax, GoodPVtxMin, 3. * GoodPVtxMax, "");
370  NumberOfGoodPVtxVsLS->getTH1()->SetCanExtend(TH1::kAllAxes);
371  NumberOfGoodPVtxVsLS->setAxisTitle("#Lumi section", 1);
372  NumberOfGoodPVtxVsLS->setAxisTitle("Mean number of good PV", 2);
373 
374  histname = "NumberOfGoodPVtxWO0VsLS_" + CategoryName;
376  ibooker.bookProfile(histname, histname, LSBin, LSMin, LSMax, GoodPVtxMin, 3. * GoodPVtxMax, "");
377  NumberOfGoodPVtxWO0VsLS->setAxisTitle("#Lumi section", 1);
378  NumberOfGoodPVtxWO0VsLS->setAxisTitle("Mean number of good PV", 2);
379 
380  if (doFractionPlot_) {
381  histname = "GoodTracksFractionVsLS_" + CategoryName;
382  GoodTracksFractionVsLS = ibooker.bookProfile(histname, histname, LSBin, LSMin, LSMax, 0, 1.1, "");
383  GoodTracksFractionVsLS->getTH1()->SetCanExtend(TH1::kAllAxes);
384  GoodTracksFractionVsLS->setAxisTitle("#Lumi section", 1);
385  GoodTracksFractionVsLS->setAxisTitle("Fraction of Good Tracks", 2);
386  }
387 
388  if (doPlotsVsBX_ || doAllPlots) {
389  ibooker.setCurrentFolder(MEFolderName + "/BXanalysis");
390  int BXBin = 3564;
391  double BXMin = 0.5;
392  double BXMax = 3564.5;
393 
394  histname = "NumberEventsVsBX_" + CategoryName;
395  NumberEventsOfVsBX = ibooker.book1D(histname, histname, BXBin, BXMin, BXMax);
397  NumberEventsOfVsBX->setAxisTitle("Number of events", 2);
398 
399  histname = "NumberOfTracksVsBX_" + CategoryName;
400  NumberOfTracksVsBX = ibooker.bookProfile(histname, histname, BXBin, BXMin, BXMax, TKNoMin, TKNoMax * 3., "");
402  NumberOfTracksVsBX->setAxisTitle("Number of Tracks", 2);
403 
404  histname = "NumberOfRecHitsPerTrackVsBX_" + CategoryName;
405  NumberOfRecHitsPerTrackVsBX = ibooker.bookProfile(histname, histname, BXBin, BXMin, BXMax, 0., 200., "");
407  NumberOfRecHitsPerTrackVsBX->setAxisTitle("Mean number of Valid RecHits per track", 2);
408 
409  histname = "NumberOfGoodPVtxVsBX_" + CategoryName;
411  ibooker.bookProfile(histname, histname, BXBin, BXMin, BXMax, GoodPVtxMin, 3. * GoodPVtxMax, "");
413  NumberOfGoodPVtxVsBX->setAxisTitle("Mean number of good PV", 2);
414 
415  histname = "NumberOfGoodPVtxWO0VsBX_" + CategoryName;
417  ibooker.bookProfile(histname, histname, BXBin, BXMin, BXMax, GoodPVtxMin, 3. * GoodPVtxMax, "");
419  NumberOfGoodPVtxWO0VsBX->setAxisTitle("Mean number of good PV", 2);
420 
421  if (doFractionPlot_) {
422  histname = "GoodTracksFractionVsBX_" + CategoryName;
423  GoodTracksFractionVsBX = ibooker.bookProfile(histname, histname, BXBin, BXMin, BXMax, 0, 1.1, "");
425  GoodTracksFractionVsBX->setAxisTitle("Fraction of Good Tracks", 2);
426  }
427  }
428  }
429 
430  // book PU monitoring plots :
431  //---------------------------
432 
433  if (doPUmonitoring_) {
434  for (size_t i = 0; i < theVertexMonitor.size(); i++)
435  theVertexMonitor[i]->initHisto(ibooker);
436  }
437 
438  if (doPlotsVsGoodPVtx_) {
439  ibooker.setCurrentFolder(MEFolderName + "/PUmonitoring");
440  // get binning from the configuration
441  int PVBin = conf->getParameter<int>("PVBin");
442  float PVMin = conf->getParameter<double>("PVMin");
443  float PVMax = conf->getParameter<double>("PVMax");
444 
445  histname = "NumberOfTracksVsGoodPVtx";
446  NumberOfTracksVsGoodPVtx = ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, TKNoMin, TKNoMax * 5., "");
447  NumberOfTracksVsGoodPVtx->setAxisTitle("Number of PV", 1);
448  NumberOfTracksVsGoodPVtx->setAxisTitle("Mean number of Tracks per Event", 2);
449 
450  histname = "NumberOfTracksVsPUPVtx";
451  NumberOfTracksVsPUPVtx = ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, 0., TKNoMax * 5., "");
452  NumberOfTracksVsPUPVtx->setAxisTitle("Number of PU", 1);
453  NumberOfTracksVsPUPVtx->setAxisTitle("Mean number of Tracks per PUvtx", 2);
454 
455  histname = "NumberEventsVsGoodPVtx";
456  NumberEventsOfVsGoodPVtx = ibooker.book1D(histname, histname, PVBin, PVMin, PVMax);
457  NumberEventsOfVsGoodPVtx->setAxisTitle("Number of good PV (PU)", 1);
458  NumberEventsOfVsGoodPVtx->setAxisTitle("Number of events", 2);
459 
460  if (doFractionPlot_) {
461  histname = "GoodTracksFractionVsGoodPVtx";
462  GoodTracksFractionVsGoodPVtx = ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, 0., 1.1, "");
463  GoodTracksFractionVsGoodPVtx->setAxisTitle("Number of good PV (PU)", 1);
464  GoodTracksFractionVsGoodPVtx->setAxisTitle("Mean fraction of good tracks", 2);
465  }
466 
467  histname = "NumberOfRecHitsPerTrackVsGoodPVtx";
468  NumberOfRecHitsPerTrackVsGoodPVtx = ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, 0., 200., "");
469  NumberOfRecHitsPerTrackVsGoodPVtx->setAxisTitle("Number of good PV (PU)", 1);
470  NumberOfRecHitsPerTrackVsGoodPVtx->setAxisTitle("Mean number of valid rechits per Tracks", 2);
471 
472  histname = "NumberOfPVtxVsGoodPVtx";
473  NumberOfPVtxVsGoodPVtx = ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, 0., 3. * PVMax, "");
474  NumberOfPVtxVsGoodPVtx->setAxisTitle("Number of good PV (PU)", 1);
475  NumberOfPVtxVsGoodPVtx->setAxisTitle("Mean number of vertices", 2);
476 
477  double NClusPxMin = conf->getParameter<double>("NClusPxMin");
478  double NClusPxMax = conf->getParameter<double>("NClusPxMax");
479  histname = "NumberOfPixelClustersVsGoodPVtx";
481  ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, NClusPxMin, 3. * NClusPxMax, "");
482  NumberOfPixelClustersVsGoodPVtx->setAxisTitle("Number of good PV (PU)", 1);
483  NumberOfPixelClustersVsGoodPVtx->setAxisTitle("Mean number of pixel clusters", 2);
484 
485  double NClusStrMin = conf->getParameter<double>("NClusStrMin");
486  double NClusStrMax = conf->getParameter<double>("NClusStrMax");
487  histname = "NumberOfStripClustersVsGoodPVtx";
489  ibooker.bookProfile(histname, histname, PVBin, PVMin, PVMax, NClusStrMin, 3. * NClusStrMax, "");
490  NumberOfStripClustersVsGoodPVtx->setAxisTitle("Number of good PV (PU)", 1);
491  NumberOfStripClustersVsGoodPVtx->setAxisTitle("Mean number of strip clusters", 2);
492  }
493 
494  if (doPlotsVsLUMI_ || doAllPlots) {
495  ibooker.setCurrentFolder(MEFolderName + "/LUMIanalysis");
496  int LUMIBin = conf->getParameter<int>("LUMIBin");
497  float LUMIMin = conf->getParameter<double>("LUMIMin");
498  float LUMIMax = conf->getParameter<double>("LUMIMax");
499 
500  histname = "NumberEventsVsLUMI";
501  NumberEventsOfVsLUMI = ibooker.book1D(histname, histname, LUMIBin, LUMIMin, LUMIMax);
502  NumberEventsOfVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
503  NumberEventsOfVsLUMI->setAxisTitle("Number of events", 2);
504 
505  histname = "NumberOfTracksVsLUMI";
506  NumberOfTracksVsLUMI = ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, 0., 2000., "");
507  NumberOfTracksVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
508  NumberOfTracksVsLUMI->setAxisTitle("Mean number of vertices", 2);
509 
510  if (doFractionPlot_) {
511  histname = "GoodTracksFractionVsLUMI";
512  GoodTracksFractionVsLUMI = ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, 0., 1.1, "");
513  GoodTracksFractionVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
514  GoodTracksFractionVsLUMI->setAxisTitle("Mean number of vertices", 2);
515  }
516 
517  histname = "NumberOfRecHitsPerTrackVsLUMI";
518  NumberOfRecHitsPerTrackVsLUMI = ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, 0., 200., "");
519  NumberOfRecHitsPerTrackVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
520  NumberOfRecHitsPerTrackVsLUMI->setAxisTitle("Mean number of vertices", 2);
521 
522  double PVMin = conf->getParameter<double>("PVMin");
523  double PVMax = conf->getParameter<double>("PVMax");
524 
525  histname = "NumberOfGoodPVtxVsLUMI";
526  NumberOfGoodPVtxVsLUMI = ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, PVMin, 3. * PVMax, "");
527  NumberOfGoodPVtxVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
528  NumberOfGoodPVtxVsLUMI->setAxisTitle("Mean number of vertices", 2);
529 
530  histname = "NumberOfGoodPVtxWO0VsLUMI";
532  ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, PVMin, 3. * PVMax, "");
533  NumberOfGoodPVtxWO0VsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
534  NumberOfGoodPVtxWO0VsLUMI->setAxisTitle("Mean number of vertices", 2);
535 
536  double NClusPxMin = conf->getParameter<double>("NClusPxMin");
537  double NClusPxMax = conf->getParameter<double>("NClusPxMax");
538  histname = "NumberOfPixelClustersVsGoodPVtx";
540  ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, NClusPxMin, 3. * NClusPxMax, "");
541  NumberOfPixelClustersVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
542  NumberOfPixelClustersVsLUMI->setAxisTitle("Mean number of pixel clusters", 2);
543 
544  double NClusStrMin = conf->getParameter<double>("NClusStrMin");
545  double NClusStrMax = conf->getParameter<double>("NClusStrMax");
546  histname = "NumberOfStripClustersVsLUMI";
548  ibooker.bookProfile(histname, histname, LUMIBin, LUMIMin, LUMIMax, NClusStrMin, 3. * NClusStrMax, "");
549  NumberOfStripClustersVsLUMI->setAxisTitle("scal lumi [10e30 Hz cm^{-2}]", 1);
550  NumberOfStripClustersVsLUMI->setAxisTitle("Mean number of strip clusters", 2);
551  }
552 
553  if (doPlotsVsBXlumi_) {
554  ibooker.setCurrentFolder(MEFolderName + "/PUmonitoring");
555  // get binning from the configuration
556  edm::ParameterSet BXlumiParameters = conf->getParameter<edm::ParameterSet>("BXlumiSetup");
557  int BXlumiBin = BXlumiParameters.getParameter<int>("BXlumiBin");
558  double BXlumiMin = BXlumiParameters.getParameter<double>("BXlumiMin");
559  double BXlumiMax = BXlumiParameters.getParameter<double>("BXlumiMax");
560 
561  histname = "NumberOfTracksVsBXlumi_" + CategoryName;
563  ibooker.bookProfile(histname, histname, BXlumiBin, BXlumiMin, BXlumiMax, TKNoMin, 3. * TKNoMax, "");
564  NumberOfTracksVsBXlumi->setAxisTitle("lumi BX [10^{30}Hzcm^{-2}]", 1);
565  NumberOfTracksVsBXlumi->setAxisTitle("Mean number of Tracks", 2);
566  }
567 
568  theTrackAnalyzer->initHisto(ibooker, iSetup, *conf);
569 
570  // book the Seed Property histograms
571  // ---------------------------------------------------------------------------------//
572 
573  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
574 
575  doAllSeedPlots = conf->getParameter<bool>("doSeedParameterHistos");
576  doSeedNumberPlot = conf->getParameter<bool>("doSeedNumberHisto");
577  doSeedLumiAnalysis_ = conf->getParameter<bool>("doSeedLumiAnalysis");
578  doSeedVsClusterPlot = conf->getParameter<bool>("doSeedVsClusterHisto");
579  // if (doAllPlots) doAllSeedPlots=true;
580 
582  (doAllSeedPlots || conf->getParameter<bool>("doSeedPTHisto") || conf->getParameter<bool>("doSeedETAHisto") ||
583  conf->getParameter<bool>("doSeedPHIHisto") || conf->getParameter<bool>("doSeedPHIVsETAHisto") ||
584  conf->getParameter<bool>("doSeedThetaHisto") || conf->getParameter<bool>("doSeedQHisto") ||
585  conf->getParameter<bool>("doSeedDxyHisto") || conf->getParameter<bool>("doSeedDzHisto") ||
586  conf->getParameter<bool>("doSeedNRecHitsHisto") || conf->getParameter<bool>("doSeedNVsPhiProf") ||
587  conf->getParameter<bool>("doSeedNVsEtaProf"));
588 
589  edm::InputTag seedProducer = conf->getParameter<edm::InputTag>("SeedProducer");
590 
591  if (doAllSeedPlots || doSeedNumberPlot) {
592  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
593  histname = "NumberOfSeeds_" + seedProducer.label() + "_" + CategoryName;
594  NumberOfSeeds = ibooker.book1D(histname, histname, TKNoSeedBin, TKNoSeedMin, TKNoSeedMax);
595  NumberOfSeeds->setAxisTitle("Number of Seeds per Event", 1);
596  NumberOfSeeds->setAxisTitle("Number of Events", 2);
597 
598  if (doSeedLumiAnalysis_) {
599  ibooker.setCurrentFolder(MEFolderName + "/LSanalysis");
600  histname = "NumberOfSeeds_lumiFlag_" + seedProducer.label() + "_" + CategoryName;
601  NumberOfSeeds_lumiFlag = ibooker.book1D(histname, histname, TKNoSeedBin, TKNoSeedMin, TKNoSeedMax);
602  NumberOfSeeds_lumiFlag->setAxisTitle("Number of Seeds per Event", 1);
603  NumberOfSeeds_lumiFlag->setAxisTitle("Number of Events", 2);
604  }
605  }
606 
607  if (doAllSeedPlots || doSeedVsClusterPlot) {
608  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
609 
610  ClusterLabels = conf->getParameter<std::vector<std::string> >("ClusterLabels");
611 
612  std::vector<double> histoMin, histoMax;
613  std::vector<int> histoBin; //these vectors are for max min and nbins in histograms
614 
615  int NClusPxBin = conf->getParameter<int>("NClusPxBin");
616  double NClusPxMin = conf->getParameter<double>("NClusPxMin");
617  double NClusPxMax = conf->getParameter<double>("NClusPxMax");
618 
619  int NClusStrBin = conf->getParameter<int>("NClusStrBin");
620  double NClusStrMin = conf->getParameter<double>("NClusStrMin");
621  double NClusStrMax = conf->getParameter<double>("NClusStrMax");
622 
623  setMaxMinBin(
624  histoMin, histoMax, histoBin, NClusStrMin, NClusStrMax, NClusStrBin, NClusPxMin, NClusPxMax, NClusPxBin);
625 
626  for (uint i = 0; i < ClusterLabels.size(); i++) {
627  histname = "SeedsVsClusters_" + seedProducer.label() + "_Vs_" + ClusterLabels[i] + "_" + CategoryName;
628  SeedsVsClusters.push_back(dynamic_cast<MonitorElement*>(ibooker.book2D(
629  histname, histname, histoBin[i], histoMin[i], histoMax[i], TKNoSeedBin, TKNoSeedMin, TKNoSeedMax)));
630  SeedsVsClusters[i]->setAxisTitle("Number of Clusters", 1);
631  SeedsVsClusters[i]->setAxisTitle("Number of Seeds", 2);
632  SeedsVsClusters[i]->getTH2F()->SetCanExtend(TH1::kAllAxes);
633  }
634  }
635 
636  if (doRegionPlots) {
637  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
638 
639  int regionBin = conf->getParameter<int>("RegionSizeBin");
640  double regionMin = conf->getParameter<double>("RegionSizeMin");
641  double regionMax = conf->getParameter<double>("RegionSizeMax");
642 
643  histname = "TrackingRegionsNumberOf_" + seedProducer.label() + "_" + CategoryName;
644  NumberOfTrackingRegions = ibooker.book1D(histname, histname, regionBin, regionMin, regionMax);
645  NumberOfTrackingRegions->setAxisTitle("Number of TrackingRegions per Event", 1);
646  NumberOfTrackingRegions->setAxisTitle("Number of Events", 2);
647  }
648 
649  doTkCandPlots = conf->getParameter<bool>("doTrackCandHistos");
650  // if (doAllPlots) doTkCandPlots=true;
651 
652  if (doTkCandPlots) {
653  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
654 
655  edm::InputTag tcProducer = conf->getParameter<edm::InputTag>("TCProducer");
656 
657  histname = "NumberOfTrackCandidates_" + tcProducer.label() + "_" + CategoryName;
658  NumberOfTrackCandidates = ibooker.book1D(histname, histname, TCNoBin, TCNoMin, TCNoMax);
659  NumberOfTrackCandidates->setAxisTitle("Number of Track Candidates per Event", 1);
660  NumberOfTrackCandidates->setAxisTitle("Number of Event", 2);
661 
662  histname = "FractionOfCandOverSeeds_" + tcProducer.label() + "_" + CategoryName;
663  FractionCandidatesOverSeeds = ibooker.book1D(histname, histname, 101, 0., 1.01);
664  FractionCandidatesOverSeeds->setAxisTitle("Number of Track Candidates / Number of Seeds per Event", 1);
665  FractionCandidatesOverSeeds->setAxisTitle("Number of Event", 2);
666  }
667 
668  theTrackBuildingAnalyzer->initHisto(ibooker, *conf);
669 
670  if (doLumiAnalysis) {
674  }
675 
676  if (doAllSeedPlots || doSeedNumberPlot) {
677  if (doSeedLumiAnalysis_)
679  }
680 
682  ClusterLabels = conf->getParameter<std::vector<std::string> >("ClusterLabels");
683 
684  std::vector<double> histoMin, histoMax;
685  std::vector<int> histoBin; //these vectors are for max min and nbins in histograms
686 
687  int NClusStrBin = conf->getParameter<int>("NClusStrBin");
688  double NClusStrMin = conf->getParameter<double>("NClusStrMin");
689  double NClusStrMax = conf->getParameter<double>("NClusStrMax");
690 
691  int NClusPxBin = conf->getParameter<int>("NClusPxBin");
692  double NClusPxMin = conf->getParameter<double>("NClusPxMin");
693  double NClusPxMax = conf->getParameter<double>("NClusPxMax");
694 
695  int NTrk2DBin = conf->getParameter<int>("NTrk2DBin");
696  double NTrk2DMin = conf->getParameter<double>("NTrk2DMin");
697  double NTrk2DMax = conf->getParameter<double>("NTrk2DMax");
698 
699  setMaxMinBin(
700  histoMin, histoMax, histoBin, NClusStrMin, NClusStrMax, NClusStrBin, NClusPxMin, NClusPxMax, NClusPxBin);
701 
702  ibooker.setCurrentFolder(MEFolderName + "/HitProperties");
703 
704  for (uint i = 0; i < ClusterLabels.size(); i++) {
705  ibooker.setCurrentFolder(MEFolderName + "/HitProperties");
706  histname = "TracksVs" + ClusterLabels[i] + "Cluster_" + CategoryName;
707  NumberOfTrkVsClusters.push_back(dynamic_cast<MonitorElement*>(
708  ibooker.book2D(histname, histname, histoBin[i], histoMin[i], histoMax[i], NTrk2DBin, NTrk2DMin, NTrk2DMax)));
709  std::string title = "Number of " + ClusterLabels[i] + " Clusters";
710  if (ClusterLabels[i] == "Tot")
711  title = "# of Clusters in (Pixel+Strip) Detectors";
712  NumberOfTrkVsClusters[i]->setAxisTitle(title, 1);
713  NumberOfTrkVsClusters[i]->setAxisTitle("Number of Tracks", 2);
714  NumberOfTrkVsClusters[i]->getTH1()->SetCanExtend(TH1::kXaxis);
715  }
716  }
717 
718  // Initialize the GenericTriggerEventFlag
719  if (genTriggerEventFlag_->on())
720  genTriggerEventFlag_->initRun(iRun, iSetup);
721 }
T getParameter(std::string const &) const
std::vector< MonitorElement * > NumberOfTrkVsClusters
MonitorElement * FractionOfGoodTracks
virtual void setMaxMinBin(std::vector< double > &, std::vector< double > &, std::vector< int > &, double, double, int, double, double, int)
MonitorElement * NumberOfTracksVsBX
TrackAnalyzer * theTrackAnalyzer
MonitorElement * NumberOfRecHitsPerTrackVsBX
MonitorElement * NumberOfRecHitsPerTrackVsLUMI
MonitorElement * NumberEventsOfVsGoodPVtx
MonitorElement * FractionCandidatesOverSeeds
void setLumiFlag()
this ME is meant to be stored for each luminosity section
std::string MEFolderName
MonitorElement * GoodTracksFractionVsLUMI
MonitorElement * NumberOfPVtxVsGoodPVtx
MonitorElement * NumberOfMeanRecHitsPerTrack
MonitorElement * NumberOfTracksVsGoodPVtx
void initHisto(DQMStore::IBooker &ibooker, const edm::ParameterSet &)
MonitorElement * NumberOfStripClustersVsLUMI
MonitorElement * GoodTracksFractionVsLS
MonitorElement * NumberofTracks_Hardvtx_PUvtx
std::string Quality_
MonitorElement * NumberOfGoodPVtxWO0VsLUMI
MonitorElement * NumberOfSeeds
MonitorElement * NumberOfTrackingRegions
void initHisto(DQMStore::IBooker &ibooker, const edm::EventSetup &, const edm::ParameterSet &)
MonitorElement * NumberOfGoodPVtxVsLS
MonitorElement * NumberOfGoodPVtxVsLUMI
MonitorElement * NumberOfTracks_PUvtx
MonitorElement * NumberOfTracksVsLS
MonitorElement * NumberOfGoodPVtxWO0VsLS
bool getMapped(key_type const &k, value_type &result) const
Definition: Registry.cc:17
MonitorElement * NumberOfTracksVsPUPVtx
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
MonitorElement * GoodTracksFractionVsGoodPVtx
MonitorElement * NumberOfRecHitsPerTrackVsGoodPVtx
std::string histname
edm::ParameterSetID confID_
MonitorElement * NumberOfPixelClustersVsLUMI
std::vector< VertexMonitor * > theVertexMonitor
MonitorElement * NumberOfTracksVsBXlumi
bool doGeneralPropertiesPlots_
TrackBuildingAnalyzer * theTrackBuildingAnalyzer
std::string AlgoName_
MonitorElement * NumberOfMeanLayersPerTrack
GenericTriggerEventFlag * genTriggerEventFlag_
MonitorElement * GoodTracksFractionVsBX
std::string const & label() const
Definition: InputTag.h:36
MonitorElement * NumberOfSeeds_lumiFlag
MonitorElement * NumberofTracks_Hardvtx
MonitorElement * NumberOfTrackCandidates
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
MonitorElement * NumberOfGoodPVtxVsBX
MonitorElement * NumberEventsOfVsLUMI
std::vector< MonitorElement * > SeedsVsClusters
MonitorElement * NumberOfTracks_lumiFlag
MonitorElement * NumberOfTracks
static Registry * instance()
Definition: Registry.cc:12
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)
void TrackingMonitor::doProfileX ( TH2 *  th2,
MonitorElement me 
)
private
void TrackingMonitor::doProfileX ( MonitorElement th2m,
MonitorElement me 
)
private
void TrackingMonitor::dqmBeginLuminosityBlock ( const edm::LuminosityBlock lumi,
const edm::EventSetup eSetup 
)
override
void TrackingMonitor::dqmEndRun ( const edm::Run ,
const edm::EventSetup  
)
override

Definition at line 1121 of file TrackingMonitor.cc.

1121 {}
void TrackingMonitor::setMaxMinBin ( std::vector< double > &  arrayMin,
std::vector< double > &  arrayMax,
std::vector< int > &  arrayBin,
double  smin,
double  smax,
int  sbin,
double  pmin,
double  pmax,
int  pbin 
)
virtual

Definition at line 1123 of file TrackingMonitor.cc.

References ClusterLabels, mps_fire::i, and parallelization::uint.

Referenced by bookHistograms().

1131  {
1132  arrayMin.resize(ClusterLabels.size());
1133  arrayMax.resize(ClusterLabels.size());
1134  arrayBin.resize(ClusterLabels.size());
1135 
1136  for (uint i = 0; i < ClusterLabels.size(); ++i) {
1137  if (ClusterLabels[i] == "Pix") {
1138  arrayMin[i] = pmin;
1139  arrayMax[i] = pmax;
1140  arrayBin[i] = pbin;
1141  } else if (ClusterLabels[i] == "Strip") {
1142  arrayMin[i] = smin;
1143  arrayMax[i] = smax;
1144  arrayBin[i] = sbin;
1145  } else if (ClusterLabels[i] == "Tot") {
1146  arrayMin[i] = smin;
1147  arrayMax[i] = smax + pmax;
1148  arrayBin[i] = sbin;
1149  } else {
1150  edm::LogWarning("TrackingMonitor") << "Cluster Label " << ClusterLabels[i]
1151  << " not defined, using strip parameters ";
1152  arrayMin[i] = smin;
1153  arrayMax[i] = smax;
1154  arrayBin[i] = sbin;
1155  }
1156  }
1157 }
std::vector< std::string > ClusterLabels
void TrackingMonitor::setNclus ( const edm::Event iEvent,
std::vector< int > &  arrayNclus 
)
virtual

Definition at line 1159 of file TrackingMonitor.cc.

References ClusterLabels, DEFINE_FWK_MODULE, edm::Event::getByToken(), mps_fire::i, edm::HandleBase::isValid(), pixelClustersToken_, stripClustersToken_, and parallelization::uint.

Referenced by analyze().

1159  {
1160  int ncluster_pix = -1;
1161  int ncluster_strip = -1;
1162 
1164  iEvent.getByToken(stripClustersToken_, strip_clusters);
1166  iEvent.getByToken(pixelClustersToken_, pixel_clusters);
1167 
1168  if (strip_clusters.isValid() && pixel_clusters.isValid()) {
1169  ncluster_pix = (*pixel_clusters).dataSize();
1170  ncluster_strip = (*strip_clusters).dataSize();
1171  }
1172 
1173  arrayNclus.resize(ClusterLabels.size());
1174  for (uint i = 0; i < ClusterLabels.size(); ++i) {
1175  if (ClusterLabels[i] == "Pix")
1176  arrayNclus[i] = ncluster_pix;
1177  else if (ClusterLabels[i] == "Strip")
1178  arrayNclus[i] = ncluster_strip;
1179  else if (ClusterLabels[i] == "Tot")
1180  arrayNclus[i] = ncluster_pix + ncluster_strip;
1181  else {
1182  edm::LogWarning("TrackingMonitor") << "Cluster Label " << ClusterLabels[i]
1183  << " not defined using stri parametrs ";
1184  arrayNclus[i] = ncluster_strip;
1185  }
1186  }
1187 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
bool isValid() const
Definition: HandleBase.h:70
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > pixelClustersToken_
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > stripClustersToken_
std::vector< std::string > ClusterLabels

Member Data Documentation

std::string TrackingMonitor::AlgoName_
private

Definition at line 115 of file TrackingMonitor.h.

Referenced by bookHistograms(), and TrackingMonitor().

edm::EDGetTokenT<edm::View<reco::Track> > TrackingMonitor::allTrackToken_
private

Definition at line 95 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

edm::InputTag TrackingMonitor::bsSrc_
private

Definition at line 90 of file TrackingMonitor.h.

Referenced by TrackingMonitor().

edm::EDGetTokenT<reco::BeamSpot> TrackingMonitor::bsSrcToken_
private

Definition at line 92 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

std::string TrackingMonitor::builderName
private

Definition at line 193 of file TrackingMonitor.h.

Referenced by analyze().

std::vector<std::string> TrackingMonitor::ClusterLabels
private

Definition at line 140 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), setMaxMinBin(), and setNclus().

edm::ParameterSetID TrackingMonitor::confID_
private

Definition at line 87 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

StringCutObjectSelector<reco::Track, true> TrackingMonitor::denSelection_
private

Definition at line 223 of file TrackingMonitor.h.

Referenced by analyze().

bool TrackingMonitor::doAllPlots
private

Definition at line 200 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

bool TrackingMonitor::doAllSeedPlots
private

Definition at line 199 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and dqmBeginLuminosityBlock().

bool TrackingMonitor::doDCAPlots_
private

Definition at line 201 of file TrackingMonitor.h.

bool TrackingMonitor::doFractionPlot_
private

Definition at line 218 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and TrackingMonitor().

bool TrackingMonitor::doGeneralPropertiesPlots_
private

Definition at line 202 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

bool TrackingMonitor::doHitPropertiesPlots_
private

Definition at line 203 of file TrackingMonitor.h.

bool TrackingMonitor::doLumiAnalysis
private

Definition at line 197 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and dqmBeginLuminosityBlock().

bool TrackingMonitor::doMVAPlots
private

Definition at line 205 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

bool TrackingMonitor::doPlotsVsBX_
private

Definition at line 217 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and TrackingMonitor().

bool TrackingMonitor::doPlotsVsBXlumi_
private

Definition at line 214 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and TrackingMonitor().

bool TrackingMonitor::doPlotsVsGoodPVtx_
private

Definition at line 215 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and TrackingMonitor().

bool TrackingMonitor::doPlotsVsLUMI_
private

Definition at line 216 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and TrackingMonitor().

bool TrackingMonitor::doProfilesVsLS_
private

Definition at line 198 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

bool TrackingMonitor::doPUmonitoring_
private

Definition at line 213 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), TrackingMonitor(), and ~TrackingMonitor().

bool TrackingMonitor::doRegionCandidatePlots
private

Definition at line 207 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

bool TrackingMonitor::doRegionPlots
private

Definition at line 206 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and TrackingMonitor().

bool TrackingMonitor::doSeedLumiAnalysis_
private

Definition at line 209 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and dqmBeginLuminosityBlock().

bool TrackingMonitor::doSeedNumberPlot
private

Definition at line 208 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and dqmBeginLuminosityBlock().

bool TrackingMonitor::doSeedVsClusterPlot
private

Definition at line 210 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

bool TrackingMonitor::doTkCandPlots
private

Definition at line 204 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

bool TrackingMonitor::doTrackerSpecific_
private

Definition at line 196 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::FractionCandidatesOverSeeds
private

Definition at line 144 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::FractionOfGoodTracks
private

Definition at line 131 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

GenericTriggerEventFlag* TrackingMonitor::genTriggerEventFlag_
private

Definition at line 220 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and ~TrackingMonitor().

MonitorElement* TrackingMonitor::GoodTracksFractionVsBX
private

Definition at line 163 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::GoodTracksFractionVsGoodPVtx
private

Definition at line 174 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::GoodTracksFractionVsLS
private

Definition at line 155 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::GoodTracksFractionVsLUMI
private

Definition at line 183 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

std::string TrackingMonitor::histname
private

Definition at line 83 of file TrackingMonitor.h.

Referenced by bookHistograms().

edm::EDGetTokenT<LumiScalersCollection> TrackingMonitor::lumiscalersToken_
private

Definition at line 104 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

std::string TrackingMonitor::MEFolderName
private

Definition at line 82 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::tuple<edm::EDGetTokenT<MVACollection>, edm::EDGetTokenT<QualityMaskCollection> > > TrackingMonitor::mvaQualityTokens_
private

Definition at line 111 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

edm::EDGetTokenT<edm::View<reco::Track> > TrackingMonitor::mvaTrackToken_
private

Definition at line 112 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

MonitorElement* TrackingMonitor::NumberEventsOfVsBX
private

Definition at line 161 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberEventsOfVsGoodPVtx
private

Definition at line 173 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberEventsOfVsLS
private

Definition at line 153 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberEventsOfVsLUMI
private

Definition at line 181 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfGoodPVtxVsBX
private

Definition at line 165 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfGoodPVtxVsLS
private

Definition at line 157 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfGoodPVtxVsLUMI
private

Definition at line 185 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfGoodPVtxWO0VsBX
private

Definition at line 166 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfGoodPVtxWO0VsLS
private

Definition at line 158 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfGoodPVtxWO0VsLUMI
private

Definition at line 186 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfMeanLayersPerTrack
private

Definition at line 128 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfMeanRecHitsPerTrack
private

Definition at line 127 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfPixelClustersVsGoodPVtx
private

Definition at line 177 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfPixelClustersVsLUMI
private

Definition at line 187 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfPVtxVsGoodPVtx
private

Definition at line 176 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfRecHitsPerTrackVsBX
private

Definition at line 164 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfRecHitsPerTrackVsGoodPVtx
private

Definition at line 175 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfRecHitsPerTrackVsLS
private

Definition at line 156 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfRecHitsPerTrackVsLUMI
private

Definition at line 184 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfSeeds
private

Definition at line 137 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfSeeds_lumiFlag
private

Definition at line 138 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and dqmBeginLuminosityBlock().

MonitorElement* TrackingMonitor::NumberOfStripClustersVsGoodPVtx
private

Definition at line 178 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfStripClustersVsLUMI
private

Definition at line 188 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTrackCandidates
private

Definition at line 143 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTrackingRegions
private

Definition at line 134 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracks
private

Definition at line 123 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberofTracks_Hardvtx
private

Definition at line 125 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberofTracks_Hardvtx_PUvtx
private

Definition at line 126 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracks_lumiFlag
private

Definition at line 191 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and dqmBeginLuminosityBlock().

MonitorElement* TrackingMonitor::NumberOfTracks_PUvtx
private

Definition at line 124 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracksVsBX
private

Definition at line 162 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracksVsBXlumi
private

Definition at line 168 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracksVsGoodPVtx
private

Definition at line 171 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracksVsLS
private

Definition at line 154 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracksVsLUMI
private

Definition at line 182 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTracksVsPUPVtx
private

Definition at line 172 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTrkVsClus
private

Definition at line 148 of file TrackingMonitor.h.

std::vector<MonitorElement*> TrackingMonitor::NumberOfTrkVsClusters
private

Definition at line 147 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* TrackingMonitor::NumberOfTrkVsPixelClus
private

Definition at line 150 of file TrackingMonitor.h.

MonitorElement* TrackingMonitor::NumberOfTrkVsStripClus
private

Definition at line 149 of file TrackingMonitor.h.

StringCutObjectSelector<reco::Track, true> TrackingMonitor::numSelection_
private

Definition at line 222 of file TrackingMonitor.h.

Referenced by analyze().

edm::InputTag TrackingMonitor::pixelClusterInputTag_
private

Definition at line 107 of file TrackingMonitor.h.

Referenced by TrackingMonitor().

edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster> > TrackingMonitor::pixelClustersToken_
private

Definition at line 109 of file TrackingMonitor.h.

Referenced by setNclus(), and TrackingMonitor().

int TrackingMonitor::pvNDOF_
private

Definition at line 224 of file TrackingMonitor.h.

Referenced by analyze().

edm::InputTag TrackingMonitor::pvSrc_
private

Definition at line 91 of file TrackingMonitor.h.

Referenced by TrackingMonitor().

edm::EDGetTokenT<reco::VertexCollection> TrackingMonitor::pvSrcToken_
private

Definition at line 93 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

std::string TrackingMonitor::Quality_
private

Definition at line 114 of file TrackingMonitor.h.

Referenced by bookHistograms(), and TrackingMonitor().

edm::EDGetTokenT<reco::CandidateView> TrackingMonitor::regionCandidateToken_
private

Definition at line 102 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

edm::EDGetTokenT<TrackingRegionsSeedingLayerSets> TrackingMonitor::regionLayerSetsToken_
private

Definition at line 101 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

edm::EDGetTokenT<edm::OwnVector<TrackingRegion> > TrackingMonitor::regionToken_
private

Definition at line 100 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

bool TrackingMonitor::runTrackBuildingAnalyzerForSeed
private

Definition at line 211 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<std::vector<SeedStopInfo> > TrackingMonitor::seedStopInfoToken_
private

Definition at line 99 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

std::vector<MonitorElement*> TrackingMonitor::SeedsVsClusters
private

Definition at line 139 of file TrackingMonitor.h.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<edm::View<TrajectorySeed> > TrackingMonitor::seedToken_
private

Definition at line 98 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

edm::InputTag TrackingMonitor::stripClusterInputTag_
private

Definition at line 106 of file TrackingMonitor.h.

Referenced by TrackingMonitor().

edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > TrackingMonitor::stripClustersToken_
private

Definition at line 108 of file TrackingMonitor.h.

Referenced by setNclus(), and TrackingMonitor().

GetLumi* TrackingMonitor::theLumiDetails_
private

Definition at line 120 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

TrackAnalyzer* TrackingMonitor::theTrackAnalyzer
private
TrackBuildingAnalyzer* TrackingMonitor::theTrackBuildingAnalyzer
private

Definition at line 118 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), and ~TrackingMonitor().

edm::ESHandle<TransientTrackingRecHitBuilder> TrackingMonitor::theTTRHBuilder
private

Definition at line 194 of file TrackingMonitor.h.

Referenced by analyze().

std::vector<VertexMonitor*> TrackingMonitor::theVertexMonitor
private

Definition at line 119 of file TrackingMonitor.h.

Referenced by analyze(), bookHistograms(), TrackingMonitor(), and ~TrackingMonitor().

edm::EDGetTokenT<TrackCandidateCollection> TrackingMonitor::trackCandidateToken_
private

Definition at line 97 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().

edm::EDGetTokenT<edm::View<reco::Track> > TrackingMonitor::trackToken_
private

Definition at line 96 of file TrackingMonitor.h.

Referenced by analyze(), and TrackingMonitor().