CMS 3D CMS Logo

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

#include <TkConvValidator.h>

Inheritance diagram for TkConvValidator:
DQMEDAnalyzer edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator > 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
 
void dqmBeginRun (edm::Run const &r, edm::EventSetup const &theEventSetup) override
 
void dqmEndRun (edm::Run const &r, edm::EventSetup const &es) override
 
void endJob () override
 
 TkConvValidator (const edm::ParameterSet &)
 
 ~TkConvValidator () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator >
 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

float etaTransformation (float a, float b)
 
float phiNormalization (float &a)
 
math::XYZVector recalculateMomentumAtFittedVertex (const MagneticField &mf, const TrackerGeometry &trackerGeom, const edm::RefToBase< reco::Track > &tk, const reco::Vertex &vtx)
 

Private Attributes

bool arbitratedEcalSeeded_
 
bool arbitratedMerged_
 
double bcEtLow_
 
edm::EDGetTokenT< reco::BeamSpotbeamspotToken_
 
std::string conversionCollection_
 
edm::EDGetTokenT< reco::ConversionCollectionconversionCollectionPr_Token_
 
std::string conversionCollectionProducer_
 
std::string conversionTrackProducer_
 
DQMStoredbe_
 
bool dCotCutOn_
 
double dCotCutValue_
 
double dCotHardCutValue_
 
std::string dqmpath_
 
bool ecalalgotracks_
 
double ecalEtSumCut_
 
double ecalIsolRadius_
 
std::string fName_
 
edm::EDGetTokenT< edm::SimTrackContainerg4_simTk_Token_
 
edm::EDGetTokenT< edm::SimVertexContainerg4_simVtx_Token_
 
bool generalTracksOnly_
 
edm::EDGetTokenT< reco::GenJetCollectiongenjets_Token_
 
MonitorElementh2_Chi2VsEta_ [3]
 
MonitorElementh2_Chi2VsR_ [3]
 
MonitorElementh2_convVtxdRVsEta_
 
MonitorElementh2_convVtxdRVsR_
 
MonitorElementh2_convVtxRrecVsTrue_
 
MonitorElementh2_DCotTracksVsEta_
 
MonitorElementh2_DCotTracksVsR_
 
MonitorElementh2_DPhiTracksAtEcalVsEta_
 
MonitorElementh2_DPhiTracksAtEcalVsR_
 
MonitorElementh2_DPhiTracksAtVtxVsEta_
 
MonitorElementh2_DPhiTracksAtVtxVsR_
 
MonitorElementh2_dzPVVsR_
 
MonitorElementh2_photonPtRecVsPtSim_
 
MonitorElementh2_PtRecVsPtSim_ [3]
 
MonitorElementh2_TkPtPull_ [3]
 
MonitorElementh_AllSimConv_ [5]
 Denominator for efficiencies. More...
 
MonitorElementh_convEta2_ [3][3]
 
MonitorElementh_convEta_ [3][3]
 
MonitorElementh_convEtaMatchSC_ [3][3]
 
MonitorElementh_convPhi_ [3][3]
 
MonitorElementh_convPt_ [3][3]
 
MonitorElementh_convPtRes_ [3]
 
MonitorElementh_convR_ [3][3]
 
MonitorElementh_convRplot_
 
MonitorElementh_convSCdEta_ [3][3]
 
MonitorElementh_convSCdPhi_ [3][3]
 
MonitorElementh_convVtxdEta_
 
MonitorElementh_convVtxdPhi_
 
MonitorElementh_convVtxdR_
 
MonitorElementh_convVtxdR_barrel_
 
MonitorElementh_convVtxdR_endcap_
 
MonitorElementh_convVtxdX_
 
MonitorElementh_convVtxdX_barrel_
 
MonitorElementh_convVtxdX_endcap_
 
MonitorElementh_convVtxdY_
 
MonitorElementh_convVtxdY_barrel_
 
MonitorElementh_convVtxdY_endcap_
 
MonitorElementh_convVtxdZ_
 
MonitorElementh_convVtxdZ_barrel_
 
MonitorElementh_convVtxdZ_endcap_
 
MonitorElementh_convVtxRvsZ_ [3]
 
MonitorElementh_convVtxRvsZ_zoom_ [2]
 
MonitorElementh_convVtxYvsX_
 
MonitorElementh_convVtxYvsX_zoom_ [2]
 
MonitorElementh_convZ_ [3][3]
 
MonitorElementh_convZplot_
 
MonitorElementh_DCotTracks_ [3][3]
 
MonitorElementh_deltaExpectedHitsInner_ [3][3]
 
MonitorElementh_DEtaTracksAtEcal_ [3][3]
 
MonitorElementh_distMinAppTracks_ [3][3]
 
MonitorElementh_dlClosestHitToVtx_ [3]
 
MonitorElementh_dlClosestHitToVtxSig_ [3]
 
MonitorElementh_DPhiTracksAtEcal_ [3][3]
 
MonitorElementh_DPhiTracksAtVtx_ [3][3]
 
MonitorElementh_dzPVFromTracks_ [2]
 
MonitorElementh_EoverPTracks_ [3][3]
 
MonitorElementh_invMass_ [3][3]
 
MonitorElementh_leadExpectedHitsInner_ [3][3]
 
MonitorElementh_leadNHitsBeforeVtx_ [3][3]
 
MonitorElementh_lxybs_ [3][3]
 
MonitorElementh_match_
 
MonitorElementh_maxDlClosestHitToVtx_ [3][3]
 
MonitorElementh_maxDlClosestHitToVtxSig_ [3][3]
 
MonitorElementh_maxNHitsBeforeVtx_ [3][3]
 
MonitorElementh_nConv_ [3][3]
 info per conversion More...
 
MonitorElementh_nHitsBeforeVtx_ [3]
 
MonitorElementh_nSharedHits_ [3][3]
 
MonitorElementh_nSimConv_ [2]
 
MonitorElementh_RecoConvTwoMTracks_ [5]
 
MonitorElementh_RecoConvTwoTracks_ [5]
 
MonitorElementh_SimConvEtaPix_ [2]
 
MonitorElementh_SimConvOneMTracks_ [5]
 
MonitorElementh_SimConvOneTracks_ [5]
 Numerator for efficiencies. More...
 
MonitorElementh_SimConvTwoMTracks_ [5]
 
MonitorElementh_SimConvTwoMTracksAndVtxPGT0005_ [5]
 
MonitorElementh_SimConvTwoMTracksAndVtxPGT01_ [5]
 
MonitorElementh_SimConvTwoMTracksAndVtxPGT0_ [5]
 
MonitorElementh_SimConvTwoTracks_ [5]
 
MonitorElementh_simConvVtxRvsZ_ [4]
 
MonitorElementh_simConvVtxYvsX_
 
MonitorElementh_SimRecConvOneMTracks_ [5]
 
MonitorElementh_SimRecConvOneTracks_ [5]
 
MonitorElementh_SimRecConvTwoMTracks_ [5]
 
MonitorElementh_SimRecConvTwoTracks_ [5]
 
MonitorElementh_simTkEta_
 
MonitorElementh_simTkPt_
 
MonitorElementh_sumNHitsBeforeVtx_ [3][3]
 
MonitorElementh_tkChi2_ [3]
 
MonitorElementh_tkChi2Large_ [3]
 
MonitorElementh_TkD0_ [3]
 
MonitorElementh_TkPtPull_ [3]
 
MonitorElementh_trailNHitsBeforeVtx_ [3][3]
 
MonitorElementh_VisSimConv_ [6]
 
MonitorElementh_VisSimConvLarge_
 
MonitorElementh_vtxChi2Prob_ [3][3]
 
MonitorElementh_zPVFromTracks_ [2]
 
double hcalEtSumCut_
 
double hcalHitEtLow_
 
double hcalIsolExtRadius_
 
double hcalIsolInnRadius_
 
edm::EDGetTokenT< edm::HepMCProducthepMC_Token_
 
bool highPurity_
 
bool isRunCentrally_
 
edm::InputTag label_tp_
 
double lip_
 
uint maxHitsBeforeVtx_
 
double maxPhoEtaForEffic
 
double maxPhoEtaForPurity
 
double maxPhoRForEffic
 
double maxPhoRForPurity
 
double maxPhoZForEffic
 
double maxPhoZForPurity
 
double mcConvEta_
 
double mcConvPhi_
 
double mcConvPt_
 
double mcConvR_
 
double mcConvX_
 
double mcConvY_
 
double mcConvZ_
 
double mcEta_
 
double mcJetEta_
 
double mcJetPhi_
 
double mcPhi_
 global variable for the MC photon More...
 
double minLxy_
 
double minPhoEtCut_
 
double minPhoPtForEffic
 
double minPhoPtForPurity
 
double minProb_
 
int nEntry_
 
int nEvt_
 
MonitorElementnHits_ [3]
 
MonitorElementnHitsVsEta_ [3]
 
MonitorElementnHitsVsR_ [3]
 
int nInvalidPCA_
 
int nMatched_
 
int nRecConv_
 
int nRecConvAss_
 
int nRecConvAssWithEcal_
 
int nSimConv_ [2]
 
int numOfTracksInCone_
 
edm::EDGetTokenT< reco::VertexCollectionoffline_pvToken_
 
MonitorElementp2_convVtxdRVsRZ_
 
MonitorElementp2_convVtxdZVsRZ_
 
MonitorElementp2_effRZ_
 
MonitorElementp_Chi2VsEta_ [3]
 
MonitorElementp_Chi2VsR_ [3]
 
MonitorElementp_convVtxdRVsEta_
 
MonitorElementp_convVtxdRVsR_
 
MonitorElementp_convVtxdXVsX_
 
MonitorElementp_convVtxdYVsY_
 
MonitorElementp_convVtxdZVsR_
 
MonitorElementp_convVtxdZVsZ_
 
MonitorElementp_DCotTracksVsEta_
 
MonitorElementp_DCotTracksVsR_
 
MonitorElementp_DPhiTracksAtEcalVsEta_
 
MonitorElementp_DPhiTracksAtEcalVsR_
 
MonitorElementp_DPhiTracksAtVtxVsEta_
 
MonitorElementp_DPhiTracksAtVtxVsR_
 
MonitorElementp_dzPVVsR_
 
MonitorElementp_nHitsVsEta_ [3]
 
MonitorElementp_nHitsVsR_ [3]
 
MonitorElementp_TkPtPull_ [3]
 
edm::ParameterSet parameters_
 
std::string photonCollection_
 
edm::EDGetTokenT< reco::PhotonCollectionphotonCollectionPr_Token_
 
std::string photonCollectionProducer_
 
double recMaxPt_
 
double recMinPt_
 Global variables for reco Photon. More...
 
double simMaxPt_
 
double simMinPt_
 
edm::ESHandle< CaloGeometrytheCaloGeom_
 
edm::ESHandle< CaloTopologytheCaloTopo_
 
edm::RefVector< TrackingParticleCollectiontheConvTP_
 
edm::ESHandle< MagneticFieldtheMF_
 
PhotonMCTruthFinderthePhotonMCTruthFinder_
 
edm::EDGetTokenT< TrackingParticleRefVectortpSelForEff_Token_
 
edm::EDGetTokenT< TrackingParticleRefVectortpSelForFake_Token_
 
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociatortrackAssociator_Token_
 
double trkIsolExtRadius_
 
double trkIsolInnRadius_
 
double trkPtLow_
 
double trkPtSumCut_
 
int verbosity_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
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
 
- 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 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 DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

$Id: TkConvValidator

Author
N.Marinelli - Univ. of Notre Dame

Definition at line 49 of file TkConvValidator.h.

Constructor & Destructor Documentation

TkConvValidator::TkConvValidator ( const edm::ParameterSet pset)
explicit

Definition at line 101 of file TkConvValidator.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HLT_2018_cff::InputTag, muonDTDigis_cfi::pset, AlCaHLTBitMon_QueryRunRegistry::string, and parallelization::uint.

101  {
102  fName_ = pset.getUntrackedParameter<std::string>("Name");
103  verbosity_ = pset.getUntrackedParameter<int>("Verbosity");
104  parameters_ = pset;
105 
106  photonCollectionProducer_ = pset.getParameter<std::string>("phoProducer");
107  photonCollection_ = pset.getParameter<std::string>("photonCollection");
109  consumes<reco::PhotonCollection>(edm::InputTag(photonCollectionProducer_, photonCollection_));
110 
112  conversionCollection_ = pset.getParameter<std::string>("conversionCollection");
114  consumes<reco::ConversionCollection>(edm::InputTag(conversionCollectionProducer_, conversionCollection_));
115 
116  // conversionTrackProducer_ = pset.getParameter<std::string>("trackProducer");
117  dqmpath_ = pset.getParameter<std::string>("dqmpath");
118  minPhoEtCut_ = pset.getParameter<double>("minPhoEtCut");
119  generalTracksOnly_ = pset.getParameter<bool>("generalTracksOnly");
120  arbitratedMerged_ = pset.getParameter<bool>("arbitratedMerged");
121  arbitratedEcalSeeded_ = pset.getParameter<bool>("arbitratedEcalSeeded");
122  ecalalgotracks_ = pset.getParameter<bool>("ecalalgotracks");
123  highPurity_ = pset.getParameter<bool>("highPurity");
124  minProb_ = pset.getParameter<double>("minProb");
125  maxHitsBeforeVtx_ = pset.getParameter<uint>("maxHitsBeforeVtx");
126  minLxy_ = pset.getParameter<double>("minLxy");
127  isRunCentrally_ = pset.getParameter<bool>("isRunCentrally");
128 
129  offline_pvToken_ = consumes<reco::VertexCollection>(
130  pset.getUntrackedParameter<edm::InputTag>("offlinePV", edm::InputTag("offlinePrimaryVertices")));
132  consumes<reco::BeamSpot>(pset.getUntrackedParameter<edm::InputTag>("beamspot", edm::InputTag("offlineBeamSpot")));
133  g4_simTk_Token_ = consumes<edm::SimTrackContainer>(pset.getParameter<edm::InputTag>("simTracks"));
134  g4_simVtx_Token_ = consumes<edm::SimVertexContainer>(pset.getParameter<edm::InputTag>("simTracks"));
135 
136  tpSelForEff_Token_ = consumes<TrackingParticleRefVector>(edm::InputTag("tpSelecForEfficiency"));
137  tpSelForFake_Token_ = consumes<TrackingParticleRefVector>(edm::InputTag("tpSelecForFakeRate"));
138  //hepMC_Token_ = consumes<edm::HepMCProduct>(edm::InputTag("generatorSmeared"));
139  //genjets_Token_ = consumes<reco::GenJetCollection>(
140  // edm::InputTag("ak4GenJets"));
141 
143  consumes<reco::TrackToTrackingParticleAssociator>(edm::InputTag("trackAssociatorByHitsForConversionValidation"));
144 }
T getParameter(std::string const &) const
std::string dqmpath_
T getUntrackedParameter(std::string const &, T const &) const
std::string photonCollection_
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForFake_Token_
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionPr_Token_
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
edm::ParameterSet parameters_
edm::EDGetTokenT< edm::SimTrackContainer > g4_simTk_Token_
edm::EDGetTokenT< edm::SimVertexContainer > g4_simVtx_Token_
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForEff_Token_
std::string conversionCollection_
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > trackAssociator_Token_
edm::EDGetTokenT< reco::ConversionCollection > conversionCollectionPr_Token_
std::string conversionCollectionProducer_
std::string fName_
std::string photonCollectionProducer_
TkConvValidator::~TkConvValidator ( )
override

Definition at line 146 of file TkConvValidator.cc.

146 {}

Member Function Documentation

void TkConvValidator::analyze ( const edm::Event e,
const edm::EventSetup esup 
)
override

Definition at line 1241 of file TkConvValidator.cc.

References funct::abs(), reco::TrackBase::algo(), reco::Conversion::arbitratedEcalSeeded, reco::Conversion::arbitratedMerged, reco::TrackToTrackingParticleAssociator::associateRecoToSim(), reco::TrackToTrackingParticleAssociator::associateSimToReco(), ALCARECOTkAlJpsiMuMu_cff::charge, reco::Vertex::chi2(), ChiSquaredProbability(), conv, reco::Conversion::conversionVertex(), HLTMuonOfflineAnalyzer_cfi::d0, reco::deltaPhi(), reco::Conversion::distOfMinimumApproach(), reco::Conversion::dlClosestHitToVtx(), reco::Conversion::dPhiTracksAtVtx(), HGC3DClusterGenMatchSelector_cfi::dR, edm::AssociationMap< Tag >::empty(), edm::AssociationMap< Tag >::end(), edm::AssociationMap< Tag >::find(), reco::Conversion::generalTracksOnly, edm::EventSetup::get(), edm::RefToBase< T >::get(), edm::Event::getByToken(), reco::Conversion::highPurity, reco::TrackBase::hitPattern(), mps_fire::i, edm::EventBase::id(), reco::TrackBase::inOutEcalSeededConv, edm::HandleBase::isValid(), reco::Vertex::isValid(), edm::Ref< C, T, F >::key(), match(), SiStripPI::max, tkConvValidator_cfi::maxPhoEtaForEffic, tkConvValidator_cfi::maxPhoEtaForPurity, tkConvValidator_cfi::maxPhoRForEffic, tkConvValidator_cfi::maxPhoZForEffic, tkConvValidator_cfi::maxPhoZForPurity, tkConvValidator_cfi::minPhoPtForEffic, tkConvValidator_cfi::minPhoPtForPurity, reco::HitPattern::MISSING_INNER_HITS, reco::Vertex::ndof(), reco::Conversion::nHitsBeforeVtx(), TrackCollections2monitor_cff::normalizedChi2, reco::Conversion::nSharedHits(), reco::HitPattern::numberOfLostHits(), TrackCollections2monitor_cff::numberOfValidHits, reco::TrackBase::outInEcalSeededConv, p1, p2, reco::Conversion::pairCotThetaSeparation(), reco::Conversion::pairInvariantMass(), EgammaValidation_cff::pdgId, nanoDQM_cff::Photon, ExoticaDQM_cfi::photonCollection, reco::Vertex::position(), edm::Handle< T >::product(), edm::ESHandle< T >::product(), reco::TrackBase::pt(), edm::RefToBaseVector< T >::push_back(), q1, q2, reco::Conversion::quality(), recPt, reco::Conversion::refittedPairMomentum(), reco::Vertex::refittedTracks(), mathSSE::sqrt(), reco::Photon::superCluster(), PbPb_ZMuSkimMuonDPG_cff::tracker, PDWG_EXOHSCP_cff::tracks, reco::Conversion::tracks(), parallelization::uint, photonValidationSequence_cff::useTP, spclusmultinvestigator_cfi::vertexCollection, badGlobalMuonTaggersAOD_cff::vtx, reco::Vertex::x(), reco::BeamSpot::x0(), reco::Vertex::y(), reco::BeamSpot::y0(), and reco::Conversion::zOfPrimaryVertexFromTracks().

1241  {
1243  using namespace edm;
1244  // const float etaPhiDistance=0.01;
1245  // Fiducial region
1246  // const float TRK_BARL =0.9;
1247  const float BARL = 1.4442; // DAQ TDR p.290
1248  // const float END_LO = 1.566; // unused
1249  const float END_HI = 2.5;
1250  // Electron mass
1251  // const Float_t mElec= 0.000511; // unused
1252 
1254  e.getByToken(trackAssociator_Token_, theTrackAssociator);
1255 
1256  nEvt_++;
1257  LogInfo("TkConvValidator") << "TkConvValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_
1258  << "\n";
1259  // std::cout << "TkConvValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
1260 
1261  // get the geometry from the event setup:
1262  esup.get<CaloGeometryRecord>().get(theCaloGeom_);
1263 
1264  // Transform Track into TransientTrack (needed by the Vertex fitter)
1266  esup.get<TransientTrackRecord>().get("TransientTrackBuilder", theTTB);
1267 
1271  const reco::ConversionCollection convCollection = *(convHandle.product());
1272  if (!convHandle.isValid()) {
1273  edm::LogError("ConversionsProducer") << "Error! Can't get the collection " << std::endl;
1274  return;
1275  }
1276 
1278  Handle<reco::PhotonCollection> photonHandle;
1279  e.getByToken(photonCollectionPr_Token_, photonHandle);
1280  const reco::PhotonCollection photonCollection = *(photonHandle.product());
1281  if (!photonHandle.isValid()) {
1282  edm::LogError("PhotonProducer") << "Error! Can't get the Photon collection " << std::endl;
1283  return;
1284  }
1285 
1286  // offline Primary vertex
1289  e.getByToken(offline_pvToken_, vertexHandle);
1290  if (!vertexHandle.isValid()) {
1291  edm::LogError("TrackerOnlyConversionProducer") << "Error! Can't get the product primary Vertex Collection "
1292  << "\n";
1293  } else {
1294  vertexCollection = *(vertexHandle.product());
1295  }
1296  reco::Vertex the_pvtx;
1297  bool valid_pvtx = false;
1298  if (!vertexCollection.empty()) {
1299  the_pvtx = *(vertexCollection.begin());
1300  //asking for one good vertex
1301  if (the_pvtx.isValid() && fabs(the_pvtx.position().z()) <= 15 && the_pvtx.position().Rho() <= 2) {
1302  valid_pvtx = true;
1303  }
1304  }
1305 
1306  edm::Handle<reco::BeamSpot> bsHandle;
1307  e.getByToken(beamspotToken_, bsHandle);
1308  if (!bsHandle.isValid()) {
1309  edm::LogError("TrackerOnlyConversionProducer") << "Error! Can't get the product primary Vertex Collection "
1310  << "\n";
1311  return;
1312  }
1313  const reco::BeamSpot& thebs = *bsHandle.product();
1314 
1315  //get tracker geometry for hits positions
1317  esup.get<TrackerDigiGeometryRecord>().get(tracker);
1318  const TrackerGeometry* trackerGeom = tracker.product();
1319 
1321  //get simtrack info
1322  //std::vector<SimTrack> theSimTracks;
1323  //std::vector<SimVertex> theSimVertices;
1324 
1327  e.getByToken(g4_simTk_Token_, SimTk);
1328  e.getByToken(g4_simVtx_Token_, SimVtx);
1329 
1330  bool useTP = parameters_.getParameter<bool>("useTP");
1333  edm::Handle<TrackingParticleRefVector> TPHandleForFakeRate;
1334  if (useTP) {
1335  e.getByToken(tpSelForEff_Token_, TPHandleForEff);
1336  e.getByToken(tpSelForFake_Token_, TPHandleForFakeRate);
1337  }
1338 
1339  const TrackingParticleRefVector& tpForEfficiency = useTP ? *(TPHandleForEff.product()) : dummy;
1340  const TrackingParticleRefVector& tpForFakeRate = useTP ? *(TPHandleForFakeRate.product()) : dummy;
1341 
1342  const std::vector<SimTrack>& theSimTracks = *SimTk;
1343  const std::vector<SimVertex>& theSimVertices = *SimVtx;
1344 
1345  //theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
1346  //theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
1347  std::vector<PhotonMCTruth> mcPhotons = thePhotonMCTruthFinder_->find(theSimTracks, theSimVertices);
1348 
1349  //edm::Handle<edm::HepMCProduct> hepMC;
1350  //e.getByToken(hepMC_Token_, hepMC);
1351  // const HepMC::GenEvent *myGenEvent = hepMC->GetEvent(); // unused
1352 
1353  // get generated jets
1354  //edm::Handle<reco::GenJetCollection> GenJetsHandle;
1355  //e.getByToken(genjets_Token_, GenJetsHandle);
1356  //const reco::GenJetCollection &genJetCollection = *(GenJetsHandle.product());
1357 
1358  ConversionHitChecker hitChecker;
1359 
1360  // ################ SIM to RECO ######################### //
1361  std::map<const reco::Track*, TrackingParticleRef> myAss;
1362  std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
1363 
1364  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1365  mcConvPt_ = (*mcPho).fourMomentum().et();
1366  float mcPhi = (*mcPho).fourMomentum().phi();
1367  mcPhi_ = phiNormalization(mcPhi);
1368  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1369  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
1370  mcConvR_ = (*mcPho).vertex().perp();
1371  mcConvX_ = (*mcPho).vertex().x();
1372  mcConvY_ = (*mcPho).vertex().y();
1373  mcConvZ_ = (*mcPho).vertex().z();
1374  mcConvEta_ = (*mcPho).vertex().eta();
1375  mcConvPhi_ = (*mcPho).vertex().phi();
1376 
1377  if (fabs(mcEta_) > END_HI)
1378  continue;
1379 
1381  continue;
1382  if (fabs(mcEta_) > maxPhoEtaForEffic)
1383  continue;
1384  if (fabs(mcConvZ_) > maxPhoZForEffic)
1385  continue;
1386  if (mcConvR_ > maxPhoRForEffic)
1387  continue;
1389 
1390  bool goodSimConversion = false;
1391  bool visibleConversion = false;
1392  bool visibleConversionsWithTwoSimTracks = false;
1393  if ((*mcPho).isAConversion() == 1) {
1394  nSimConv_[0]++;
1395  h_AllSimConv_[0]->Fill(mcEta_);
1396  h_AllSimConv_[1]->Fill(mcPhi_);
1397  h_AllSimConv_[2]->Fill(mcConvR_);
1399  h_AllSimConv_[4]->Fill((*mcPho).fourMomentum().et());
1400 
1401  if (mcConvR_ < 15)
1403 
1404  if ((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
1405  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
1406  visibleConversion = true;
1407 
1408  theConvTP_.clear();
1409  // std::cout << " TkConvValidator TrackingParticles TrackingParticleCollection size "<< trackingParticles.size() << "\n";
1410  //duplicated TP collections for two associations
1411  for (const TrackingParticleRef tp : tpForEfficiency) {
1412  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1413  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1414  theConvTP_.push_back(tp);
1415  }
1416  }
1417  //std::cout << " TkConvValidator theConvTP_ size " << theConvTP_.size() << std::endl;
1418 
1419  if (theConvTP_.size() == 2)
1420  visibleConversionsWithTwoSimTracks = true;
1421  goodSimConversion = false;
1422 
1423  if (visibleConversion && visibleConversionsWithTwoSimTracks)
1424  goodSimConversion = true;
1425  if (goodSimConversion) {
1426  nSimConv_[1]++;
1427  h_VisSimConv_[0]->Fill(mcEta_);
1428  h_VisSimConv_[1]->Fill(mcPhi_);
1429  h_VisSimConv_[2]->Fill(mcConvR_);
1431  h_VisSimConv_[4]->Fill((*mcPho).fourMomentum().et());
1432  }
1433 
1435  ++iTrk) {
1436  h_simTkPt_->Fill((*iTrk)->pt());
1437  h_simTkEta_->Fill((*iTrk)->eta());
1438  }
1439 
1440  }
1441 
1442  if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
1443  continue;
1444 
1445  h_simConvVtxRvsZ_[0]->Fill(fabs(mcConvZ_), mcConvR_);
1446  if (fabs(mcEta_) <= 1.) {
1447  h_simConvVtxRvsZ_[1]->Fill(fabs(mcConvZ_), mcConvR_);
1449  } else
1450  h_simConvVtxRvsZ_[2]->Fill(fabs(mcConvZ_), mcConvR_);
1451 
1452  //std::cout << " TkConvValidator theConvTP_ size " << theConvTP_.size() << std::endl;
1454  iTP++) {
1455  // std::cout << " SIM to RECO TP vertex " << (*iTP)->vx() << " " << (*iTP)->vy() << " " << (*iTP)->vz() << " pt " << (*iTP)->pt() << std::endl;
1456  }
1457 
1458  bool recomatch = false;
1459  float chi2Prob = 0.;
1461  // cout << " size of conversions " << convHandle->size() << endl;
1462  for (reco::ConversionCollection::const_iterator conv = convHandle->begin(); conv != convHandle->end(); ++conv) {
1463  const reco::Conversion aConv = (*conv);
1465  continue;
1467  continue;
1469  continue;
1470 
1472  continue;
1473 
1474  //problematic?
1475  const std::vector<edm::RefToBase<reco::Track> >& tracks = aConv.tracks();
1476 
1477  const reco::Vertex& vtx = aConv.conversionVertex();
1478  //requires two tracks and a valid vertex
1479  if (tracks.size() != 2 || !(vtx.isValid()))
1480  continue;
1481 
1483  continue;
1484  if (aConv.nHitsBeforeVtx().size() > 1 &&
1485  max(aConv.nHitsBeforeVtx().at(0), aConv.nHitsBeforeVtx().at(1)) > maxHitsBeforeVtx_)
1486  continue;
1487 
1488  //compute transverse decay length with respect to beamspot
1489  math::XYZVectorF themom = aConv.refittedPairMomentum();
1490  double dbsx = aConv.conversionVertex().x() - thebs.x0();
1491  double dbsy = aConv.conversionVertex().y() - thebs.y0();
1492  double lxy = (themom.x() * dbsx + themom.y() * dbsy) / themom.rho();
1493 
1494  if (lxy < minLxy_)
1495  continue;
1496 
1497  // bool phoIsInBarrel=false; // unused
1498  // bool phoIsInEndcap=false; // unused
1499  RefToBase<reco::Track> tfrb1 = aConv.tracks().front();
1500  RefToBase<reco::Track> tfrb2 = aConv.tracks().back();
1501 
1506  continue;
1507 
1508  //reco::TrackRef tk1 = aConv.tracks().front();
1509  //reco::TrackRef tk2 = aConv.tracks().back();
1510  //std::cout << "SIM to RECO conversion track pt " << tk1->pt() << " " << tk2->pt() << endl;
1511  //
1512  //Use two RefToBaseVector and do two association actions to avoid that if two tracks from different collection
1514  tc1.push_back(tfrb1);
1515  tc2.push_back(tfrb2);
1516  bool isAssociated = false;
1517  reco::SimToRecoCollection q1 = theTrackAssociator->associateSimToReco(tc1, theConvTP_);
1518  reco::SimToRecoCollection q2 = theTrackAssociator->associateSimToReco(tc2, theConvTP_);
1519  //try {
1520  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV1, trackV2;
1521 
1522  int tp_1 = 0, tp_2 = 1; //the index of associated tp in theConvTP_ for two tracks
1523  if (q1.find(theConvTP_[0]) != q1.end()) {
1524  trackV1 = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q1[theConvTP_[0]];
1525  } else if (q1.find(theConvTP_[1]) != q1.end()) {
1526  trackV1 = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q1[theConvTP_[1]];
1527  tp_1 = 1;
1528  }
1529  if (q2.find(theConvTP_[1]) != q2.end()) {
1530  trackV2 = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q2[theConvTP_[1]];
1531  } else if (q2.find(theConvTP_[0]) != q2.end()) {
1532  trackV2 = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q2[theConvTP_[0]];
1533  tp_2 = 0;
1534  }
1535  if (!(!trackV1.empty() && !trackV2.empty()))
1536  continue;
1537  if (tp_1 == tp_2)
1538  continue;
1539 
1540  edm::RefToBase<reco::Track> tr1 = trackV1.front().first;
1541  edm::RefToBase<reco::Track> tr2 = trackV2.front().first;
1542  //std::cout << "associated tp1 " <<theConvTP_[0]->pt() << " to track with pT=" << tr1->pt() << " " << (tr1.get())->pt() << endl;
1543  //std::cout << "associated tp2 " <<theConvTP_[1]->pt() << " to track with pT=" << tr2->pt() << " " << (tr2.get())->pt() << endl;
1544  myAss.insert(std::make_pair(tr1.get(), theConvTP_[tp_1]));
1545  myAss.insert(std::make_pair(tr2.get(), theConvTP_[tp_2]));
1546 
1547  //} catch (Exception const& event) {
1548  //cout << "continue: " << event.what() << endl;
1549  // continue;
1550  //}
1551 
1552  isAssociated = true;
1553  recomatch = true;
1554  chi2Prob = ChiSquaredProbability(aConv.conversionVertex().chi2(), aConv.conversionVertex().ndof());
1555 
1556  if (isAssociated) {
1559  h_SimRecConvTwoMTracks_[2]->Fill(mcConvR_);
1561  h_SimRecConvTwoMTracks_[4]->Fill((*mcPho).fourMomentum().et());
1562  }
1563 
1564  // break;
1565  } // loop over reco conversions
1566  if (recomatch) {
1570  h_SimConvTwoMTracks_[2]->Fill(mcConvR_);
1572  h_SimConvTwoMTracks_[4]->Fill((*mcPho).fourMomentum().et());
1573 
1574  if (chi2Prob > 0) {
1577  h_SimConvTwoMTracksAndVtxPGT0_[2]->Fill(mcConvR_);
1579  h_SimConvTwoMTracksAndVtxPGT0_[4]->Fill((*mcPho).fourMomentum().et());
1580  }
1581  if (chi2Prob > 0.0005) {
1586  h_SimConvTwoMTracksAndVtxPGT0005_[4]->Fill((*mcPho).fourMomentum().et());
1587  }
1588  }
1589 
1590  } //End loop over simulated conversions
1591 
1592  // ########################### RECO to SIM ############################## //
1593 
1594  for (reco::ConversionCollection::const_iterator conv = convHandle->begin(); conv != convHandle->end(); ++conv) {
1595  const reco::Conversion aConv = (*conv);
1597  continue;
1599  continue;
1601  continue;
1602 
1604  continue;
1605 
1606  //problematic?
1607  std::vector<edm::RefToBase<reco::Track> > tracks = aConv.tracks();
1608 
1609  const reco::Vertex& vtx = aConv.conversionVertex();
1610  //requires two tracks and a valid vertex
1611  if (tracks.size() != 2 || !(vtx.isValid()))
1612  continue;
1613  //if (tracks.size() !=2) continue;
1614 
1616  continue;
1617  if (aConv.nHitsBeforeVtx().size() > 1 &&
1618  max(aConv.nHitsBeforeVtx().at(0), aConv.nHitsBeforeVtx().at(1)) > maxHitsBeforeVtx_)
1619  continue;
1620 
1621  //compute transverse decay length with respect to beamspot
1622  math::XYZVectorF themom = aConv.refittedPairMomentum();
1623  double dbsx = aConv.conversionVertex().x() - thebs.x0();
1624  double dbsy = aConv.conversionVertex().y() - thebs.y0();
1625  double lxy = (themom.x() * dbsx + themom.y() * dbsy) / themom.rho();
1626 
1627  if (lxy < minLxy_)
1628  continue;
1629 
1630  bool phoIsInBarrel = false;
1631  bool phoIsInEndcap = false;
1632  RefToBase<reco::Track> tk1 = aConv.tracks().front();
1633  RefToBase<reco::Track> tk2 = aConv.tracks().back();
1635  tc1.push_back(tk1);
1636  tc2.push_back(tk2);
1637 
1638  if (ecalalgotracks_ &&
1642  continue;
1643 
1644  //std::cout << " RECO to SIM conversion track pt " << tk1->pt() << " " << tk2->pt() << endl;
1645  const reco::Track refTk1 = aConv.conversionVertex().refittedTracks().front();
1646  const reco::Track refTk2 = aConv.conversionVertex().refittedTracks().back();
1647 
1648  //TODO replace it with phi at vertex
1649  float dPhiTracksAtVtx = aConv.dPhiTracksAtVtx();
1650  // override with the phi calculated at the vertex
1651  math::XYZVector p1AtVtx = recalculateMomentumAtFittedVertex((*theMF_), *trackerGeom, tk1, aConv.conversionVertex());
1652  math::XYZVector p2AtVtx = recalculateMomentumAtFittedVertex((*theMF_), *trackerGeom, tk2, aConv.conversionVertex());
1653  if (sqrt(p1AtVtx.perp2()) > sqrt(p2AtVtx.perp2()))
1654  dPhiTracksAtVtx = p1AtVtx.phi() - p2AtVtx.phi();
1655  else
1656  dPhiTracksAtVtx = p2AtVtx.phi() - p1AtVtx.phi();
1657 
1658  math::XYZVectorF refittedMom = aConv.refittedPairMomentum();
1659 
1660  if (fabs(refittedMom.eta()) < 1.479) {
1661  phoIsInBarrel = true;
1662  } else {
1663  phoIsInEndcap = true;
1664  }
1665 
1666  nRecConv_++;
1667 
1668  // check matching with reco photon
1669  double Mindeltaeta = 999999;
1670  double Mindeltaphi = 999999;
1671  bool matchConvSC = false;
1672  reco::PhotonCollection::const_iterator iMatchingSC;
1673  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
1674  iPho++) {
1675  reco::Photon aPho = reco::Photon(*iPho);
1676  const double deltaphi = reco::deltaPhi(aConv.refittedPairMomentum().phi(), aPho.superCluster()->position().phi());
1677  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
1678  double deltaeta = abs(aPho.superCluster()->position().eta() - ConvEta);
1679  if (abs(deltaeta) < abs(Mindeltaeta) && abs(deltaphi) < abs(Mindeltaphi)) {
1680  Mindeltaphi = abs(deltaphi);
1681  Mindeltaeta = abs(deltaeta);
1682  iMatchingSC = iPho;
1683  }
1684  }
1685  if (abs(Mindeltaeta) < 0.1 && abs(Mindeltaphi) < 0.1) {
1686  matchConvSC = true;
1687  }
1688 
1690  int match = 0;
1691  float invM = aConv.pairInvariantMass();
1692  float chi2Prob = ChiSquaredProbability(aConv.conversionVertex().chi2(), aConv.conversionVertex().ndof());
1693  uint maxNHitsBeforeVtx =
1694  aConv.nHitsBeforeVtx().size() > 1 ? max(aConv.nHitsBeforeVtx().at(0), aConv.nHitsBeforeVtx().at(1)) : 0;
1695  uint sumNHitsBeforeVtx =
1696  aConv.nHitsBeforeVtx().size() > 1 ? aConv.nHitsBeforeVtx().at(0) + aConv.nHitsBeforeVtx().at(1) : 0;
1697  float maxDlClosestHitToVtx = aConv.dlClosestHitToVtx().size() > 1 ? max(aConv.dlClosestHitToVtx().at(0).value(),
1698  aConv.dlClosestHitToVtx().at(1).value())
1699  : 0;
1700  float maxDlClosestHitToVtxSig =
1701  aConv.dlClosestHitToVtx().size() > 1
1702  ? max(aConv.dlClosestHitToVtx().at(0).value() / aConv.dlClosestHitToVtx().at(0).error(),
1703  aConv.dlClosestHitToVtx().at(1).value() / aConv.dlClosestHitToVtx().at(1).error())
1704  : 0;
1705 
1706  int ilead = 0, itrail = 1;
1707  if (tk2->pt() > tk1->pt()) {
1708  ilead = 1;
1709  itrail = 0;
1710  }
1711  RefToBase<reco::Track> tklead = aConv.tracks().at(ilead);
1712  RefToBase<reco::Track> tktrail = aConv.tracks().at(itrail);
1713 
1714  int deltaExpectedHitsInner = tklead->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS) -
1716  int leadExpectedHitsInner = tklead->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
1717  uint leadNHitsBeforeVtx = aConv.nHitsBeforeVtx().size() > 1 ? aConv.nHitsBeforeVtx().at(ilead) : 0;
1718  uint trailNHitsBeforeVtx = aConv.nHitsBeforeVtx().size() > 1 ? aConv.nHitsBeforeVtx().at(itrail) : 0;
1719 
1720  h_convEta_[match][0]->Fill(refittedMom.eta());
1721  h_convEta2_[match][0]->Fill(refittedMom.eta());
1722 
1723  h_convPhi_[match][0]->Fill(refittedMom.phi());
1724  h_convR_[match][0]->Fill(sqrt(aConv.conversionVertex().position().perp2()));
1725  h_convRplot_->Fill(sqrt(aConv.conversionVertex().position().perp2()));
1726  h_convZ_[match][0]->Fill(aConv.conversionVertex().position().z());
1727  h_convZplot_->Fill(aConv.conversionVertex().position().z());
1728  h_convPt_[match][0]->Fill(sqrt(refittedMom.perp2()));
1729  h_invMass_[match][0]->Fill(invM);
1730  h_vtxChi2Prob_[match][0]->Fill(chi2Prob);
1731  h_lxybs_[match][0]->Fill(lxy);
1732  h_maxNHitsBeforeVtx_[match][0]->Fill(maxNHitsBeforeVtx);
1733  h_leadNHitsBeforeVtx_[match][0]->Fill(leadNHitsBeforeVtx);
1734  h_trailNHitsBeforeVtx_[match][0]->Fill(trailNHitsBeforeVtx);
1735  h_sumNHitsBeforeVtx_[match][0]->Fill(sumNHitsBeforeVtx);
1736  h_deltaExpectedHitsInner_[match][0]->Fill(deltaExpectedHitsInner);
1737  h_leadExpectedHitsInner_[match][0]->Fill(leadExpectedHitsInner);
1738  h_maxDlClosestHitToVtx_[match][0]->Fill(maxDlClosestHitToVtx);
1739  h_maxDlClosestHitToVtxSig_[match][0]->Fill(maxDlClosestHitToVtxSig);
1740  h_nSharedHits_[match][0]->Fill(aConv.nSharedHits());
1741 
1742  if (matchConvSC) {
1743  h_convEtaMatchSC_[match][0]->Fill(refittedMom.eta());
1744  h_EoverPTracks_[match][0]->Fill(iMatchingSC->superCluster()->energy() / sqrt(refittedMom.mag2()));
1745  h_convSCdPhi_[match][0]->Fill(iMatchingSC->superCluster()->position().phi() - refittedMom.phi());
1746  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
1747  h_convSCdEta_[match][0]->Fill(iMatchingSC->superCluster()->position().eta() - ConvEta);
1748  }
1749 
1751  h_DPhiTracksAtVtx_[match][0]->Fill(dPhiTracksAtVtx);
1752  h2_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
1753  h2_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
1754  p_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
1755  p_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
1756 
1759  h2_DCotTracksVsR_->Fill(mcConvR_, aConv.pairCotThetaSeparation());
1761  p_DCotTracksVsR_->Fill(mcConvR_, aConv.pairCotThetaSeparation());
1762 
1763  if (phoIsInBarrel) {
1764  h_invMass_[match][1]->Fill(invM);
1765  h_vtxChi2Prob_[match][1]->Fill(chi2Prob);
1767  h_DPhiTracksAtVtx_[match][1]->Fill(dPhiTracksAtVtx);
1769  h_lxybs_[match][1]->Fill(lxy);
1770  h_maxNHitsBeforeVtx_[match][1]->Fill(maxNHitsBeforeVtx);
1771  h_leadNHitsBeforeVtx_[match][1]->Fill(leadNHitsBeforeVtx);
1772  h_trailNHitsBeforeVtx_[match][1]->Fill(trailNHitsBeforeVtx);
1773  h_sumNHitsBeforeVtx_[match][1]->Fill(sumNHitsBeforeVtx);
1774  h_deltaExpectedHitsInner_[match][1]->Fill(deltaExpectedHitsInner);
1775  h_leadExpectedHitsInner_[match][1]->Fill(leadExpectedHitsInner);
1776  h_maxDlClosestHitToVtx_[match][1]->Fill(maxDlClosestHitToVtx);
1777  h_maxDlClosestHitToVtxSig_[match][1]->Fill(maxDlClosestHitToVtxSig);
1778  h_nSharedHits_[match][1]->Fill(aConv.nSharedHits());
1779 
1780  /*
1781  if ( aConv.caloCluster().size() ) {
1782  h_convSCdPhi_[match][1]->Fill( aConv.caloCluster()[0]->phi() - refittedMom.phi() );
1783  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1784  h_convSCdEta_[match][1]->Fill( aConv.caloCluster()[0]->eta() - ConvEta );
1785  }
1786  */
1787 
1788  if (matchConvSC) {
1789  h_EoverPTracks_[match][1]->Fill(iMatchingSC->superCluster()->energy() / sqrt(refittedMom.mag2()));
1790  h_convSCdPhi_[match][1]->Fill(iMatchingSC->superCluster()->position().phi() - refittedMom.phi());
1791  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
1792  h_convSCdEta_[match][1]->Fill(iMatchingSC->superCluster()->position().eta() - ConvEta);
1793  }
1794  }
1795 
1796  if (phoIsInEndcap) {
1797  h_invMass_[match][2]->Fill(invM);
1798  h_vtxChi2Prob_[match][2]->Fill(chi2Prob);
1800  h_DPhiTracksAtVtx_[match][2]->Fill(dPhiTracksAtVtx);
1802  h_lxybs_[match][2]->Fill(lxy);
1803  h_maxNHitsBeforeVtx_[match][2]->Fill(maxNHitsBeforeVtx);
1804  h_leadNHitsBeforeVtx_[match][2]->Fill(leadNHitsBeforeVtx);
1805  h_trailNHitsBeforeVtx_[match][2]->Fill(trailNHitsBeforeVtx);
1806  h_sumNHitsBeforeVtx_[match][2]->Fill(sumNHitsBeforeVtx);
1807  h_deltaExpectedHitsInner_[match][2]->Fill(deltaExpectedHitsInner);
1808  h_leadExpectedHitsInner_[match][2]->Fill(leadExpectedHitsInner);
1809  h_maxDlClosestHitToVtx_[match][2]->Fill(maxDlClosestHitToVtx);
1810  h_maxDlClosestHitToVtxSig_[match][2]->Fill(maxDlClosestHitToVtxSig);
1811  h_nSharedHits_[match][2]->Fill(aConv.nSharedHits());
1812  if (matchConvSC) {
1813  h_EoverPTracks_[match][2]->Fill(iMatchingSC->superCluster()->energy() / sqrt(refittedMom.mag2()));
1814  h_convSCdPhi_[match][2]->Fill(iMatchingSC->superCluster()->position().phi() - refittedMom.phi());
1815  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
1816  h_convSCdEta_[match][2]->Fill(iMatchingSC->superCluster()->position().eta() - ConvEta);
1817  }
1818  }
1819 
1820  h_convVtxRvsZ_[0]->Fill(fabs(aConv.conversionVertex().position().z()),
1821  sqrt(aConv.conversionVertex().position().perp2()));
1822  h_convVtxYvsX_->Fill(aConv.conversionVertex().position().x(), aConv.conversionVertex().position().y());
1823  h_convVtxYvsX_zoom_[0]->Fill(aConv.conversionVertex().position().x(), aConv.conversionVertex().position().y());
1824  h_convVtxYvsX_zoom_[1]->Fill(aConv.conversionVertex().position().x(), aConv.conversionVertex().position().y());
1825 
1826  // quantities per track: all conversions
1827  for (unsigned int i = 0; i < tracks.size(); i++) {
1828  double d0;
1829  if (valid_pvtx) {
1830  d0 = -tracks[i]->dxy(the_pvtx.position());
1831  } else {
1832  d0 = tracks[i]->d0();
1833  }
1834  h_TkD0_[match]->Fill(d0 * tracks[i]->charge());
1835  h_nHitsBeforeVtx_[match]->Fill(aConv.nHitsBeforeVtx().size() > 1 ? aConv.nHitsBeforeVtx().at(i) : 0);
1836  h_dlClosestHitToVtx_[match]->Fill(aConv.dlClosestHitToVtx().size() > 1 ? aConv.dlClosestHitToVtx().at(i).value()
1837  : 0);
1839  ? aConv.dlClosestHitToVtx().at(i).value() /
1840  aConv.dlClosestHitToVtx().at(i).error()
1841  : 0);
1842 
1843  nHitsVsEta_[match]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()));
1844  nHitsVsR_[match]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()));
1845  p_nHitsVsEta_[match]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
1846  p_nHitsVsR_[match]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
1847  h_tkChi2_[match]->Fill(tracks[i]->normalizedChi2());
1848  h_tkChi2Large_[match]->Fill(tracks[i]->normalizedChi2());
1849  h2_Chi2VsEta_[match]->Fill(mcEta_, tracks[i]->normalizedChi2());
1850  h2_Chi2VsR_[match]->Fill(mcConvR_, tracks[i]->normalizedChi2());
1851  p_Chi2VsEta_[match]->Fill(mcEta_, tracks[i]->normalizedChi2());
1852  p_Chi2VsR_[match]->Fill(mcConvR_, tracks[i]->normalizedChi2());
1853  }
1854 
1855  bool associated = false;
1856  float mcConvPt_ = -99999999;
1857  // float mcPhi= 0; // unused
1858  float simPV_Z = 0;
1859  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1860  mcConvPt_ = (*mcPho).fourMomentum().et();
1861  float mcPhi = (*mcPho).fourMomentum().phi();
1862  simPV_Z = (*mcPho).primaryVertex().z();
1863  mcPhi_ = phiNormalization(mcPhi);
1864  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1865  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
1866  mcConvR_ = (*mcPho).vertex().perp();
1867  mcConvX_ = (*mcPho).vertex().x();
1868  mcConvY_ = (*mcPho).vertex().y();
1869  mcConvZ_ = (*mcPho).vertex().z();
1870  mcConvEta_ = (*mcPho).vertex().eta();
1871  mcConvPhi_ = (*mcPho).vertex().phi();
1872  if (fabs(mcEta_) > END_HI)
1873  continue;
1874  if (mcConvPt_ < minPhoPtForPurity)
1875  continue;
1876  if (fabs(mcEta_) > maxPhoEtaForPurity)
1877  continue;
1878  if (fabs(mcConvZ_) > maxPhoZForPurity)
1879  continue;
1880  if (mcConvR_ > maxPhoRForEffic)
1881  continue;
1882 
1883  if ((*mcPho).isAConversion() != 1)
1884  continue;
1885  if (!((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
1886  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
1887  continue;
1888 
1889  theConvTP_.clear();
1890  for (const TrackingParticleRef tp : tpForFakeRate) {
1891  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1892  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1893  theConvTP_.push_back(tp);
1894  }
1895  }
1896 
1897  if (theConvTP_.size() < 2)
1898  continue;
1899 
1900  //associated = false;
1901  reco::RecoToSimCollection const& p1 = theTrackAssociator->associateRecoToSim(tc1, theConvTP_);
1902  reco::RecoToSimCollection const& p2 = theTrackAssociator->associateRecoToSim(tc2, theConvTP_);
1903 
1904  auto itP1 = p1.find(tk1);
1905  auto itP2 = p2.find(tk2);
1906  bool good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
1907  if (not good) {
1908  itP1 = p1.find(tk2);
1909  itP2 = p2.find(tk1);
1910  good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
1911  }
1912 
1913  if (good) {
1914  std::vector<std::pair<TrackingParticleRef, double> > const& tp1 = itP1->val;
1915  std::vector<std::pair<TrackingParticleRef, double> > const& tp2 = itP2->val;
1916  TrackingParticleRef tpr1 = tp1.front().first;
1917  TrackingParticleRef tpr2 = tp2.front().first;
1918  if (abs(tpr1->pdgId()) == 11 && abs(tpr2->pdgId()) == 11 && tpr1->pdgId() * tpr2->pdgId() < 0) {
1919  if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
1920  (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
1921  if (tpr1->parentVertex().key() == tpr2->parentVertex().key() &&
1922  ((*tpr1->parentVertex()->sourceTracks_begin())->pdgId() == 22)) {
1923  mcConvR_ = sqrt(tpr1->parentVertex()->position().Perp2());
1924  mcConvZ_ = tpr1->parentVertex()->position().z();
1925  mcConvX_ = tpr1->parentVertex()->position().x();
1926  mcConvY_ = tpr1->parentVertex()->position().y();
1927  mcConvEta_ = tpr1->parentVertex()->position().eta();
1928  mcConvPhi_ = tpr1->parentVertex()->position().phi();
1929  mcConvPt_ = sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
1930  //std::cout << " Reco to Sim mcconvpt " << mcConvPt_ << std::endl;
1931  //cout << "associated track1 to " << tpr1->pdgId() << " with p=" << tpr1->p4() << " with pT=" << tpr1->pt() << endl;
1932  //cout << "associated track2 to " << tpr2->pdgId() << " with p=" << tpr2->p4() << " with pT=" << tpr2->pt() << endl;
1933  associated = true;
1934  break;
1935  }
1936  }
1937  }
1938  }
1939 
1940  } // end loop on sim photons
1941 
1942  if (false) {
1943  theConvTP_.clear();
1944  theConvTP_ = tpForFakeRate;
1945  reco::RecoToSimCollection p1incl = theTrackAssociator->associateRecoToSim(tc1, theConvTP_);
1946  reco::RecoToSimCollection p2incl = theTrackAssociator->associateRecoToSim(tc2, theConvTP_);
1947 
1948  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
1949  mcConvPt_ = (*mcPho).fourMomentum().et();
1950  float mcPhi = (*mcPho).fourMomentum().phi();
1951  simPV_Z = (*mcPho).primaryVertex().z();
1952  mcPhi_ = phiNormalization(mcPhi);
1953  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
1954  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
1955  mcConvR_ = (*mcPho).vertex().perp();
1956  mcConvX_ = (*mcPho).vertex().x();
1957  mcConvY_ = (*mcPho).vertex().y();
1958  mcConvZ_ = (*mcPho).vertex().z();
1959  mcConvEta_ = (*mcPho).vertex().eta();
1960  mcConvPhi_ = (*mcPho).vertex().phi();
1961  if (fabs(mcEta_) > END_HI)
1962  continue;
1963  if (mcConvPt_ < minPhoPtForPurity)
1964  continue;
1965  if (fabs(mcEta_) > maxPhoEtaForPurity)
1966  continue;
1967  if (fabs(mcConvZ_) > maxPhoZForPurity)
1968  continue;
1969  if (mcConvR_ > maxPhoRForEffic)
1970  continue;
1971 
1972  if ((*mcPho).isAConversion() != 1)
1973  continue;
1974  if (!((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
1975  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
1976  continue;
1977 
1978  theConvTP_.clear();
1979  for (TrackingParticleRef tp : tpForFakeRate) {
1980  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
1981  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
1982  theConvTP_.push_back(tp);
1983  }
1984  }
1985 
1986  if (theConvTP_.size() < 2)
1987  continue;
1988 
1989  //associated = false;
1990  reco::RecoToSimCollection p1 = theTrackAssociator->associateRecoToSim(tc1, theConvTP_);
1991  reco::RecoToSimCollection p2 = theTrackAssociator->associateRecoToSim(tc2, theConvTP_);
1992 
1993  if ((!p1incl.empty() && !p2incl.empty()) && (!p1.empty() || !p2.empty())) { // associated = true;
1994  try {
1995  std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1incl[tk1];
1996  std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2incl[tk2];
1997  if (!(!tp1.empty() && !tp2.empty())) {
1998  tp1 = p1[tk2];
1999  tp2 = p2[tk1];
2000  }
2001  if (!tp1.empty() && !tp2.empty()) {
2002  TrackingParticleRef tpr1 = tp1.front().first;
2003  TrackingParticleRef tpr2 = tp2.front().first;
2004  if (abs(tpr1->pdgId()) == 11 && abs(tpr2->pdgId()) == 11 && tpr1->pdgId() * tpr2->pdgId() < 0) {
2005  if (((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() >= 1) &&
2006  (*tpr1->parentVertex()->sourceTracks_begin())->pdgId() == 22) &&
2007  ((tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() >= 1) &&
2008  (*tpr2->parentVertex()->sourceTracks_begin())->pdgId() == 22)) {
2009  // if ( fabs(tpr1->vx() - tpr2->vx()) < 0.1 && fabs(tpr1->vy() - tpr2->vy()) < 0.1 && fabs(tpr1->vz() - tpr2->vz()) < 0.1) {
2010  //if (((*tpr1->parentVertex()->sourceTracks_begin())->pdgId()==22) || ((*tpr2->parentVertex()->sourceTracks_begin())->pdgId()==22)) {
2011  // mcConvR_ = sqrt(tpr1->parentVertex()->position().Perp2());
2012  // mcConvZ_ = tpr1->parentVertex()->position().z();
2013  // mcConvX_ = tpr1->parentVertex()->position().x();
2014  // mcConvY_ = tpr1->parentVertex()->position().y();
2015  // mcConvEta_ = tpr1->parentVertex()->position().eta();
2016  // mcConvPhi_ = tpr1->parentVertex()->position().phi();
2017  // mcConvPt_ = sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
2018  //std::cout << " Reco to Sim mcconvpt " << mcConvPt_ << std::endl;
2019  //cout << "associated track1 to " << tpr1->pdgId() << " with p=" << tpr1->p4() << " with pT=" << tpr1->pt() << endl;
2020  //cout << "associated track2 to " << tpr2->pdgId() << " with p=" << tpr2->p4() << " with pT=" << tpr2->pt() << endl;
2021  associated = true;
2022  break;
2023  //}
2024  //}
2025  }
2026  }
2027  }
2028  } catch (Exception const& event) {
2029  //cout << "do not continue: " << event.what() << endl;
2030  //continue;
2031  }
2032  }
2033  }
2034  }
2035 
2036  if (associated)
2037  match = 1;
2038  else
2039  match = 2;
2040 
2041  h_match_->Fill(float(match));
2043  if (match == 1)
2044  nRecConvAss_++;
2045  h_convEta_[match][0]->Fill(refittedMom.eta());
2046  h_convEta_[match][1]->Fill(refittedMom.eta());
2047  if (matchConvSC)
2048  h_convEtaMatchSC_[match][0]->Fill(refittedMom.eta());
2049  h_convPhi_[match][0]->Fill(refittedMom.phi());
2050  h_convR_[match][0]->Fill(sqrt(aConv.conversionVertex().position().perp2()));
2051  h_convZ_[match][0]->Fill(aConv.conversionVertex().position().z());
2052  h_convPt_[match][0]->Fill(sqrt(refittedMom.perp2()));
2053  h_invMass_[match][0]->Fill(invM);
2054  h_vtxChi2Prob_[match][0]->Fill(chi2Prob);
2055  h_DPhiTracksAtVtx_[match][0]->Fill(dPhiTracksAtVtx);
2058  h_lxybs_[match][0]->Fill(lxy);
2059  h_maxNHitsBeforeVtx_[match][0]->Fill(maxNHitsBeforeVtx);
2060  h_leadNHitsBeforeVtx_[match][0]->Fill(leadNHitsBeforeVtx);
2061  h_trailNHitsBeforeVtx_[match][0]->Fill(trailNHitsBeforeVtx);
2062  h_sumNHitsBeforeVtx_[match][0]->Fill(sumNHitsBeforeVtx);
2063  h_deltaExpectedHitsInner_[match][0]->Fill(deltaExpectedHitsInner);
2064  h_leadExpectedHitsInner_[match][0]->Fill(leadExpectedHitsInner);
2065  h_maxDlClosestHitToVtx_[match][0]->Fill(maxDlClosestHitToVtx);
2066  h_maxDlClosestHitToVtxSig_[match][0]->Fill(maxDlClosestHitToVtxSig);
2067  h_nSharedHits_[match][0]->Fill(aConv.nSharedHits());
2068  if (matchConvSC) {
2069  //h_EoverPTracks_[match][0] ->Fill (aConv.EoverPrefittedTracks());
2070  h_EoverPTracks_[match][0]->Fill(iMatchingSC->superCluster()->energy() / sqrt(refittedMom.mag2()));
2071  h_convSCdPhi_[match][0]->Fill(iMatchingSC->superCluster()->position().phi() - refittedMom.phi());
2072  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
2073  h_convSCdEta_[match][0]->Fill(iMatchingSC->superCluster()->position().eta() - ConvEta);
2074  }
2075  if (match == 1) {
2076  h2_photonPtRecVsPtSim_->Fill(mcConvPt_, sqrt(refittedMom.perp2()));
2077  h_convPtRes_[0]->Fill(sqrt(refittedMom.perp2()) / mcConvPt_);
2078  }
2079 
2080  if (phoIsInBarrel) {
2081  h_invMass_[match][1]->Fill(invM);
2082  h_vtxChi2Prob_[match][1]->Fill(chi2Prob);
2083  h_DPhiTracksAtVtx_[match][1]->Fill(dPhiTracksAtVtx);
2086  h_lxybs_[match][1]->Fill(lxy);
2087  h_maxNHitsBeforeVtx_[match][1]->Fill(maxNHitsBeforeVtx);
2088  h_leadNHitsBeforeVtx_[match][1]->Fill(leadNHitsBeforeVtx);
2089  h_trailNHitsBeforeVtx_[match][1]->Fill(trailNHitsBeforeVtx);
2090  h_sumNHitsBeforeVtx_[match][1]->Fill(sumNHitsBeforeVtx);
2091  h_deltaExpectedHitsInner_[match][1]->Fill(deltaExpectedHitsInner);
2092  h_leadExpectedHitsInner_[match][1]->Fill(leadExpectedHitsInner);
2093  h_maxDlClosestHitToVtx_[match][1]->Fill(maxDlClosestHitToVtx);
2094  h_maxDlClosestHitToVtxSig_[match][1]->Fill(maxDlClosestHitToVtxSig);
2095  h_nSharedHits_[match][1]->Fill(aConv.nSharedHits());
2096  if (matchConvSC) {
2097  // h_EoverPTracks_[match][1] ->Fill (aConv.EoverPrefittedTracks());
2098  h_EoverPTracks_[match][1]->Fill(iMatchingSC->superCluster()->energy() / sqrt(refittedMom.mag2()));
2099  h_convSCdPhi_[match][1]->Fill(iMatchingSC->superCluster()->position().phi() - refittedMom.phi());
2100  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
2101  h_convSCdEta_[match][1]->Fill(iMatchingSC->superCluster()->position().eta() - ConvEta);
2102  }
2103  if (match == 1)
2104  h_convPtRes_[1]->Fill(sqrt(refittedMom.perp2()) / mcConvPt_);
2105  }
2106 
2107  if (phoIsInEndcap) {
2108  h_invMass_[match][2]->Fill(invM);
2109  h_vtxChi2Prob_[match][2]->Fill(chi2Prob);
2110  h_DPhiTracksAtVtx_[match][2]->Fill(dPhiTracksAtVtx);
2113  h_lxybs_[match][2]->Fill(lxy);
2114  h_maxNHitsBeforeVtx_[match][2]->Fill(maxNHitsBeforeVtx);
2115  h_leadNHitsBeforeVtx_[match][2]->Fill(leadNHitsBeforeVtx);
2116  h_trailNHitsBeforeVtx_[match][2]->Fill(trailNHitsBeforeVtx);
2117  h_sumNHitsBeforeVtx_[match][2]->Fill(sumNHitsBeforeVtx);
2118  h_deltaExpectedHitsInner_[match][2]->Fill(deltaExpectedHitsInner);
2119  h_leadExpectedHitsInner_[match][2]->Fill(leadExpectedHitsInner);
2120  h_maxDlClosestHitToVtx_[match][2]->Fill(maxDlClosestHitToVtx);
2121  h_maxDlClosestHitToVtxSig_[match][2]->Fill(maxDlClosestHitToVtxSig);
2122  h_nSharedHits_[match][2]->Fill(aConv.nSharedHits());
2123  if (matchConvSC) {
2124  // h_EoverPTracks_[match][2] ->Fill (aConv.EoverPrefittedTracks());
2125  h_EoverPTracks_[match][2]->Fill(iMatchingSC->superCluster()->energy() / sqrt(refittedMom.mag2()));
2126  h_convSCdPhi_[match][2]->Fill(iMatchingSC->superCluster()->position().phi() - refittedMom.phi());
2127  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
2128  h_convSCdEta_[match][2]->Fill(iMatchingSC->superCluster()->position().eta() - ConvEta);
2129  }
2130  if (match == 1)
2131  h_convPtRes_[2]->Fill(sqrt(refittedMom.perp2()) / mcConvPt_);
2132  }
2133 
2134  if (match == 1) {
2138  h_convVtxdR_->Fill(sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2141  h2_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2142  h2_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2143  p_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2144  p_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2147  p_convVtxdZVsZ_->Fill(mcConvZ_, aConv.conversionVertex().position().z() - mcConvZ_);
2148  p_convVtxdZVsR_->Fill(mcConvR_, aConv.conversionVertex().position().z() - mcConvZ_);
2149 
2150  float dR = sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_;
2151  float dZ = aConv.conversionVertex().position().z() - mcConvZ_;
2152  p2_convVtxdRVsRZ_->Fill(mcConvZ_, mcConvR_, dR);
2153  p2_convVtxdZVsRZ_->Fill(mcConvZ_, mcConvR_, dZ);
2154 
2155  h2_convVtxRrecVsTrue_->Fill(mcConvR_, sqrt(aConv.conversionVertex().position().perp2()));
2156 
2159  h2_dzPVVsR_->Fill(mcConvR_, aConv.zOfPrimaryVertexFromTracks() - simPV_Z);
2160  p_dzPVVsR_->Fill(mcConvR_, aConv.zOfPrimaryVertexFromTracks() - simPV_Z);
2161 
2162  if (phoIsInBarrel) {
2166  h_convVtxdR_barrel_->Fill(sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2167  }
2168  if (phoIsInEndcap) {
2172  h_convVtxdR_endcap_->Fill(sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
2173  }
2174  }
2175 
2177  for (unsigned int i = 0; i < tracks.size(); i++) {
2178  //std::cout << " Loop over tracks pt " << tracks[i]->pt() << std::endl;
2179  RefToBase<reco::Track> tfrb(aConv.tracks()[i]);
2180  itAss = myAss.find(tfrb.get());
2181 
2182  nHitsVsEta_[match]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()));
2183  nHitsVsR_[match]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()));
2184  p_nHitsVsEta_[match]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
2185  p_nHitsVsR_[match]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
2186  h_tkChi2_[match]->Fill(tracks[i]->normalizedChi2());
2187  h_tkChi2Large_[match]->Fill(tracks[i]->normalizedChi2());
2188  h2_Chi2VsEta_[match]->Fill(mcEta_, tracks[i]->normalizedChi2());
2189  h2_Chi2VsR_[match]->Fill(mcConvR_, tracks[i]->normalizedChi2());
2190  p_Chi2VsEta_[match]->Fill(mcEta_, tracks[i]->normalizedChi2());
2191  p_Chi2VsR_[match]->Fill(mcConvR_, tracks[i]->normalizedChi2());
2192  double d0;
2193  if (valid_pvtx) {
2194  d0 = -tracks[i]->dxy(the_pvtx.position());
2195  } else {
2196  d0 = tracks[i]->d0();
2197  }
2198  h_TkD0_[match]->Fill(d0 * tracks[i]->charge());
2199  h_nHitsBeforeVtx_[match]->Fill(aConv.nHitsBeforeVtx().size() > 1 ? aConv.nHitsBeforeVtx().at(i) : 0);
2200  h_dlClosestHitToVtx_[match]->Fill(aConv.dlClosestHitToVtx().size() > 1 ? aConv.dlClosestHitToVtx().at(i).value()
2201  : 0);
2203  ? aConv.dlClosestHitToVtx().at(i).value() /
2204  aConv.dlClosestHitToVtx().at(i).error()
2205  : 0);
2206 
2207  if (itAss == myAss.end())
2208  continue;
2209  reco::Track refTrack = aConv.conversionVertex().refittedTracks()[i];
2210 
2211  float simPt = sqrt(((*itAss).second)->momentum().perp2());
2212  float recPt = refTrack.pt();
2213  float ptres = recPt - simPt;
2214  //float pterror = aConv.tracks()[i]->ptError();
2215  float pterror = aConv.conversionVertex().refittedTracks()[i].ptError();
2216  h2_PtRecVsPtSim_[0]->Fill(simPt, recPt);
2217  h_TkPtPull_[0]->Fill(ptres / pterror);
2218  h2_TkPtPull_[0]->Fill(mcEta_, ptres / pterror);
2219 
2220  if (phoIsInBarrel) {
2221  h_TkPtPull_[1]->Fill(ptres / pterror);
2222  h2_PtRecVsPtSim_[1]->Fill(simPt, recPt);
2223  }
2224  if (phoIsInEndcap) {
2225  h_TkPtPull_[2]->Fill(ptres / pterror);
2226  h2_PtRecVsPtSim_[2]->Fill(simPt, recPt);
2227  }
2228  } // end loop over track
2229 
2230  } // loop over reco conversions
2231 
2232  h_nConv_[0][0]->Fill(float(nRecConv_));
2233  h_nConv_[1][0]->Fill(float(nRecConvAss_));
2234 }
MonitorElement * h2_DPhiTracksAtVtxVsR_
MonitorElement * h2_dzPVVsR_
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
Definition: Conversion.h:88
MonitorElement * h_maxDlClosestHitToVtx_[3][3]
MonitorElement * h_convPt_[3][3]
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
MonitorElement * p_convVtxdYVsY_
value_type const * get() const
Definition: RefToBase.h:209
T getParameter(std::string const &) const
reco::SimToRecoCollection associateSimToReco(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
MonitorElement * h2_DCotTracksVsR_
MonitorElement * h_convVtxdR_
MonitorElement * h2_DCotTracksVsEta_
MonitorElement * h_simConvVtxRvsZ_[4]
MonitorElement * h_convZplot_
MonitorElement * h_convSCdPhi_[3][3]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0_[5]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
MonitorElement * h_DCotTracks_[3][3]
const_iterator end() const
last iterator over the map (read only)
static HepMC::IO_HEPEVT conv
MonitorElement * nHitsVsEta_[3]
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForFake_Token_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
MonitorElement * h_lxybs_[3][3]
edm::RefVector< TrackingParticleCollection > theConvTP_
MonitorElement * h_trailNHitsBeforeVtx_[3][3]
bool quality(ConversionQuality q) const
Definition: Conversion.h:178
double y() const
y coordinate
Definition: Vertex.h:117
math::XYZVector recalculateMomentumAtFittedVertex(const MagneticField &mf, const TrackerGeometry &trackerGeom, const edm::RefToBase< reco::Track > &tk, const reco::Vertex &vtx)
MonitorElement * p_Chi2VsR_[3]
bool isValid() const
Tells whether the vertex is valid.
Definition: Vertex.h:71
MonitorElement * h_convVtxYvsX_zoom_[2]
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionPr_Token_
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_tkChi2_[3]
bool empty() const
return true if empty
const std::vector< Measurement1DFloat > & dlClosestHitToVtx() const
Vector of signed decay length with uncertainty from nearest hit on track to the conversion vtx positi...
Definition: Conversion.h:156
MonitorElement * h_convVtxdX_
const_iterator find(const key_type &k) const
find element with specified reference key
MonitorElement * h_convPtRes_[3]
MonitorElement * h_convEtaMatchSC_[3][3]
double zOfPrimaryVertexFromTracks(const math::XYZPoint &myBeamSpot=math::XYZPoint()) const
Definition: Conversion.h:136
double distOfMinimumApproach() const
Definition: Conversion.h:116
MonitorElement * h2_Chi2VsEta_[3]
MonitorElement * h_SimRecConvTwoMTracks_[5]
double pairCotThetaSeparation() const
Delta cot(Theta) where Theta is the angle in the (y,z) plane between the two tracks. Original tracks are used.
Definition: Conversion.cc:179
MonitorElement * h_vtxChi2Prob_[3][3]
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
MonitorElement * h_convVtxdX_endcap_
MonitorElement * h_convVtxdR_endcap_
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
key_type key() const
Accessor for product key.
Definition: Ref.h:250
MonitorElement * h_zPVFromTracks_[2]
MonitorElement * h_convVtxdY_barrel_
MonitorElement * h_tkChi2Large_[3]
edm::ParameterSet parameters_
edm::EDGetTokenT< edm::SimTrackContainer > g4_simTk_Token_
MonitorElement * p_DCotTracksVsEta_
edm::EDGetTokenT< edm::SimVertexContainer > g4_simVtx_Token_
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:228
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
const std::vector< Track > & refittedTracks() const
Returns the container of refitted tracks.
Definition: Vertex.h:182
MonitorElement * h_maxDlClosestHitToVtxSig_[3][3]
MonitorElement * h_convVtxdR_barrel_
MonitorElement * h_leadExpectedHitsInner_[3][3]
double pairInvariantMass() const
if nTracks=2 returns the pair invariant mass. Original tracks are used here
Definition: Conversion.cc:159
const Point & position() const
position
Definition: Vertex.h:113
math::XYZVectorF refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
Definition: Conversion.cc:206
double q2[4]
Definition: TauolaWrapper.h:88
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
Definition: ConversionFwd.h:9
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:223
MonitorElement * h_convSCdEta_[3][3]
MonitorElement * h_sumNHitsBeforeVtx_[3][3]
MonitorElement * h_dzPVFromTracks_[2]
TrackAlgorithm algo() const
Definition: TrackBase.h:526
void Fill(long long x)
MonitorElement * h_nConv_[3][3]
info per conversion
edm::ESHandle< CaloGeometry > theCaloGeom_
MonitorElement * h_convVtxdY_
MonitorElement * p_DPhiTracksAtVtxVsEta_
MonitorElement * h_deltaExpectedHitsInner_[3][3]
MonitorElement * h_convVtxdEta_
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
MonitorElement * h_convVtxYvsX_
MonitorElement * p_convVtxdZVsR_
edm::EDGetTokenT< TrackingParticleRefVector > tpSelForEff_Token_
MonitorElement * p_convVtxdRVsR_
MonitorElement * h_convR_[3][3]
float etaTransformation(float a, float b)
float phiNormalization(float &a)
MonitorElement * h_VisSimConv_[6]
MonitorElement * h2_photonPtRecVsPtSim_
MonitorElement * h_EoverPTracks_[3][3]
edm::ESHandle< MagneticField > theMF_
T sqrt(T t)
Definition: SSEVec.h:19
PhotonMCTruthFinder * thePhotonMCTruthFinder_
double pt() const
track transverse momentum
Definition: TrackBase.h:602
MonitorElement * h_leadNHitsBeforeVtx_[3][3]
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > trackAssociator_Token_
edm::EDGetTokenT< reco::ConversionCollection > conversionCollectionPr_Token_
MonitorElement * h_distMinAppTracks_[3][3]
MonitorElement * p_DPhiTracksAtVtxVsR_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * h_SimConvEtaPix_[2]
double chi2() const
chi-squares
Definition: Vertex.h:102
MonitorElement * h_convVtxdX_barrel_
MonitorElement * p_nHitsVsEta_[3]
MonitorElement * h_simTkPt_
float ChiSquaredProbability(double chiSquared, double nrDOF)
MonitorElement * p_convVtxdXVsX_
MonitorElement * h_convVtxdY_endcap_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
Definition: Vector3D.h:16
MonitorElement * h_convEta_[3][3]
bool isValid() const
Definition: HandleBase.h:70
double p2[4]
Definition: TauolaWrapper.h:90
reco::RecoToSimCollection associateRecoToSim(const edm::Handle< edm::View< reco::Track >> &tCH, const edm::Handle< TrackingParticleCollection > &tPCH) const
double ndof() const
Definition: Vertex.h:109
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_convEta2_[3][3]
MonitorElement * h_nHitsBeforeVtx_[3]
MonitorElement * p2_convVtxdRVsRZ_
MonitorElement * p_Chi2VsEta_[3]
double x() const
x coordinate
Definition: Vertex.h:115
MonitorElement * h_convVtxdZ_
MonitorElement * h_convVtxRvsZ_[3]
uint8_t nSharedHits() const
number of shared hits btw the two track
Definition: Conversion.h:158
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * h_convPhi_[3][3]
T const * product() const
Definition: Handle.h:69
void clear()
Clear the vector.
Definition: RefVector.h:142
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:483
double q1[4]
Definition: TauolaWrapper.h:87
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
MonitorElement * h_convVtxdZ_barrel_
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
MonitorElement * h2_convVtxRrecVsTrue_
MonitorElement * h_AllSimConv_[5]
Denominator for efficiencies.
MonitorElement * h_convRplot_
MonitorElement * p_nHitsVsR_[3]
MonitorElement * p_dzPVVsR_
MonitorElement * h2_Chi2VsR_[3]
int numberOfLostHits(HitCategory category) const
Definition: HitPattern.h:861
std::vector< PhotonMCTruth > find(const std::vector< SimTrack > &simTracks, const std::vector< SimVertex > &simVertices)
MonitorElement * h_convVtxdPhi_
MonitorElement * h_invMass_[3][3]
MonitorElement * h_convZ_[3][3]
edm::EventID id() const
Definition: EventBase.h:59
MonitorElement * h_dlClosestHitToVtxSig_[3]
HLT enums.
double p1[4]
Definition: TauolaWrapper.h:89
MonitorElement * h2_PtRecVsPtSim_[3]
MonitorElement * h_match_
double mcPhi_
global variable for the MC photon
MonitorElement * p_convVtxdZVsZ_
MonitorElement * h2_TkPtPull_[3]
T get() const
Definition: EventSetup.h:73
void push_back(const RefToBase< T > &)
const std::vector< uint8_t > & nHitsBeforeVtx() const
Vector of the number of hits before the vertex along each track trajector.
Definition: Conversion.h:154
MonitorElement * h_convVtxdZ_endcap_
MonitorElement * h2_convVtxdRVsR_
MonitorElement * h_DPhiTracksAtVtx_[3][3]
double y0() const
y coordinate
Definition: BeamSpot.h:63
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
Definition: RefVector.h:67
size_type size() const
Size of the RefVector.
Definition: RefVector.h:102
MonitorElement * nHitsVsR_[3]
double recPt
MonitorElement * h_simTkEta_
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
MonitorElement * h_TkPtPull_[3]
MonitorElement * p2_convVtxdZVsRZ_
MonitorElement * h_SimConvTwoMTracks_[5]
MonitorElement * p_convVtxdRVsEta_
MonitorElement * h_dlClosestHitToVtx_[3]
MonitorElement * h_TkD0_[3]
MonitorElement * h2_convVtxdRVsEta_
T const * product() const
Definition: ESHandle.h:86
MonitorElement * h_nSharedHits_[3][3]
double dPhiTracksAtVtx() const
Definition: Conversion.cc:255
std::vector< edm::RefToBase< reco::Track > > const & tracks() const
vector of track to base references
Definition: Conversion.cc:150
Definition: event.py:1
MonitorElement * h_maxNHitsBeforeVtx_[3][3]
double x0() const
x coordinate
Definition: BeamSpot.h:61
void TkConvValidator::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  run,
edm::EventSetup const &  es 
)
overridevirtual

Histograms for efficiencies

Denominators

zooms

Implements DQMEDAnalyzer.

Definition at line 148 of file TkConvValidator.cc.

References dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), dqm::dqmstoreimpl::DQMStore::IBooker::bookProfile(), dqm::dqmstoreimpl::DQMStore::IBooker::bookProfile2D(), muonRecoAnalyzer_cfi::chi2Max, muonRecoAnalyzer_cfi::chi2Min, dbe_, photonValidator_cfi::dCotTracksBin, photonValidator_cfi::dCotTracksMax, photonValidator_cfi::dCotTracksMin, photonAnalyzer_cfi::dPhiTracksBin, photonAnalyzer_cfi::dPhiTracksMax, photonAnalyzer_cfi::dPhiTracksMin, photonValidator_cfi::eoverpBin, photonValidationSequence_cff::eoverpMax, photonValidationSequence_cff::eoverpMin, muonRecoAnalyzer_cfi::etaBin, conversionPostprocessing_cfi::etaBin2, ALCARECOTkAlBeamHalo_cff::etaMax, ALCARECOTkAlBeamHalo_cff::etaMin, photonAnalyzer_cfi::etBin, cosmicPhotonAnalyzer_cfi::etMax, photonAnalyzer_cfi::etMin, tkConvValidator_cfi::maxPhoEtaForEffic, tkConvValidator_cfi::maxPhoEtaForPurity, tkConvValidator_cfi::maxPhoRForEffic, tkConvValidator_cfi::maxPhoRForPurity, tkConvValidator_cfi::maxPhoZForEffic, tkConvValidator_cfi::maxPhoZForPurity, tkConvValidator_cfi::minPhoPtForEffic, tkConvValidator_cfi::minPhoPtForPurity, Utilities::operator, BeamMonitor_cff::phiBin, AlignmentTrackSelector_cfi::phiMax, AlignmentTrackSelector_cfi::phiMin, photonAnalyzer_cfi::rBin, photonValidator_cfi::rBinForXray, photonValidator_cfi::resBin, photonValidator_cfi::resMax, photonValidator_cfi::resMin, photonAnalyzer_cfi::rMax, photonValidator_cfi::rMaxForXray, photonAnalyzer_cfi::rMin, photonValidator_cfi::rMinForXray, dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, photonAnalyzer_cfi::zBin, photonValidator_cfi::zBin2ForXray, photonValidator_cfi::zBinForXray, photonAnalyzer_cfi::zMax, photonValidator_cfi::zMaxForXray, photonAnalyzer_cfi::zMin, and photonValidator_cfi::zMinForXray.

148  {
149  nEvt_ = 0;
150  nEntry_ = 0;
151  nRecConv_ = 0;
152  nRecConvAss_ = 0;
154 
155  nInvalidPCA_ = 0;
156 
157  dbe_ = nullptr;
159 
160  double etMin = parameters_.getParameter<double>("etMin");
161  double etMax = parameters_.getParameter<double>("etMax");
162  int etBin = parameters_.getParameter<int>("etBin");
163 
164  double resMin = parameters_.getParameter<double>("resMin");
165  double resMax = parameters_.getParameter<double>("resMax");
166  int resBin = parameters_.getParameter<int>("resBin");
167 
168  double etaMin = parameters_.getParameter<double>("etaMin");
169  double etaMax = parameters_.getParameter<double>("etaMax");
170  int etaBin = parameters_.getParameter<int>("etaBin");
171  int etaBin2 = parameters_.getParameter<int>("etaBin2");
172 
173  double phiMin = parameters_.getParameter<double>("phiMin");
174  double phiMax = parameters_.getParameter<double>("phiMax");
175  int phiBin = parameters_.getParameter<int>("phiBin");
176 
177  double rMin = parameters_.getParameter<double>("rMin");
178  double rMax = parameters_.getParameter<double>("rMax");
179  int rBin = parameters_.getParameter<int>("rBin");
180 
181  double zMin = parameters_.getParameter<double>("zMin");
182  double zMax = parameters_.getParameter<double>("zMax");
183  int zBin = parameters_.getParameter<int>("zBin");
184 
185  double dPhiTracksMin = parameters_.getParameter<double>("dPhiTracksMin");
186  double dPhiTracksMax = parameters_.getParameter<double>("dPhiTracksMax");
187  int dPhiTracksBin = parameters_.getParameter<int>("dPhiTracksBin");
188 
189  double eoverpMin = parameters_.getParameter<double>("eoverpMin");
190  double eoverpMax = parameters_.getParameter<double>("eoverpMax");
191  int eoverpBin = parameters_.getParameter<int>("eoverpBin");
192 
193  // double dEtaTracksMin = parameters_.getParameter<double>("dEtaTracksMin"); // unused
194  // double dEtaTracksMax = parameters_.getParameter<double>("dEtaTracksMax"); // unused
195  // int dEtaTracksBin = parameters_.getParameter<int>("dEtaTracksBin"); // unused
196 
197  double dCotTracksMin = parameters_.getParameter<double>("dCotTracksMin");
198  double dCotTracksMax = parameters_.getParameter<double>("dCotTracksMax");
199  int dCotTracksBin = parameters_.getParameter<int>("dCotTracksBin");
200 
201  double chi2Min = parameters_.getParameter<double>("chi2Min");
202  double chi2Max = parameters_.getParameter<double>("chi2Max");
203 
204  double rMinForXray = parameters_.getParameter<double>("rMinForXray");
205  double rMaxForXray = parameters_.getParameter<double>("rMaxForXray");
206  int rBinForXray = parameters_.getParameter<int>("rBinForXray");
207  double zMinForXray = parameters_.getParameter<double>("zMinForXray");
208  double zMaxForXray = parameters_.getParameter<double>("zMaxForXray");
209  int zBinForXray = parameters_.getParameter<int>("zBinForXray");
210  int zBin2ForXray = parameters_.getParameter<int>("zBin2ForXray");
211 
212  minPhoPtForEffic = parameters_.getParameter<double>("minPhoPtForEffic");
213  maxPhoEtaForEffic = parameters_.getParameter<double>("maxPhoEtaForEffic");
214  maxPhoZForEffic = parameters_.getParameter<double>("maxPhoZForEffic");
215  maxPhoRForEffic = parameters_.getParameter<double>("maxPhoRForEffic");
216  minPhoPtForPurity = parameters_.getParameter<double>("minPhoPtForPurity");
217  maxPhoEtaForPurity = parameters_.getParameter<double>("maxPhoEtaForPurity");
218  maxPhoZForPurity = parameters_.getParameter<double>("maxPhoZForPurity");
219  maxPhoRForPurity = parameters_.getParameter<double>("maxPhoRForPurity");
220 
221  if (dbe_) {
223  // SC from reco photons
224 
225  //TString simfolder = TString(
226  std::string simpath = dqmpath_ + "SimulationInfo";
227  iBooker.setCurrentFolder(simpath);
228  //
229  // simulation information about conversions
231  std::string histname = "nOfSimConversions";
232  h_nSimConv_[0] = iBooker.book1D(histname, "# of Sim conversions per event ", 20, -0.5, 19.5);
234  histname = "h_AllSimConvEta";
235  h_AllSimConv_[0] = iBooker.book1D(histname, " All conversions: simulated #eta", etaBin2, etaMin, etaMax);
236  histname = "h_AllSimConvPhi";
237  h_AllSimConv_[1] = iBooker.book1D(histname, " All conversions: simulated #phi", phiBin, phiMin, phiMax);
238  histname = "h_AllSimConvR";
239  h_AllSimConv_[2] = iBooker.book1D(histname, " All conversions: simulated R", rBin, rMin, rMax);
240  histname = "h_AllSimConvZ";
241  h_AllSimConv_[3] = iBooker.book1D(histname, " All conversions: simulated Z", zBin, zMin, zMax);
242  histname = "h_AllSimConvEt";
243  h_AllSimConv_[4] = iBooker.book1D(histname, " All conversions: simulated Et", etBin, etMin, etMax);
244  //
245  histname = "nOfVisSimConversions";
246  h_nSimConv_[1] = iBooker.book1D(histname, "# of Sim conversions per event ", 20, -0.5, 19.5);
247  histname = "h_VisSimConvEta";
248  h_VisSimConv_[0] = iBooker.book1D(histname, " All vis conversions: simulated #eta", etaBin2, etaMin, etaMax);
249  histname = "h_VisSimConvPhi";
250  h_VisSimConv_[1] = iBooker.book1D(histname, " All vis conversions: simulated #phi", phiBin, phiMin, phiMax);
251  histname = "h_VisSimConvR";
252  h_VisSimConv_[2] = iBooker.book1D(histname, " All vis conversions: simulated R", rBin, rMin, rMax);
253  histname = "h_VisSimConvZ";
254  h_VisSimConv_[3] = iBooker.book1D(histname, " All vis conversions: simulated Z", zBin, zMin, zMax);
255  histname = "h_VisSimConvEt";
256  h_VisSimConv_[4] = iBooker.book1D(histname, " All vis conversions: simulated Et", etBin, etMin, etMax);
257 
258  //
259  histname = "h_SimConvTwoMTracksEta";
260  h_SimConvTwoMTracks_[0] = iBooker.book1D(
261  histname, " All vis conversions with 2 reco-matching tracks: simulated #eta", etaBin2, etaMin, etaMax);
262  histname = "h_SimConvTwoMTracksPhi";
263  h_SimConvTwoMTracks_[1] = iBooker.book1D(
264  histname, " All vis conversions with 2 reco-matching tracks: simulated #phi", phiBin, phiMin, phiMax);
265  histname = "h_SimConvTwoMTracksR";
267  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated R", rBin, rMin, rMax);
268  histname = "h_SimConvTwoMTracksZ";
270  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated Z", zBin, zMin, zMax);
271  histname = "h_SimConvTwoMTracksEt";
273  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated Et", etBin, etMin, etMax);
274  //
275  histname = "h_SimConvTwoTracksEta";
277  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated #eta", etaBin2, etaMin, etaMax);
278  histname = "h_SimConvTwoTracksPhi";
280  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated #phi", phiBin, phiMin, phiMax);
281  histname = "h_SimConvTwoTracksR";
283  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated R", rBin, rMin, rMax);
284  histname = "h_SimConvTwoTracksZ";
286  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated Z", zBin, zMin, zMax);
287  histname = "h_SimConvTwoTracksEt";
289  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated Et", etBin, etMin, etMax);
290  //
291  histname = "h_SimConvTwoMTracksEtaAndVtxPGT0";
292  h_SimConvTwoMTracksAndVtxPGT0_[0] = iBooker.book1D(
293  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #eta", etaBin2, etaMin, etaMax);
294  histname = "h_SimConvTwoMTracksPhiAndVtxPGT0";
295  h_SimConvTwoMTracksAndVtxPGT0_[1] = iBooker.book1D(
296  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #phi", phiBin, phiMin, phiMax);
297  histname = "h_SimConvTwoMTracksRAndVtxPGT0";
298  h_SimConvTwoMTracksAndVtxPGT0_[2] = iBooker.book1D(
299  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated R", rBin, rMin, rMax);
300  histname = "h_SimConvTwoMTracksZAndVtxPGT0";
301  h_SimConvTwoMTracksAndVtxPGT0_[3] = iBooker.book1D(
302  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Z", zBin, zMin, zMax);
303  histname = "h_SimConvTwoMTracksEtAndVtxPGT0";
304  h_SimConvTwoMTracksAndVtxPGT0_[4] = iBooker.book1D(
305  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Et", etBin, etMin, etMax);
306 
307  //
308  histname = "h_SimConvTwoMTracksEtaAndVtxPGT0005";
309  h_SimConvTwoMTracksAndVtxPGT0005_[0] = iBooker.book1D(
310  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #eta", etaBin2, etaMin, etaMax);
311  histname = "h_SimConvTwoMTracksPhiAndVtxPGT0005";
312  h_SimConvTwoMTracksAndVtxPGT0005_[1] = iBooker.book1D(
313  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #phi", phiBin, phiMin, phiMax);
314  histname = "h_SimConvTwoMTracksRAndVtxPGT0005";
315  h_SimConvTwoMTracksAndVtxPGT0005_[2] = iBooker.book1D(
316  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated R", rBin, rMin, rMax);
317  histname = "h_SimConvTwoMTracksZAndVtxPGT0005";
318  h_SimConvTwoMTracksAndVtxPGT0005_[3] = iBooker.book1D(
319  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Z", zBin, zMin, zMax);
320  histname = "h_SimConvTwoMTracksEtAndVtxPGT0005";
321  h_SimConvTwoMTracksAndVtxPGT0005_[4] = iBooker.book1D(
322  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Et", etBin, etMin, etMax);
323 
324  histname = "h_SimRecConvTwoMTracksEta";
325  h_SimRecConvTwoMTracks_[0] = iBooker.book1D(
326  histname, " All vis conversions with 2 reco-matching tracks: simulated #eta", etaBin2, etaMin, etaMax);
327  histname = "h_SimRecConvTwoMTracksPhi";
328  h_SimRecConvTwoMTracks_[1] = iBooker.book1D(
329  histname, " All vis conversions with 2 reco-matching tracks: simulated #phi", phiBin, phiMin, phiMax);
330  histname = "h_SimRecConvTwoMTracksR";
332  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated R", rBin, rMin, rMax);
333  histname = "h_SimRecConvTwoMTracksZ";
335  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated Z", zBin, zMin, zMax);
336  histname = "h_SimRecConvTwoMTracksEt";
338  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated Et", etBin, etMin, etMax);
339  //
340 
341  h_SimConvEtaPix_[0] = iBooker.book1D("simConvEtaPix", " sim converted Photon Eta: Pix ", etaBin, etaMin, etaMax);
342  h_simTkPt_ = iBooker.book1D("simTkPt", "Sim conversion tracks pt ", etBin * 3, 0., etMax);
343  h_simTkEta_ = iBooker.book1D("simTkEta", "Sim conversion tracks eta ", etaBin, etaMin, etaMax);
344 
345  h_simConvVtxRvsZ_[0] = iBooker.book2D("simConvVtxRvsZAll",
346  " Photon Sim conversion vtx position",
347  zBinForXray,
348  zMinForXray,
349  zMaxForXray,
350  rBinForXray,
351  rMinForXray,
352  rMaxForXray);
353  h_simConvVtxRvsZ_[1] = iBooker.book2D("simConvVtxRvsZBarrel",
354  " Photon Sim conversion vtx position",
355  zBinForXray,
356  zMinForXray,
357  zMaxForXray,
358  rBinForXray,
359  rMinForXray,
360  rMaxForXray);
361  h_simConvVtxRvsZ_[2] = iBooker.book2D("simConvVtxRvsZEndcap",
362  " Photon Sim conversion vtx position",
363  zBin2ForXray,
364  zMinForXray,
365  zMaxForXray,
366  rBinForXray,
367  rMinForXray,
368  rMaxForXray);
369  h_simConvVtxRvsZ_[3] = iBooker.book2D("simConvVtxRvsZBarrel2",
370  " Photon Sim conversion vtx position when reco R<4cm",
371  zBinForXray,
372  zMinForXray,
373  zMaxForXray,
374  rBinForXray,
375  rMinForXray,
376  rMaxForXray);
377  h_simConvVtxYvsX_ = iBooker.book2D(
378  "simConvVtxYvsXTrkBarrel", " Photon Sim conversion vtx position, (x,y) eta<1 ", 100, -80., 80., 100, -80., 80.);
379 
380  std::string convpath = dqmpath_ + "ConversionInfo";
381  iBooker.setCurrentFolder(convpath);
382 
383  histname = "nConv";
384  h_nConv_[0][0] = iBooker.book1D(
385  histname + "All", "Number Of Conversions per isolated candidates per events: All Ecal ", 10, -0.5, 9.5);
386  h_nConv_[0][1] = iBooker.book1D(
387  histname + "Barrel", "Number Of Conversions per isolated candidates per events: Ecal Barrel ", 10, -0.5, 9.5);
388  h_nConv_[0][2] = iBooker.book1D(
389  histname + "Endcap", "Number Of Conversions per isolated candidates per events: Ecal Endcap ", 10, -0.5, 9.5);
390  h_nConv_[1][0] = iBooker.book1D(histname + "All_Ass",
391  "Number Of associated Conversions per isolated candidates per events: All Ecal ",
392  10,
393  -0.5,
394  9.5);
395 
396  h_convEta_[0][0] = iBooker.book1D("convEta", " converted Photon Eta ", etaBin, etaMin, etaMax);
397  h_convEtaMatchSC_[0][0] =
398  iBooker.book1D("convEtaMatchSC", " converted Photon Eta when SC is matched ", etaBin, etaMin, etaMax);
399  h_convEta2_[0][0] = iBooker.book1D("convEta2", " converted Photon Eta ", etaBin2, etaMin, etaMax);
400  h_convPhi_[0][0] = iBooker.book1D("convPhi", " converted Photon Phi ", phiBin, phiMin, phiMax);
401  h_convR_[0][0] = iBooker.book1D("convR", " converted photon R", rBin, rMin, rMax);
402  h_convZ_[0][0] = iBooker.book1D("convZ", " converted photon Z", zBin, zMin, zMax);
403  h_convPt_[0][0] = iBooker.book1D("convPt", " conversions Transverse Energy: all eta ", etBin, etMin, etMax);
404 
405  h_convEta_[1][0] = iBooker.book1D("convEtaAss2", " Matched converted Photon Eta ", etaBin2, etaMin, etaMax);
406  h_convEta_[1][1] = iBooker.book1D("convEtaAss", " Matched converted Photon Eta ", etaBin, etaMin, etaMax);
407  h_convEtaMatchSC_[1][0] =
408  iBooker.book1D("convEtaMatchSCAss", " converted Photon Eta when SC is matched ", etaBin, etaMin, etaMax);
409  h_convPhi_[1][0] = iBooker.book1D("convPhiAss", " Matched converted Photon Phi ", phiBin, phiMin, phiMax);
410  h_convR_[1][0] = iBooker.book1D("convRAss", " Matched converted photon R", rBin, rMin, rMax);
411  h_convZ_[1][0] = iBooker.book1D("convZAss", " Matched converted photon Z", zBin, zMin, zMax);
412  h_convPt_[1][0] =
413  iBooker.book1D("convPtAss", "Matched conversions Transverse Energy: all eta ", etBin, etMin, etMax);
414 
415  h_convEta_[2][0] = iBooker.book1D("convEtaFake2", " Fake converted Photon Eta ", etaBin2, etaMin, etaMax);
416  h_convEta_[2][1] = iBooker.book1D("convEtaFake", " Fake converted Photon Eta ", etaBin, etaMin, etaMax);
417  h_convEtaMatchSC_[2][0] =
418  iBooker.book1D("convEtaMatchSCFake", " converted Photon Eta when SC is matched ", etaBin, etaMin, etaMax);
419  h_convPhi_[2][0] = iBooker.book1D("convPhiFake", " Fake converted Photon Phi ", phiBin, phiMin, phiMax);
420  h_convR_[2][0] = iBooker.book1D("convRFake", " Fake converted photon R", rBin, rMin, rMax);
421  h_convZ_[2][0] = iBooker.book1D("convZFake", " Fake converted photon Z", zBin, zMin, zMax);
422  h_convPt_[2][0] = iBooker.book1D("convPtFake", "Fake conversions Transverse Energy: all eta ", etBin, etMin, etMax);
423 
424  h_convRplot_ = iBooker.book1D("convRplot", " converted photon R", 600, 0., 120.);
425  h_convZplot_ = iBooker.book1D("convZplot", " converted photon Z", 320, -160., 160.);
426 
427  histname = "convSCdPhi";
428  h_convSCdPhi_[0][0] = iBooker.book1D(histname + "All", "dPhi between SC and conversion", 100, -0.1, 0.1);
429  h_convSCdPhi_[0][1] =
430  iBooker.book1D(histname + "Barrel", " dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
431  h_convSCdPhi_[0][2] =
432  iBooker.book1D(histname + "Endcap", " dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
433  h_convSCdPhi_[1][0] = iBooker.book1D(histname + "All_Ass", "dPhi between SC and conversion", 100, -0.1, 0.1);
434  h_convSCdPhi_[1][1] =
435  iBooker.book1D(histname + "Barrel_Ass", " dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
436  h_convSCdPhi_[1][2] =
437  iBooker.book1D(histname + "Endcap_Ass", " dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
438  h_convSCdPhi_[2][0] = iBooker.book1D(histname + "All_Fakes", "dPhi between SC and conversion", 100, -0.1, 0.1);
439  h_convSCdPhi_[2][1] =
440  iBooker.book1D(histname + "Barrel_Fakes", " dPhi between SC and conversion: Barrel", 100, -0.1, 0.1);
441  h_convSCdPhi_[2][2] =
442  iBooker.book1D(histname + "Endcap_Fakes", " dPhi between SC and conversion: Endcap", 100, -0.1, 0.1);
443  histname = "convSCdEta";
444  h_convSCdEta_[0][0] = iBooker.book1D(histname + "All", " dEta between SC and conversion", 100, -0.1, 0.1);
445  h_convSCdEta_[0][1] =
446  iBooker.book1D(histname + "Barrel", " dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
447  h_convSCdEta_[0][2] =
448  iBooker.book1D(histname + "Endcap", " dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
449  h_convSCdEta_[1][0] = iBooker.book1D(histname + "All_Ass", " dEta between SC and conversion", 100, -0.1, 0.1);
450  h_convSCdEta_[1][1] =
451  iBooker.book1D(histname + "Barrel_Ass", " dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
452  h_convSCdEta_[1][2] =
453  iBooker.book1D(histname + "Endcap_Ass", " dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
454  h_convSCdEta_[2][0] = iBooker.book1D(histname + "All_Fakes", " dEta between SC and conversion", 100, -0.1, 0.1);
455  h_convSCdEta_[2][1] =
456  iBooker.book1D(histname + "Barrel_Fakes", " dEta between SC and conversion: Barrel", 100, -0.1, 0.1);
457  h_convSCdEta_[2][2] =
458  iBooker.book1D(histname + "Endcap_Fakes", " dEta between SC and conversion: Endcap", 100, -0.1, 0.1);
459 
460  histname = "convPtRes";
461  h_convPtRes_[0] = iBooker.book1D(histname + "All", " Conversion Pt rec/true : All ecal ", resBin, resMin, resMax);
462  h_convPtRes_[1] = iBooker.book1D(histname + "Barrel", " Conversion Pt rec/true : Barrel ", resBin, resMin, resMax);
463  h_convPtRes_[2] = iBooker.book1D(histname + "Endcap", " Conversion Pt rec/true : Endcap ", resBin, resMin, resMax);
464 
465  histname = "hInvMass";
466  h_invMass_[0][0] = iBooker.book1D(
467  histname + "All_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
468  h_invMass_[0][1] = iBooker.book1D(histname + "Barrel_AllTracks",
469  " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
470  100,
471  0.,
472  1.5);
473  h_invMass_[0][2] = iBooker.book1D(histname + "Endcap_AllTracks",
474  " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
475  100,
476  0.,
477  1.5);
478  //
479  h_invMass_[1][0] = iBooker.book1D(
480  histname + "All_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
481  h_invMass_[1][1] = iBooker.book1D(histname + "Barrel_AssTracks",
482  " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
483  100,
484  0.,
485  1.5);
486  h_invMass_[1][2] = iBooker.book1D(histname + "Endcap_AssTracks",
487  " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
488  100,
489  0.,
490  1.5);
491  //
492  h_invMass_[2][0] = iBooker.book1D(
493  histname + "All_FakeTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
494  h_invMass_[2][1] = iBooker.book1D(histname + "Barrel_FakeTracks",
495  " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",
496  100,
497  0.,
498  1.5);
499  h_invMass_[2][2] = iBooker.book1D(histname + "Endcap_FaleTracks",
500  " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",
501  100,
502  0.,
503  1.5);
504 
505  histname = "hDPhiTracksAtVtx";
506  h_DPhiTracksAtVtx_[0][0] = iBooker.book1D(histname + "All",
507  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
510  dPhiTracksMax);
511  h_DPhiTracksAtVtx_[0][1] =
512  iBooker.book1D(histname + "Barrel",
513  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
516  dPhiTracksMax);
517  h_DPhiTracksAtVtx_[0][2] =
518  iBooker.book1D(histname + "Endcap",
519  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
522  dPhiTracksMax);
523  h_DPhiTracksAtVtx_[1][0] = iBooker.book1D(histname + "All_Ass",
524  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
527  dPhiTracksMax);
528  h_DPhiTracksAtVtx_[1][1] =
529  iBooker.book1D(histname + "Barrel_Ass",
530  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
533  dPhiTracksMax);
534  h_DPhiTracksAtVtx_[1][2] =
535  iBooker.book1D(histname + "Endcap_Ass",
536  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
539  dPhiTracksMax);
540  h_DPhiTracksAtVtx_[2][0] = iBooker.book1D(histname + "All_Fakes",
541  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
544  dPhiTracksMax);
545  h_DPhiTracksAtVtx_[2][1] =
546  iBooker.book1D(histname + "Barrel_Fakes",
547  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
550  dPhiTracksMax);
551  h_DPhiTracksAtVtx_[2][2] =
552  iBooker.book1D(histname + "Endcap_Fakes",
553  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
556  dPhiTracksMax);
557 
558  histname = "hDPhiTracksAtVtxVsEta";
559  h2_DPhiTracksAtVtxVsEta_ = iBooker.book2D(histname + "All",
560  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",
561  etaBin2,
562  etaMin,
563  etaMax,
564  100,
565  -0.5,
566  0.5);
567  histname = "pDPhiTracksAtVtxVsEta";
569  iBooker.bookProfile(histname + "All",
570  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",
571  etaBin2,
572  etaMin,
573  etaMax,
574  100,
575  -0.5,
576  0.5,
577  "");
578 
579  histname = "hDPhiTracksAtVtxVsR";
580  h2_DPhiTracksAtVtxVsR_ = iBooker.book2D(histname + "All",
581  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",
582  rBin,
583  rMin,
584  rMax,
585  100,
586  -0.5,
587  0.5);
588  histname = "pDPhiTracksAtVtxVsR";
589  p_DPhiTracksAtVtxVsR_ = iBooker.bookProfile(histname + "All",
590  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",
591  rBin,
592  rMin,
593  rMax,
594  100,
595  -0.5,
596  0.5,
597  "");
598 
599  histname = "hDCotTracks";
600  h_DCotTracks_[0][0] = iBooker.book1D(histname + "All",
601  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
604  dCotTracksMax);
605  h_DCotTracks_[0][1] = iBooker.book1D(histname + "Barrel",
606  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
609  dCotTracksMax);
610  h_DCotTracks_[0][2] = iBooker.book1D(histname + "Endcap",
611  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
614  dCotTracksMax);
615  h_DCotTracks_[1][0] = iBooker.book1D(histname + "All_Ass",
616  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
619  dCotTracksMax);
620  h_DCotTracks_[1][1] = iBooker.book1D(histname + "Barrel_Ass",
621  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
624  dCotTracksMax);
625  h_DCotTracks_[1][2] = iBooker.book1D(histname + "Endcap_Ass",
626  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
629  dCotTracksMax);
630  h_DCotTracks_[2][0] = iBooker.book1D(histname + "All_Fakes",
631  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
634  dCotTracksMax);
635  h_DCotTracks_[2][1] = iBooker.book1D(histname + "Barrel_Fakes",
636  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
639  dCotTracksMax);
640  h_DCotTracks_[2][2] = iBooker.book1D(histname + "Endcap_Fakes",
641  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
644  dCotTracksMax);
645 
646  histname = "hDCotTracksVsEta";
647  h2_DCotTracksVsEta_ = iBooker.book2D(histname + "All",
648  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",
649  etaBin2,
650  etaMin,
651  etaMax,
652  100,
653  -0.2,
654  0.2);
655  histname = "pDCotTracksVsEta";
656  p_DCotTracksVsEta_ = iBooker.bookProfile(histname + "All",
657  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",
658  etaBin2,
659  etaMin,
660  etaMax,
661  100,
662  -0.2,
663  0.2,
664  "");
665 
666  histname = "hDCotTracksVsR";
667  h2_DCotTracksVsR_ = iBooker.book2D(histname + "All",
668  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",
669  rBin,
670  rMin,
671  rMax,
672  100,
673  -0.2,
674  0.2);
675  histname = "pDCotTracksVsR";
677  iBooker.bookProfile(histname + "All",
678  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",
679  rBin,
680  rMin,
681  rMax,
682  100,
683  -0.2,
684  0.2,
685  "");
686 
687  histname = "hDistMinAppTracks";
688  h_distMinAppTracks_[0][0] = iBooker.book1D(
689  histname + "All", " Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
690  h_distMinAppTracks_[0][1] = iBooker.book1D(
691  histname + "Barrel", " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ", 120, -0.5, 1.0);
692  h_distMinAppTracks_[0][2] = iBooker.book1D(
693  histname + "Endcap", " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ", 120, -0.5, 1.0);
694  h_distMinAppTracks_[1][0] = iBooker.book1D(
695  histname + "All_Ass", " Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
696  h_distMinAppTracks_[1][1] =
697  iBooker.book1D(histname + "Barrel_Ass",
698  " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
699  120,
700  -0.5,
701  1.0);
702  h_distMinAppTracks_[1][2] =
703  iBooker.book1D(histname + "Endcap_Ass",
704  " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
705  120,
706  -0.5,
707  1.0);
708  h_distMinAppTracks_[2][0] = iBooker.book1D(
709  histname + "All_Fakes", " Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ", 120, -0.5, 1.0);
710  h_distMinAppTracks_[2][1] =
711  iBooker.book1D(histname + "Barrel_Fakes",
712  " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
713  120,
714  -0.5,
715  1.0);
716  h_distMinAppTracks_[2][2] =
717  iBooker.book1D(histname + "Endcap_Fakes",
718  " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
719  120,
720  -0.5,
721  1.0);
722 
723  h_convVtxRvsZ_[0] = iBooker.book2D("convVtxRvsZAll",
724  " Photon Reco conversion vtx position",
725  zBinForXray,
726  zMinForXray,
727  zMaxForXray,
728  rBinForXray,
729  rMinForXray,
730  rMaxForXray);
731  h_convVtxRvsZ_[1] = iBooker.book2D("convVtxRvsZBarrel",
732  " Photon Reco conversion vtx position",
733  zBinForXray,
734  zMinForXray,
735  zMaxForXray,
736  rBinForXray,
737  rMinForXray,
738  rMaxForXray);
739  h_convVtxRvsZ_[2] = iBooker.book2D("convVtxRvsZEndcap",
740  " Photon Reco conversion vtx position",
741  zBin2ForXray,
742  zMinForXray,
743  zMaxForXray,
744  rBinForXray,
745  rMinForXray,
746  rMaxForXray);
747  h_convVtxYvsX_ = iBooker.book2D(
748  "convVtxYvsXTrkBarrel", " Photon Reco conversion vtx position, (x,y) eta<1 ", 1000, -60., 60., 1000, -60., 60.);
750  h_convVtxRvsZ_zoom_[0] = iBooker.book2D("convVtxRvsZBarrelZoom1",
751  " Photon Reco conversion vtx position",
752  zBinForXray,
753  zMinForXray,
754  zMaxForXray,
755  rBinForXray,
756  -10.,
757  40.);
758  h_convVtxRvsZ_zoom_[1] = iBooker.book2D("convVtxRvsZBarrelZoom2",
759  " Photon Reco conversion vtx position",
760  zBinForXray,
761  zMinForXray,
762  zMaxForXray,
763  rBinForXray,
764  -10.,
765  20.);
766  h_convVtxYvsX_zoom_[0] = iBooker.book2D("convVtxYvsXTrkBarrelZoom1",
767  " Photon Reco conversion vtx position, (x,y) eta<1 ",
768  100,
769  -40.,
770  40.,
771  100,
772  -40.,
773  40.);
774  h_convVtxYvsX_zoom_[1] = iBooker.book2D("convVtxYvsXTrkBarrelZoom2",
775  " Photon Reco conversion vtx position, (x,y) eta<1 ",
776  100,
777  -20.,
778  20.,
779  100,
780  -20.,
781  20.);
782 
783  h_convVtxdR_ = iBooker.book1D("convVtxdR", " Photon Reco conversion vtx dR", 100, -10., 10.);
784  h_convVtxdX_ = iBooker.book1D("convVtxdX", " Photon Reco conversion vtx dX", 100, -10., 10.);
785  h_convVtxdY_ = iBooker.book1D("convVtxdY", " Photon Reco conversion vtx dY", 100, -10., 10.);
786  h_convVtxdZ_ = iBooker.book1D("convVtxdZ", " Photon Reco conversion vtx dZ", 100, -20., 20.);
787 
788  h_convVtxdPhi_ = iBooker.book1D("convVtxdPhi", " Photon Reco conversion vtx dPhi", 100, -0.01, 0.01);
789  h_convVtxdEta_ = iBooker.book1D("convVtxdEta", " Photon Reco conversion vtx dEta", 100, -0.5, 0.5);
790 
792  iBooker.book1D("convVtxdR_barrel", " Photon Reco conversion vtx dR, |eta|<=1.2", 100, -10., 10.);
794  iBooker.book1D("convVtxdX_barrel", " Photon Reco conversion vtx dX, |eta|<=1.2", 100, -10., 10.);
796  iBooker.book1D("convVtxdY_barrel", " Photon Reco conversion vtx dY, |eta|<=1.2 ", 100, -10., 10.);
798  iBooker.book1D("convVtxdZ_barrel", " Photon Reco conversion vtx dZ, |eta|<=1.2,", 100, -20., 20.);
799 
801  iBooker.book1D("convVtxdR_endcap", " Photon Reco conversion vtx dR, |eta|>1.2 ", 100, -10., 10.);
803  iBooker.book1D("convVtxdX_endcap", " Photon Reco conversion vtx dX, |eta|>1.2", 100, -10., 10.);
805  iBooker.book1D("convVtxdY_endcap", " Photon Reco conversion vtx dY, |eta|>1.2", 100, -10., 10.);
807  iBooker.book1D("convVtxdZ_endcap", " Photon Reco conversion vtx dZ, |eta|>1.2", 100, -20., 20.);
808 
809  h2_convVtxdRVsR_ = iBooker.book2D("h2ConvVtxdRVsR", " Conversion vtx dR vsR", rBin, rMin, rMax, 100, -20., 20.);
811  iBooker.book2D("h2ConvVtxdRVsEta", "Conversion vtx dR vs Eta", etaBin2, etaMin, etaMax, 100, -20., 20.);
812 
814  iBooker.bookProfile("pConvVtxdRVsR", " Conversion vtx dR vsR", rBin, rMin, rMax, 100, -20., 20., "");
816  iBooker.bookProfile("pConvVtxdRVsEta", "Conversion vtx dR vs Eta", etaBin2, etaMin, etaMax, 100, -20., 20., "");
817  p_convVtxdXVsX_ = iBooker.bookProfile("pConvVtxdXVsX", "Conversion vtx dX vs X", 120, -60, 60, 100, -20., 20., "");
818  p_convVtxdYVsY_ = iBooker.bookProfile("pConvVtxdYVsY", "Conversion vtx dY vs Y", 120, -60, 60, 100, -20., 20., "");
820  iBooker.bookProfile("pConvVtxdZVsZ", "Conversion vtx dZ vs Z", zBin, zMin, zMax, 100, -20., 20., "");
821 
823  iBooker.bookProfile("pConvVtxdZVsR", "Conversion vtx dZ vs R", rBin, rMin, rMax, 100, -20., 20., "");
824  p2_convVtxdRVsRZ_ = iBooker.bookProfile2D(
825  "p2ConvVtxdRVsRZ", "Conversion vtx dR vs RZ", zBin, zMin, zMax, rBin, rMin, rMax, 100, 0., 20., "s");
826  p2_convVtxdZVsRZ_ = iBooker.bookProfile2D(
827  "p2ConvVtxdZVsRZ", "Conversion vtx dZ vs RZ", zBin, zMin, zMax, rBin, rMin, rMax, 100, 0., 20., "s");
828 
829  histname = "EoverPtracks";
830  h_EoverPTracks_[0][0] =
831  iBooker.book1D(histname + "All", " photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
832  h_EoverPTracks_[0][1] =
833  iBooker.book1D(histname + "Barrel", " photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
834  h_EoverPTracks_[0][2] =
835  iBooker.book1D(histname + "Endcap", " photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
836  h_EoverPTracks_[1][0] =
837  iBooker.book1D(histname + "All_Ass", " photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
838  h_EoverPTracks_[1][1] = iBooker.book1D(
839  histname + "Barrel_Ass", " photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
840  h_EoverPTracks_[1][2] = iBooker.book1D(
841  histname + "Endcap_Ass", " photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
842  h_EoverPTracks_[2][0] =
843  iBooker.book1D(histname + "All_Fakes", " photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
844  h_EoverPTracks_[2][1] = iBooker.book1D(
845  histname + "Barrel_Fakes", " photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
846  h_EoverPTracks_[2][2] = iBooker.book1D(
847  histname + "Endcap_Fakes", " photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
848 
849  h2_convVtxRrecVsTrue_ = iBooker.book2D(
850  "h2ConvVtxRrecVsTrue", "Photon Reco conversion vtx R rec vs true", rBin, rMin, rMax, rBin, rMin, rMax);
851 
852  histname = "vtxChi2Prob";
853  h_vtxChi2Prob_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, 0., 1.);
854  h_vtxChi2Prob_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, 0., 1.);
855  h_vtxChi2Prob_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, 0., 1.);
856  h_vtxChi2Prob_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 100, 0., 1.);
857  h_vtxChi2Prob_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 100, 0., 1.);
858  h_vtxChi2Prob_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 100, 0., 1.);
859  h_vtxChi2Prob_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 100, 0., 1.);
860  h_vtxChi2Prob_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 100, 0., 1.);
861  h_vtxChi2Prob_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 100, 0., 1.);
862 
863  h_zPVFromTracks_[1] = iBooker.book1D("zPVFromTracks", " Photons: PV z from conversion tracks", 100, -25., 25.);
864  h_dzPVFromTracks_[1] =
865  iBooker.book1D("dzPVFromTracks", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -5., 5.);
866  h2_dzPVVsR_ = iBooker.book2D("h2dzPVVsR", "Photon Reco conversions: dz(PV) vs R", rBin, rMin, rMax, 100, -3., 3.);
867  p_dzPVVsR_ =
868  iBooker.bookProfile("pdzPVVsR", "Photon Reco conversions: dz(PV) vs R", rBin, rMin, rMax, 100, -3., 3., "");
869 
870  histname = "lxybs";
871  h_lxybs_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 200, -100., 100.);
872  h_lxybs_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 200, -100., 100.);
873  h_lxybs_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 200, -100., 100.);
874  h_lxybs_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 200, -100., 100.);
875  h_lxybs_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 200, -100., 100.);
876  h_lxybs_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 200, -100., 100.);
877  h_lxybs_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 200, -100., 100.);
878  h_lxybs_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 200, -100., 100.);
879  h_lxybs_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 200, -100., 100.);
880 
881  histname = "maxNHitsBeforeVtx";
882  h_maxNHitsBeforeVtx_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 16, -0.5, 15.5);
883  h_maxNHitsBeforeVtx_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
884  h_maxNHitsBeforeVtx_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
885  h_maxNHitsBeforeVtx_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 16, -0.5, 15.5);
886  h_maxNHitsBeforeVtx_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
887  h_maxNHitsBeforeVtx_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
888  h_maxNHitsBeforeVtx_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 16, -0.5, 15.5);
889  h_maxNHitsBeforeVtx_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
890  h_maxNHitsBeforeVtx_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
891 
892  histname = "leadNHitsBeforeVtx";
893  h_leadNHitsBeforeVtx_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 16, -0.5, 15.5);
894  h_leadNHitsBeforeVtx_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
895  h_leadNHitsBeforeVtx_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
896  h_leadNHitsBeforeVtx_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 16, -0.5, 15.5);
897  h_leadNHitsBeforeVtx_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
898  h_leadNHitsBeforeVtx_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
899  h_leadNHitsBeforeVtx_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 16, -0.5, 15.5);
900  h_leadNHitsBeforeVtx_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
901  h_leadNHitsBeforeVtx_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
902 
903  histname = "trailNHitsBeforeVtx";
904  h_trailNHitsBeforeVtx_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 16, -0.5, 15.5);
905  h_trailNHitsBeforeVtx_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
906  h_trailNHitsBeforeVtx_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
907  h_trailNHitsBeforeVtx_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 16, -0.5, 15.5);
908  h_trailNHitsBeforeVtx_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
909  h_trailNHitsBeforeVtx_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
910  h_trailNHitsBeforeVtx_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 16, -0.5, 15.5);
911  h_trailNHitsBeforeVtx_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
912  h_trailNHitsBeforeVtx_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
913 
914  histname = "sumNHitsBeforeVtx";
915  h_sumNHitsBeforeVtx_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 16, -0.5, 15.5);
916  h_sumNHitsBeforeVtx_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
917  h_sumNHitsBeforeVtx_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
918  h_sumNHitsBeforeVtx_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 16, -0.5, 15.5);
919  h_sumNHitsBeforeVtx_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
920  h_sumNHitsBeforeVtx_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
921  h_sumNHitsBeforeVtx_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 16, -0.5, 15.5);
922  h_sumNHitsBeforeVtx_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
923  h_sumNHitsBeforeVtx_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
924 
925  histname = "maxDlClosestHitToVtx";
926  h_maxDlClosestHitToVtx_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, -10., 10.);
927  h_maxDlClosestHitToVtx_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, -10., 10.);
928  h_maxDlClosestHitToVtx_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, -10., 10.);
929  h_maxDlClosestHitToVtx_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 100, -10., 10.);
930  h_maxDlClosestHitToVtx_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 100, -10., 10.);
931  h_maxDlClosestHitToVtx_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 100, -10., 10.);
932  h_maxDlClosestHitToVtx_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 100, -10., 10.);
933  h_maxDlClosestHitToVtx_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 100, -10., 10.);
934  h_maxDlClosestHitToVtx_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 100, -10., 10.);
935 
936  histname = "maxDlClosestHitToVtxSig";
937  h_maxDlClosestHitToVtxSig_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, -8., 8.);
938  h_maxDlClosestHitToVtxSig_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, -8., 8.);
939  h_maxDlClosestHitToVtxSig_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, -8., 8.);
940  h_maxDlClosestHitToVtxSig_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 100, -8., 8.);
941  h_maxDlClosestHitToVtxSig_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 100, -8., 8.);
942  h_maxDlClosestHitToVtxSig_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 100, -8., 8.);
943  h_maxDlClosestHitToVtxSig_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 100, -8., 8.);
945  iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 100, -8., 8.);
947  iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 100, -8., 8.);
948 
949  histname = "deltaExpectedHitsInner";
950  h_deltaExpectedHitsInner_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 31, -15.5, 15.5);
951  h_deltaExpectedHitsInner_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 31, -15.5, 15.5);
952  h_deltaExpectedHitsInner_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 31, -15.5, 15.5);
953  h_deltaExpectedHitsInner_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 31, -15.5, 15.5);
955  iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 31, -15.5, 15.5);
957  iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 31, -15.5, 15.5);
958  h_deltaExpectedHitsInner_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 31, -15.5, 15.5);
960  iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 31, -15.5, 15.5);
962  iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 31, -15.5, 15.5);
963 
964  histname = "leadExpectedHitsInner";
965  h_leadExpectedHitsInner_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 16, -0.5, 15.5);
966  h_leadExpectedHitsInner_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
967  h_leadExpectedHitsInner_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
968  h_leadExpectedHitsInner_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 16, -0.5, 15.5);
969  h_leadExpectedHitsInner_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
970  h_leadExpectedHitsInner_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
971  h_leadExpectedHitsInner_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 16, -0.5, 15.5);
973  iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
975  iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
976 
977  histname = "nSharedHits";
978  h_nSharedHits_[0][0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 16, -0.5, 15.5);
979  h_nSharedHits_[0][1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
980  h_nSharedHits_[0][2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
981  h_nSharedHits_[1][0] = iBooker.book1D(histname + "All_Ass", "vertex #chi^{2} all", 16, -0.5, 15.5);
982  h_nSharedHits_[1][1] = iBooker.book1D(histname + "Barrel_Ass", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
983  h_nSharedHits_[1][2] = iBooker.book1D(histname + "Endcap_Ass", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
984  h_nSharedHits_[2][0] = iBooker.book1D(histname + "All_Fakes", "vertex #chi^{2} all", 16, -0.5, 15.5);
985  h_nSharedHits_[2][1] = iBooker.book1D(histname + "Barrel_Fakes", "vertex #chi^{2} barrel", 16, -0.5, 15.5);
986  h_nSharedHits_[2][2] = iBooker.book1D(histname + "Endcap_Fakes", "vertex #chi^{2} endcap", 16, -0.5, 15.5);
987 
989  histname = "nHits";
990  nHits_[0] = iBooker.book2D(histname + "AllTracks",
991  "Photons:Tracks from conversions: # of hits all tracks",
992  etaBin,
993  etaMin,
994  etaMax,
995  30,
996  0.,
997  30.);
998  nHits_[1] = iBooker.book2D(histname + "AllTracks_Ass",
999  "Photons:Tracks from conversions: # of hits all tracks ass",
1000  etaBin,
1001  etaMin,
1002  etaMax,
1003  30,
1004  0.,
1005  30.);
1006  nHits_[2] = iBooker.book2D(histname + "AllTracks_Fakes",
1007  "Photons:Tracks from conversions: # of hits all tracks fakes",
1008  etaBin,
1009  etaMin,
1010  etaMax,
1011  30,
1012  0.,
1013  30.);
1014 
1015  histname = "nHitsVsEta";
1016  nHitsVsEta_[0] = iBooker.book2D(histname + "AllTracks",
1017  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1018  etaBin,
1019  etaMin,
1020  etaMax,
1021  30,
1022  0.,
1023  30.);
1024  nHitsVsEta_[1] = iBooker.book2D(histname + "AllTracks_Ass",
1025  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1026  etaBin,
1027  etaMin,
1028  etaMax,
1029  30,
1030  0.,
1031  30.);
1032  nHitsVsEta_[2] = iBooker.book2D(histname + "AllTracks_Fakes",
1033  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1034  etaBin,
1035  etaMin,
1036  etaMax,
1037  30,
1038  0.,
1039  30.);
1040  histname = "h_nHitsVsEta";
1041  p_nHitsVsEta_[0] = iBooker.bookProfile(histname + "AllTracks",
1042  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1043  etaBin,
1044  etaMin,
1045  etaMax,
1046  30,
1047  -0.5,
1048  29.5,
1049  "");
1050  p_nHitsVsEta_[1] = iBooker.bookProfile(histname + "AllTracks_Ass",
1051  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1052  etaBin,
1053  etaMin,
1054  etaMax,
1055  30,
1056  -0.5,
1057  29.5,
1058  "");
1059  p_nHitsVsEta_[2] = iBooker.bookProfile(histname + "AllTracks_Fakes",
1060  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
1061  etaBin,
1062  etaMin,
1063  etaMax,
1064  30,
1065  -0.5,
1066  29.5,
1067  "");
1068 
1069  histname = "nHitsVsR";
1070  nHitsVsR_[0] = iBooker.book2D(histname + "AllTracks",
1071  "Photons:Tracks from conversions: # of hits vs radius all tracks",
1072  rBin,
1073  rMin,
1074  rMax,
1075  30,
1076  0.,
1077  30.);
1078  nHitsVsR_[1] = iBooker.book2D(histname + "AllTracks_Ass",
1079  "Photons:Tracks from conversions: # of hits vs radius all tracks",
1080  rBin,
1081  rMin,
1082  rMax,
1083  30,
1084  0.,
1085  30.);
1086  nHitsVsR_[2] = iBooker.book2D(histname + "AllTracks_Fakes",
1087  "Photons:Tracks from conversions: # of hits vs radius all tracks",
1088  rBin,
1089  rMin,
1090  rMax,
1091  30,
1092  0.,
1093  30.);
1094 
1095  histname = "h_nHitsVsR";
1096  p_nHitsVsR_[0] = iBooker.bookProfile(histname + "AllTracks",
1097  "Photons:Tracks from conversions: # of hits vs radius all tracks",
1098  rBin,
1099  rMin,
1100  rMax,
1101  30,
1102  -0.5,
1103  29.5,
1104  "");
1105  p_nHitsVsR_[1] = iBooker.bookProfile(histname + "AllTracks_Ass",
1106  "Photons:Tracks from conversions: # of hits vs radius all tracks",
1107  rBin,
1108  rMin,
1109  rMax,
1110  30,
1111  -0.5,
1112  29.5,
1113  "");
1114  p_nHitsVsR_[2] = iBooker.bookProfile(histname + "AllTracks_Fakes",
1115  "Photons:Tracks from conversions: # of hits vs radius all tracks",
1116  rBin,
1117  rMin,
1118  rMax,
1119  30,
1120  -0.5,
1121  29.5,
1122  "");
1123 
1124  histname = "tkChi2";
1125  h_tkChi2_[0] = iBooker.book1D(
1126  histname + "AllTracks", "Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
1127  h_tkChi2_[1] = iBooker.book1D(
1128  histname + "AllTracks_Ass", "Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
1129  h_tkChi2_[2] = iBooker.book1D(
1130  histname + "AllTracks_Fakes", "Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
1131 
1132  histname = "tkChi2Large";
1133  h_tkChi2Large_[0] = iBooker.book1D(
1134  histname + "AllTracks", "Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1135  h_tkChi2Large_[1] = iBooker.book1D(
1136  histname + "AllTracks_Ass", "Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1137  h_tkChi2Large_[2] = iBooker.book1D(
1138  histname + "AllTracks_Fakes", "Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
1139 
1140  histname = "h2Chi2VsEta";
1141  h2_Chi2VsEta_[0] = iBooker.book2D(
1142  histname + "All", " Reco Track #chi^{2} vs #eta: All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max);
1143  h2_Chi2VsEta_[1] = iBooker.book2D(
1144  histname + "All_Ass", " Reco Track #chi^{2} vs #eta: All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max);
1145  h2_Chi2VsEta_[2] = iBooker.book2D(
1146  histname + "All_Fakes", " Reco Track #chi^{2} vs #eta: All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max);
1147  histname = "pChi2VsEta";
1148  p_Chi2VsEta_[0] = iBooker.bookProfile(
1149  histname + "All", " Reco Track #chi^{2} vs #eta : All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max, "");
1150  p_Chi2VsEta_[1] = iBooker.bookProfile(
1151  histname + "All_Ass", " Reco Track #chi^{2} vs #eta : All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max, "");
1152  p_Chi2VsEta_[2] = iBooker.bookProfile(histname + "All_Fakes",
1153  " Reco Track #chi^{2} vs #eta : All ",
1154  etaBin2,
1155  etaMin,
1156  etaMax,
1157  100,
1158  chi2Min,
1159  chi2Max,
1160  "");
1161 
1162  histname = "h2Chi2VsR";
1163  h2_Chi2VsR_[0] =
1164  iBooker.book2D(histname + "All", " Reco Track #chi^{2} vs R: All ", rBin, rMin, rMax, 100, chi2Min, chi2Max);
1165  h2_Chi2VsR_[1] = iBooker.book2D(
1166  histname + "All_Ass", " Reco Track #chi^{2} vs R: All ", rBin, rMin, rMax, 100, chi2Min, chi2Max);
1167  h2_Chi2VsR_[2] = iBooker.book2D(
1168  histname + "All_Fakes", " Reco Track #chi^{2} vs R: All ", rBin, rMin, rMax, 100, chi2Min, chi2Max);
1169  histname = "pChi2VsR";
1170  p_Chi2VsR_[0] = iBooker.bookProfile(
1171  histname + "All", " Reco Track #chi^{2} vas R : All ", rBin, rMin, rMax, 100, chi2Min, chi2Max, "");
1172  p_Chi2VsR_[1] = iBooker.bookProfile(
1173  histname + "All_Ass", " Reco Track #chi^{2} vas R : All ", rBin, rMin, rMax, 100, chi2Min, chi2Max, "");
1174  p_Chi2VsR_[2] = iBooker.bookProfile(
1175  histname + "All_Fakes", " Reco Track #chi^{2} vas R : All ", rBin, rMin, rMax, 100, chi2Min, chi2Max, "");
1176 
1177  histname = "hTkD0";
1178  h_TkD0_[0] = iBooker.book1D(histname + "All", " Reco Track D0*q: All ", 200, -0.1, 60);
1179  h_TkD0_[1] = iBooker.book1D(histname + "All_Ass", " Reco Track D0*q: Barrel ", 200, -0.1, 60);
1180  h_TkD0_[2] = iBooker.book1D(histname + "All_Fakes", " Reco Track D0*q: Endcap ", 200, -0.1, 60);
1181 
1182  histname = "hTkPtPull";
1183  h_TkPtPull_[0] = iBooker.book1D(histname + "All", " Reco Track Pt pull: All ", 100, -20., 10.);
1184  histname = "hTkPtPull";
1185  h_TkPtPull_[1] = iBooker.book1D(histname + "Barrel", " Reco Track Pt pull: Barrel ", 100, -20., 10.);
1186  histname = "hTkPtPull";
1187  h_TkPtPull_[2] = iBooker.book1D(histname + "Endcap", " Reco Track Pt pull: Endcap ", 100, -20., 10.);
1188 
1189  histname = "h2TkPtPullEta";
1190  h2_TkPtPull_[0] =
1191  iBooker.book2D(histname + "All", " Reco Track Pt pull: All ", etaBin2, etaMin, etaMax, 100, -20., 10.);
1192  histname = "pTkPtPullEta";
1193  p_TkPtPull_[0] = iBooker.bookProfile(
1194  histname + "All", " Reco Track Pt pull: All ", etaBin2, etaMin, etaMax, 100, -20., 10., " ");
1195 
1196  histname = "PtRecVsPtSim";
1197  h2_PtRecVsPtSim_[0] =
1198  iBooker.book2D(histname + "All", "Pt Rec vs Pt sim: All ", etBin, etMin, etMax, etBin, etMin, etMax);
1199  h2_PtRecVsPtSim_[1] =
1200  iBooker.book2D(histname + "Barrel", "Pt Rec vs Pt sim: Barrel ", etBin, etMin, etMax, etBin, etMin, etMax);
1201  h2_PtRecVsPtSim_[2] =
1202  iBooker.book2D(histname + "Endcap", "Pt Rec vs Pt sim: Endcap ", etBin, etMin, etMax, etBin, etMin, etMax);
1203 
1204  histname = "photonPtRecVsPtSim";
1206  iBooker.book2D(histname + "All", "Pt Rec vs Pt sim: All ", etBin, etMin, etMax, etBin, etMin, etMax);
1207 
1208  histname = "nHitsBeforeVtx";
1209  h_nHitsBeforeVtx_[0] = iBooker.book1D(histname + "All", "Pt Rec vs Pt sim: All ", 16, -0.5, 15.5);
1210  h_nHitsBeforeVtx_[1] = iBooker.book1D(histname + "Barrel", "Pt Rec vs Pt sim: Barrel ", 16, -0.5, 15.5);
1211  h_nHitsBeforeVtx_[2] = iBooker.book1D(histname + "Endcap", "Pt Rec vs Pt sim: Endcap ", 16, -0.5, 15.5);
1212 
1213  histname = "dlClosestHitToVtx";
1214  h_dlClosestHitToVtx_[0] = iBooker.book1D(histname + "All", "Pt Rec vs Pt sim: All ", 100, -10., 10.);
1215  h_dlClosestHitToVtx_[1] = iBooker.book1D(histname + "Barrel", "Pt Rec vs Pt sim: Barrel ", 100, -10., 10.);
1216  h_dlClosestHitToVtx_[2] = iBooker.book1D(histname + "Endcap", "Pt Rec vs Pt sim: Endcap ", 100, -10., 10.);
1217 
1218  histname = "dlClosestHitToVtxSig";
1219  h_dlClosestHitToVtxSig_[0] = iBooker.book1D(histname + "All", "Pt Rec vs Pt sim: All ", 100, -8., 8.);
1220  h_dlClosestHitToVtxSig_[1] = iBooker.book1D(histname + "Barrel", "Pt Rec vs Pt sim: Barrel ", 100, -8., 8.);
1221  h_dlClosestHitToVtxSig_[2] = iBooker.book1D(histname + "Endcap", "Pt Rec vs Pt sim: Endcap ", 100, -8., 8.);
1222 
1223  h_match_ = iBooker.book1D("h_match", " ", 3, -0.5, 2.5);
1224 
1225  } // if DQM
1226 }
MonitorElement * h2_DPhiTracksAtVtxVsR_
MonitorElement * h2_dzPVVsR_
MonitorElement * h_maxDlClosestHitToVtx_[3][3]
MonitorElement * h_convPt_[3][3]
MonitorElement * p_convVtxdYVsY_
T getParameter(std::string const &) const
std::string dqmpath_
MonitorElement * h2_DCotTracksVsR_
MonitorElement * h_convVtxdR_
MonitorElement * h2_DCotTracksVsEta_
MonitorElement * h_simConvVtxRvsZ_[4]
MonitorElement * h_convZplot_
MonitorElement * h_nSimConv_[2]
MonitorElement * h_convSCdPhi_[3][3]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0_[5]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
MonitorElement * h_DCotTracks_[3][3]
MonitorElement * nHitsVsEta_[3]
MonitorElement * h_lxybs_[3][3]
MonitorElement * h_trailNHitsBeforeVtx_[3][3]
MonitorElement * p_Chi2VsR_[3]
MonitorElement * h_convVtxYvsX_zoom_[2]
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_tkChi2_[3]
MonitorElement * h_convVtxdX_
MonitorElement * h_convPtRes_[3]
MonitorElement * h_convEtaMatchSC_[3][3]
MonitorElement * h2_Chi2VsEta_[3]
MonitorElement * p_TkPtPull_[3]
MonitorElement * h_SimRecConvTwoMTracks_[5]
MonitorElement * h_vtxChi2Prob_[3][3]
MonitorElement * h_convVtxdX_endcap_
MonitorElement * h_convVtxdR_endcap_
MonitorElement * h_zPVFromTracks_[2]
MonitorElement * h_convVtxdY_barrel_
MonitorElement * h_tkChi2Large_[3]
edm::ParameterSet parameters_
MonitorElement * p_DCotTracksVsEta_
MonitorElement * h_maxDlClosestHitToVtxSig_[3][3]
MonitorElement * h_convVtxdR_barrel_
MonitorElement * h_leadExpectedHitsInner_[3][3]
MonitorElement * h_convSCdEta_[3][3]
MonitorElement * h_sumNHitsBeforeVtx_[3][3]
MonitorElement * h_dzPVFromTracks_[2]
MonitorElement * h_nConv_[3][3]
info per conversion
MonitorElement * h_convVtxdY_
MonitorElement * p_DPhiTracksAtVtxVsEta_
MonitorElement * h_deltaExpectedHitsInner_[3][3]
MonitorElement * h_convVtxdEta_
MonitorElement * h_convVtxYvsX_
MonitorElement * p_convVtxdZVsR_
MonitorElement * p_convVtxdRVsR_
MonitorElement * h_convR_[3][3]
MonitorElement * h_VisSimConv_[6]
MonitorElement * h2_photonPtRecVsPtSim_
MonitorElement * h_EoverPTracks_[3][3]
MonitorElement * h_leadNHitsBeforeVtx_[3][3]
MonitorElement * h_distMinAppTracks_[3][3]
MonitorElement * p_DPhiTracksAtVtxVsR_
MonitorElement * h_SimConvEtaPix_[2]
MonitorElement * h_convVtxdX_barrel_
MonitorElement * p_nHitsVsEta_[3]
MonitorElement * h_simTkPt_
MonitorElement * p_convVtxdXVsX_
MonitorElement * h_convVtxdY_endcap_
MonitorElement * h_convEta_[3][3]
MonitorElement * h_convVtxRvsZ_zoom_[2]
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_convEta2_[3][3]
MonitorElement * h_nHitsBeforeVtx_[3]
MonitorElement * p2_convVtxdRVsRZ_
MonitorElement * p_Chi2VsEta_[3]
MonitorElement * nHits_[3]
MonitorElement * h_SimConvTwoTracks_[5]
MonitorElement * h_convVtxdZ_
MonitorElement * h_convVtxRvsZ_[3]
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * h_convPhi_[3][3]
MonitorElement * h_convVtxdZ_barrel_
MonitorElement * h2_convVtxRrecVsTrue_
MonitorElement * h_AllSimConv_[5]
Denominator for efficiencies.
MonitorElement * h_convRplot_
MonitorElement * p_nHitsVsR_[3]
MonitorElement * p_dzPVVsR_
MonitorElement * h2_Chi2VsR_[3]
MonitorElement * h_convVtxdPhi_
MonitorElement * h_invMass_[3][3]
MonitorElement * h_convZ_[3][3]
MonitorElement * h_dlClosestHitToVtxSig_[3]
MonitorElement * h2_PtRecVsPtSim_[3]
MonitorElement * h_match_
MonitorElement * p_convVtxdZVsZ_
MonitorElement * h2_TkPtPull_[3]
MonitorElement * h_convVtxdZ_endcap_
MonitorElement * h2_convVtxdRVsR_
MonitorElement * h_DPhiTracksAtVtx_[3][3]
MonitorElement * nHitsVsR_[3]
MonitorElement * h_simTkEta_
MonitorElement * h_TkPtPull_[3]
MonitorElement * p2_convVtxdZVsRZ_
MonitorElement * h_SimConvTwoMTracks_[5]
MonitorElement * p_convVtxdRVsEta_
MonitorElement * h_dlClosestHitToVtx_[3]
MonitorElement * h_TkD0_[3]
MonitorElement * h2_convVtxdRVsEta_
MonitorElement * h_nSharedHits_[3][3]
MonitorElement * h_maxNHitsBeforeVtx_[3][3]
void TkConvValidator::dqmBeginRun ( edm::Run const &  r,
edm::EventSetup const &  theEventSetup 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 1228 of file TkConvValidator.cc.

References edm::EventSetup::get().

1228  {
1229  //get magnetic field
1230  edm::LogInfo("ConvertedPhotonProducer") << " get magnetic field"
1231  << "\n";
1232  theEventSetup.get<IdealMagneticFieldRecord>().get(theMF_);
1233 
1235 }
edm::ESHandle< MagneticField > theMF_
PhotonMCTruthFinder * thePhotonMCTruthFinder_
void TkConvValidator::dqmEndRun ( edm::Run const &  r,
edm::EventSetup const &  es 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 1237 of file TkConvValidator.cc.

1237  {
1238  delete thePhotonMCTruthFinder_;
1239 }
PhotonMCTruthFinder * thePhotonMCTruthFinder_
void TkConvValidator::endJob ( void  )
overridevirtual

Reimplemented from edm::one::EDProducerBase.

Definition at line 2236 of file TkConvValidator.cc.

References dbe_, reco_skim_cfg_mod::outputFileName, dqm::dqmstoreimpl::DQMStore::save(), and AlCaHLTBitMon_QueryRunRegistry::string.

2236  {
2238  if (!isRunCentrally_) {
2239  dbe_->save(outputFileName);
2240  }
2241 
2242  edm::LogInfo("TkConvValidator") << "Analyzed " << nEvt_ << "\n";
2243  // std::cout << "::endJob Analyzed " << nEvt_ << " events " << " with total " << nPho_ << " Photons " << "\n";
2244  // std::cout << "TkConvValidator::endJob Analyzed " << nEvt_ << " events " << "\n";
2245 
2246  return;
2247 }
T getParameter(std::string const &) const
edm::ParameterSet parameters_
void save(std::string const &filename, std::string const &path="", std::string const &pattern="", std::string const &rewrite="", uint32_t run=0, uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, std::string const &fileupdate="RECREATE")
Definition: DQMStore.cc:2244
float TkConvValidator::etaTransformation ( float  a,
float  b 
)
private

Definition at line 2299 of file TkConvValidator.cc.

References ETA, etaBarrelEndcap, dqm-mbProfile::log, PI, R_ECAL, funct::tan(), and Z_Endcap.

2299  {
2300  //---Definitions
2301  const float PI = 3.1415927;
2302 
2303  //---Definitions for ECAL
2304  const float R_ECAL = 136.5;
2305  const float Z_Endcap = 328.0;
2306  const float etaBarrelEndcap = 1.479;
2307 
2308  //---ETA correction
2309 
2310  float Theta = 0.0;
2311  float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
2312 
2313  if (ZEcal != 0.0)
2314  Theta = atan(R_ECAL / ZEcal);
2315  if (Theta < 0.0)
2316  Theta = Theta + PI;
2317  float ETA = -log(tan(0.5 * Theta));
2318 
2319  if (fabs(ETA) > etaBarrelEndcap) {
2320  float Zend = Z_Endcap;
2321  if (EtaParticle < 0.0)
2322  Zend = -Zend;
2323  float Zlen = Zend - Zvertex;
2324  float RR = Zlen / sinh(EtaParticle);
2325  Theta = atan(RR / Zend);
2326  if (Theta < 0.0)
2327  Theta = Theta + PI;
2328  ETA = -log(tan(0.5 * Theta));
2329  }
2330  //---Return the result
2331  return ETA;
2332  //---end
2333 }
#define ETA
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
static float etaBarrelEndcap
#define PI
Definition: QcdUeDQM.h:37
static float Z_Endcap
static float R_ECAL
float TkConvValidator::phiNormalization ( float &  a)
private

Definition at line 2283 of file TkConvValidator.cc.

References PI, and TWOPI.

2283  {
2284  //---Definitions
2285  const float PI = 3.1415927;
2286  const float TWOPI = 2.0 * PI;
2287 
2288  if (phi > PI) {
2289  phi = phi - TWOPI;
2290  }
2291  if (phi < -PI) {
2292  phi = phi + TWOPI;
2293  }
2294 
2295  // cout << " Float_t PHInormalization out " << PHI << endl;
2296  return phi;
2297 }
#define TWOPI
Definition: DQMSourcePi0.cc:36
#define PI
Definition: QcdUeDQM.h:37
math::XYZVector TkConvValidator::recalculateMomentumAtFittedVertex ( const MagneticField mf,
const TrackerGeometry trackerGeom,
const edm::RefToBase< reco::Track > &  tk,
const reco::Vertex vtx 
)
private

Definition at line 2249 of file TkConvValidator.cc.

References anyDirection, Cylinder::computeRadius(), f, TrajectoryStateOnSurface::globalMomentum(), trajectoryStateTransform::innerStateOnSurface(), TrajectoryStateOnSurface::isValid(), reco::Vertex::position(), Propagator::propagate(), mps_fire::result, makeMuonMisalignmentScenario::rot, mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

2252  {
2255  auto scp = new SimpleCylinderBounds(sqrt(vtx.position().perp2()) - 0.001f,
2256  sqrt(vtx.position().perp2()) + 0.001f,
2257  -fabs(vtx.position().z()),
2258  fabs(vtx.position().z()));
2260  new Cylinder(Cylinder::computeRadius(*scp), Surface::PositionType(0, 0, 0), rot, scp));
2261 
2263  new Disk(Surface::PositionType(0, 0, vtx.position().z()),
2264  rot,
2265  new SimpleDiskBounds(0, sqrt(vtx.position().perp2()), -0.001, 0.001)));
2266 
2267  const TrajectoryStateOnSurface myTSOS = trajectoryStateTransform::innerStateOnSurface(*tk, trackerGeom, &mf);
2268  PropagatorWithMaterial propag(anyDirection, 0.000511, &mf);
2269  TrajectoryStateOnSurface stateAtVtx;
2270  stateAtVtx = propag.propagate(myTSOS, *theBarrel_);
2271  if (!stateAtVtx.isValid()) {
2272  stateAtVtx = propag.propagate(myTSOS, *theDisk_);
2273  }
2274  if (stateAtVtx.isValid()) {
2275  return math::XYZVector(double(stateAtVtx.globalMomentum().x()),
2276  double(stateAtVtx.globalMomentum().y()),
2277  double(stateAtVtx.globalMomentum().z()));
2278  } else {
2279  return math::XYZVector(0., 0., 0.);
2280  }
2281 }
T y() const
Definition: PV3DBase.h:60
const Point & position() const
position
Definition: Vertex.h:113
Definition: BoundDisk.h:19
T sqrt(T t)
Definition: SSEVec.h:19
T z() const
Definition: PV3DBase.h:61
double f[11][100]
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
GlobalVector globalMomentum() const
static float computeRadius(Bounds const &bounds)
Definition: Cylinder.h:28
T x() const
Definition: PV3DBase.h:59
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)

Member Data Documentation

bool TkConvValidator::arbitratedEcalSeeded_
private

Definition at line 137 of file TkConvValidator.h.

bool TkConvValidator::arbitratedMerged_
private

Definition at line 136 of file TkConvValidator.h.

double TkConvValidator::bcEtLow_
private

Definition at line 124 of file TkConvValidator.h.

edm::EDGetTokenT<reco::BeamSpot> TkConvValidator::beamspotToken_
private

Definition at line 101 of file TkConvValidator.h.

std::string TkConvValidator::conversionCollection_
private

Definition at line 91 of file TkConvValidator.h.

edm::EDGetTokenT<reco::ConversionCollection> TkConvValidator::conversionCollectionPr_Token_
private

Definition at line 92 of file TkConvValidator.h.

std::string TkConvValidator::conversionCollectionProducer_
private

Definition at line 90 of file TkConvValidator.h.

std::string TkConvValidator::conversionTrackProducer_
private

Definition at line 94 of file TkConvValidator.h.

DQMStore* TkConvValidator::dbe_
private

Definition at line 72 of file TkConvValidator.h.

bool TkConvValidator::dCotCutOn_
private

Definition at line 132 of file TkConvValidator.h.

double TkConvValidator::dCotCutValue_
private

Definition at line 133 of file TkConvValidator.h.

double TkConvValidator::dCotHardCutValue_
private

Definition at line 134 of file TkConvValidator.h.

std::string TkConvValidator::dqmpath_
private

Definition at line 110 of file TkConvValidator.h.

bool TkConvValidator::ecalalgotracks_
private

Definition at line 138 of file TkConvValidator.h.

double TkConvValidator::ecalEtSumCut_
private

Definition at line 130 of file TkConvValidator.h.

double TkConvValidator::ecalIsolRadius_
private

Definition at line 123 of file TkConvValidator.h.

std::string TkConvValidator::fName_
private

Definition at line 71 of file TkConvValidator.h.

edm::EDGetTokenT<edm::SimTrackContainer> TkConvValidator::g4_simTk_Token_
private

Definition at line 102 of file TkConvValidator.h.

edm::EDGetTokenT<edm::SimVertexContainer> TkConvValidator::g4_simVtx_Token_
private

Definition at line 103 of file TkConvValidator.h.

bool TkConvValidator::generalTracksOnly_
private

Definition at line 135 of file TkConvValidator.h.

edm::EDGetTokenT<reco::GenJetCollection> TkConvValidator::genjets_Token_
private

Definition at line 107 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_Chi2VsEta_[3]
private

Definition at line 317 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_Chi2VsR_[3]
private

Definition at line 319 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_convVtxdRVsEta_
private

Definition at line 276 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_convVtxdRVsR_
private

Definition at line 275 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_convVtxRrecVsTrue_
private

Definition at line 289 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DCotTracksVsEta_
private

Definition at line 238 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DCotTracksVsR_
private

Definition at line 240 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtEcalVsEta_
private

Definition at line 248 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtEcalVsR_
private

Definition at line 246 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtVtxVsEta_
private

Definition at line 232 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtVtxVsR_
private

Definition at line 234 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_dzPVVsR_
private

Definition at line 295 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_photonPtRecVsPtSim_
private

Definition at line 328 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_PtRecVsPtSim_[3]
private

Definition at line 327 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_TkPtPull_[3]
private

Definition at line 325 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_AllSimConv_[5]
private

Denominator for efficiencies.

Definition at line 188 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convEta2_[3][3]
private

Definition at line 214 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convEta_[3][3]
private

Definition at line 213 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convEtaMatchSC_[3][3]
private

Definition at line 212 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convPhi_[3][3]
private

Definition at line 215 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convPt_[3][3]
private

Definition at line 218 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convPtRes_[3]
private

Definition at line 227 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convR_[3][3]
private

Definition at line 216 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convRplot_
private

Definition at line 224 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convSCdEta_[3][3]
private

Definition at line 221 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convSCdPhi_[3][3]
private

Definition at line 222 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdEta_
private

Definition at line 262 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdPhi_
private

Definition at line 263 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdR_
private

Definition at line 261 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdR_barrel_
private

Definition at line 268 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdR_endcap_
private

Definition at line 273 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdX_
private

Definition at line 258 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdX_barrel_
private

Definition at line 265 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdX_endcap_
private

Definition at line 270 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdY_
private

Definition at line 259 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdY_barrel_
private

Definition at line 266 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdY_endcap_
private

Definition at line 271 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdZ_
private

Definition at line 260 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdZ_barrel_
private

Definition at line 267 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdZ_endcap_
private

Definition at line 272 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxRvsZ_[3]
private

Definition at line 253 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxRvsZ_zoom_[2]
private

Definition at line 255 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxYvsX_
private

Definition at line 254 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxYvsX_zoom_[2]
private

Definition at line 256 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convZ_[3][3]
private

Definition at line 217 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convZplot_
private

Definition at line 225 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_DCotTracks_[3][3]
private

Definition at line 237 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_deltaExpectedHitsInner_[3][3]
private

Definition at line 303 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_DEtaTracksAtEcal_[3][3]
private

Definition at line 251 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_distMinAppTracks_[3][3]
private

Definition at line 243 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_dlClosestHitToVtx_[3]
private

Definition at line 335 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_dlClosestHitToVtxSig_[3]
private

Definition at line 336 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_DPhiTracksAtEcal_[3][3]
private

Definition at line 245 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_DPhiTracksAtVtx_[3][3]
private

Definition at line 231 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_dzPVFromTracks_[2]
private

Definition at line 294 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_EoverPTracks_[3][3]
private

Definition at line 219 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_invMass_[3][3]
private

Definition at line 229 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_leadExpectedHitsInner_[3][3]
private

Definition at line 304 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_leadNHitsBeforeVtx_[3][3]
private

Definition at line 300 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_lxybs_[3][3]
private

Definition at line 298 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_match_
private

Definition at line 330 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_maxDlClosestHitToVtx_[3][3]
private

Definition at line 305 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_maxDlClosestHitToVtxSig_[3][3]
private

Definition at line 306 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_maxNHitsBeforeVtx_[3][3]
private

Definition at line 299 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_nConv_[3][3]
private

info per conversion

Definition at line 211 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_nHitsBeforeVtx_[3]
private

Definition at line 334 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_nSharedHits_[3][3]
private

Definition at line 307 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_nSimConv_[2]
private

Definition at line 178 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_RecoConvTwoMTracks_[5]
private

Definition at line 208 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_RecoConvTwoTracks_[5]
private

Definition at line 206 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvEtaPix_[2]
private

Definition at line 179 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvOneMTracks_[5]
private

Definition at line 193 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvOneTracks_[5]
private

Numerator for efficiencies.

Definition at line 192 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracks_[5]
private

Definition at line 195 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracksAndVtxPGT0005_[5]
private

Definition at line 197 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracksAndVtxPGT01_[5]
private

Definition at line 198 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracksAndVtxPGT0_[5]
private

Definition at line 196 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoTracks_[5]
private

Definition at line 194 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simConvVtxRvsZ_[4]
private

Definition at line 184 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simConvVtxYvsX_
private

Definition at line 185 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvOneMTracks_[5]
private

Definition at line 201 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvOneTracks_[5]
private

Definition at line 200 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvTwoMTracks_[5]
private

Definition at line 203 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvTwoTracks_[5]
private

Definition at line 202 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simTkEta_
private

Definition at line 182 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simTkPt_
private

Definition at line 181 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_sumNHitsBeforeVtx_[3][3]
private

Definition at line 302 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_tkChi2_[3]
private

Definition at line 315 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_tkChi2Large_[3]
private

Definition at line 316 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_TkD0_[3]
private

Definition at line 322 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_TkPtPull_[3]
private

Definition at line 324 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_trailNHitsBeforeVtx_[3][3]
private

Definition at line 301 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_VisSimConv_[6]
private

Definition at line 189 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_VisSimConvLarge_
private

Definition at line 190 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_vtxChi2Prob_[3][3]
private

Definition at line 291 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_zPVFromTracks_[2]
private

Definition at line 293 of file TkConvValidator.h.

double TkConvValidator::hcalEtSumCut_
private

Definition at line 131 of file TkConvValidator.h.

double TkConvValidator::hcalHitEtLow_
private

Definition at line 127 of file TkConvValidator.h.

double TkConvValidator::hcalIsolExtRadius_
private

Definition at line 125 of file TkConvValidator.h.

double TkConvValidator::hcalIsolInnRadius_
private

Definition at line 126 of file TkConvValidator.h.

edm::EDGetTokenT<edm::HepMCProduct> TkConvValidator::hepMC_Token_
private

Definition at line 106 of file TkConvValidator.h.

bool TkConvValidator::highPurity_
private

Definition at line 139 of file TkConvValidator.h.

bool TkConvValidator::isRunCentrally_
private

Definition at line 116 of file TkConvValidator.h.

edm::InputTag TkConvValidator::label_tp_
private

Definition at line 112 of file TkConvValidator.h.

double TkConvValidator::lip_
private

Definition at line 122 of file TkConvValidator.h.

uint TkConvValidator::maxHitsBeforeVtx_
private

Definition at line 141 of file TkConvValidator.h.

double TkConvValidator::maxPhoEtaForEffic
private

Definition at line 161 of file TkConvValidator.h.

double TkConvValidator::maxPhoEtaForPurity
private

Definition at line 165 of file TkConvValidator.h.

double TkConvValidator::maxPhoRForEffic
private

Definition at line 163 of file TkConvValidator.h.

double TkConvValidator::maxPhoRForPurity
private

Definition at line 167 of file TkConvValidator.h.

double TkConvValidator::maxPhoZForEffic
private

Definition at line 162 of file TkConvValidator.h.

double TkConvValidator::maxPhoZForPurity
private

Definition at line 166 of file TkConvValidator.h.

double TkConvValidator::mcConvEta_
private

Definition at line 153 of file TkConvValidator.h.

double TkConvValidator::mcConvPhi_
private

Definition at line 152 of file TkConvValidator.h.

double TkConvValidator::mcConvPt_
private

Definition at line 147 of file TkConvValidator.h.

double TkConvValidator::mcConvR_
private

Definition at line 148 of file TkConvValidator.h.

double TkConvValidator::mcConvX_
private

Definition at line 151 of file TkConvValidator.h.

double TkConvValidator::mcConvY_
private

Definition at line 150 of file TkConvValidator.h.

double TkConvValidator::mcConvZ_
private

Definition at line 149 of file TkConvValidator.h.

double TkConvValidator::mcEta_
private

Definition at line 146 of file TkConvValidator.h.

double TkConvValidator::mcJetEta_
private

Definition at line 154 of file TkConvValidator.h.

double TkConvValidator::mcJetPhi_
private

Definition at line 155 of file TkConvValidator.h.

double TkConvValidator::mcPhi_
private

global variable for the MC photon

Definition at line 145 of file TkConvValidator.h.

double TkConvValidator::minLxy_
private

Definition at line 142 of file TkConvValidator.h.

double TkConvValidator::minPhoEtCut_
private

Definition at line 118 of file TkConvValidator.h.

double TkConvValidator::minPhoPtForEffic
private

Definition at line 160 of file TkConvValidator.h.

double TkConvValidator::minPhoPtForPurity
private

Definition at line 164 of file TkConvValidator.h.

double TkConvValidator::minProb_
private

Definition at line 140 of file TkConvValidator.h.

int TkConvValidator::nEntry_
private

Definition at line 77 of file TkConvValidator.h.

int TkConvValidator::nEvt_
private

Definition at line 76 of file TkConvValidator.h.

MonitorElement* TkConvValidator::nHits_[3]
private

Definition at line 310 of file TkConvValidator.h.

MonitorElement* TkConvValidator::nHitsVsEta_[3]
private

Definition at line 312 of file TkConvValidator.h.

MonitorElement* TkConvValidator::nHitsVsR_[3]
private

Definition at line 314 of file TkConvValidator.h.

int TkConvValidator::nInvalidPCA_
private

Definition at line 84 of file TkConvValidator.h.

int TkConvValidator::nMatched_
private

Definition at line 79 of file TkConvValidator.h.

int TkConvValidator::nRecConv_
private

Definition at line 80 of file TkConvValidator.h.

int TkConvValidator::nRecConvAss_
private

Definition at line 81 of file TkConvValidator.h.

int TkConvValidator::nRecConvAssWithEcal_
private

Definition at line 82 of file TkConvValidator.h.

int TkConvValidator::nSimConv_[2]
private

Definition at line 78 of file TkConvValidator.h.

int TkConvValidator::numOfTracksInCone_
private

Definition at line 128 of file TkConvValidator.h.

edm::EDGetTokenT<reco::VertexCollection> TkConvValidator::offline_pvToken_
private

Definition at line 100 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p2_convVtxdRVsRZ_
private

Definition at line 286 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p2_convVtxdZVsRZ_
private

Definition at line 287 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p2_effRZ_
private

Definition at line 332 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_Chi2VsEta_[3]
private

Definition at line 318 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_Chi2VsR_[3]
private

Definition at line 320 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdRVsEta_
private

Definition at line 279 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdRVsR_
private

Definition at line 278 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdXVsX_
private

Definition at line 281 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdYVsY_
private

Definition at line 282 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdZVsR_
private

Definition at line 284 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdZVsZ_
private

Definition at line 283 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DCotTracksVsEta_
private

Definition at line 239 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DCotTracksVsR_
private

Definition at line 241 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtEcalVsEta_
private

Definition at line 249 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtEcalVsR_
private

Definition at line 247 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtVtxVsEta_
private

Definition at line 233 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtVtxVsR_
private

Definition at line 235 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_dzPVVsR_
private

Definition at line 296 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_nHitsVsEta_[3]
private

Definition at line 311 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_nHitsVsR_[3]
private

Definition at line 313 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_TkPtPull_[3]
private

Definition at line 326 of file TkConvValidator.h.

edm::ParameterSet TkConvValidator::parameters_
private
std::string TkConvValidator::photonCollection_
private

Definition at line 97 of file TkConvValidator.h.

edm::EDGetTokenT<reco::PhotonCollection> TkConvValidator::photonCollectionPr_Token_
private

Definition at line 98 of file TkConvValidator.h.

std::string TkConvValidator::photonCollectionProducer_
private

Definition at line 96 of file TkConvValidator.h.

double TkConvValidator::recMaxPt_
private

Definition at line 174 of file TkConvValidator.h.

double TkConvValidator::recMinPt_
private

Global variables for reco Photon.

Definition at line 173 of file TkConvValidator.h.

double TkConvValidator::simMaxPt_
private

Definition at line 170 of file TkConvValidator.h.

double TkConvValidator::simMinPt_
private

Definition at line 169 of file TkConvValidator.h.

edm::ESHandle<CaloGeometry> TkConvValidator::theCaloGeom_
private

Definition at line 87 of file TkConvValidator.h.

edm::ESHandle<CaloTopology> TkConvValidator::theCaloTopo_
private

Definition at line 88 of file TkConvValidator.h.

edm::RefVector<TrackingParticleCollection> TkConvValidator::theConvTP_
private

Definition at line 157 of file TkConvValidator.h.

edm::ESHandle<MagneticField> TkConvValidator::theMF_
private

Definition at line 73 of file TkConvValidator.h.

PhotonMCTruthFinder* TkConvValidator::thePhotonMCTruthFinder_
private

Definition at line 114 of file TkConvValidator.h.

edm::EDGetTokenT<TrackingParticleRefVector> TkConvValidator::tpSelForEff_Token_
private

Definition at line 104 of file TkConvValidator.h.

edm::EDGetTokenT<TrackingParticleRefVector> TkConvValidator::tpSelForFake_Token_
private

Definition at line 105 of file TkConvValidator.h.

edm::EDGetTokenT<reco::TrackToTrackingParticleAssociator> TkConvValidator::trackAssociator_Token_
private

Definition at line 108 of file TkConvValidator.h.

double TkConvValidator::trkIsolExtRadius_
private

Definition at line 119 of file TkConvValidator.h.

double TkConvValidator::trkIsolInnRadius_
private

Definition at line 120 of file TkConvValidator.h.

double TkConvValidator::trkPtLow_
private

Definition at line 121 of file TkConvValidator.h.

double TkConvValidator::trkPtSumCut_
private

Definition at line 129 of file TkConvValidator.h.

int TkConvValidator::verbosity_
private

Definition at line 75 of file TkConvValidator.h.