CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes
PackedCandidateTrackValidator Class Reference
Inheritance diagram for PackedCandidateTrackValidator:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 PackedCandidateTrackValidator (const edm::ParameterSet &pset)
 
 ~PackedCandidateTrackValidator () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () 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 () 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
 
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)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Types

enum  {
  sf_AllTracks = 0, sf_AssociatedToPC = 1, sf_PCIsCharged = 2, sf_PCHasTrack = 3,
  sf_PCIsNotElectron = 4, sf_PCHasHits = 5, sf_PCNdofNot0 = 6, sf_NoMissingInnerHits = 7
}
 

Private Attributes

MonitorElementh_diffCharge
 
PackedValueCheck< Float16Helper > h_diffCovDszDsz
 
PackedValueCheck< Float16Helper > h_diffCovDxyDsz
 
PackedValueCheck< Float16Helper > h_diffCovDxyDxy
 
PackedValueCheck< LogIntHelper > h_diffCovLambdaDsz
 
PackedValueCheck< LogIntHelper > h_diffCovLambdaLambda
 
PackedValueCheck< LogIntHelper > h_diffCovPhiDxy
 
PackedValueCheck< LogIntHelper > h_diffCovPhiPhi
 
PackedValueCheck< LogIntHelper > h_diffCovQoverpQoverp
 
MonitorElementh_diffDszError
 
PackedValueCheck< Float16Helper > h_diffDxyAssocPV
 
MonitorElementh_diffDxyError
 
MonitorElementh_diffDxyPV
 
PackedValueCheck< Float16Helper > h_diffDzAssocPV
 
MonitorElementh_diffDzError
 
MonitorElementh_diffDzPV
 
MonitorElementh_diffEta
 
MonitorElementh_diffEtaError
 
MonitorElementh_diffHitPatternHasValidHitInFirstPixelBarrel
 
MonitorElementh_diffHitPatternNumberOfLostInnerHits
 
MonitorElementh_diffHitPatternNumberOfValidHits
 
MonitorElementh_diffHitPatternNumberOfValidPixelHits
 
MonitorElementh_diffHitPatternPixelLayersWithMeasurement
 
MonitorElementh_diffHitPatternStripLayersWithMeasurement
 
MonitorElementh_diffHitPatternTrackerLayersWithMeasurement
 
MonitorElementh_diffIsHighPurity
 
MonitorElementh_diffLostInnerHits
 
MonitorElementh_diffNdof
 
MonitorElementh_diffNormalizedChi2
 
MonitorElementh_diffNumberOfHits
 
MonitorElementh_diffNumberOfPixelHits
 
MonitorElementh_diffNumberOfPixelLayers
 
MonitorElementh_diffNumberOfStripLayers
 
MonitorElementh_diffPhi
 
MonitorElementh_diffPt
 
MonitorElementh_diffPtError
 
MonitorElementh_diffTrackDxyAssocPV
 
MonitorElementh_diffTrackDxyError
 
MonitorElementh_diffTrackDzAssocPV
 
MonitorElementh_diffTrackDzError
 
MonitorElementh_diffVx
 
MonitorElementh_diffVy
 
MonitorElementh_diffVz
 
MonitorElementh_numberHitsOverMax
 
MonitorElementh_numberLayersOverMax
 
MonitorElementh_numberPixelHitsOverMax
 
MonitorElementh_numberPixelLayersOverMax
 
MonitorElementh_numberStripHitsOverMax
 
MonitorElementh_numberStripLayersOverMax
 
MonitorElementh_selectionFlow
 
std::string rootFolder_
 
edm::EDGetTokenT< edm::View< reco::Track > > tracksToken_
 
edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > trackToPackedCandidateToken_
 
edm::EDGetTokenT< reco::VertexCollectionverticesToken_
 

Additional Inherited Members

- 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
 
- 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 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 DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 434 of file PackedCandidateTrackValidator.cc.

Member Enumeration Documentation

anonymous enum
private

Constructor & Destructor Documentation

PackedCandidateTrackValidator::PackedCandidateTrackValidator ( const edm::ParameterSet pset)

Definition at line 527 of file PackedCandidateTrackValidator.cc.

527  :
528  tracksToken_(consumes<edm::View<reco::Track>>(iConfig.getUntrackedParameter<edm::InputTag>("tracks"))),
529  verticesToken_(consumes<reco::VertexCollection>(iConfig.getUntrackedParameter<edm::InputTag>("vertices"))),
530  trackToPackedCandidateToken_(consumes<edm::Association<pat::PackedCandidateCollection>>(iConfig.getUntrackedParameter<edm::InputTag>("trackToPackedCandidateAssociation"))),
531  rootFolder_(iConfig.getUntrackedParameter<std::string>("rootFolder")),
532  h_diffDxyAssocPV(RangeAbs(0.001)),
533  h_diffDzAssocPV(RangeAbs(0.001)),
534  h_diffCovQoverpQoverp(Range(-1e-6, 0.13), -15, 0), // despite of ceil in pack, there is rounding in double->float
535  h_diffCovLambdaLambda(Range(-1e-6, 0.13), -20, -5), // despite of ceil in pack, there is rounding in double->float
536  h_diffCovLambdaDsz(RangeAbs(0.13), -17, -4),
537  h_diffCovPhiPhi(RangeAbs(0.13), -15, 0),
538  h_diffCovPhiDxy(RangeAbs(0.13), -17, -4),
539  h_diffCovDxyDxy(RangeAbs(0.001)),
540  h_diffCovDxyDsz(RangeAbs(0.001)),
541  h_diffCovDszDsz(RangeAbs(0.001))
542 {}
PackedValueCheck< LogIntHelper > h_diffCovLambdaDsz
PackedValueCheck< Float16Helper > h_diffDzAssocPV
PackedValueCheck< Float16Helper > h_diffDxyAssocPV
edm::EDGetTokenT< edm::View< reco::Track > > tracksToken_
PixelRecoRange< float > Range
edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > trackToPackedCandidateToken_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
PackedValueCheck< LogIntHelper > h_diffCovLambdaLambda
PackedValueCheck< LogIntHelper > h_diffCovPhiDxy
PackedValueCheck< Float16Helper > h_diffCovDxyDxy
PackedValueCheck< LogIntHelper > h_diffCovPhiPhi
edm::EDGetTokenT< reco::VertexCollection > verticesToken_
PackedValueCheck< LogIntHelper > h_diffCovQoverpQoverp
PackedValueCheck< Float16Helper > h_diffCovDxyDsz
PackedValueCheck< Float16Helper > h_diffCovDszDsz
PackedCandidateTrackValidator::~PackedCandidateTrackValidator ( )
override

Definition at line 544 of file PackedCandidateTrackValidator.cc.

544 {}

Member Function Documentation

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

Definition at line 655 of file PackedCandidateTrackValidator.cc.

References funct::abs(), reco::TrackBase::charge(), reco::TrackBase::chi2(), reco::TrackBase::covariance(), DEFINE_FWK_MODULE, reco::deltaPhi(), reco::TrackBase::dszError(), reco::TrackBase::dxy(), reco::TrackBase::dxyError(), reco::TrackBase::dz(), reco::TrackBase::dzError(), MillePedeFileConverter_cfg::e, reco::TrackBase::eta(), reco::TrackBase::etaError(), MonitorElement::Fill(), edm::Event::getByToken(), h_diffCharge, h_diffCovDszDsz, h_diffCovDxyDsz, h_diffCovDxyDxy, h_diffCovLambdaDsz, h_diffCovLambdaLambda, h_diffCovPhiDxy, h_diffCovPhiPhi, h_diffCovQoverpQoverp, h_diffDszError, h_diffDxyAssocPV, h_diffDxyError, h_diffDxyPV, h_diffDzAssocPV, h_diffDzError, h_diffDzPV, h_diffEta, h_diffEtaError, h_diffHitPatternHasValidHitInFirstPixelBarrel, h_diffHitPatternNumberOfLostInnerHits, h_diffHitPatternNumberOfValidHits, h_diffHitPatternNumberOfValidPixelHits, h_diffHitPatternPixelLayersWithMeasurement, h_diffHitPatternStripLayersWithMeasurement, h_diffHitPatternTrackerLayersWithMeasurement, h_diffIsHighPurity, h_diffLostInnerHits, h_diffNdof, h_diffNormalizedChi2, h_diffNumberOfHits, h_diffNumberOfPixelHits, h_diffNumberOfPixelLayers, h_diffNumberOfStripLayers, h_diffPhi, h_diffPt, h_diffPtError, h_diffTrackDxyAssocPV, h_diffTrackDxyError, h_diffTrackDzAssocPV, h_diffTrackDzError, h_diffVx, h_diffVy, h_diffVz, h_numberHitsOverMax, h_numberLayersOverMax, h_numberPixelHitsOverMax, h_numberPixelLayersOverMax, h_numberStripHitsOverMax, h_numberStripLayersOverMax, h_selectionFlow, reco::HitPattern::hasValidHitInPixelLayer(), reco::TrackBase::highPurity, reco::TrackBase::hitPattern(), mps_fire::i, reco::TrackBase::i_dsz, reco::TrackBase::i_dxy, reco::TrackBase::i_lambda, reco::TrackBase::i_phi, reco::TrackBase::i_qoverp, edm::Ref< C, T, F >::id(), edm::Ref< C, T, F >::isNull(), edm::Ref< C, T, F >::key(), reco::HitPattern::MISSING_INNER_HITS, reco::HitPattern::MISSING_OUTER_HITS, reco::TrackBase::momentum(), pat::PackedCandidate::moreLostInnerHits, reco::TrackBase::ndof(), pat::PackedCandidate::noLostInnerHits, reco::TrackBase::normalizedChi2(), reco::HitPattern::numberOfLostHits(), reco::HitPattern::numberOfValidHits(), reco::HitPattern::numberOfValidPixelHits(), reco::HitPattern::numberOfValidStripHits(), pat::PackedCandidate::oneLostInnerHit, reco::TrackBase::phi(), reco::TrackBase::phiError(), GeomDetEnumerators::PixelBarrel, reco::HitPattern::pixelLayersWithMeasurement(), reco::Vertex::position(), reco::TrackBase::pt(), reco::TrackBase::ptError(), MetAnalyzer::pv(), reco::TrackBase::quality(), reco::TrackBase::referencePoint(), sf_AllTracks, sf_AssociatedToPC, sf_NoMissingInnerHits, sf_PCHasHits, sf_PCHasTrack, sf_PCIsCharged, sf_PCIsNotElectron, sf_PCNdofNot0, reco::HitPattern::stripLayersWithMeasurement(), HiIsolationCommonParameters_cff::track, reco::HitPattern::trackerLayersWithMeasurement(), pat::PackedCandidate::trackPixelHitsMask, l1t::tracks, tracksToken_, pat::PackedCandidate::trackStripHitsMask, trackToPackedCandidateToken_, heppy_batch::val, pat::PackedCandidate::validHitInFirstPixelBarrelLayer, electrons_cff::vertices, verticesToken_, reco::TrackBase::vx(), reco::TrackBase::vy(), and reco::TrackBase::vz().

655  {
657  iEvent.getByToken(tracksToken_, htracks);
658  const auto& tracks = *htracks;
659 
661  iEvent.getByToken(verticesToken_, hvertices);
662  const auto& vertices = *hvertices;
663 
664  if(vertices.empty())
665  return;
666  const reco::Vertex& pv = vertices[0];
667 
670  const auto& trackToPackedCandidate = *hassoc;
671 
672  for(size_t i=0; i<tracks.size(); ++i) {
673  auto trackPtr = tracks.ptrAt(i);
674  const reco::Track& track = *trackPtr;
676 
677  pat::PackedCandidateRef pcRef = trackToPackedCandidate[trackPtr];
678  if(pcRef.isNull()) {
679  continue;
680  }
682 
683  // Filter out neutral PackedCandidates, some of them may have track associated, and for those the charge comparison fails
684  if(pcRef->charge() == 0) {
685  continue;
686  }
688 
689  const reco::Track *trackPcPtr = pcRef->bestTrack();
690  if(!trackPcPtr) {
691  continue;
692  }
694 
695  // Filter out electrons to avoid comparisons to PackedCandidates with GsfTrack
696  if(std::abs(pcRef->pdgId()) == 11) {
697  continue;
698  }
700 
701  // Filter out PackedCandidate-tracks with no hits, as they won't have their details filled
702  const reco::Track& trackPc = *trackPcPtr;
703  if(trackPc.hitPattern().numberOfValidHits() == 0) {
704  continue;
705  }
707 
708  auto slimmedVertexRef = pcRef->vertexRef();
709  const reco::Vertex& pcVertex = vertices[slimmedVertexRef.key()];
710 
711  fillNoFlow(h_diffVx, trackPc.vx() - track.vx());
712  fillNoFlow(h_diffVy, trackPc.vy() - track.vy());
713  fillNoFlow(h_diffVz, trackPc.vz() - track.vz());
714 
715  // PackedCandidate recalculates the ndof in unpacking as
716  // (nhits+npixelhits-5), but some strip hits may have dimension 2.
717  // If PackedCandidate has ndof=0, the resulting normalizedChi2
718  // will be 0 too. Hence, the comparison makes sense only for those
719  // PackedCandidates that have ndof != 0.
720  double diffNormalizedChi2 = 0;
721  if(trackPc.ndof() != 0) {
723  diffNormalizedChi2 = trackPc.normalizedChi2() - track.normalizedChi2();
724  fillNoFlow(h_diffNormalizedChi2, diffNormalizedChi2);
725  }
726  fillNoFlow(h_diffNdof, trackPc.ndof() - track.ndof());
727 
728  auto diffCharge = trackPc.charge() - track.charge();
729  fillNoFlow(h_diffCharge, diffCharge);
730  int diffHP = static_cast<int>(trackPc.quality(reco::TrackBase::highPurity)) - static_cast<int>(track.quality(reco::TrackBase::highPurity));
731  fillNoFlow(h_diffIsHighPurity, diffHP);
732 
733  const auto diffPt = diffRelative(trackPc.pt(), track.pt());
734  const auto diffPhi = reco::deltaPhi(trackPc.phi(), track.phi());
735  fillNoFlow(h_diffPt , diffPt);
736  fillNoFlow(h_diffEta, trackPc.eta() - track.eta());
737  fillNoFlow(h_diffPhi, diffPhi);
738 
739  const auto diffDxyAssocPV = h_diffDxyAssocPV.fill(pcRef->dxy( ) , track.dxy(pcVertex.position()), [](double value){return value*100.;});
740  const auto diffDzAssocPV = h_diffDzAssocPV.fill( pcRef->dzAssociatedPV(), track.dz(pcVertex.position()) , [](double value){return value*100.;});
741  const auto diffDxyPV = diffRelative(pcRef->dxy(pv.position()), track.dxy(pv.position()));
742  const auto diffDzPV = diffRelative(pcRef->dz(pv.position()) , track.dz(pv.position()));
743  fillNoFlow(h_diffDxyPV , diffDxyPV);
744  fillNoFlow(h_diffDzPV , diffDzPV);
745  fillNoFlow(h_diffTrackDxyAssocPV, diffRelative(trackPc.dxy(pcVertex.position()), track.dxy(pcVertex.position())));
746  fillNoFlow(h_diffTrackDzAssocPV , diffRelative(trackPc.dz(pcVertex.position()) , track.dz(pcVertex.position())));
747 
748  auto fillCov1 = [&](auto& hlp, const int i, const int j) {
749  return hlp.fill(trackPc.covariance(i, j), track.covariance(i, j));
750  };
751  auto fillCov2 = [&](auto& hlp, const int i, const int j, std::function<double(double)> modifyPack) {
752  return hlp.fill(trackPc.covariance(i, j), track.covariance(i, j), modifyPack);
753  };
754  auto fillCov3 = [&](auto& hlp, const int i, const int j, std::function<double(double)> modifyPack, std::function<double(double)> modifyUnpack) {
755  return hlp.fill(trackPc.covariance(i, j), track.covariance(i, j), modifyPack, modifyUnpack);
756  };
757 
758  const auto pcPt = pcRef->pt();
759  const auto diffCovQoverpQoverp = fillCov3(h_diffCovQoverpQoverp, reco::TrackBase::i_qoverp, reco::TrackBase::i_qoverp, [=](double val){return val*pcPt*pcPt;}, [=](double val){return val/pcPt/pcPt;});
760  const auto diffCovLambdaLambda = fillCov1(h_diffCovLambdaLambda, reco::TrackBase::i_lambda, reco::TrackBase::i_lambda);
761  const auto diffCovLambdaDsz = fillCov1(h_diffCovLambdaDsz, reco::TrackBase::i_lambda, reco::TrackBase::i_dsz);
762  const auto diffCovPhiPhi = fillCov3(h_diffCovPhiPhi, reco::TrackBase::i_phi, reco::TrackBase::i_phi, [=](double val){return val*pcPt*pcPt;}, [=](double val){return val/pcPt/pcPt;});
763  const auto diffCovPhiDxy = fillCov1(h_diffCovPhiDxy, reco::TrackBase::i_phi, reco::TrackBase::i_dxy);
764  const auto diffCovDxyDxy = fillCov2(h_diffCovDxyDxy, reco::TrackBase::i_dxy, reco::TrackBase::i_dxy, [](double value){return value*10000.;});
765  const auto diffCovDxyDsz = fillCov2(h_diffCovDxyDsz, reco::TrackBase::i_dxy, reco::TrackBase::i_dsz, [](double value){return value*10000.;});
766  const auto diffCovDszDsz = fillCov2(h_diffCovDszDsz, reco::TrackBase::i_dsz, reco::TrackBase::i_dsz, [](double value){return value*10000.;});
767 
768  if(isInRange(diffCovDszDsz.status())) {
769  fillNoFlow(h_diffDszError, diffRelative(pcRef->dzError(), track.dszError()));
770  fillNoFlow(h_diffDzError, diffRelative(pcRef->dzError(), track.dzError()));
771  fillNoFlow(h_diffTrackDzError, diffRelative(trackPc.dzError(), track.dzError()));
772  }
773  if(isInRange(diffCovDxyDxy.status())) {
774  fillNoFlow(h_diffDxyError, diffRelative(pcRef->dxyError(), track.dxyError()));
775  fillNoFlow(h_diffTrackDxyError, diffRelative(trackPc.dxyError(), track.dxyError()));
776  }
777  fillNoFlow(h_diffPtError , diffRelative(trackPc.ptError() , track.ptError() ));
778  fillNoFlow(h_diffEtaError , diffRelative(trackPc.etaError() , track.etaError() ));
779 
780 
781 
782  // For the non-HitPattern ones, take into account the PackedCandidate packing precision
783  const auto trackNumberOfHits = track.hitPattern().numberOfValidHits();
784  const auto trackNumberOfPixelHits = track.hitPattern().numberOfValidPixelHits();
785  const auto trackNumberOfStripHits = track.hitPattern().numberOfValidStripHits();
786  const auto pcNumberOfHits = pcRef->numberOfHits();
787  const auto pcNumberOfPixelHits = pcRef->numberOfPixelHits();
788  const auto pcNumberOfStripHits = pcNumberOfHits - pcNumberOfPixelHits;
789  const auto trackNumberOfLayers = track.hitPattern().trackerLayersWithMeasurement();
790  const auto trackNumberOfPixelLayers = track.hitPattern().pixelLayersWithMeasurement();
791  const auto trackNumberOfStripLayers = track.hitPattern().stripLayersWithMeasurement();
792  const auto pcNumberOfLayers = pcRef->trackerLayersWithMeasurement();
793  const auto pcNumberOfPixelLayers = pcRef->pixelLayersWithMeasurement();
794  const auto pcNumberOfStripLayers = pcRef->stripLayersWithMeasurement();
795 
796  // layer number overflow (should be zero)
797  const int pixelLayerOverflow = trackNumberOfPixelLayers > pat::PackedCandidate::trackPixelHitsMask ? trackNumberOfPixelLayers - pat::PackedCandidate::trackPixelHitsMask : 0;
798  const int stripLayerOverflow = trackNumberOfStripLayers > pat::PackedCandidate::trackStripHitsMask ? trackNumberOfStripLayers - pat::PackedCandidate::trackStripHitsMask : 0;
800 
801  // hit overflow (should also be zero)
802  const int pixelOverflow = trackNumberOfPixelHits - pcNumberOfPixelLayers > pat::PackedCandidate::trackPixelHitsMask ? trackNumberOfPixelHits - pcNumberOfPixelLayers - pat::PackedCandidate::trackPixelHitsMask : 0;
803  const int stripOverflow = trackNumberOfStripHits - pcNumberOfStripLayers > pat::PackedCandidate::trackStripHitsMask ? trackNumberOfStripHits - pcNumberOfStripLayers - pat::PackedCandidate::trackStripHitsMask : 0;
804  const int hitsOverflow = trackNumberOfHits - pcNumberOfLayers > (pat::PackedCandidate::trackPixelHitsMask+pat::PackedCandidate::trackStripHitsMask) ? trackNumberOfHits - pcNumberOfLayers - (pat::PackedCandidate::trackPixelHitsMask+pat::PackedCandidate::trackStripHitsMask) : 0;
805  // PackedCandidate counts overflow pixel hits as strip
806  const int pixelInducedStripOverflow = (trackNumberOfStripHits+pixelOverflow-pcNumberOfStripLayers) > pat::PackedCandidate::trackStripHitsMask ? (trackNumberOfStripHits+pixelOverflow-stripOverflow-pcNumberOfStripLayers) - pat::PackedCandidate::trackStripHitsMask : 0;
807  h_numberPixelLayersOverMax->Fill(pixelLayerOverflow);
808  h_numberStripLayersOverMax->Fill(stripLayerOverflow);
809  h_numberLayersOverMax->Fill(layerOverflow);
810  h_numberPixelHitsOverMax->Fill(pixelOverflow);
811  h_numberStripHitsOverMax->Fill(stripOverflow);
812  h_numberHitsOverMax->Fill(hitsOverflow);
813 
814  int diffNumberOfPixelHits = 0;
815  int diffNumberOfHits = 0;
816  int diffNumberOfPixelLayers = 0;
817  int diffNumberOfStripLayers = 0;
818  if(pixelLayerOverflow) {
819  diffNumberOfPixelLayers = pcNumberOfPixelLayers - pat::PackedCandidate::trackPixelHitsMask;
820  }
821  else {
822  diffNumberOfPixelLayers = pcNumberOfPixelLayers - trackNumberOfPixelLayers;
823  }
824  if(pixelOverflow) {
825  diffNumberOfPixelHits = pcNumberOfPixelHits - pcNumberOfPixelLayers - pat::PackedCandidate::trackPixelHitsMask;
826  }
827  else {
828  diffNumberOfPixelHits = pcNumberOfPixelHits - trackNumberOfPixelHits;
829  }
830  if(stripLayerOverflow) {
831  diffNumberOfStripLayers = pcNumberOfStripLayers - pat::PackedCandidate::trackStripHitsMask;
832  }
833  else {
834  diffNumberOfStripLayers = pcNumberOfStripLayers - trackNumberOfStripLayers;
835  }
836  if(stripOverflow || pixelInducedStripOverflow || pixelOverflow) {
837  int diffNumberOfStripHits = 0;
838  if(stripOverflow || pixelInducedStripOverflow) {
839  diffNumberOfStripHits = pcNumberOfStripHits - pat::PackedCandidate::trackStripHitsMask;
840  }
841  else if(pixelOverflow) {
842  diffNumberOfStripHits = (pcNumberOfStripHits - pixelOverflow) - trackNumberOfStripHits;
843  }
844 
845  diffNumberOfHits = diffNumberOfPixelHits + diffNumberOfStripHits;
846  }
847  else {
848  diffNumberOfHits = pcNumberOfHits - trackNumberOfHits;
849  }
850 
851 
852 
853  fillNoFlow(h_diffNumberOfPixelHits, diffNumberOfPixelHits);
854  fillNoFlow(h_diffNumberOfHits, diffNumberOfHits);
855  fillNoFlow(h_diffNumberOfPixelLayers, diffNumberOfPixelLayers);
856  fillNoFlow(h_diffNumberOfStripLayers, diffNumberOfStripLayers);
857 
858  int diffLostInnerHits = 0;
859  const auto trackLostInnerHits = track.hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
860  switch(pcRef->lostInnerHits()) {
863  diffLostInnerHits = -trackLostInnerHits;
864  break;
866  diffLostInnerHits = 1-trackLostInnerHits;
867  break;
869  diffLostInnerHits = trackLostInnerHits>=2 ? 0 : 2-trackLostInnerHits;
870  break;
871  }
872  fillNoFlow(h_diffLostInnerHits, diffLostInnerHits);
873 
874  // For HitPattern ones, calculate the full diff (i.e. some differences are expected)
875  auto diffHitPatternPixelLayersWithMeasurement = trackPc.hitPattern().pixelLayersWithMeasurement() - trackNumberOfPixelLayers;
876  fillNoFlow(h_diffHitPatternPixelLayersWithMeasurement, diffHitPatternPixelLayersWithMeasurement);
877  auto diffHitPatternStripLayersWithMeasurement = trackPc.hitPattern().stripLayersWithMeasurement() - trackNumberOfStripLayers;
878  fillNoFlow(h_diffHitPatternStripLayersWithMeasurement, diffHitPatternStripLayersWithMeasurement);
879  auto diffHitPatternTrackerLayersWithMeasurement = trackPc.hitPattern().trackerLayersWithMeasurement() - trackNumberOfLayers;
880  fillNoFlow(h_diffHitPatternTrackerLayersWithMeasurement, diffHitPatternTrackerLayersWithMeasurement);
881  auto diffHitPatternNumberOfValidPixelHits = trackPc.hitPattern().numberOfValidPixelHits() - trackNumberOfPixelHits;
882  fillNoFlow(h_diffHitPatternNumberOfValidPixelHits, diffHitPatternNumberOfValidPixelHits);
883  auto diffHitPatternNumberOfValidHits = trackPc.hitPattern().numberOfValidHits() - trackNumberOfHits;
884  fillNoFlow(h_diffHitPatternNumberOfValidHits, diffHitPatternNumberOfValidHits);
886 
887  // hasValidHitInFirstPixelBarrel is set only if numberOfLostHits(MISSING_INNER_HITS) == 0
888  int diffHitPatternHasValidHitInFirstPixelBarrel = 0;
891  diffHitPatternHasValidHitInFirstPixelBarrel = static_cast<int>(trackPc.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)) - static_cast<int>(track.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1));
892  fillNoFlow(h_diffHitPatternHasValidHitInFirstPixelBarrel, diffHitPatternHasValidHitInFirstPixelBarrel);
893  }
894 
895  // Print warning if there are differences outside the expected range
896  if(diffNormalizedChi2 < -1 || diffNormalizedChi2 > 0 || diffCharge != 0 || diffHP != 0
897  || std::abs(diffPhi) > 5e-4
898  || diffDxyAssocPV.outsideExpectedRange()
899  || diffDzAssocPV.outsideExpectedRange()
900  || std::abs(diffDxyPV) > 0.05 || std::abs(diffDzPV) > 0.05
901  || diffCovQoverpQoverp.outsideExpectedRange() || diffCovLambdaLambda.outsideExpectedRange()
902  || diffCovLambdaDsz.outsideExpectedRange() || diffCovPhiPhi.outsideExpectedRange()
903  || diffCovPhiDxy.outsideExpectedRange() || diffCovDxyDxy.outsideExpectedRange()
904  || diffCovDxyDsz.outsideExpectedRange() || diffCovDszDsz.outsideExpectedRange()
905  || diffNumberOfPixelHits != 0 || diffNumberOfHits != 0 || diffLostInnerHits != 0
906  || diffHitPatternHasValidHitInFirstPixelBarrel != 0
907  ) {
908 
909  edm::LogInfo("PackedCandidateTrackValidator") << "Track " << i << " pt " << track.pt() << " eta " << track.eta() << " phi " << track.phi() << " chi2 " << track.chi2() << " ndof " << track.ndof()
910  << "\n"
911  << " ptError " << track.ptError() << " etaError " << track.etaError() << " phiError " << track.phiError() << " dxyError " << track.dxyError() << " dzError " << track.dzError()
912  << "\n"
913  << " refpoint " << track.referencePoint() << " momentum " << track.momentum()
914  << "\n"
915  << " dxy " << track.dxy() << " dz " << track.dz()
916  << "\n"
917  << " " << TrackAlgoPrinter(track)
918  << " lost inner hits " << trackLostInnerHits
919  << " lost outer hits " << track.hitPattern().numberOfLostHits(reco::HitPattern::MISSING_OUTER_HITS)
920  << " hitpattern " << HitPatternPrinter(track)
921  << " \n"
922  << " PC " << pcRef.id() << ":" << pcRef.key() << " track pt " << trackPc.pt() << " eta " << trackPc.eta() << " phi " << trackPc.phi() << " (PC " << pcRef->phi() << ") chi2 " << trackPc.chi2() << " ndof " << trackPc.ndof() << " pdgId " << pcRef->pdgId() << " mass " << pcRef->mass()
923  << "\n"
924  << " ptError " << trackPc.ptError() << " etaError " << trackPc.etaError() << " phiError " << trackPc.phiError()
925  << "\n"
926  << " pc.vertex " << pcRef->vertex() << " momentum " << pcRef->momentum() << " track " << trackPc.momentum()
927  << "\n"
928  << " dxy " << trackPc.dxy() << " dz " << trackPc.dz() << " pc.dz " << pcRef->dz()
929  << " dxyError " << trackPc.dxyError() << " dzError " << trackPc.dzError()
930  << "\n"
931  << " dxy(PV) " << trackPc.dxy(pv.position()) << " dz(PV) " << trackPc.dz(pv.position())
932  << " dxy(assocPV) " << trackPc.dxy(pcVertex.position()) << " dz(assocPV) " << trackPc.dz(pcVertex.position())
933  << "\n"
934  << " (diff PackedCandidate track)"
935  << " highPurity " << diffHP << " " << trackPc.quality(reco::TrackBase::highPurity) << " " << track.quality(reco::TrackBase::highPurity)
936  << " charge " << diffCharge << " " << trackPc.charge() << " " << track.charge()
937  << " normalizedChi2 " << diffNormalizedChi2 << " " << trackPc.normalizedChi2() << " " << track.normalizedChi2()
938  << "\n "
939  << " numberOfAllHits " << diffNumberOfHits << " " << pcNumberOfHits << " " << trackNumberOfHits
940  << " numberOfPixelHits " << diffNumberOfPixelHits << " " << pcNumberOfPixelHits << " " << trackNumberOfPixelHits
941  << " numberOfStripHits # " << pcNumberOfStripHits << " " << trackNumberOfStripHits
942  << "\n "
943  << " hitPattern.numberOfValidPixelHits " << diffHitPatternNumberOfValidPixelHits << " " << trackPc.hitPattern().numberOfValidPixelHits() << " " << track.hitPattern().numberOfValidPixelHits()
944  << " hitPattern.numberOfValidHits " << diffHitPatternNumberOfValidHits << " " << trackPc.hitPattern().numberOfValidHits() << " " << track.hitPattern().numberOfValidHits()
945  << " hitPattern.hasValidHitInFirstPixelBarrel " << diffHitPatternHasValidHitInFirstPixelBarrel << " " << trackPc.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1) << " " << track.hitPattern().hasValidHitInPixelLayer(PixelSubdetector::SubDetector::PixelBarrel, 1)
946  << "\n "
947  << " lostInnerHits " << diffLostInnerHits << " " << pcRef->lostInnerHits() << " #"
948  << " phi (5e-4) " << diffPhi << " " << trackPc.phi() << " " << track.phi()
949  << "\n "
950  << " dxy(assocPV) " << diffDxyAssocPV
951  << "\n "
952  << " dz(assocPV) " << diffDzAssocPV
953  << "\n "
954  << " dxy(PV) (0.05) " << diffDxyPV << " " << pcRef->dxy(pv.position()) << " " << track.dxy(pv.position())
955  << "\n "
956  << " dz(PV) (0.05) " << diffDzPV << " " << pcRef->dz(pv.position()) << " " << track.dz(pv.position())
957  << "\n "
958  << " cov(qoverp, qoverp) " << diffCovQoverpQoverp
959  << "\n "
960  << " cov(lambda, lambda) " << diffCovLambdaLambda
961  << "\n "
962  << " cov(lambda, dsz) " << diffCovLambdaDsz
963  << "\n "
964  << " cov(phi, phi) " << diffCovPhiPhi
965  << "\n "
966  << " cov(phi, dxy) " << diffCovPhiDxy
967  << "\n "
968  << " cov(dxy, dxy) " << diffCovDxyDxy
969  << "\n "
970  << " cov(dxy, dsz) " << diffCovDxyDsz
971  << "\n "
972  << " cov(dsz, dsz) " << diffCovDszDsz;
973  }
974  }
975 }
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:681
PackedValueCheck< LogIntHelper > h_diffCovLambdaDsz
PackedValueCheck< Float16Helper > h_diffDzAssocPV
PackedValueCheck< Float16Helper > h_diffDxyAssocPV
bool hasValidHitInPixelLayer(enum PixelSubdetector::SubDetector, uint16_t layer) const
Definition: HitPattern.cc:327
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:561
edm::EDGetTokenT< edm::View< reco::Track > > tracksToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
double dxyError() const
error on dxy
Definition: TrackBase.h:796
int numberOfValidHits() const
Definition: HitPattern.h:823
edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > trackToPackedCandidateToken_
double etaError() const
error on eta
Definition: TrackBase.h:784
int numberOfValidStripHits() const
Definition: HitPattern.h:853
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:645
key_type key() const
Accessor for product key.
Definition: Ref.h:265
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:499
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:675
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:518
const Point & position() const
position
Definition: Vertex.h:109
ProductID id() const
Accessor for product ID.
Definition: Ref.h:259
void Fill(long long x)
PackedValueCheck< LogIntHelper > h_diffCovLambdaLambda
double dszError() const
error on dsz
Definition: TrackBase.h:808
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:651
PackedValueCheck< LogIntHelper > h_diffCovPhiDxy
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:549
PackedValueCheck< Float16Helper > h_diffCovDxyDxy
PackedValueCheck< LogIntHelper > h_diffCovPhiPhi
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:555
CovarianceMatrix covariance() const
return track covariance matrix
Definition: TrackBase.h:731
double pt() const
track transverse momentum
Definition: TrackBase.h:621
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:763
double phiError() const
error on phi
Definition: TrackBase.h:790
def pv(vc)
Definition: MetAnalyzer.py:6
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Definition: value.py:1
bool isNull() const
Checks for null.
Definition: Ref.h:250
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:609
double dzError() const
error on dz
Definition: TrackBase.h:814
double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:22
double vz() const
z coordinate of the reference point on track
Definition: TrackBase.h:669
edm::EDGetTokenT< reco::VertexCollection > verticesToken_
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:446
int stripLayersWithMeasurement() const
Definition: HitPattern.h:1035
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:510
int numberOfLostHits(HitCategory category) const
Definition: HitPattern.h:902
double vy() const
y coordinate of the reference point on track
Definition: TrackBase.h:663
PackedValueCheck< LogIntHelper > h_diffCovQoverpQoverp
PackedValueCheck< Float16Helper > h_diffCovDxyDsz
int numberOfValidPixelHits() const
Definition: HitPattern.h:838
PackedValueCheck< Float16Helper > h_diffCovDszDsz
int charge() const
track electric charge
Definition: TrackBase.h:567
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:591
double vx() const
x coordinate of the reference point on track
Definition: TrackBase.h:657
void PackedCandidateTrackValidator::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 557 of file PackedCandidateTrackValidator.cc.

References DQMStore::IBooker::book1D(), constexpr, h_diffCharge, h_diffCovDszDsz, h_diffCovDxyDsz, h_diffCovDxyDxy, h_diffCovLambdaDsz, h_diffCovLambdaLambda, h_diffCovPhiDxy, h_diffCovPhiPhi, h_diffCovQoverpQoverp, h_diffDszError, h_diffDxyAssocPV, h_diffDxyError, h_diffDxyPV, h_diffDzAssocPV, h_diffDzError, h_diffDzPV, h_diffEta, h_diffEtaError, h_diffHitPatternHasValidHitInFirstPixelBarrel, h_diffHitPatternNumberOfLostInnerHits, h_diffHitPatternNumberOfValidHits, h_diffHitPatternNumberOfValidPixelHits, h_diffHitPatternPixelLayersWithMeasurement, h_diffHitPatternStripLayersWithMeasurement, h_diffHitPatternTrackerLayersWithMeasurement, h_diffIsHighPurity, h_diffLostInnerHits, h_diffNdof, h_diffNormalizedChi2, h_diffNumberOfHits, h_diffNumberOfPixelHits, h_diffNumberOfPixelLayers, h_diffNumberOfStripLayers, h_diffPhi, h_diffPt, h_diffPtError, h_diffTrackDxyAssocPV, h_diffTrackDxyError, h_diffTrackDzAssocPV, h_diffTrackDzError, h_diffVx, h_diffVy, h_diffVz, h_numberHitsOverMax, h_numberLayersOverMax, h_numberPixelHitsOverMax, h_numberPixelLayersOverMax, h_numberStripHitsOverMax, h_numberStripLayersOverMax, h_selectionFlow, rootFolder_, MonitorElement::setBinLabel(), and DQMStore::IBooker::setCurrentFolder().

557  {
558  iBooker.setCurrentFolder(rootFolder_);
559 
560  h_selectionFlow = iBooker.book1D("selectionFlow", "Track selection flow", 8, -0.5, 7.5);
561  h_selectionFlow->setBinLabel(1, "All tracks");
562  h_selectionFlow->setBinLabel(2, "Associated to PackedCandidate");
563  h_selectionFlow->setBinLabel(3, "PC is charged"),
564  h_selectionFlow->setBinLabel(4, "PC has track");
565  h_selectionFlow->setBinLabel(5, "PC is not electron");
566  h_selectionFlow->setBinLabel(6, "PC has hits");
567  h_selectionFlow->setBinLabel(7, "PC ndof != 0");
568  h_selectionFlow->setBinLabel(8, "Track: no missing inner hits");
569 
570  constexpr int diffBins = 50;
571 
572  h_diffVx = iBooker.book1D("diffVx", "PackedCandidate::bestTrack() - reco::Track in vx()", diffBins, -0.2, 0.2); // not equal
573  h_diffVy = iBooker.book1D("diffVy", "PackedCandidate::bestTrack() - reco::Track in vy()", diffBins, -0.2, 0.2); // not equal
574  h_diffVz = iBooker.book1D("diffVz", "PackedCandidate::bestTrack() - reco::Track in vz()", diffBins, -0.4, 0.4); // not equal
575 
576  h_diffNormalizedChi2 = iBooker.book1D("diffNormalizedChi2", "PackedCandidate::bestTrack() - reco::Track in normalizedChi2()", 30, -1.5, 1.5); // expected difference in -1...0
577  h_diffNdof = iBooker.book1D("diffNdof", "PackedCandidate::bestTrack() - reco::Track in ndof()", 33, -30.5, 2.5); // to monitor the difference
578 
579  h_diffCharge = iBooker.book1D("diffCharge", "PackedCandidate::bestTrack() - reco::Track in charge()", 5, -2.5, 2.5); // expect equality
580  h_diffIsHighPurity = iBooker.book1D("diffIsHighPurity", "PackedCandidate::bestTrack() - reco::Track in quality(highPurity)", 3, -1.5, 1.5); // expect equality
581 
582  h_diffPt = iBooker.book1D("diffPt", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in pt()", diffBins, -1.1, 1.1); // not equal, keep
583  h_diffEta = iBooker.book1D("diffEta", "PackedCandidate::bestTrack() - reco::Track in eta()", diffBins, -0.001, 0.001); // not equal, keep
584  h_diffPhi = iBooker.book1D("diffPhi", "PackedCandidate::bestTrack() - reco::Track in phi()", diffBins, -0.0005, 0.0005); // expect equality within precision
585 
586  h_diffDxyAssocPV.book(iBooker, "diffDxyAssocPV", "(PackedCandidate::dxy() - reco::Track::dxy(assocPV))/reco::Track",
587  40, -0.001, 0.001, // expect equality within precision
588  50, -0.5, 0.5);
589  h_diffDzAssocPV.book(iBooker, "diffDzAssocPV","(PackedCandidate::dzAssociatedPV() - reco::Track::dz(assocPV))/reco::Track",
590  40, -0.001, 0.001, // expect equality within precision
591  50, -0.5, 0.5);
592  h_diffDxyPV = iBooker.book1D("diffDxyPV", "(PackedCandidate::dxy(PV) - reco::Track::dxy(PV))/reco::Track", diffBins, -0.01, 0.01); // expect equality within precision (worse than assocPV)
593  h_diffDzPV = iBooker.book1D("diffDzPV", "(PackedCandidate::dz(PV) - reco::Track::dz(PV))/reco::Track", diffBins, -0.01, 0.01); // expect equality wihtin precision (worse than assocPV)
594  h_diffTrackDxyAssocPV = iBooker.book1D("diffTrackDxyAssocPV", "(PackedCandidate::bestTrack()::dxy(assocPV)) - reco::Track::dxy(assocPV))/reco::Track", diffBins, -0.01, 0.01); // not equal
595  h_diffTrackDzAssocPV = iBooker.book1D("diffTrackDzAssocPV", "(PackedCandidate::bestTrack()::dz(assocPV)) - reco::Track::dz(assocPV))/reco::Track", diffBins, -0.01, 0.01); // not equal
596 
597  h_diffCovQoverpQoverp.book(iBooker, "diffCovQoverpQoverp", "(PackedCandidate::bestTrack() - reco::Track)/reco::track in cov(qoverp, qoverp)",
598  40, -0.05, 0.15, // expect equality within precision (worst precision is exp(1/128*15) =~ 12 %
599  50, -0.5, 0.5);
600  h_diffCovLambdaLambda.book(iBooker, "diffCovLambdaLambda", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(lambda, lambda)",
601  40, -0.05, 0.15, // expect equality within precision worst precision is exp(1/128*(20-5)) =~ 12 % (multiplied by pt^2 in packing & unpacking)
602  50, -0.5, 0.5);
603  h_diffCovLambdaDsz.book(iBooker, "diffCovLambdaDsz", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(lambda, dsz)",
604  60, -0.15, 0.15, // expect equality within precision, worst precision is exp(1/128*(17-4) =~ 11 %
605  50, -1, 1);
606  h_diffCovPhiPhi.book(iBooker, "diffCovPhiPhi", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(phi, phi)",
607  40, -0.05, 0.15, // expect equality within precision worst precision is exp(1/128*(20-5)) =~ 12 % (multiplied by pt^2 in packing & unpacking)
608  50, -0.5, 0.5);
609  h_diffCovPhiDxy.book(iBooker, "diffCovPhiDxy", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(phi, dxy)",
610  60, -0.15, 0.15, // expect equality within precision, wors precision is exp(1/128)*(17-4) =~ 11 %
611  50, -1, 1);
612  h_diffCovDxyDxy.book(iBooker, "diffCovDxyDxy", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(dxy, dxy)",
613  40, -0.001, 0.001,
614  50, -0.1, 0.1);
615  h_diffCovDxyDsz.book(iBooker, "diffCovDxyDsz", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(dxy, dsz)",
616  40, -0.001, 0.001, // expect equality within precision
617  50, -0.5, 0.5);
618  h_diffCovDszDsz.book(iBooker, "diffCovDszDsz", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in cov(dsz, dsz)",
619  40, -0.001, 0.001, // expect equality within precision
620  50, -0.1, 0.1);
621 
622  h_diffDxyError = iBooker.book1D("diffDxyError", "(PackedCandidate::dxyError() - reco::Track::dxyError())/reco::Track", 40, -0.001, 0.001); // expect equality within precision
623  h_diffDszError = iBooker.book1D("diffDszError", "(PackedCandidate::dzError() - reco::Track::dszError())/reco::Track", 40, -0.001, 0.001); // ideally, not equal, but for now they are
624  h_diffDzError = iBooker.book1D("diffDzError", "(PackedCandidate::dzError() - reco::Track::dzError())/reco::Track", 40, -0.001, 0.001); // expect equality within precision (not currently the case)
625 
626  h_diffTrackDxyError = iBooker.book1D("diffTrackDxyError", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in dxyError()", 40, -0.001, 0.001); // expect equality within precision
627  h_diffTrackDzError = iBooker.book1D("diffTrackDzError", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in dzError()", 40, -0.05, 0.05); // not equal
628 
629  h_diffPtError = iBooker.book1D("diffPtError", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in ptError()", diffBins, -1.1, 1.1); // not equal
630  h_diffEtaError = iBooker.book1D("diffEtaError", "(PackedCandidate::bestTrack() - reco::Track)/reco::Track in etaError()", 60, -0.15, 0.15); // not equal
631 
632 
633  h_diffNumberOfPixelLayers = iBooker.book1D("diffNumberOfPixelLayers", "PackedCandidate::pixelLayersWithMeasurement() - reco::Track::hitPattern::pixelLayersWithMeasurement()", 5, -2.5, 2.5); // expect equality
634  h_diffNumberOfStripLayers = iBooker.book1D("diffNumberOfStripLayers", "PackedCandidate::stripLayersWithMeasurement() - reco::Track::hitPattern::stripLayersWithMeasurement()", 5, -2.5, 2.5); // expect equality
635  h_diffNumberOfPixelHits = iBooker.book1D("diffNumberOfPixelHits", "PackedCandidate::numberOfPixelHits() - reco::Track::hitPattern::numberOfValidPixelHits()", 5, -2.5, 2.5); // expect equality
636  h_diffNumberOfHits = iBooker.book1D("diffNumberOfHits", "PackedCandidate::numberHits() - reco::Track::hitPattern::numberOfValidHits()", 5, -2.5, 2.5); // expect equality
637  h_diffLostInnerHits = iBooker.book1D("diffLostInnerHits", "PackedCandidate::lostInnerHits() - reco::Track::hitPattern::numberOfLostHits(MISSING_INNER_HITS)", 5, -2.5, 2.5); // expect equality
638 
639  h_diffHitPatternPixelLayersWithMeasurement = iBooker.book1D("diffHitPatternPixelLayersWithMeasurement", "PackedCandidate::bestTrack() - reco::Track in hitPattern::pixelLayersWithMeasurement()", 13, -10.5, 2.5); // not equal
640  h_diffHitPatternStripLayersWithMeasurement = iBooker.book1D("diffHitPatternStripLayersWithMeasurement", "PackedCandidate::bestTrack() - reco::Track in hitPattern::stripLayersWithMeasurement()", 13, -10.5, 2.5); // not equal
641  h_diffHitPatternTrackerLayersWithMeasurement = iBooker.book1D("diffHitPatternTrackerLayersWithMeasurement", "PackedCandidate::bestTrack() - reco::Track in hitPattern::trackerLayersWithMeasurement()", 13, -10.5, 2.5); // not equal
642  h_diffHitPatternNumberOfValidPixelHits = iBooker.book1D("diffHitPatternNumberOfValidPixelHits", "PackedCandidate::bestTrack() - reco::Track in hitPattern::numberOfValidPixelHits()", 13, -10.5, 2.5); // not equal
643  h_diffHitPatternNumberOfValidHits = iBooker.book1D("diffHitPatternNumberOfValidHits", "PackedCandidate::bestTrack() - reco::Track in hitPattern::numberOfValidHits()", 13, -10.5, 2.5); // not equal
644  h_diffHitPatternNumberOfLostInnerHits = iBooker.book1D("diffHitPatternNumberOfLostPixelHits", "PackedCandidate::bestTrack() - reco::Track in hitPattern::numberOfLostHits(MISSING_INNER_HITS)", 13, -10.5, 2.5); // not equal
645  h_diffHitPatternHasValidHitInFirstPixelBarrel = iBooker.book1D("diffHitPatternHasValidHitInFirstPixelBarrel", "PackedCandidate::bestTrack() - reco::Track in hitPattern::hasValidHitInFirstPixelBarrel", 3, -1.5, 1.5); // expect equality
646 
647  h_numberPixelLayersOverMax = iBooker.book1D("numberPixelLayersOverMax", "Number of pixel layers over the maximum of PackedCandidate", 10, 0, 10);
648  h_numberStripLayersOverMax = iBooker.book1D("numberStripLayersOverMax", "Number of strip layers over the maximum of PackedCandidate", 10, 0, 10);
649  h_numberLayersOverMax = iBooker.book1D("numberLayersOverMax", "Number of layers over the maximum of PackedCandidate", 20, 0, 20);
650  h_numberPixelHitsOverMax = iBooker.book1D("numberPixelHitsOverMax", "Number of pixel hits over the maximum of PackedCandidate", 10, 0, 10);
651  h_numberStripHitsOverMax = iBooker.book1D("numberStripHitsOverMax", "Number of strip hits over the maximum of PackedCandidate", 10, 0, 10);
652  h_numberHitsOverMax = iBooker.book1D("numberHitsOverMax", "Number of hits over the maximum of PackedCandidate", 20, 0, 20);
653 }
PackedValueCheck< LogIntHelper > h_diffCovLambdaDsz
PackedValueCheck< Float16Helper > h_diffDzAssocPV
PackedValueCheck< Float16Helper > h_diffDxyAssocPV
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)
#define constexpr
PackedValueCheck< LogIntHelper > h_diffCovLambdaLambda
PackedValueCheck< LogIntHelper > h_diffCovPhiDxy
PackedValueCheck< Float16Helper > h_diffCovDxyDxy
PackedValueCheck< LogIntHelper > h_diffCovPhiPhi
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
PackedValueCheck< LogIntHelper > h_diffCovQoverpQoverp
PackedValueCheck< Float16Helper > h_diffCovDxyDsz
PackedValueCheck< Float16Helper > h_diffCovDszDsz
void PackedCandidateTrackValidator::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 546 of file PackedCandidateTrackValidator.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), and AlCaHLTBitMon_QueryRunRegistry::string.

546  {
548 
549  desc.addUntracked<edm::InputTag>("tracks", edm::InputTag("generalTracks"));
550  desc.addUntracked<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
551  desc.addUntracked<edm::InputTag>("trackToPackedCandidateAssociation", edm::InputTag("packedPFCandidates"));
552  desc.addUntracked<std::string>("rootFolder", "Tracking/PackedCandidate");
553 
554  descriptions.add("packedCandidateTrackValidator", desc);
555 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

MonitorElement* PackedCandidateTrackValidator::h_diffCharge
private

Definition at line 471 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<Float16Helper> PackedCandidateTrackValidator::h_diffCovDszDsz
private

Definition at line 492 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<Float16Helper> PackedCandidateTrackValidator::h_diffCovDxyDsz
private

Definition at line 491 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<Float16Helper> PackedCandidateTrackValidator::h_diffCovDxyDxy
private

Definition at line 490 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<LogIntHelper> PackedCandidateTrackValidator::h_diffCovLambdaDsz
private

Definition at line 487 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<LogIntHelper> PackedCandidateTrackValidator::h_diffCovLambdaLambda
private

Definition at line 486 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<LogIntHelper> PackedCandidateTrackValidator::h_diffCovPhiDxy
private

Definition at line 489 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<LogIntHelper> PackedCandidateTrackValidator::h_diffCovPhiPhi
private

Definition at line 488 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<LogIntHelper> PackedCandidateTrackValidator::h_diffCovQoverpQoverp
private

Definition at line 485 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffDszError
private

Definition at line 495 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<Float16Helper> PackedCandidateTrackValidator::h_diffDxyAssocPV
private

Definition at line 477 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffDxyError
private

Definition at line 494 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffDxyPV
private

Definition at line 479 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

PackedValueCheck<Float16Helper> PackedCandidateTrackValidator::h_diffDzAssocPV
private

Definition at line 478 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffDzError
private

Definition at line 496 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffDzPV
private

Definition at line 480 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffEta
private

Definition at line 475 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffEtaError
private

Definition at line 502 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternHasValidHitInFirstPixelBarrel
private

Definition at line 517 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternNumberOfLostInnerHits
private

Definition at line 516 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternNumberOfValidHits
private

Definition at line 515 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternNumberOfValidPixelHits
private

Definition at line 514 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternPixelLayersWithMeasurement
private

Definition at line 511 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternStripLayersWithMeasurement
private

Definition at line 513 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffHitPatternTrackerLayersWithMeasurement
private

Definition at line 512 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffIsHighPurity
private

Definition at line 472 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffLostInnerHits
private

Definition at line 509 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffNdof
private

Definition at line 469 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffNormalizedChi2
private

Definition at line 468 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffNumberOfHits
private

Definition at line 508 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffNumberOfPixelHits
private

Definition at line 507 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffNumberOfPixelLayers
private

Definition at line 505 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffNumberOfStripLayers
private

Definition at line 506 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffPhi
private

Definition at line 476 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffPt
private

Definition at line 474 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffPtError
private

Definition at line 501 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffTrackDxyAssocPV
private

Definition at line 482 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffTrackDxyError
private

Definition at line 498 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffTrackDzAssocPV
private

Definition at line 483 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffTrackDzError
private

Definition at line 499 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffVx
private

Definition at line 464 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffVy
private

Definition at line 465 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_diffVz
private

Definition at line 466 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_numberHitsOverMax
private

Definition at line 524 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_numberLayersOverMax
private

Definition at line 521 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_numberPixelHitsOverMax
private

Definition at line 522 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_numberPixelLayersOverMax
private

Definition at line 519 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_numberStripHitsOverMax
private

Definition at line 523 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_numberStripLayersOverMax
private

Definition at line 520 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

MonitorElement* PackedCandidateTrackValidator::h_selectionFlow
private

Definition at line 462 of file PackedCandidateTrackValidator.cc.

Referenced by analyze(), and bookHistograms().

std::string PackedCandidateTrackValidator::rootFolder_
private

Definition at line 450 of file PackedCandidateTrackValidator.cc.

Referenced by bookHistograms().

edm::EDGetTokenT<edm::View<reco::Track> > PackedCandidateTrackValidator::tracksToken_
private

Definition at line 446 of file PackedCandidateTrackValidator.cc.

Referenced by analyze().

edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > PackedCandidateTrackValidator::trackToPackedCandidateToken_
private

Definition at line 448 of file PackedCandidateTrackValidator.cc.

Referenced by analyze().

edm::EDGetTokenT<reco::VertexCollection> PackedCandidateTrackValidator::verticesToken_
private

Definition at line 447 of file PackedCandidateTrackValidator.cc.

Referenced by analyze().