CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
TkConvValidator Class Reference

#include <TkConvValidator.h>

Inheritance diagram for TkConvValidator:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
virtual void dqmBeginRun (edm::Run const &r, edm::EventSetup const &theEventSetup)
 
virtual void endJob ()
 
virtual void endRun (edm::Run &r, edm::EventSetup const &es)
 
 TkConvValidator (const edm::ParameterSet &)
 
virtual ~TkConvValidator ()
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

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::ConversionCollection
conversionCollectionPr_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::SimTrackContainer
g4_simTk_Token_
 
edm::EDGetTokenT
< edm::SimVertexContainer
g4_simVtx_Token_
 
bool generalTracksOnly_
 
edm::EDGetTokenT
< reco::GenJetCollection
genjets_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::HepMCProduct
hepMC_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::VertexCollection
offline_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::PhotonCollection
photonCollectionPr_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
< TrackingParticleCollection
theConvTP_
 
edm::ESHandle< MagneticFieldtheMF_
 
PhotonMCTruthFinderthePhotonMCTruthFinder_
 
edm::EDGetTokenT
< TrackingParticleCollection
tpSelForEff_Token_
 
edm::EDGetTokenT
< TrackingParticleCollection
tpSelForFake_Token_
 
edm::EDGetTokenT
< reco::TrackToTrackingParticleAssociator
trackAssociator_Token_
 
double trkIsolExtRadius_
 
double trkIsolInnRadius_
 
double trkPtLow_
 
double trkPtSumCut_
 
int verbosity_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr
< dqmDetails::NoCache
globalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr
< dqmDetails::NoCache
globalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

$Id: TkConvValidator

Author
N.Marinelli - Univ. of Notre Dame

Definition at line 51 of file TkConvValidator.h.

Constructor & Destructor Documentation

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

Definition at line 104 of file TkConvValidator.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HLT_25ns14e33_v1_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

105  {
106 
107  fName_ = pset.getUntrackedParameter<std::string>("Name");
108  verbosity_ = pset.getUntrackedParameter<int>("Verbosity");
109  parameters_ = pset;
110 
111  photonCollectionProducer_ = pset.getParameter<std::string>("phoProducer");
112  photonCollection_ = pset.getParameter<std::string>("photonCollection");
113  photonCollectionPr_Token_ = consumes<reco::PhotonCollection> (
115  photonCollection_));
116 
118  conversionCollection_ = pset.getParameter<std::string>("conversionCollection");
119  conversionCollectionPr_Token_ = consumes<reco::ConversionCollection> (
120  edm::InputTag(conversionCollectionProducer_,
121  conversionCollection_));
122 
123  // conversionTrackProducer_ = pset.getParameter<std::string>("trackProducer");
124  dqmpath_ = pset.getParameter<std::string>("dqmpath");
125  minPhoEtCut_ = pset.getParameter<double>("minPhoEtCut");
126  generalTracksOnly_ = pset.getParameter<bool>("generalTracksOnly");
127  arbitratedMerged_ = pset.getParameter<bool>("arbitratedMerged");
128  arbitratedEcalSeeded_ = pset.getParameter<bool>("arbitratedEcalSeeded");
129  ecalalgotracks_ = pset.getParameter<bool>("ecalalgotracks");
130  highPurity_ = pset.getParameter<bool>("highPurity");
131  minProb_ = pset.getParameter<double>("minProb");
132  maxHitsBeforeVtx_ = pset.getParameter<uint>("maxHitsBeforeVtx");
133  minLxy_ = pset.getParameter<double>("minLxy");
134  isRunCentrally_= pset.getParameter<bool>("isRunCentrally");
135 
136  offline_pvToken_ = consumes<reco::VertexCollection>(
137  pset.getUntrackedParameter<edm::InputTag> ("offlinePV",
138  edm::InputTag("offlinePrimaryVertices")));
139  beamspotToken_ = consumes<reco::BeamSpot>(
140  pset.getUntrackedParameter<edm::InputTag> ("beamspot",
141  edm::InputTag("offlineBeamSpot")));
142  g4_simTk_Token_ = consumes<edm::SimTrackContainer>(edm::InputTag("g4SimHits"));
143  g4_simVtx_Token_ = consumes<edm::SimVertexContainer>(edm::InputTag("g4SimHits"));
144 
145  tpSelForEff_Token_ = consumes<TrackingParticleCollection> (
146  edm::InputTag("tpSelecForEfficiency"));
147  tpSelForFake_Token_ = consumes<TrackingParticleCollection> (
148  edm::InputTag("tpSelecForFakeRate"));
149  hepMC_Token_ = consumes<edm::HepMCProduct>(edm::InputTag("generator"));
150  genjets_Token_ = consumes<reco::GenJetCollection>(
151  edm::InputTag("ak4GenJets"));
152 
153  trackAssociator_Token_ = consumes<reco::TrackToTrackingParticleAssociator>(edm::InputTag("trackAssociatorByHitsForConversionValidation"));
154  }
T getParameter(std::string const &) const
std::string dqmpath_
T getUntrackedParameter(std::string const &, T const &) const
std::string photonCollection_
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< edm::HepMCProduct > hepMC_Token_
std::string conversionCollection_
edm::EDGetTokenT< TrackingParticleCollection > tpSelForEff_Token_
edm::EDGetTokenT< reco::TrackToTrackingParticleAssociator > trackAssociator_Token_
edm::EDGetTokenT< reco::ConversionCollection > conversionCollectionPr_Token_
edm::EDGetTokenT< TrackingParticleCollection > tpSelForFake_Token_
std::string conversionCollectionProducer_
std::string fName_
std::string photonCollectionProducer_
edm::EDGetTokenT< reco::GenJetCollection > genjets_Token_
TkConvValidator::~TkConvValidator ( )
virtual

Definition at line 158 of file TkConvValidator.cc.

158 {}

Member Function Documentation

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

Implements edm::stream::EDAnalyzerBase.

Definition at line 803 of file TkConvValidator.cc.

References funct::abs(), reco::TrackBase::algo(), reco::Conversion::arbitratedEcalSeeded, reco::Conversion::arbitratedMerged, reco::Vertex::chi2(), ChiSquaredProbability(), conv, reco::Conversion::conversionVertex(), reco::deltaPhi(), reco::Conversion::distOfMinimumApproach(), reco::Conversion::dlClosestHitToVtx(), reco::Conversion::dPhiTracksAtVtx(), PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, reco::TrackBase::dxy(), edm::AssociationMap< Tag >::end(), event(), HcalObjRepresent::Fill(), edm::AssociationMap< Tag >::find(), reco::Conversion::generalTracksOnly, edm::EventSetup::get(), edm::RefToBase< T >::get(), edm::Event::getByToken(), reco::Conversion::highPurity, reco::TrackBase::hitPattern(), i, edm::EventBase::id(), reco::Vertex::isValid(), edm::Ref< C, T, F >::key(), lxy(), match(), bookConverter::max, reco::HitPattern::MISSING_INNER_HITS, reco::Vertex::ndof(), reco::Conversion::nHitsBeforeVtx(), reco::Conversion::nSharedHits(), reco::HitPattern::numberOfHits(), p1, p2, reco::Conversion::pairCotThetaSeparation(), reco::Conversion::pairInvariantMass(), benchmark_cfg::pdgId, configurableAnalysis::Photon, reco::Vertex::position(), reco::TrackBase::pt(), edm::RefToBaseVector< T >::push_back(), q1, q2, reco::Conversion::quality(), recPt, reco::Conversion::refittedPairMomentum(), reco::Vertex::refittedTracks(), edm::AssociationMap< Tag >::size(), mathSSE::sqrt(), reco::Photon::superCluster(), patCandidatesForDimuonsSequences_cff::tracker, testEve_cfg::tracks, reco::Conversion::tracks(), GoodVertex_cfg::vertexCollection, reco::Vertex::x(), reco::Vertex::y(), and reco::Conversion::zOfPrimaryVertexFromTracks().

803  {
805  using namespace edm;
806  // const float etaPhiDistance=0.01;
807  // Fiducial region
808  // const float TRK_BARL =0.9;
809  const float BARL = 1.4442; // DAQ TDR p.290
810  // const float END_LO = 1.566; // unused
811  const float END_HI = 2.5;
812  // Electron mass
813  // const Float_t mElec= 0.000511; // unused
814 
816  e.getByToken(trackAssociator_Token_,theTrackAssociator);
817 
818 
819  nEvt_++;
820  LogInfo("TkConvValidator") << "TkConvValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
821  // std::cout << "TkConvValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
822 
823 
824  // get the geometry from the event setup:
825  esup.get<CaloGeometryRecord>().get(theCaloGeom_);
826 
827 
828  // Transform Track into TransientTrack (needed by the Vertex fitter)
830  esup.get<TransientTrackRecord>().get("TransientTrackBuilder",theTTB);
831 
832 
836  const reco::ConversionCollection convCollection = *(convHandle.product());
837  if (!convHandle.isValid()) {
838  edm::LogError("ConversionsProducer") << "Error! Can't get the collection "<< std::endl;
839  return;
840  }
841 
843  Handle<reco::PhotonCollection> photonHandle;
844  e.getByToken(photonCollectionPr_Token_, photonHandle);
845  const reco::PhotonCollection photonCollection = *(photonHandle.product());
846  if (!photonHandle.isValid()) {
847  edm::LogError("PhotonProducer") << "Error! Can't get the Photon collection "<< std::endl;
848  return;
849  }
850 
851 
852  // offline Primary vertex
855  e.getByToken(offline_pvToken_, vertexHandle);
856  if (!vertexHandle.isValid()) {
857  edm::LogError("TrackerOnlyConversionProducer") << "Error! Can't get the product primary Vertex Collection "<< "\n";
858  } else {
859  vertexCollection = *(vertexHandle.product());
860  }
861  reco::Vertex the_pvtx;
862  bool valid_pvtx = false;
863  if (!vertexCollection.empty()){
864  the_pvtx = *(vertexCollection.begin());
865  //asking for one good vertex
866  if (the_pvtx.isValid() && fabs(the_pvtx.position().z())<=15 && the_pvtx.position().Rho()<=2){
867  valid_pvtx = true;
868  }
869  }
870 
872  e.getByToken(beamspotToken_, bsHandle);
873  if (!bsHandle.isValid()) {
874  edm::LogError("TrackerOnlyConversionProducer")
875  << "Error! Can't get the product primary Vertex Collection "<< "\n";
876  return;
877  }
878  const reco::BeamSpot &thebs = *bsHandle.product();
879 
880  //get tracker geometry for hits positions
883  const TrackerGeometry* trackerGeom = tracker.product();
884 
885 
886 
888  //get simtrack info
889  std::vector<SimTrack> theSimTracks;
890  std::vector<SimVertex> theSimVertices;
891 
894  e.getByToken(g4_simTk_Token_, SimTk);
895  e.getByToken(g4_simVtx_Token_, SimVtx);
896 
897  bool useTP = parameters_.getParameter<bool>("useTP");
898  TrackingParticleCollection tpForEfficiency;
899  TrackingParticleCollection tpForFakeRate;
901  edm::Handle<TrackingParticleCollection> TPHandleForFakeRate;
902  if (useTP) {
903  e.getByToken(tpSelForEff_Token_, TPHandleForEff);
904  tpForEfficiency = *(TPHandleForEff.product());
905  e.getByToken(tpSelForFake_Token_, TPHandleForFakeRate);
906  tpForFakeRate = *(TPHandleForFakeRate.product());
907  }
908 
909 
910 
911  theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
912  theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
913  std::vector<PhotonMCTruth> mcPhotons=thePhotonMCTruthFinder_->find (theSimTracks, theSimVertices);
914 
916  e.getByToken(hepMC_Token_, hepMC);
917  // const HepMC::GenEvent *myGenEvent = hepMC->GetEvent(); // unused
918 
919 
920  // get generated jets
922  e.getByToken(genjets_Token_, GenJetsHandle);
923  reco::GenJetCollection genJetCollection = *(GenJetsHandle.product());
924 
925  ConversionHitChecker hitChecker;
926 
927  // ################ SIM to RECO ######################### //
928  std::map<const reco::Track*,TrackingParticleRef> myAss;
929  std::map<const reco::Track*,TrackingParticleRef>::const_iterator itAss;
930 
931  for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
932 
933  mcConvPt_= (*mcPho).fourMomentum().et();
934  float mcPhi= (*mcPho).fourMomentum().phi();
935  mcPhi_= phiNormalization(mcPhi);
936  mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
937  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z() );
938  mcConvR_= (*mcPho).vertex().perp();
939  mcConvX_= (*mcPho).vertex().x();
940  mcConvY_= (*mcPho).vertex().y();
941  mcConvZ_= (*mcPho).vertex().z();
942  mcConvEta_= (*mcPho).vertex().eta();
943  mcConvPhi_= (*mcPho).vertex().phi();
944 
945  if ( fabs(mcEta_) > END_HI ) continue;
946 
947  if (mcConvPt_<minPhoPtForEffic) continue;
948  if (fabs(mcEta_)>maxPhoEtaForEffic) continue;
949  if (fabs(mcConvZ_)>maxPhoZForEffic) continue;
950  if (mcConvR_>maxPhoRForEffic) continue;
952 
953  bool goodSimConversion=false;
954  bool visibleConversion=false;
955  bool visibleConversionsWithTwoSimTracks=false;
956  if ( (*mcPho).isAConversion() == 1 ) {
957  nSimConv_[0]++;
958  h_AllSimConv_[0]->Fill( mcEta_ ) ;
959  h_AllSimConv_[1]->Fill( mcPhi_ );
960  h_AllSimConv_[2]->Fill( mcConvR_ );
961  h_AllSimConv_[3]->Fill( mcConvZ_ );
962  h_AllSimConv_[4]->Fill( (*mcPho).fourMomentum().et());
963 
964  if ( mcConvR_ <15) h_SimConvEtaPix_[0]->Fill( mcEta_ ) ;
965 
966  if ( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
967  ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) visibleConversion=true;
968 
969  theConvTP_.clear();
970  // std::cout << " TkConvValidator TrackingParticles TrackingParticleCollection size "<< trackingParticles.size() << "\n";
971  //duplicated TP collections for two associations
972  for(size_t i = 0; i < tpForEfficiency.size(); ++i){
973  TrackingParticleRef tp (TPHandleForEff,i);
974  if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
975  fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
976  fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
977  theConvTP_.push_back( tp );
978  }
979  }
980  //std::cout << " TkConvValidator theConvTP_ size " << theConvTP_.size() << std::endl;
981 
982  if ( theConvTP_.size() == 2 ) visibleConversionsWithTwoSimTracks=true;
983  goodSimConversion=false;
984 
985  if ( visibleConversion && visibleConversionsWithTwoSimTracks ) goodSimConversion=true;
986  if ( goodSimConversion ) {
987  nSimConv_[1]++;
988  h_VisSimConv_[0]->Fill( mcEta_ ) ;
989  h_VisSimConv_[1]->Fill( mcPhi_ );
990  h_VisSimConv_[2]->Fill( mcConvR_ );
991  h_VisSimConv_[3]->Fill( mcConvZ_ );
992  h_VisSimConv_[4]->Fill( (*mcPho).fourMomentum().et());
993 
994  }
995 
997  h_simTkPt_ -> Fill ( (*iTrk)->pt() );
998  h_simTkEta_ -> Fill ( (*iTrk)->eta() );
999  }
1000 
1001 
1002  }
1003 
1004  if ( ! (visibleConversion && visibleConversionsWithTwoSimTracks ) ) continue;
1005 
1006  h_simConvVtxRvsZ_[0] ->Fill ( fabs (mcConvZ_), mcConvR_ ) ;
1007  if ( fabs(mcEta_) <=1.) {
1008  h_simConvVtxRvsZ_[1] ->Fill ( fabs (mcConvZ_), mcConvR_ ) ;
1010  }
1011  else
1012  h_simConvVtxRvsZ_[2] ->Fill ( fabs (mcConvZ_), mcConvR_ ) ;
1013 
1014  //std::cout << " TkConvValidator theConvTP_ size " << theConvTP_.size() << std::endl;
1016  {
1017  // std::cout << " SIM to RECO TP vertex " << (*iTP)->vx() << " " << (*iTP)->vy() << " " << (*iTP)->vz() << " pt " << (*iTP)->pt() << std::endl;
1018  }
1019 
1020  bool recomatch = false;
1021  float chi2Prob = 0.;
1023  // cout << " size of conversions " << convHandle->size() << endl;
1024  for (reco::ConversionCollection::const_iterator conv = convHandle->begin();conv!=convHandle->end();++conv) {
1025 
1026  const reco::Conversion aConv = (*conv);
1030 
1031 
1032  if ( highPurity_ && !aConv.quality(reco::Conversion::highPurity) ) continue;
1033 
1034  //problematic?
1035  std::vector<edm::RefToBase<reco::Track> > tracks = aConv.tracks();
1036 
1037 
1038  const reco::Vertex& vtx = aConv.conversionVertex();
1039  //requires two tracks and a valid vertex
1040  if (tracks.size() !=2 || !(vtx.isValid())) continue;
1041 
1042 
1043  if (ChiSquaredProbability( aConv.conversionVertex().chi2(), aConv.conversionVertex().ndof() ) <= minProb_) continue;
1044  if (aConv.nHitsBeforeVtx().size()>1 && max(aConv.nHitsBeforeVtx().at(0),aConv.nHitsBeforeVtx().at(1)) > maxHitsBeforeVtx_ ) continue;
1045 
1046 
1047  //compute transverse decay length with respect to beamspot
1048  math::XYZVectorF themom = aConv.refittedPairMomentum();
1049  double dbsx = aConv.conversionVertex().x() - thebs.x0();
1050  double dbsy = aConv.conversionVertex().y() - thebs.y0();
1051  double lxy = (themom.x()*dbsx + themom.y()*dbsy)/themom.rho();
1052 
1053  if (lxy<minLxy_) continue;
1054 
1055  // bool phoIsInBarrel=false; // unused
1056  // bool phoIsInEndcap=false; // unused
1057  RefToBase<reco::Track> tfrb1 = aConv.tracks().front();
1058  RefToBase<reco::Track> tfrb2 = aConv.tracks().back();
1059 
1060  if ( ecalalgotracks_ && ( !(tfrb1->algo()==15 || tfrb1->algo()==16) || !(tfrb2->algo()==15 || tfrb2->algo()==16) ) ) continue;
1061 
1062 
1063  //reco::TrackRef tk1 = aConv.tracks().front();
1064  //reco::TrackRef tk2 = aConv.tracks().back();
1065  //std::cout << "SIM to RECO conversion track pt " << tk1->pt() << " " << tk2->pt() << endl;
1066  //
1067  //Use two RefToBaseVector and do two association actions to avoid that if two tracks from different collection
1069  tc1.push_back(tfrb1);
1070  tc2.push_back(tfrb2);
1071  bool isAssociated = false;
1072  reco::SimToRecoCollection q1 = theTrackAssociator->associateSimToReco(tc1,theConvTP_);
1073  reco::SimToRecoCollection q2 = theTrackAssociator->associateSimToReco(tc2,theConvTP_);
1074  //try {
1075  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV1, trackV2;
1076 
1077  int tp_1 = 0, tp_2 = 1;//the index of associated tp in theConvTP_ for two tracks
1078  if (q1.find(theConvTP_[0])!=q1.end()){
1079  trackV1 = (std::vector<std::pair<RefToBase<reco::Track>, double> >) q1[theConvTP_[0]];
1080  } else if (q1.find(theConvTP_[1])!=q1.end()){
1081  trackV1 = (std::vector<std::pair<RefToBase<reco::Track>, double> >) q1[theConvTP_[1]];
1082  tp_1 = 1;
1083  }
1084  if (q2.find(theConvTP_[1])!=q2.end()){
1085  trackV2 = (std::vector<std::pair<RefToBase<reco::Track>, double> >) q2[theConvTP_[1]];
1086  } else if (q2.find(theConvTP_[0])!=q2.end()){
1087  trackV2 = (std::vector<std::pair<RefToBase<reco::Track>, double> >) q2[theConvTP_[0]];
1088  tp_2 = 0;
1089  }
1090  if (!(trackV1.size()&&trackV2.size()))
1091  continue;
1092  if (tp_1 == tp_2) continue;
1093 
1094  edm::RefToBase<reco::Track> tr1 = trackV1.front().first;
1095  edm::RefToBase<reco::Track> tr2 = trackV2.front().first;
1096  //std::cout << "associated tp1 " <<theConvTP_[0]->pt() << " to track with pT=" << tr1->pt() << " " << (tr1.get())->pt() << endl;
1097  //std::cout << "associated tp2 " <<theConvTP_[1]->pt() << " to track with pT=" << tr2->pt() << " " << (tr2.get())->pt() << endl;
1098  myAss.insert( std::make_pair (tr1.get(),theConvTP_[tp_1] ) );
1099  myAss.insert( std::make_pair (tr2.get(),theConvTP_[tp_2]) );
1100 
1101  //} catch (Exception event) {
1102  //cout << "continue: " << event.what() << endl;
1103  // continue;
1104  //}
1105 
1106 
1107  isAssociated = true;
1108  recomatch = true;
1109  chi2Prob = ChiSquaredProbability( aConv.conversionVertex().chi2(), aConv.conversionVertex().ndof() );
1110 
1111  if (isAssociated) {
1114  h_SimRecConvTwoMTracks_[2]->Fill( mcConvR_ );
1116  h_SimRecConvTwoMTracks_[4]->Fill( (*mcPho).fourMomentum().et());
1117  }
1118 
1119  // break;
1120  } // loop over reco conversions
1121  if (recomatch) {
1125  h_SimConvTwoMTracks_[2]->Fill( mcConvR_ );
1127  h_SimConvTwoMTracks_[4]->Fill( (*mcPho).fourMomentum().et());
1128 
1129 
1130  if ( chi2Prob > 0) {
1133  h_SimConvTwoMTracksAndVtxPGT0_[2]->Fill( mcConvR_ );
1135  h_SimConvTwoMTracksAndVtxPGT0_[4]->Fill( (*mcPho).fourMomentum().et());
1136  }
1137  if ( chi2Prob > 0.0005) {
1140  h_SimConvTwoMTracksAndVtxPGT0005_[2]->Fill( mcConvR_ );
1142  h_SimConvTwoMTracksAndVtxPGT0005_[4]->Fill( (*mcPho).fourMomentum().et());
1143 
1144  }
1145  }
1146 
1147  } //End loop over simulated conversions
1148 
1149 
1150  // ########################### RECO to SIM ############################## //
1151 
1152  for (reco::ConversionCollection::const_iterator conv = convHandle->begin();conv!=convHandle->end();++conv) {
1153  const reco::Conversion aConv = (*conv);
1157 
1158 
1159  if ( highPurity_ && !aConv.quality(reco::Conversion::highPurity) ) continue;
1160 
1161  //problematic?
1162  std::vector<edm::RefToBase<reco::Track> > tracks = aConv.tracks();
1163 
1164  const reco::Vertex& vtx = aConv.conversionVertex();
1165  //requires two tracks and a valid vertex
1166  if (tracks.size() !=2 || !(vtx.isValid())) continue;
1167  //if (tracks.size() !=2) continue;
1168 
1169 
1170  if (ChiSquaredProbability( aConv.conversionVertex().chi2(), aConv.conversionVertex().ndof() ) <= minProb_) continue;
1171  if (aConv.nHitsBeforeVtx().size()>1 && max(aConv.nHitsBeforeVtx().at(0),aConv.nHitsBeforeVtx().at(1)) > maxHitsBeforeVtx_ ) continue;
1172 
1173  //compute transverse decay length with respect to beamspot
1174  math::XYZVectorF themom = aConv.refittedPairMomentum();
1175  double dbsx = aConv.conversionVertex().x() - thebs.x0();
1176  double dbsy = aConv.conversionVertex().y() - thebs.y0();
1177  double lxy = (themom.x()*dbsx + themom.y()*dbsy)/themom.rho();
1178 
1179  if (lxy<minLxy_) continue;
1180 
1181  bool phoIsInBarrel=false;
1182  bool phoIsInEndcap=false;
1183  RefToBase<reco::Track> tk1 = aConv.tracks().front();
1184  RefToBase<reco::Track> tk2 = aConv.tracks().back();
1186  tc1.push_back(tk1);
1187  tc2.push_back(tk2);
1188 
1189  if ( ecalalgotracks_ && ( !(tk1->algo()==15 || tk1->algo()==16) || !(tk2->algo()==15 || tk2->algo()==16) ) ) continue;
1190 
1191 
1192  //std::cout << " RECO to SIM conversion track pt " << tk1->pt() << " " << tk2->pt() << endl;
1193  const reco::Track refTk1 = aConv.conversionVertex().refittedTracks().front();
1194  const reco::Track refTk2 = aConv.conversionVertex().refittedTracks().back();
1195 
1196  //TODO replace it with phi at vertex
1197  float dPhiTracksAtVtx = aConv.dPhiTracksAtVtx();
1198  // override with the phi calculated at the vertex
1199  math::XYZVector p1AtVtx= recalculateMomentumAtFittedVertex ( (*theMF_), *trackerGeom, tk1, aConv.conversionVertex() );
1200  math::XYZVector p2AtVtx= recalculateMomentumAtFittedVertex ( (*theMF_), *trackerGeom, tk2, aConv.conversionVertex() );
1201  if ( sqrt(p1AtVtx.perp2()) > sqrt(p2AtVtx.perp2()) )
1202  dPhiTracksAtVtx = p1AtVtx.phi() - p2AtVtx.phi();
1203  else
1204  dPhiTracksAtVtx = p2AtVtx.phi() - p1AtVtx.phi();
1205 
1206 
1207  math::XYZVectorF refittedMom = aConv.refittedPairMomentum();
1208 
1209 
1210  if (fabs(refittedMom.eta())< 1.479 ) {
1211  phoIsInBarrel=true;
1212  } else {
1213  phoIsInEndcap=true;
1214  }
1215 
1216  nRecConv_++;
1217 
1218  // check matching with reco photon
1219  double Mindeltaeta = 999999;
1220  double Mindeltaphi = 999999;
1221  bool matchConvSC=false;
1222  reco::PhotonCollection::const_iterator iMatchingSC;
1223  for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
1224  reco::Photon aPho = reco::Photon(*iPho);
1225  const double deltaphi= reco::deltaPhi( aConv.refittedPairMomentum().phi(), aPho.superCluster()->position().phi());
1226  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1227  double deltaeta = abs( aPho.superCluster()->position().eta() -ConvEta);
1228  if (abs(deltaeta)<abs(Mindeltaeta) && abs(deltaphi)<abs(Mindeltaphi)) {
1229  Mindeltaphi=abs(deltaphi);
1230  Mindeltaeta=abs(deltaeta);
1231  iMatchingSC = iPho ;
1232  }
1233  }
1234  if (abs(Mindeltaeta)<0.1 && abs(Mindeltaphi)<0.1) {
1235  matchConvSC=true;
1236  }
1237 
1238 
1240  int match =0;
1241  float invM=aConv.pairInvariantMass();
1242  float chi2Prob = ChiSquaredProbability( aConv.conversionVertex().chi2(), aConv.conversionVertex().ndof() );
1243  uint maxNHitsBeforeVtx = aConv.nHitsBeforeVtx().size()>1 ? max(aConv.nHitsBeforeVtx().at(0),aConv.nHitsBeforeVtx().at(1)) : 0;
1244  uint sumNHitsBeforeVtx = aConv.nHitsBeforeVtx().size()>1 ? aConv.nHitsBeforeVtx().at(0) + aConv.nHitsBeforeVtx().at(1) : 0;
1245  float maxDlClosestHitToVtx = aConv.dlClosestHitToVtx().size()>1 ? max(aConv.dlClosestHitToVtx().at(0).value(),aConv.dlClosestHitToVtx().at(1).value()) : 0;
1246  float maxDlClosestHitToVtxSig = aConv.dlClosestHitToVtx().size()>1 ? max(aConv.dlClosestHitToVtx().at(0).value()/aConv.dlClosestHitToVtx().at(0).error(),aConv.dlClosestHitToVtx().at(1).value()/aConv.dlClosestHitToVtx().at(1).error()) : 0;
1247 
1248  int ilead = 0, itrail = 1;
1249  if (tk2->pt() > tk1->pt()) {
1250  ilead = 1;
1251  itrail = 0;
1252  }
1253  RefToBase<reco::Track> tklead = aConv.tracks().at(ilead);
1254  RefToBase<reco::Track> tktrail = aConv.tracks().at(itrail);
1255 
1256  int deltaExpectedHitsInner = tklead->hitPattern().numberOfHits(reco::HitPattern::MISSING_INNER_HITS)
1258  int leadExpectedHitsInner = tklead->hitPattern().numberOfHits(reco::HitPattern::MISSING_INNER_HITS);
1259  uint leadNHitsBeforeVtx = aConv.nHitsBeforeVtx().size()>1 ? aConv.nHitsBeforeVtx().at(ilead) : 0;
1260  uint trailNHitsBeforeVtx = aConv.nHitsBeforeVtx().size()>1 ? aConv.nHitsBeforeVtx().at(itrail) : 0;
1261 
1262 
1263  h_convEta_[match][0]->Fill( refittedMom.eta() );
1264  h_convEta2_[match][0]->Fill( refittedMom.eta() );
1265 
1266  h_convPhi_[match][0]->Fill( refittedMom.phi() );
1267  h_convR_[match][0]->Fill( sqrt(aConv.conversionVertex().position().perp2()) );
1268  h_convRplot_->Fill( sqrt(aConv.conversionVertex().position().perp2()) );
1269  h_convZ_[match][0]->Fill( aConv.conversionVertex().position().z() );
1270  h_convZplot_->Fill( aConv.conversionVertex().position().z() );
1271  h_convPt_[match][0]->Fill( sqrt(refittedMom.perp2()) );
1272  h_invMass_[match][0] ->Fill( invM);
1273  h_vtxChi2Prob_[match][0] ->Fill (chi2Prob);
1274  h_lxybs_[match][0] ->Fill (lxy);
1275  h_maxNHitsBeforeVtx_[match][0] ->Fill (maxNHitsBeforeVtx);
1276  h_leadNHitsBeforeVtx_[match][0] ->Fill (leadNHitsBeforeVtx);
1277  h_trailNHitsBeforeVtx_[match][0] ->Fill (trailNHitsBeforeVtx);
1278  h_sumNHitsBeforeVtx_[match][0] ->Fill (sumNHitsBeforeVtx);
1279  h_deltaExpectedHitsInner_[match][0] ->Fill (deltaExpectedHitsInner);
1280  h_leadExpectedHitsInner_[match][0] ->Fill (leadExpectedHitsInner);
1281  h_maxDlClosestHitToVtx_[match][0] ->Fill (maxDlClosestHitToVtx);
1282  h_maxDlClosestHitToVtxSig_[match][0] ->Fill (maxDlClosestHitToVtxSig);
1283  h_nSharedHits_[match][0] ->Fill (aConv.nSharedHits());
1284 
1285 
1286  if ( matchConvSC ) {
1287  h_convEtaMatchSC_[match][0]->Fill( refittedMom.eta() );
1288  h_EoverPTracks_[match][0] ->Fill (iMatchingSC->superCluster()->energy()/sqrt(refittedMom.mag2()));
1289  h_convSCdPhi_[match][0]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1290  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1291  h_convSCdEta_[match][0]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1292  }
1293 
1295  h_DPhiTracksAtVtx_[match][0]->Fill( dPhiTracksAtVtx);
1296  h2_DPhiTracksAtVtxVsEta_->Fill( mcEta_, dPhiTracksAtVtx);
1297  h2_DPhiTracksAtVtxVsR_->Fill( mcConvR_, dPhiTracksAtVtx);
1298  p_DPhiTracksAtVtxVsEta_->Fill( mcEta_, dPhiTracksAtVtx);
1299  p_DPhiTracksAtVtxVsR_->Fill( mcConvR_, dPhiTracksAtVtx);
1300 
1301  h_DCotTracks_[match][0] ->Fill ( aConv.pairCotThetaSeparation() );
1303  h2_DCotTracksVsR_->Fill( mcConvR_, aConv.pairCotThetaSeparation() );
1305  p_DCotTracksVsR_->Fill( mcConvR_, aConv.pairCotThetaSeparation() );
1306 
1307  if ( phoIsInBarrel ) {
1308  h_invMass_[match][1] ->Fill(invM);
1309  h_vtxChi2Prob_[match][1] ->Fill (chi2Prob);
1311  h_DPhiTracksAtVtx_[match][1]->Fill( dPhiTracksAtVtx);
1312  h_DCotTracks_[match][1] ->Fill ( aConv.pairCotThetaSeparation() );
1313  h_lxybs_[match][1] ->Fill (lxy);
1314  h_maxNHitsBeforeVtx_[match][1] ->Fill (maxNHitsBeforeVtx);
1315  h_leadNHitsBeforeVtx_[match][1] ->Fill (leadNHitsBeforeVtx);
1316  h_trailNHitsBeforeVtx_[match][1] ->Fill (trailNHitsBeforeVtx);
1317  h_sumNHitsBeforeVtx_[match][1] ->Fill (sumNHitsBeforeVtx);
1318  h_deltaExpectedHitsInner_[match][1] ->Fill (deltaExpectedHitsInner);
1319  h_leadExpectedHitsInner_[match][1] ->Fill (leadExpectedHitsInner);
1320  h_maxDlClosestHitToVtx_[match][1] ->Fill (maxDlClosestHitToVtx);
1321  h_maxDlClosestHitToVtxSig_[match][1] ->Fill (maxDlClosestHitToVtxSig);
1322  h_nSharedHits_[match][1] ->Fill (aConv.nSharedHits());
1323 
1324  /*
1325  if ( aConv.caloCluster().size() ) {
1326  h_convSCdPhi_[match][1]->Fill( aConv.caloCluster()[0]->phi() - refittedMom.phi() );
1327  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1328  h_convSCdEta_[match][1]->Fill( aConv.caloCluster()[0]->eta() - ConvEta );
1329  }
1330  */
1331 
1332  if ( matchConvSC ) {
1333  h_EoverPTracks_[match][1] -> Fill(iMatchingSC->superCluster()->energy()/sqrt(refittedMom.mag2()));
1334  h_convSCdPhi_[match][1]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1335  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1336  h_convSCdEta_[match][1]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1337  }
1338  }
1339 
1340 
1341  if ( phoIsInEndcap ) {
1342  h_invMass_[match][2] ->Fill(invM);
1343  h_vtxChi2Prob_[match][2] ->Fill (chi2Prob);
1345  h_DPhiTracksAtVtx_[match][2]->Fill( dPhiTracksAtVtx);
1346  h_DCotTracks_[match][2] ->Fill ( aConv.pairCotThetaSeparation() );
1347  h_lxybs_[match][2] ->Fill (lxy);
1348  h_maxNHitsBeforeVtx_[match][2] ->Fill (maxNHitsBeforeVtx);
1349  h_leadNHitsBeforeVtx_[match][2] ->Fill (leadNHitsBeforeVtx);
1350  h_trailNHitsBeforeVtx_[match][2] ->Fill (trailNHitsBeforeVtx);
1351  h_sumNHitsBeforeVtx_[match][2] ->Fill (sumNHitsBeforeVtx);
1352  h_deltaExpectedHitsInner_[match][2] ->Fill (deltaExpectedHitsInner);
1353  h_leadExpectedHitsInner_[match][2] ->Fill (leadExpectedHitsInner);
1354  h_maxDlClosestHitToVtx_[match][2] ->Fill (maxDlClosestHitToVtx);
1355  h_maxDlClosestHitToVtxSig_[match][2] ->Fill (maxDlClosestHitToVtxSig);
1356  h_nSharedHits_[match][2] ->Fill (aConv.nSharedHits());
1357  if ( matchConvSC ) {
1358  h_EoverPTracks_[match][2] ->Fill (iMatchingSC->superCluster()->energy()/sqrt(refittedMom.mag2()));
1359  h_convSCdPhi_[match][2]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1360  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1361  h_convSCdEta_[match][2]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1362 
1363  }
1364  }
1365 
1366  h_convVtxRvsZ_[0] ->Fill ( fabs (aConv.conversionVertex().position().z() ), sqrt(aConv.conversionVertex().position().perp2()) ) ;
1367  h_convVtxYvsX_ ->Fill ( aConv.conversionVertex().position().x(), aConv.conversionVertex().position().y() );
1368  h_convVtxYvsX_zoom_[0] ->Fill ( aConv.conversionVertex().position().x(), aConv.conversionVertex().position().y() );
1369  h_convVtxYvsX_zoom_[1] ->Fill ( aConv.conversionVertex().position().x(), aConv.conversionVertex().position().y() );
1370 
1371 
1372  // quantities per track: all conversions
1373  for (unsigned int i=0; i<tracks.size(); i++) {
1374  double d0;
1375  if (valid_pvtx){
1376  d0 = - tracks[i]->dxy(the_pvtx.position());
1377  } else {
1378  d0 = tracks[i]->d0();
1379  }
1380  h_TkD0_[match]->Fill ( d0* tracks[i]->charge() );
1381  h_nHitsBeforeVtx_[match]->Fill ( aConv.nHitsBeforeVtx().size()>1 ? aConv.nHitsBeforeVtx().at(i) : 0 );
1382  h_dlClosestHitToVtx_[match]->Fill ( aConv.dlClosestHitToVtx().size()>1 ? aConv.dlClosestHitToVtx().at(i).value() : 0 );
1383  h_dlClosestHitToVtxSig_[match]->Fill ( aConv.dlClosestHitToVtx().size()>1 ? aConv.dlClosestHitToVtx().at(i).value()/aConv.dlClosestHitToVtx().at(i).error() : 0 );
1384 
1385  nHitsVsEta_[match] ->Fill (mcEta_, float(tracks[i]->numberOfValidHits()) );
1386  nHitsVsR_[match] ->Fill (mcConvR_, float(tracks[i]->numberOfValidHits()) );
1387  p_nHitsVsEta_[match] ->Fill (mcEta_, float(tracks[i]->numberOfValidHits()) -0.0001);
1388  p_nHitsVsR_[match] ->Fill (mcConvR_, float(tracks[i]->numberOfValidHits()) -0.0001);
1389  h_tkChi2_[match] ->Fill (tracks[i]->normalizedChi2() );
1390  h_tkChi2Large_[match] ->Fill (tracks[i]->normalizedChi2() );
1391  h2_Chi2VsEta_[match] ->Fill( mcEta_, tracks[i]->normalizedChi2() );
1392  h2_Chi2VsR_[match] ->Fill( mcConvR_, tracks[i]->normalizedChi2() );
1393  p_Chi2VsEta_[match] ->Fill( mcEta_, tracks[i]->normalizedChi2() );
1394  p_Chi2VsR_[match] ->Fill( mcConvR_, tracks[i]->normalizedChi2() );
1395 
1396  }
1397 
1398  bool associated = false;
1399  float mcConvPt_= -99999999;
1400  // float mcPhi= 0; // unused
1401  float simPV_Z=0;
1402  for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
1403  mcConvPt_= (*mcPho).fourMomentum().et();
1404  float mcPhi= (*mcPho).fourMomentum().phi();
1405  simPV_Z = (*mcPho).primaryVertex().z();
1406  mcPhi_= phiNormalization(mcPhi);
1407  mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
1408  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z() );
1409  mcConvR_= (*mcPho).vertex().perp();
1410  mcConvX_= (*mcPho).vertex().x();
1411  mcConvY_= (*mcPho).vertex().y();
1412  mcConvZ_= (*mcPho).vertex().z();
1413  mcConvEta_= (*mcPho).vertex().eta();
1414  mcConvPhi_= (*mcPho).vertex().phi();
1415  if ( fabs(mcEta_) > END_HI ) continue;
1416  if (mcConvPt_<minPhoPtForPurity) continue;
1417  if (fabs(mcEta_)>maxPhoEtaForPurity) continue;
1418  if (fabs(mcConvZ_)>maxPhoZForPurity) continue;
1419  if (mcConvR_>maxPhoRForEffic) continue;
1420 
1421  if ( (*mcPho).isAConversion() != 1 ) continue;
1422  if (!( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
1423  ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) )
1424  continue;
1425 
1426 
1427  theConvTP_.clear();
1428  for(size_t i = 0; i < tpForFakeRate.size(); ++i){
1429  TrackingParticleRef tp (TPHandleForFakeRate,i);
1430  if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
1431  fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
1432  fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
1433  theConvTP_.push_back( tp );
1434 
1435 
1436  }
1437  }
1438 
1439  if ( theConvTP_.size() < 2 ) continue;
1440 
1441  //associated = false;
1442  reco::RecoToSimCollection p1 = theTrackAssociator->associateRecoToSim(tc1,theConvTP_);
1443  reco::RecoToSimCollection p2 = theTrackAssociator->associateRecoToSim(tc2,theConvTP_);
1444  try{
1445  std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1[tk1];
1446  std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2[tk2];
1447  if (!(tp1.size()&&tp2.size())){
1448  tp1 = p1[tk2];
1449  tp2 = p2[tk1];
1450  }
1451  if (tp1.size()&&tp2.size()) {
1452  TrackingParticleRef tpr1 = tp1.front().first;
1453  TrackingParticleRef tpr2 = tp2.front().first;
1454  if (abs(tpr1->pdgId())==11&&abs(tpr2->pdgId())==11&& tpr1->pdgId()*tpr2->pdgId()<0) {
1455  if ( (tpr1->parentVertex()->sourceTracks_end()-tpr1->parentVertex()->sourceTracks_begin()==1) &&
1456  (tpr2->parentVertex()->sourceTracks_end()-tpr2->parentVertex()->sourceTracks_begin()==1)) {
1457  if (tpr1->parentVertex().key()==tpr2->parentVertex().key() && ((*tpr1->parentVertex()->sourceTracks_begin())->pdgId()==22)) {
1458  mcConvR_ = sqrt(tpr1->parentVertex()->position().Perp2());
1459  mcConvZ_ = tpr1->parentVertex()->position().z();
1460  mcConvX_ = tpr1->parentVertex()->position().x();
1461  mcConvY_ = tpr1->parentVertex()->position().y();
1462  mcConvEta_ = tpr1->parentVertex()->position().eta();
1463  mcConvPhi_ = tpr1->parentVertex()->position().phi();
1464  mcConvPt_ = sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
1465  //std::cout << " Reco to Sim mcconvpt " << mcConvPt_ << std::endl;
1466  //cout << "associated track1 to " << tpr1->pdgId() << " with p=" << tpr1->p4() << " with pT=" << tpr1->pt() << endl;
1467  //cout << "associated track2 to " << tpr2->pdgId() << " with p=" << tpr2->p4() << " with pT=" << tpr2->pt() << endl;
1468  associated = true;
1469  break;
1470  }
1471  }
1472  }
1473  }
1474  } catch (Exception event) {
1475  //cout << "do not continue: " << event.what() << endl;
1476  //continue;
1477  }
1478 
1479  }// end loop on sim photons
1480 
1481 
1482  if (0) {
1483  theConvTP_.clear();
1484  for(size_t i = 0; i < tpForFakeRate.size(); ++i){
1485  TrackingParticleRef tp (TPHandleForFakeRate,i);
1486  theConvTP_.push_back( tp );
1487  }
1488  reco::RecoToSimCollection p1incl = theTrackAssociator->associateRecoToSim(tc1,theConvTP_);
1489  reco::RecoToSimCollection p2incl = theTrackAssociator->associateRecoToSim(tc2,theConvTP_);
1490 
1491 
1492  for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
1493  mcConvPt_= (*mcPho).fourMomentum().et();
1494  float mcPhi= (*mcPho).fourMomentum().phi();
1495  simPV_Z = (*mcPho).primaryVertex().z();
1496  mcPhi_= phiNormalization(mcPhi);
1497  mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
1498  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z() );
1499  mcConvR_= (*mcPho).vertex().perp();
1500  mcConvX_= (*mcPho).vertex().x();
1501  mcConvY_= (*mcPho).vertex().y();
1502  mcConvZ_= (*mcPho).vertex().z();
1503  mcConvEta_= (*mcPho).vertex().eta();
1504  mcConvPhi_= (*mcPho).vertex().phi();
1505  if ( fabs(mcEta_) > END_HI ) continue;
1506  if (mcConvPt_<minPhoPtForPurity) continue;
1507  if (fabs(mcEta_)>maxPhoEtaForPurity) continue;
1508  if (fabs(mcConvZ_)>maxPhoZForPurity) continue;
1509  if (mcConvR_>maxPhoRForEffic) continue;
1510 
1511  if ( (*mcPho).isAConversion() != 1 ) continue;
1512  if (!( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
1513  ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) )
1514  continue;
1515 
1516 
1517  theConvTP_.clear();
1518  for(size_t i = 0; i < tpForFakeRate.size(); ++i){
1519  TrackingParticleRef tp (TPHandleForFakeRate,i);
1520  if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
1521  fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
1522  fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
1523  theConvTP_.push_back( tp );
1524 
1525 
1526  }
1527  }
1528 
1529  if ( theConvTP_.size() < 2 ) continue;
1530 
1531  //associated = false;
1532  reco::RecoToSimCollection p1 = theTrackAssociator->associateRecoToSim(tc1,theConvTP_);
1533  reco::RecoToSimCollection p2 = theTrackAssociator->associateRecoToSim(tc2,theConvTP_);
1534 
1535 
1536 
1537 
1538 
1539  if ( (p1incl.size() && p2incl.size()) && (p1.size() || p2.size()) ) { // associated = true;
1540  try{
1541  std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1incl[tk1];
1542  std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2incl[tk2];
1543  if (!(tp1.size()&&tp2.size())){
1544  tp1 = p1[tk2];
1545  tp2 = p2[tk1];
1546  }
1547  if (tp1.size()&&tp2.size()) {
1548  TrackingParticleRef tpr1 = tp1.front().first;
1549  TrackingParticleRef tpr2 = tp2.front().first;
1550  if (abs(tpr1->pdgId())==11&&abs(tpr2->pdgId())==11 && tpr1->pdgId()*tpr2->pdgId()<0) {
1551  if ( ((tpr1->parentVertex()->sourceTracks_end()-tpr1->parentVertex()->sourceTracks_begin()>=1) && (*tpr1->parentVertex()->sourceTracks_begin())->pdgId()==22) &&
1552  ((tpr2->parentVertex()->sourceTracks_end()-tpr2->parentVertex()->sourceTracks_begin()>=1) && (*tpr2->parentVertex()->sourceTracks_begin())->pdgId()==22) ) {
1553 
1554  // if ( fabs(tpr1->vx() - tpr2->vx()) < 0.1 && fabs(tpr1->vy() - tpr2->vy()) < 0.1 && fabs(tpr1->vz() - tpr2->vz()) < 0.1) {
1555  //if (((*tpr1->parentVertex()->sourceTracks_begin())->pdgId()==22) || ((*tpr2->parentVertex()->sourceTracks_begin())->pdgId()==22)) {
1556 // mcConvR_ = sqrt(tpr1->parentVertex()->position().Perp2());
1557 // mcConvZ_ = tpr1->parentVertex()->position().z();
1558 // mcConvX_ = tpr1->parentVertex()->position().x();
1559 // mcConvY_ = tpr1->parentVertex()->position().y();
1560 // mcConvEta_ = tpr1->parentVertex()->position().eta();
1561 // mcConvPhi_ = tpr1->parentVertex()->position().phi();
1562 // mcConvPt_ = sqrt((*tpr1->parentVertex()->sourceTracks_begin())->momentum().Perp2());
1563  //std::cout << " Reco to Sim mcconvpt " << mcConvPt_ << std::endl;
1564  //cout << "associated track1 to " << tpr1->pdgId() << " with p=" << tpr1->p4() << " with pT=" << tpr1->pt() << endl;
1565  //cout << "associated track2 to " << tpr2->pdgId() << " with p=" << tpr2->p4() << " with pT=" << tpr2->pt() << endl;
1566  associated = true;
1567  break;
1568  //}
1569  //}
1570  }
1571  }
1572  }
1573  } catch (Exception event) {
1574  //cout << "do not continue: " << event.what() << endl;
1575  //continue;
1576  }
1577 
1578  }
1579 
1580  }
1581  }
1582 
1583  if ( associated ) match=1;
1584  else
1585  match=2;
1586 
1587  h_match_->Fill(float(match));
1589  if ( match == 1) nRecConvAss_++;
1590  h_convEta_[match][0]->Fill( refittedMom.eta() );
1591  h_convEta_[match][1]->Fill( refittedMom.eta() );
1592  if (matchConvSC) h_convEtaMatchSC_[match][0]->Fill( refittedMom.eta() );
1593  h_convPhi_[match][0]->Fill( refittedMom.phi() );
1594  h_convR_[match][0]->Fill( sqrt(aConv.conversionVertex().position().perp2()) );
1595  h_convZ_[match][0]->Fill( aConv.conversionVertex().position().z() );
1596  h_convPt_[match][0]->Fill( sqrt(refittedMom.perp2()) );
1597  h_invMass_[match][0] ->Fill( invM);
1598  h_vtxChi2Prob_[match][0] ->Fill (chi2Prob);
1599  h_DPhiTracksAtVtx_[match][0]->Fill( dPhiTracksAtVtx);
1600  h_DCotTracks_[match][0] ->Fill ( aConv.pairCotThetaSeparation() );
1602  h_lxybs_[match][0] ->Fill (lxy);
1603  h_maxNHitsBeforeVtx_[match][0] ->Fill (maxNHitsBeforeVtx);
1604  h_leadNHitsBeforeVtx_[match][0] ->Fill (leadNHitsBeforeVtx);
1605  h_trailNHitsBeforeVtx_[match][0] ->Fill (trailNHitsBeforeVtx);
1606  h_sumNHitsBeforeVtx_[match][0] ->Fill (sumNHitsBeforeVtx);
1607  h_deltaExpectedHitsInner_[match][0] ->Fill (deltaExpectedHitsInner);
1608  h_leadExpectedHitsInner_[match][0] ->Fill (leadExpectedHitsInner);
1609  h_maxDlClosestHitToVtx_[match][0] ->Fill (maxDlClosestHitToVtx);
1610  h_maxDlClosestHitToVtxSig_[match][0] ->Fill (maxDlClosestHitToVtxSig);
1611  h_nSharedHits_[match][0] ->Fill (aConv.nSharedHits());
1612  if ( matchConvSC ) {
1613  //h_EoverPTracks_[match][0] ->Fill (aConv.EoverPrefittedTracks());
1614  h_EoverPTracks_[match][0] ->Fill (iMatchingSC->superCluster()->energy()/sqrt(refittedMom.mag2()));
1615  h_convSCdPhi_[match][0]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1616  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1617  h_convSCdEta_[match][0]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1618 
1619  }
1620  if ( match==1) {
1621  h2_photonPtRecVsPtSim_->Fill ( mcConvPt_, sqrt(refittedMom.perp2()) );
1622  h_convPtRes_[0]->Fill ( sqrt(refittedMom.perp2())/mcConvPt_);
1623  }
1624 
1625  if ( phoIsInBarrel ) {
1626  h_invMass_[match][1] ->Fill(invM);
1627  h_vtxChi2Prob_[match][1] ->Fill (chi2Prob);
1628  h_DPhiTracksAtVtx_[match][1]->Fill( dPhiTracksAtVtx);
1629  h_DCotTracks_[match][1] ->Fill ( aConv.pairCotThetaSeparation() );
1631  h_lxybs_[match][1] ->Fill (lxy);
1632  h_maxNHitsBeforeVtx_[match][1] ->Fill (maxNHitsBeforeVtx);
1633  h_leadNHitsBeforeVtx_[match][1] ->Fill (leadNHitsBeforeVtx);
1634  h_trailNHitsBeforeVtx_[match][1] ->Fill (trailNHitsBeforeVtx);
1635  h_sumNHitsBeforeVtx_[match][1] ->Fill (sumNHitsBeforeVtx);
1636  h_deltaExpectedHitsInner_[match][1] ->Fill (deltaExpectedHitsInner);
1637  h_leadExpectedHitsInner_[match][1] ->Fill (leadExpectedHitsInner);
1638  h_maxDlClosestHitToVtx_[match][1] ->Fill (maxDlClosestHitToVtx);
1639  h_maxDlClosestHitToVtxSig_[match][1] ->Fill (maxDlClosestHitToVtxSig);
1640  h_nSharedHits_[match][1] ->Fill (aConv.nSharedHits());
1641  if ( matchConvSC ) {
1642  // h_EoverPTracks_[match][1] ->Fill (aConv.EoverPrefittedTracks());
1643  h_EoverPTracks_[match][1] ->Fill (iMatchingSC->superCluster()->energy()/sqrt(refittedMom.mag2()));
1644  h_convSCdPhi_[match][1]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1645  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1646  h_convSCdEta_[match][1]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1647 
1648  }
1649  if ( match==1) h_convPtRes_[1]->Fill ( sqrt(refittedMom.perp2())/mcConvPt_);
1650  }
1651 
1652 
1653  if ( phoIsInEndcap ) {
1654  h_invMass_[match][2] ->Fill(invM);
1655  h_vtxChi2Prob_[match][2] ->Fill (chi2Prob);
1656  h_DPhiTracksAtVtx_[match][2]->Fill( dPhiTracksAtVtx);
1657  h_DCotTracks_[match][2] ->Fill ( aConv.pairCotThetaSeparation() );
1659  h_lxybs_[match][2] ->Fill (lxy);
1660  h_maxNHitsBeforeVtx_[match][2] ->Fill (maxNHitsBeforeVtx);
1661  h_leadNHitsBeforeVtx_[match][2] ->Fill (leadNHitsBeforeVtx);
1662  h_trailNHitsBeforeVtx_[match][2] ->Fill (trailNHitsBeforeVtx);
1663  h_sumNHitsBeforeVtx_[match][2] ->Fill (sumNHitsBeforeVtx);
1664  h_deltaExpectedHitsInner_[match][2] ->Fill (deltaExpectedHitsInner);
1665  h_leadExpectedHitsInner_[match][2] ->Fill (leadExpectedHitsInner);
1666  h_maxDlClosestHitToVtx_[match][2] ->Fill (maxDlClosestHitToVtx);
1667  h_maxDlClosestHitToVtxSig_[match][2] ->Fill (maxDlClosestHitToVtxSig);
1668  h_nSharedHits_[match][2] ->Fill (aConv.nSharedHits());
1669  if ( matchConvSC ) {
1670  // h_EoverPTracks_[match][2] ->Fill (aConv.EoverPrefittedTracks());
1671  h_EoverPTracks_[match][2] ->Fill (iMatchingSC->superCluster()->energy()/sqrt(refittedMom.mag2()));
1672  h_convSCdPhi_[match][2]->Fill( iMatchingSC->superCluster()->position().phi() - refittedMom.phi() );
1673  double ConvEta = etaTransformation(aConv.refittedPairMomentum().eta(),aConv.zOfPrimaryVertexFromTracks());
1674  h_convSCdEta_[match][2]->Fill( iMatchingSC->superCluster()->position().eta() - ConvEta );
1675  }
1676  if ( match==1) h_convPtRes_[2]->Fill ( sqrt(refittedMom.perp2())/mcConvPt_);
1677  }
1678 
1679 
1680  if ( match == 1 ) {
1681  h_convVtxdX_ ->Fill ( aConv.conversionVertex().position().x() - mcConvX_);
1682  h_convVtxdY_ ->Fill ( aConv.conversionVertex().position().y() - mcConvY_);
1683  h_convVtxdZ_ ->Fill ( aConv.conversionVertex().position().z() - mcConvZ_);
1684  h_convVtxdR_ ->Fill ( sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
1685  h_convVtxdPhi_ ->Fill ( aConv.conversionVertex().position().phi() - mcConvPhi_);
1686  h_convVtxdEta_ ->Fill ( aConv.conversionVertex().position().eta() - mcConvEta_);
1687  h2_convVtxdRVsR_ ->Fill (mcConvR_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_ );
1688  h2_convVtxdRVsEta_ ->Fill (mcEta_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_ );
1689  p_convVtxdRVsR_ ->Fill (mcConvR_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_ );
1690  p_convVtxdRVsEta_ ->Fill (mcEta_, sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_ );
1693  p_convVtxdZVsZ_ ->Fill (mcConvZ_, aConv.conversionVertex().position().z() - mcConvZ_ );
1694  p_convVtxdZVsR_ ->Fill (mcConvR_, aConv.conversionVertex().position().z() - mcConvZ_ );
1695 
1696  float dR=sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_;
1697  float dZ=aConv.conversionVertex().position().z() - mcConvZ_;
1698  p2_convVtxdRVsRZ_ ->Fill (mcConvZ_,mcConvR_, dR );
1699  p2_convVtxdZVsRZ_ ->Fill (mcConvZ_,mcConvR_, dZ );
1700 
1701 
1702 
1703 
1704  h2_convVtxRrecVsTrue_ -> Fill (mcConvR_, sqrt(aConv.conversionVertex().position().perp2()) );
1705 
1706 
1708  h_dzPVFromTracks_[match]->Fill ( aConv.zOfPrimaryVertexFromTracks() - simPV_Z );
1709  h2_dzPVVsR_ ->Fill(mcConvR_, aConv.zOfPrimaryVertexFromTracks() - simPV_Z );
1710  p_dzPVVsR_ ->Fill(mcConvR_, aConv.zOfPrimaryVertexFromTracks() - simPV_Z );
1711 
1712  if ( phoIsInBarrel ) {
1716  h_convVtxdR_barrel_ ->Fill ( sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
1717 
1718  }
1719  if ( phoIsInEndcap ) {
1723  h_convVtxdR_endcap_ ->Fill ( sqrt(aConv.conversionVertex().position().perp2()) - mcConvR_);
1724 
1725  }
1726 
1727 
1728  }
1729 
1731  for (unsigned int i=0; i<tracks.size(); i++) {
1732  //std::cout << " Loop over tracks pt " << tracks[i]->pt() << std::endl;
1733  RefToBase<reco::Track> tfrb(aConv.tracks()[i] );
1734  itAss= myAss.find( tfrb.get() );
1735 
1736  nHitsVsEta_[match] ->Fill (mcEta_, float(tracks[i]->numberOfValidHits()) );
1737  nHitsVsR_[match] ->Fill (mcConvR_, float(tracks[i]->numberOfValidHits()) );
1738  p_nHitsVsEta_[match] ->Fill (mcEta_, float(tracks[i]->numberOfValidHits()) -0.0001);
1739  p_nHitsVsR_[match] ->Fill (mcConvR_, float(tracks[i]->numberOfValidHits()) -0.0001);
1740  h_tkChi2_[match] ->Fill (tracks[i]->normalizedChi2() );
1741  h_tkChi2Large_[match] ->Fill (tracks[i]->normalizedChi2() );
1742  h2_Chi2VsEta_[match] ->Fill( mcEta_, tracks[i]->normalizedChi2() );
1743  h2_Chi2VsR_[match] ->Fill( mcConvR_, tracks[i]->normalizedChi2() );
1744  p_Chi2VsEta_[match] ->Fill( mcEta_, tracks[i]->normalizedChi2() );
1745  p_Chi2VsR_[match] ->Fill( mcConvR_, tracks[i]->normalizedChi2() );
1746  double d0;
1747  if (valid_pvtx){
1748  d0 = - tracks[i]->dxy(the_pvtx.position());
1749  } else {
1750  d0 = tracks[i]->d0();
1751  }
1752  h_TkD0_[match]->Fill (d0* tracks[i]->charge() );
1753  h_nHitsBeforeVtx_[match]->Fill ( aConv.nHitsBeforeVtx().size()>1 ? aConv.nHitsBeforeVtx().at(i) : 0 );
1754  h_dlClosestHitToVtx_[match]->Fill ( aConv.dlClosestHitToVtx().size()>1 ? aConv.dlClosestHitToVtx().at(i).value() : 0 );
1755  h_dlClosestHitToVtxSig_[match]->Fill ( aConv.dlClosestHitToVtx().size()>1 ? aConv.dlClosestHitToVtx().at(i).value()/aConv.dlClosestHitToVtx().at(i).error() : 0 );
1756 
1757 
1758  if ( itAss == myAss.end() ) continue;
1759  reco::Track refTrack= aConv.conversionVertex().refittedTracks()[i];
1760 
1761  float simPt = sqrt( ((*itAss).second)->momentum().perp2() );
1762  float recPt = refTrack.pt();
1763  float ptres= recPt - simPt ;
1764  //float pterror = aConv.tracks()[i]->ptError();
1765  float pterror = aConv.conversionVertex().refittedTracks()[i].ptError();
1766  h2_PtRecVsPtSim_[0]->Fill ( simPt, recPt);
1767  h_TkPtPull_[0] ->Fill(ptres/pterror);
1768  h2_TkPtPull_[0] ->Fill(mcEta_, ptres/pterror);
1769 
1770  if ( phoIsInBarrel ) {
1771  h_TkPtPull_[1] ->Fill(ptres/pterror);
1772  h2_PtRecVsPtSim_[1]->Fill ( simPt, recPt);
1773  }
1774  if ( phoIsInEndcap ) {
1775  h_TkPtPull_[2] ->Fill(ptres/pterror);
1776  h2_PtRecVsPtSim_[2]->Fill ( simPt, recPt);
1777  }
1778  } // end loop over track
1779 
1780 
1781 
1782  } // loop over reco conversions
1783 
1784 
1785  h_nConv_[0][0]->Fill (float(nRecConv_));
1786  h_nConv_[1][0]->Fill (float(nRecConvAss_));
1787 
1788 
1789 
1790 }
MonitorElement * h2_DPhiTracksAtVtxVsR_
MonitorElement * h2_dzPVVsR_
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
Definition: Conversion.h:97
MonitorElement * h_maxDlClosestHitToVtx_[3][3]
MonitorElement * h_convPt_[3][3]
double lxy(const math::XYZPoint &myBeamSpot, const Conversion &conv)
MonitorElement * p_convVtxdYVsY_
value_type const * get() const
Definition: RefToBase.h:212
T getParameter(std::string const &) const
MonitorElement * h2_DCotTracksVsR_
int i
Definition: DBlmapReader.cc:9
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]
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
MonitorElement * h_DCotTracks_[3][3]
std::vector< TrackingParticle > TrackingParticleCollection
const_iterator end() const
last iterator over the map (read only)
static HepMC::IO_HEPEVT conv
MonitorElement * nHitsVsEta_[3]
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
MonitorElement * h_lxybs_[3][3]
edm::RefVector< TrackingParticleCollection > theConvTP_
MonitorElement * h_trailNHitsBeforeVtx_[3][3]
bool quality(ConversionQuality q) const
Definition: Conversion.h:181
double y() const
y coordinate
Definition: Vertex.h:110
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:60
MonitorElement * h_convVtxYvsX_zoom_[2]
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionPr_Token_
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_tkChi2_[3]
std::vector< GenJet > GenJetCollection
collection of GenJet objects
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:163
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:145
double distOfMinimumApproach() const
Definition: Conversion.h:125
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:209
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:266
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:249
const std::vector< Track > & refittedTracks() const
Returns the container of refitted tracks.
Definition: Vertex.h:149
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:190
const Point & position() const
position
Definition: Vertex.h:106
tuple vertexCollection
math::XYZVectorF refittedPairMomentum() const
Conversion tracks momentum from the tracks refitted with vertex constraint.
Definition: Conversion.cc:248
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:244
MonitorElement * h_convSCdEta_[3][3]
MonitorElement * h_sumNHitsBeforeVtx_[3][3]
void Fill(long long x)
MonitorElement * h_dzPVFromTracks_[2]
TrackAlgorithm algo() const
Definition: TrackBase.h:423
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_
edm::EDGetTokenT< edm::HepMCProduct > hepMC_Token_
MonitorElement * h_convVtxYvsX_
MonitorElement * p_convVtxdZVsR_
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_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * h_EoverPTracks_[3][3]
edm::ESHandle< MagneticField > theMF_
T sqrt(T t)
Definition: SSEVec.h:48
PhotonMCTruthFinder * thePhotonMCTruthFinder_
double pt() const
track transverse momentum
Definition: TrackBase.h:669
MonitorElement * h_leadNHitsBeforeVtx_[3][3]
edm::EDGetTokenT< TrackingParticleCollection > tpSelForEff_Token_
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:95
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:17
MonitorElement * h_convEta_[3][3]
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
edm::EDGetTokenT< TrackingParticleCollection > tpSelForFake_Token_
double p2[4]
Definition: TauolaWrapper.h:90
double ndof() const
Definition: Vertex.h:102
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_convEta2_[3][3]
MonitorElement * h_nHitsBeforeVtx_[3]
MonitorElement * p2_convVtxdRVsRZ_
MonitorElement * p_Chi2VsEta_[3]
double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:12
double x() const
x coordinate
Definition: Vertex.h:108
MonitorElement * h_convVtxdZ_
MonitorElement * h_convVtxRvsZ_[3]
uint8_t nSharedHits() const
number of shared hits btw the two track
Definition: Conversion.h:165
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * h_convPhi_[3][3]
size_type size() const
map size
void clear()
Clear the vector.
Definition: RefVector.h:133
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:384
double q1[4]
Definition: TauolaWrapper.h:87
tuple tracks
Definition: testEve_cfg.py:39
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
MonitorElement * h_convVtxdZ_barrel_
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
const T & get() const
Definition: EventSetup.h:55
MonitorElement * h2_convVtxRrecVsTrue_
MonitorElement * h_AllSimConv_[5]
Denominator for efficiencies.
MonitorElement * h_convRplot_
MonitorElement * p_nHitsVsR_[3]
MonitorElement * p_dzPVVsR_
MonitorElement * h2_Chi2VsR_[3]
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:60
MonitorElement * h_dlClosestHitToVtxSig_[3]
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]
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:161
MonitorElement * h_convVtxdZ_endcap_
MonitorElement * h2_convVtxdRVsR_
MonitorElement * h_DPhiTracksAtVtx_[3][3]
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
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_
edm::EDGetTokenT< reco::GenJetCollection > genjets_Token_
MonitorElement * h_nSharedHits_[3][3]
double dPhiTracksAtVtx() const
Definition: Conversion.cc:313
std::vector< edm::RefToBase< reco::Track > > const & tracks() const
vector of track to base references
Definition: Conversion.cc:176
MonitorElement * h_maxNHitsBeforeVtx_[3][3]
int numberOfHits(HitCategory category) const
Definition: HitPattern.h:718
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 163 of file TkConvValidator.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookProfile(), DQMStore::IBooker::bookProfile2D(), dbe_, HLT_25ns14e33_v1_cff::etaMax, HLT_25ns14e33_v1_cff::etaMin, HLT_25ns14e33_v1_cff::etMin, cppFunctionSkipper::operator, DQMStore::IBooker::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.

163  {
164 
165  nEvt_=0;
166  nEntry_=0;
167  nRecConv_=0;
168  nRecConvAss_=0;
170 
171  nInvalidPCA_=0;
172 
173  dbe_ = 0;
175 
176 
177  double etMin = parameters_.getParameter<double>("etMin");
178  double etMax = parameters_.getParameter<double>("etMax");
179  int etBin = parameters_.getParameter<int>("etBin");
180 
181 
182  double resMin = parameters_.getParameter<double>("resMin");
183  double resMax = parameters_.getParameter<double>("resMax");
184  int resBin = parameters_.getParameter<int>("resBin");
185 
186  double etaMin = parameters_.getParameter<double>("etaMin");
187  double etaMax = parameters_.getParameter<double>("etaMax");
188  int etaBin = parameters_.getParameter<int>("etaBin");
189  int etaBin2 = parameters_.getParameter<int>("etaBin2");
190 
191 
192  double phiMin = parameters_.getParameter<double>("phiMin");
193  double phiMax = parameters_.getParameter<double>("phiMax");
194  int phiBin = parameters_.getParameter<int>("phiBin");
195 
196 
197  double rMin = parameters_.getParameter<double>("rMin");
198  double rMax = parameters_.getParameter<double>("rMax");
199  int rBin = parameters_.getParameter<int>("rBin");
200 
201  double zMin = parameters_.getParameter<double>("zMin");
202  double zMax = parameters_.getParameter<double>("zMax");
203  int zBin = parameters_.getParameter<int>("zBin");
204 
205  double dPhiTracksMin = parameters_.getParameter<double>("dPhiTracksMin");
206  double dPhiTracksMax = parameters_.getParameter<double>("dPhiTracksMax");
207  int dPhiTracksBin = parameters_.getParameter<int>("dPhiTracksBin");
208 
209  double eoverpMin = parameters_.getParameter<double>("eoverpMin");
210  double eoverpMax = parameters_.getParameter<double>("eoverpMax");
211  int eoverpBin = parameters_.getParameter<int>("eoverpBin");
212 
213 
214  // double dEtaTracksMin = parameters_.getParameter<double>("dEtaTracksMin"); // unused
215  // double dEtaTracksMax = parameters_.getParameter<double>("dEtaTracksMax"); // unused
216  // int dEtaTracksBin = parameters_.getParameter<int>("dEtaTracksBin"); // unused
217 
218  double dCotTracksMin = parameters_.getParameter<double>("dCotTracksMin");
219  double dCotTracksMax = parameters_.getParameter<double>("dCotTracksMax");
220  int dCotTracksBin = parameters_.getParameter<int>("dCotTracksBin");
221 
222 
223  double chi2Min = parameters_.getParameter<double>("chi2Min");
224  double chi2Max = parameters_.getParameter<double>("chi2Max");
225 
226 
227  double rMinForXray = parameters_.getParameter<double>("rMinForXray");
228  double rMaxForXray = parameters_.getParameter<double>("rMaxForXray");
229  int rBinForXray = parameters_.getParameter<int>("rBinForXray");
230  double zMinForXray = parameters_.getParameter<double>("zMinForXray");
231  double zMaxForXray = parameters_.getParameter<double>("zMaxForXray");
232  int zBinForXray = parameters_.getParameter<int>("zBinForXray");
233  int zBin2ForXray = parameters_.getParameter<int>("zBin2ForXray");
234 
235  minPhoPtForEffic = parameters_.getParameter<double>("minPhoPtForEffic");
236  maxPhoEtaForEffic = parameters_.getParameter<double>("maxPhoEtaForEffic");
237  maxPhoZForEffic = parameters_.getParameter<double>("maxPhoZForEffic");
238  maxPhoRForEffic = parameters_.getParameter<double>("maxPhoRForEffic");
239  minPhoPtForPurity = parameters_.getParameter<double>("minPhoPtForPurity");
240  maxPhoEtaForPurity = parameters_.getParameter<double>("maxPhoEtaForPurity");
241  maxPhoZForPurity = parameters_.getParameter<double>("maxPhoZForPurity");
242  maxPhoRForPurity = parameters_.getParameter<double>("maxPhoRForPurity");
243 
244 
245  if (dbe_) {
246 
248  // SC from reco photons
249 
250  //TString simfolder = TString(
251  std::string simpath = dqmpath_ + "SimulationInfo";
252  iBooker.setCurrentFolder(simpath);
253  //
254  // simulation information about conversions
256  std::string histname = "nOfSimConversions";
257  h_nSimConv_[0] = iBooker.book1D(histname,"# of Sim conversions per event ",20,-0.5,19.5);
259  histname = "h_AllSimConvEta";
260  h_AllSimConv_[0] = iBooker.book1D(histname," All conversions: simulated #eta",etaBin2,etaMin,etaMax);
261  histname = "h_AllSimConvPhi";
262  h_AllSimConv_[1] = iBooker.book1D(histname," All conversions: simulated #phi",phiBin,phiMin,phiMax);
263  histname = "h_AllSimConvR";
264  h_AllSimConv_[2] = iBooker.book1D(histname," All conversions: simulated R",rBin,rMin,rMax);
265  histname = "h_AllSimConvZ";
266  h_AllSimConv_[3] = iBooker.book1D(histname," All conversions: simulated Z",zBin,zMin,zMax);
267  histname = "h_AllSimConvEt";
268  h_AllSimConv_[4] = iBooker.book1D(histname," All conversions: simulated Et",etBin,etMin,etMax);
269  //
270  histname = "nOfVisSimConversions";
271  h_nSimConv_[1] = iBooker.book1D(histname,"# of Sim conversions per event ",20,-0.5,19.5);
272  histname = "h_VisSimConvEta";
273  h_VisSimConv_[0] = iBooker.book1D(histname," All vis conversions: simulated #eta",etaBin2,etaMin, etaMax);
274  histname = "h_VisSimConvPhi";
275  h_VisSimConv_[1] = iBooker.book1D(histname," All vis conversions: simulated #phi",phiBin,phiMin, phiMax);
276  histname = "h_VisSimConvR";
277  h_VisSimConv_[2] = iBooker.book1D(histname," All vis conversions: simulated R",rBin,rMin,rMax);
278  histname = "h_VisSimConvZ";
279  h_VisSimConv_[3] = iBooker.book1D(histname," All vis conversions: simulated Z",zBin,zMin, zMax);
280  histname = "h_VisSimConvEt";
281  h_VisSimConv_[4] = iBooker.book1D(histname," All vis conversions: simulated Et",etBin,etMin, etMax);
282 
283  //
284  histname = "h_SimConvTwoMTracksEta";
285  h_SimConvTwoMTracks_[0] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated #eta",etaBin2,etaMin, etaMax);
286  histname = "h_SimConvTwoMTracksPhi";
287  h_SimConvTwoMTracks_[1] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated #phi",phiBin,phiMin, phiMax);
288  histname = "h_SimConvTwoMTracksR";
289  h_SimConvTwoMTracks_[2] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated R",rBin,rMin, rMax);
290  histname = "h_SimConvTwoMTracksZ";
291  h_SimConvTwoMTracks_[3] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated Z",zBin,zMin, zMax);
292  histname = "h_SimConvTwoMTracksEt";
293  h_SimConvTwoMTracks_[4] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated Et",etBin,etMin, etMax);
294  //
295  histname = "h_SimConvTwoTracksEta";
296  h_SimConvTwoTracks_[0] = iBooker.book1D(histname," All vis conversions with 2 reco tracks: simulated #eta",etaBin2,etaMin, etaMax);
297  histname = "h_SimConvTwoTracksPhi";
298  h_SimConvTwoTracks_[1] = iBooker.book1D(histname," All vis conversions with 2 reco tracks: simulated #phi",phiBin,phiMin, phiMax);
299  histname = "h_SimConvTwoTracksR";
300  h_SimConvTwoTracks_[2] = iBooker.book1D(histname," All vis conversions with 2 reco tracks: simulated R",rBin,rMin, rMax);
301  histname = "h_SimConvTwoTracksZ";
302  h_SimConvTwoTracks_[3] = iBooker.book1D(histname," All vis conversions with 2 reco tracks: simulated Z",zBin,zMin, zMax);
303  histname = "h_SimConvTwoTracksEt";
304  h_SimConvTwoTracks_[4] = iBooker.book1D(histname," All vis conversions with 2 reco tracks: simulated Et",etBin,etMin, etMax);
305  //
306  histname = "h_SimConvTwoMTracksEtaAndVtxPGT0";
307  h_SimConvTwoMTracksAndVtxPGT0_[0] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",etaBin2,etaMin, etaMax);
308  histname = "h_SimConvTwoMTracksPhiAndVtxPGT0";
309  h_SimConvTwoMTracksAndVtxPGT0_[1] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",phiBin,phiMin, phiMax);
310  histname = "h_SimConvTwoMTracksRAndVtxPGT0";
311  h_SimConvTwoMTracksAndVtxPGT0_[2] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated R",rBin,rMin, rMax);
312  histname = "h_SimConvTwoMTracksZAndVtxPGT0";
313  h_SimConvTwoMTracksAndVtxPGT0_[3] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated Z",zBin,zMin, zMax);
314  histname = "h_SimConvTwoMTracksEtAndVtxPGT0";
315  h_SimConvTwoMTracksAndVtxPGT0_[4] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated Et",etBin,etMin, etMax);
316 
317  //
318  histname = "h_SimConvTwoMTracksEtaAndVtxPGT0005";
319  h_SimConvTwoMTracksAndVtxPGT0005_[0] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated #eta",etaBin2,etaMin, etaMax);
320  histname = "h_SimConvTwoMTracksPhiAndVtxPGT0005";
321  h_SimConvTwoMTracksAndVtxPGT0005_[1] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated #phi",phiBin,phiMin, phiMax);
322  histname = "h_SimConvTwoMTracksRAndVtxPGT0005";
323  h_SimConvTwoMTracksAndVtxPGT0005_[2] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated R",rBin,rMin, rMax);
324  histname = "h_SimConvTwoMTracksZAndVtxPGT0005";
325  h_SimConvTwoMTracksAndVtxPGT0005_[3] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated Z",zBin,zMin, zMax);
326  histname = "h_SimConvTwoMTracksEtAndVtxPGT0005";
327  h_SimConvTwoMTracksAndVtxPGT0005_[4] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks + vertex: simulated Et",etBin,etMin, etMax);
328 
329  histname = "h_SimRecConvTwoMTracksEta";
330  h_SimRecConvTwoMTracks_[0] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated #eta",etaBin2,etaMin, etaMax);
331  histname = "h_SimRecConvTwoMTracksPhi";
332  h_SimRecConvTwoMTracks_[1] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated #phi",phiBin,phiMin, phiMax);
333  histname = "h_SimRecConvTwoMTracksR";
334  h_SimRecConvTwoMTracks_[2] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated R",rBin,rMin, rMax);
335  histname = "h_SimRecConvTwoMTracksZ";
336  h_SimRecConvTwoMTracks_[3] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated Z",zBin,zMin, zMax);
337  histname = "h_SimRecConvTwoMTracksEt";
338  h_SimRecConvTwoMTracks_[4] = iBooker.book1D(histname," All vis conversions with 2 reco-matching tracks: simulated Et",etBin,etMin, etMax);
339  //
340 
341 
342  h_SimConvEtaPix_[0] = iBooker.book1D("simConvEtaPix"," sim converted Photon Eta: Pix ",etaBin,etaMin, etaMax) ;
343  h_simTkPt_ = iBooker.book1D("simTkPt","Sim conversion tracks pt ",etBin*3,0.,etMax);
344  h_simTkEta_ = iBooker.book1D("simTkEta","Sim conversion tracks eta ",etaBin,etaMin,etaMax);
345 
346  h_simConvVtxRvsZ_[0] = iBooker.book2D("simConvVtxRvsZAll"," Photon Sim conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
347  h_simConvVtxRvsZ_[1] = iBooker.book2D("simConvVtxRvsZBarrel"," Photon Sim conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
348  h_simConvVtxRvsZ_[2] = iBooker.book2D("simConvVtxRvsZEndcap"," Photon Sim conversion vtx position",zBin2ForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
349  h_simConvVtxRvsZ_[3] = iBooker.book2D("simConvVtxRvsZBarrel2"," Photon Sim conversion vtx position when reco R<4cm",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
350  h_simConvVtxYvsX_ = iBooker.book2D("simConvVtxYvsXTrkBarrel"," Photon Sim conversion vtx position, (x,y) eta<1 ",100, -80., 80., 100, -80., 80.);
351 
352  std::string convpath = dqmpath_ + "ConversionInfo";
353  iBooker.setCurrentFolder(convpath);
354 
355  histname="nConv";
356  h_nConv_[0][0] = iBooker.book1D(histname+"All","Number Of Conversions per isolated candidates per events: All Ecal ",10,-0.5, 9.5);
357  h_nConv_[0][1] = iBooker.book1D(histname+"Barrel","Number Of Conversions per isolated candidates per events: Ecal Barrel ",10,-0.5, 9.5);
358  h_nConv_[0][2] = iBooker.book1D(histname+"Endcap","Number Of Conversions per isolated candidates per events: Ecal Endcap ",10,-0.5, 9.5);
359  h_nConv_[1][0] = iBooker.book1D(histname+"All_Ass","Number Of associated Conversions per isolated candidates per events: All Ecal ",10,-0.5, 9.5);
360 
361  h_convEta_[0][0] = iBooker.book1D("convEta"," converted Photon Eta ",etaBin,etaMin, etaMax) ;
362  h_convEtaMatchSC_[0][0] = iBooker.book1D("convEtaMatchSC"," converted Photon Eta when SC is matched ",etaBin,etaMin, etaMax) ;
363  h_convEta2_[0][0] = iBooker.book1D("convEta2"," converted Photon Eta ",etaBin2,etaMin, etaMax) ;
364  h_convPhi_[0][0] = iBooker.book1D("convPhi"," converted Photon Phi ",phiBin,phiMin,phiMax) ;
365  h_convR_[0][0] = iBooker.book1D("convR"," converted photon R",rBin,rMin, rMax);
366  h_convZ_[0][0] = iBooker.book1D("convZ"," converted photon Z",zBin,zMin, zMax);
367  h_convPt_[0][0] = iBooker.book1D("convPt"," conversions Transverse Energy: all eta ", etBin,etMin, etMax);
368 
369  h_convEta_[1][0] = iBooker.book1D("convEtaAss2"," Matched converted Photon Eta ",etaBin2,etaMin, etaMax) ;
370  h_convEta_[1][1] = iBooker.book1D("convEtaAss"," Matched converted Photon Eta ",etaBin,etaMin, etaMax) ;
371  h_convEtaMatchSC_[1][0] = iBooker.book1D("convEtaMatchSCAss"," converted Photon Eta when SC is matched ",etaBin,etaMin, etaMax) ;
372  h_convPhi_[1][0] = iBooker.book1D("convPhiAss"," Matched converted Photon Phi ",phiBin,phiMin,phiMax) ;
373  h_convR_[1][0] = iBooker.book1D("convRAss"," Matched converted photon R",rBin,rMin, rMax);
374  h_convZ_[1][0] = iBooker.book1D("convZAss"," Matched converted photon Z",zBin,zMin, zMax);
375  h_convPt_[1][0] = iBooker.book1D("convPtAss","Matched conversions Transverse Energy: all eta ", etBin,etMin, etMax);
376 
377  h_convEta_[2][0] = iBooker.book1D("convEtaFake2"," Fake converted Photon Eta ",etaBin2,etaMin, etaMax) ;
378  h_convEta_[2][1] = iBooker.book1D("convEtaFake"," Fake converted Photon Eta ",etaBin,etaMin, etaMax) ;
379  h_convEtaMatchSC_[2][0] = iBooker.book1D("convEtaMatchSCFake"," converted Photon Eta when SC is matched ",etaBin,etaMin, etaMax) ;
380  h_convPhi_[2][0] = iBooker.book1D("convPhiFake"," Fake converted Photon Phi ",phiBin,phiMin,phiMax) ;
381  h_convR_[2][0] = iBooker.book1D("convRFake"," Fake converted photon R",rBin,rMin, rMax);
382  h_convZ_[2][0] = iBooker.book1D("convZFake"," Fake converted photon Z",zBin,zMin, zMax);
383  h_convPt_[2][0] = iBooker.book1D("convPtFake","Fake conversions Transverse Energy: all eta ", etBin,etMin, etMax);
384 
385  h_convRplot_ = iBooker.book1D("convRplot"," converted photon R",600, 0.,120.);
386  h_convZplot_ = iBooker.book1D("convZplot"," converted photon Z",320,-160.,160.);
387 
388  histname = "convSCdPhi";
389  h_convSCdPhi_[0][0] = iBooker.book1D(histname+"All","dPhi between SC and conversion",100, -0.1,0.1);
390  h_convSCdPhi_[0][1] = iBooker.book1D(histname+"Barrel"," dPhi between SC and conversion: Barrel",100, -0.1,0.1);
391  h_convSCdPhi_[0][2] = iBooker.book1D(histname+"Endcap"," dPhi between SC and conversion: Endcap",100, -0.1,0.1);
392  h_convSCdPhi_[1][0] = iBooker.book1D(histname+"All_Ass","dPhi between SC and conversion",100, -0.1,0.1);
393  h_convSCdPhi_[1][1] = iBooker.book1D(histname+"Barrel_Ass"," dPhi between SC and conversion: Barrel",100, -0.1,0.1);
394  h_convSCdPhi_[1][2] = iBooker.book1D(histname+"Endcap_Ass"," dPhi between SC and conversion: Endcap",100, -0.1,0.1);
395  h_convSCdPhi_[2][0] = iBooker.book1D(histname+"All_Fakes","dPhi between SC and conversion",100, -0.1,0.1);
396  h_convSCdPhi_[2][1] = iBooker.book1D(histname+"Barrel_Fakes"," dPhi between SC and conversion: Barrel",100, -0.1,0.1);
397  h_convSCdPhi_[2][2] = iBooker.book1D(histname+"Endcap_Fakes"," dPhi between SC and conversion: Endcap",100, -0.1,0.1);
398  histname = "convSCdEta";
399  h_convSCdEta_[0][0] = iBooker.book1D(histname+"All"," dEta between SC and conversion",100, -0.1,0.1);
400  h_convSCdEta_[0][1] = iBooker.book1D(histname+"Barrel"," dEta between SC and conversion: Barrel",100, -0.1,0.1);
401  h_convSCdEta_[0][2] = iBooker.book1D(histname+"Endcap"," dEta between SC and conversion: Endcap",100, -0.1,0.1);
402  h_convSCdEta_[1][0] = iBooker.book1D(histname+"All_Ass"," dEta between SC and conversion",100, -0.1,0.1);
403  h_convSCdEta_[1][1] = iBooker.book1D(histname+"Barrel_Ass"," dEta between SC and conversion: Barrel",100, -0.1,0.1);
404  h_convSCdEta_[1][2] = iBooker.book1D(histname+"Endcap_Ass"," dEta between SC and conversion: Endcap",100, -0.1,0.1);
405  h_convSCdEta_[2][0] = iBooker.book1D(histname+"All_Fakes"," dEta between SC and conversion",100, -0.1,0.1);
406  h_convSCdEta_[2][1] = iBooker.book1D(histname+"Barrel_Fakes"," dEta between SC and conversion: Barrel",100, -0.1,0.1);
407  h_convSCdEta_[2][2] = iBooker.book1D(histname+"Endcap_Fakes"," dEta between SC and conversion: Endcap",100, -0.1,0.1);
408 
409  histname = "convPtRes";
410  h_convPtRes_[0] = iBooker.book1D(histname+"All"," Conversion Pt rec/true : All ecal ", resBin,resMin, resMax);
411  h_convPtRes_[1] = iBooker.book1D(histname+"Barrel"," Conversion Pt rec/true : Barrel ",resBin,resMin, resMax);
412  h_convPtRes_[2] = iBooker.book1D(histname+"Endcap"," Conversion Pt rec/true : Endcap ",resBin,resMin, resMax);
413 
414 
415  histname="hInvMass";
416  h_invMass_[0][0]= iBooker.book1D(histname+"All_AllTracks"," Photons:Tracks from conversion: Pair invariant mass: all Ecal ",100, 0., 1.5);
417  h_invMass_[0][1]= iBooker.book1D(histname+"Barrel_AllTracks"," Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",100, 0., 1.5);
418  h_invMass_[0][2]= iBooker.book1D(histname+"Endcap_AllTracks"," Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",100, 0., 1.5);
419  //
420  h_invMass_[1][0]= iBooker.book1D(histname+"All_AssTracks"," Photons:Tracks from conversion: Pair invariant mass: all Ecal ",100, 0., 1.5);
421  h_invMass_[1][1]= iBooker.book1D(histname+"Barrel_AssTracks"," Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",100, 0., 1.5);
422  h_invMass_[1][2]= iBooker.book1D(histname+"Endcap_AssTracks"," Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",100, 0., 1.5);
423  //
424  h_invMass_[2][0]= iBooker.book1D(histname+"All_FakeTracks"," Photons:Tracks from conversion: Pair invariant mass: all Ecal ",100, 0., 1.5);
425  h_invMass_[2][1]= iBooker.book1D(histname+"Barrel_FakeTracks"," Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ",100, 0., 1.5);
426  h_invMass_[2][2]= iBooker.book1D(histname+"Endcap_FaleTracks"," Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ",100, 0., 1.5);
427 
428 
429 
430  histname="hDPhiTracksAtVtx";
431  h_DPhiTracksAtVtx_[0][0] =iBooker.book1D(histname+"All", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
432  h_DPhiTracksAtVtx_[0][1] =iBooker.book1D(histname+"Barrel", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
433  h_DPhiTracksAtVtx_[0][2] =iBooker.book1D(histname+"Endcap", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
434  h_DPhiTracksAtVtx_[1][0] =iBooker.book1D(histname+"All_Ass", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
435  h_DPhiTracksAtVtx_[1][1] =iBooker.book1D(histname+"Barrel_Ass", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
436  h_DPhiTracksAtVtx_[1][2] =iBooker.book1D(histname+"Endcap_Ass", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
437  h_DPhiTracksAtVtx_[2][0] =iBooker.book1D(histname+"All_Fakes", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
438  h_DPhiTracksAtVtx_[2][1] =iBooker.book1D(histname+"Barrel_Fakes", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
439  h_DPhiTracksAtVtx_[2][2] =iBooker.book1D(histname+"Endcap_Fakes", " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
440 
441 
442 
443  histname="hDPhiTracksAtVtxVsEta";
444  h2_DPhiTracksAtVtxVsEta_ = iBooker.book2D(histname+"All"," Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",etaBin2,etaMin, etaMax,100, -0.5, 0.5);
445  histname="pDPhiTracksAtVtxVsEta";
446  p_DPhiTracksAtVtxVsEta_ = iBooker.bookProfile(histname+"All"," Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",etaBin2,etaMin, etaMax, 100, -0.5, 0.5,"");
447 
448  histname="hDPhiTracksAtVtxVsR";
449  h2_DPhiTracksAtVtxVsR_ = iBooker.book2D(histname+"All"," Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",rBin,rMin, rMax,100, -0.5, 0.5);
450  histname="pDPhiTracksAtVtxVsR";
451  p_DPhiTracksAtVtxVsR_ = iBooker.bookProfile(histname+"All"," Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",rBin,rMin, rMax,100, -0.5, 0.5,"");
452 
453 
454  histname="hDCotTracks";
455  h_DCotTracks_[0][0]= iBooker.book1D(histname+"All"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
456  h_DCotTracks_[0][1]= iBooker.book1D(histname+"Barrel"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
457  h_DCotTracks_[0][2]= iBooker.book1D(histname+"Endcap"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
458  h_DCotTracks_[1][0]= iBooker.book1D(histname+"All_Ass"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
459  h_DCotTracks_[1][1]= iBooker.book1D(histname+"Barrel_Ass"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
460  h_DCotTracks_[1][2]= iBooker.book1D(histname+"Endcap_Ass"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
461  h_DCotTracks_[2][0]= iBooker.book1D(histname+"All_Fakes"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
462  h_DCotTracks_[2][1]= iBooker.book1D(histname+"Barrel_Fakes"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
463  h_DCotTracks_[2][2]= iBooker.book1D(histname+"Endcap_Fakes"," Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",dCotTracksBin,dCotTracksMin,dCotTracksMax);
464 
465 
466  histname="hDCotTracksVsEta";
467  h2_DCotTracksVsEta_ = iBooker.book2D(histname+"All"," Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",etaBin2,etaMin, etaMax,100, -0.2, 0.2);
468  histname="pDCotTracksVsEta";
469  p_DCotTracksVsEta_ = iBooker.bookProfile(histname+"All"," Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",etaBin2,etaMin, etaMax, 100, -0.2, 0.2,"");
470 
471  histname="hDCotTracksVsR";
472  h2_DCotTracksVsR_ = iBooker.book2D(histname+"All"," Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",rBin,rMin, rMax,100, -0.2, 0.2);
473  histname="pDCotTracksVsR";
474  p_DCotTracksVsR_ = iBooker.bookProfile(histname+"All"," Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",rBin,rMin, rMax,100, -0.2, 0.2,"");
475 
476 
477  histname="hDistMinAppTracks";
478  h_distMinAppTracks_[0][0]= iBooker.book1D(histname+"All"," Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",120, -0.5, 1.0);
479  h_distMinAppTracks_[0][1]= iBooker.book1D(histname+"Barrel"," Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",120, -0.5, 1.0);
480  h_distMinAppTracks_[0][2]= iBooker.book1D(histname+"Endcap"," Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",120, -0.5, 1.0);
481  h_distMinAppTracks_[1][0]= iBooker.book1D(histname+"All_Ass"," Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",120, -0.5, 1.0);
482  h_distMinAppTracks_[1][1]= iBooker.book1D(histname+"Barrel_Ass"," Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",120, -0.5, 1.0);
483  h_distMinAppTracks_[1][2]= iBooker.book1D(histname+"Endcap_Ass"," Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",120, -0.5, 1.0);
484  h_distMinAppTracks_[2][0]= iBooker.book1D(histname+"All_Fakes"," Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",120, -0.5, 1.0);
485  h_distMinAppTracks_[2][1]= iBooker.book1D(histname+"Barrel_Fakes"," Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",120, -0.5, 1.0);
486  h_distMinAppTracks_[2][2]= iBooker.book1D(histname+"Endcap_Fakes"," Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",120, -0.5, 1.0);
487 
488 
489  h_convVtxRvsZ_[0] = iBooker.book2D("convVtxRvsZAll"," Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
490  h_convVtxRvsZ_[1] = iBooker.book2D("convVtxRvsZBarrel"," Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
491  h_convVtxRvsZ_[2] = iBooker.book2D("convVtxRvsZEndcap"," Photon Reco conversion vtx position",zBin2ForXray, zMinForXray, zMaxForXray, rBinForXray, rMinForXray, rMaxForXray);
492  h_convVtxYvsX_ = iBooker.book2D("convVtxYvsXTrkBarrel"," Photon Reco conversion vtx position, (x,y) eta<1 ", 1000, -60., 60., 1000, -60., 60.);
494  h_convVtxRvsZ_zoom_[0] = iBooker.book2D("convVtxRvsZBarrelZoom1"," Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, -10., 40.);
495  h_convVtxRvsZ_zoom_[1] = iBooker.book2D("convVtxRvsZBarrelZoom2"," Photon Reco conversion vtx position",zBinForXray, zMinForXray, zMaxForXray, rBinForXray, -10., 20.);
496  h_convVtxYvsX_zoom_[0] = iBooker.book2D("convVtxYvsXTrkBarrelZoom1"," Photon Reco conversion vtx position, (x,y) eta<1 ",100, -40., 40., 100, -40., 40.);
497  h_convVtxYvsX_zoom_[1] = iBooker.book2D("convVtxYvsXTrkBarrelZoom2"," Photon Reco conversion vtx position, (x,y) eta<1 ",100, -20., 20., 100, -20., 20.);
498 
499  h_convVtxdR_ = iBooker.book1D("convVtxdR"," Photon Reco conversion vtx dR",100, -10.,10.);
500  h_convVtxdX_ = iBooker.book1D("convVtxdX"," Photon Reco conversion vtx dX",100, -10.,10.);
501  h_convVtxdY_ = iBooker.book1D("convVtxdY"," Photon Reco conversion vtx dY",100, -10.,10.);
502  h_convVtxdZ_ = iBooker.book1D("convVtxdZ"," Photon Reco conversion vtx dZ",100, -20.,20.);
503 
504  h_convVtxdPhi_ = iBooker.book1D("convVtxdPhi"," Photon Reco conversion vtx dPhi",100, -0.01,0.01);
505  h_convVtxdEta_ = iBooker.book1D("convVtxdEta"," Photon Reco conversion vtx dEta",100, -0.5,0.5);
506 
507  h_convVtxdR_barrel_ = iBooker.book1D("convVtxdR_barrel"," Photon Reco conversion vtx dR, |eta|<=1.2",100, -10.,10.);
508  h_convVtxdX_barrel_ = iBooker.book1D("convVtxdX_barrel"," Photon Reco conversion vtx dX, |eta|<=1.2",100, -10.,10.);
509  h_convVtxdY_barrel_ = iBooker.book1D("convVtxdY_barrel"," Photon Reco conversion vtx dY, |eta|<=1.2 ",100, -10.,10.);
510  h_convVtxdZ_barrel_ = iBooker.book1D("convVtxdZ_barrel"," Photon Reco conversion vtx dZ, |eta|<=1.2,",100, -20.,20.);
511 
512  h_convVtxdR_endcap_ = iBooker.book1D("convVtxdR_endcap"," Photon Reco conversion vtx dR, |eta|>1.2 ",100, -10.,10.);
513  h_convVtxdX_endcap_ = iBooker.book1D("convVtxdX_endcap"," Photon Reco conversion vtx dX, |eta|>1.2",100, -10.,10.);
514  h_convVtxdY_endcap_ = iBooker.book1D("convVtxdY_endcap"," Photon Reco conversion vtx dY, |eta|>1.2",100, -10.,10.);
515  h_convVtxdZ_endcap_ = iBooker.book1D("convVtxdZ_endcap"," Photon Reco conversion vtx dZ, |eta|>1.2",100, -20.,20.);
516 
517 
518 
519  h2_convVtxdRVsR_ = iBooker.book2D("h2ConvVtxdRVsR"," Conversion vtx dR vsR" ,rBin,rMin, rMax,100, -20.,20.);
520  h2_convVtxdRVsEta_ = iBooker.book2D("h2ConvVtxdRVsEta","Conversion vtx dR vs Eta" ,etaBin2,etaMin, etaMax,100, -20.,20.);
521 
522  p_convVtxdRVsR_ = iBooker.bookProfile("pConvVtxdRVsR"," Conversion vtx dR vsR" ,rBin,rMin, rMax ,100, -20.,20., "");
523  p_convVtxdRVsEta_ = iBooker.bookProfile("pConvVtxdRVsEta","Conversion vtx dR vs Eta" ,etaBin2,etaMin, etaMax, 100, -20.,20., "");
524  p_convVtxdXVsX_ = iBooker.bookProfile("pConvVtxdXVsX","Conversion vtx dX vs X" ,120,-60, 60 ,100, -20.,20., "");
525  p_convVtxdYVsY_ = iBooker.bookProfile("pConvVtxdYVsY","Conversion vtx dY vs Y" ,120,-60, 60 ,100, -20.,20., "");
526  p_convVtxdZVsZ_ = iBooker.bookProfile("pConvVtxdZVsZ","Conversion vtx dZ vs Z" ,zBin,zMin,zMax ,100, -20.,20., "");
527 
528  p_convVtxdZVsR_ = iBooker.bookProfile("pConvVtxdZVsR","Conversion vtx dZ vs R" ,rBin,rMin,rMax ,100, -20.,20., "");
529  p2_convVtxdRVsRZ_ = iBooker.bookProfile2D("p2ConvVtxdRVsRZ","Conversion vtx dR vs RZ" ,zBin,zMin, zMax,rBin,rMin,rMax,100, 0.,20.,"s");
530  p2_convVtxdZVsRZ_ = iBooker.bookProfile2D("p2ConvVtxdZVsRZ","Conversion vtx dZ vs RZ" ,zBin,zMin, zMax,rBin,rMin,rMax,100, 0.,20.,"s");
531 
532 
533  histname="EoverPtracks";
534  h_EoverPTracks_[0][0] = iBooker.book1D(histname+"All"," photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax );
535  h_EoverPTracks_[0][1] = iBooker.book1D(histname+"Barrel"," photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
536  h_EoverPTracks_[0][2] = iBooker.book1D(histname+"Endcap"," photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
537  h_EoverPTracks_[1][0] = iBooker.book1D(histname+"All_Ass"," photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
538  h_EoverPTracks_[1][1] = iBooker.book1D(histname+"Barrel_Ass"," photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
539  h_EoverPTracks_[1][2] = iBooker.book1D(histname+"Endcap_Ass"," photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
540  h_EoverPTracks_[2][0] = iBooker.book1D(histname+"All_Fakes"," photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
541  h_EoverPTracks_[2][1] = iBooker.book1D(histname+"Barrel_Fakes"," photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
542  h_EoverPTracks_[2][2] = iBooker.book1D(histname+"Endcap_Fakes"," photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
543 
544 
545  h2_convVtxRrecVsTrue_ = iBooker.book2D("h2ConvVtxRrecVsTrue","Photon Reco conversion vtx R rec vs true" ,rBin,rMin, rMax,rBin,rMin, rMax);
546 
547  histname="vtxChi2Prob";
548  h_vtxChi2Prob_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 100, 0., 1.);
549  h_vtxChi2Prob_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 100, 0., 1.);
550  h_vtxChi2Prob_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 100, 0., 1.);
551  h_vtxChi2Prob_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 100, 0., 1.);
552  h_vtxChi2Prob_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 100, 0., 1.);
553  h_vtxChi2Prob_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 100, 0., 1.);
554  h_vtxChi2Prob_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 100, 0., 1.);
555  h_vtxChi2Prob_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 100, 0., 1.);
556  h_vtxChi2Prob_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 100, 0., 1.);
557 
558 
559  h_zPVFromTracks_[1] = iBooker.book1D("zPVFromTracks"," Photons: PV z from conversion tracks",100, -25., 25.);
560  h_dzPVFromTracks_[1] = iBooker.book1D("dzPVFromTracks"," Photons: PV Z_rec - Z_true from conversion tracks",100, -5., 5.);
561  h2_dzPVVsR_ = iBooker.book2D("h2dzPVVsR","Photon Reco conversions: dz(PV) vs R" ,rBin,rMin, rMax,100, -3.,3.);
562  p_dzPVVsR_ = iBooker.bookProfile("pdzPVVsR","Photon Reco conversions: dz(PV) vs R" ,rBin,rMin, rMax, 100, -3.,3.,"");
563 
564 
565  histname="lxybs";
566  h_lxybs_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 200, -100., 100.);
567  h_lxybs_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 200, -100., 100.);
568  h_lxybs_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 200, -100., 100.);
569  h_lxybs_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 200, -100., 100.);
570  h_lxybs_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 200, -100., 100.);
571  h_lxybs_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 200, -100., 100.);
572  h_lxybs_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 200, -100., 100.);
573  h_lxybs_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 200, -100., 100.);
574  h_lxybs_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 200, -100., 100.);
575 
576  histname="maxNHitsBeforeVtx";
577  h_maxNHitsBeforeVtx_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 16, -0.5, 15.5);
578  h_maxNHitsBeforeVtx_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 16, -0.5, 15.5);
579  h_maxNHitsBeforeVtx_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 16, -0.5, 15.5);
580  h_maxNHitsBeforeVtx_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 16, -0.5, 15.5);
581  h_maxNHitsBeforeVtx_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 16, -0.5, 15.5);
582  h_maxNHitsBeforeVtx_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 16, -0.5, 15.5);
583  h_maxNHitsBeforeVtx_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 16, -0.5, 15.5);
584  h_maxNHitsBeforeVtx_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 16, -0.5, 15.5);
585  h_maxNHitsBeforeVtx_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 16, -0.5, 15.5);
586 
587  histname="leadNHitsBeforeVtx";
588  h_leadNHitsBeforeVtx_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 16, -0.5, 15.5);
589  h_leadNHitsBeforeVtx_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 16, -0.5, 15.5);
590  h_leadNHitsBeforeVtx_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 16, -0.5, 15.5);
591  h_leadNHitsBeforeVtx_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 16, -0.5, 15.5);
592  h_leadNHitsBeforeVtx_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 16, -0.5, 15.5);
593  h_leadNHitsBeforeVtx_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 16, -0.5, 15.5);
594  h_leadNHitsBeforeVtx_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 16, -0.5, 15.5);
595  h_leadNHitsBeforeVtx_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 16, -0.5, 15.5);
596  h_leadNHitsBeforeVtx_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 16, -0.5, 15.5);
597 
598  histname="trailNHitsBeforeVtx";
599  h_trailNHitsBeforeVtx_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 16, -0.5, 15.5);
600  h_trailNHitsBeforeVtx_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 16, -0.5, 15.5);
601  h_trailNHitsBeforeVtx_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 16, -0.5, 15.5);
602  h_trailNHitsBeforeVtx_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 16, -0.5, 15.5);
603  h_trailNHitsBeforeVtx_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 16, -0.5, 15.5);
604  h_trailNHitsBeforeVtx_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 16, -0.5, 15.5);
605  h_trailNHitsBeforeVtx_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 16, -0.5, 15.5);
606  h_trailNHitsBeforeVtx_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 16, -0.5, 15.5);
607  h_trailNHitsBeforeVtx_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 16, -0.5, 15.5);
608 
609  histname="sumNHitsBeforeVtx";
610  h_sumNHitsBeforeVtx_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 16, -0.5, 15.5);
611  h_sumNHitsBeforeVtx_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 16, -0.5, 15.5);
612  h_sumNHitsBeforeVtx_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 16, -0.5, 15.5);
613  h_sumNHitsBeforeVtx_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 16, -0.5, 15.5);
614  h_sumNHitsBeforeVtx_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 16, -0.5, 15.5);
615  h_sumNHitsBeforeVtx_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 16, -0.5, 15.5);
616  h_sumNHitsBeforeVtx_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 16, -0.5, 15.5);
617  h_sumNHitsBeforeVtx_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 16, -0.5, 15.5);
618  h_sumNHitsBeforeVtx_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 16, -0.5, 15.5);
619 
620  histname="maxDlClosestHitToVtx";
621  h_maxDlClosestHitToVtx_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 100, -10., 10.);
622  h_maxDlClosestHitToVtx_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 100, -10., 10.);
623  h_maxDlClosestHitToVtx_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 100, -10., 10.);
624  h_maxDlClosestHitToVtx_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 100, -10., 10.);
625  h_maxDlClosestHitToVtx_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 100, -10., 10.);
626  h_maxDlClosestHitToVtx_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 100, -10., 10.);
627  h_maxDlClosestHitToVtx_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 100, -10., 10.);
628  h_maxDlClosestHitToVtx_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 100, -10., 10.);
629  h_maxDlClosestHitToVtx_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 100, -10., 10.);
630 
631  histname="maxDlClosestHitToVtxSig";
632  h_maxDlClosestHitToVtxSig_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 100, -8., 8.);
633  h_maxDlClosestHitToVtxSig_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 100, -8., 8.);
634  h_maxDlClosestHitToVtxSig_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 100, -8., 8.);
635  h_maxDlClosestHitToVtxSig_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 100, -8., 8.);
636  h_maxDlClosestHitToVtxSig_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 100, -8., 8.);
637  h_maxDlClosestHitToVtxSig_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 100, -8., 8.);
638  h_maxDlClosestHitToVtxSig_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 100, -8., 8.);
639  h_maxDlClosestHitToVtxSig_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 100, -8., 8.);
640  h_maxDlClosestHitToVtxSig_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 100, -8., 8.);
641 
642  histname="deltaExpectedHitsInner";
643  h_deltaExpectedHitsInner_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 31, -15.5, 15.5);
644  h_deltaExpectedHitsInner_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 31, -15.5, 15.5);
645  h_deltaExpectedHitsInner_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 31, -15.5, 15.5);
646  h_deltaExpectedHitsInner_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 31, -15.5, 15.5);
647  h_deltaExpectedHitsInner_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 31, -15.5, 15.5);
648  h_deltaExpectedHitsInner_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 31, -15.5, 15.5);
649  h_deltaExpectedHitsInner_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 31, -15.5, 15.5);
650  h_deltaExpectedHitsInner_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 31, -15.5, 15.5);
651  h_deltaExpectedHitsInner_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 31, -15.5, 15.5);
652 
653  histname="leadExpectedHitsInner";
654  h_leadExpectedHitsInner_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 16, -0.5, 15.5);
655  h_leadExpectedHitsInner_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 16, -0.5, 15.5);
656  h_leadExpectedHitsInner_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 16, -0.5, 15.5);
657  h_leadExpectedHitsInner_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 16, -0.5, 15.5);
658  h_leadExpectedHitsInner_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 16, -0.5, 15.5);
659  h_leadExpectedHitsInner_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 16, -0.5, 15.5);
660  h_leadExpectedHitsInner_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 16, -0.5, 15.5);
661  h_leadExpectedHitsInner_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 16, -0.5, 15.5);
662  h_leadExpectedHitsInner_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 16, -0.5, 15.5);
663 
664  histname="nSharedHits";
665  h_nSharedHits_[0][0] = iBooker.book1D(histname+"All","vertex #chi^{2} all", 16, -0.5, 15.5);
666  h_nSharedHits_[0][1] = iBooker.book1D(histname+"Barrel","vertex #chi^{2} barrel", 16, -0.5, 15.5);
667  h_nSharedHits_[0][2] = iBooker.book1D(histname+"Endcap","vertex #chi^{2} endcap", 16, -0.5, 15.5);
668  h_nSharedHits_[1][0] = iBooker.book1D(histname+"All_Ass","vertex #chi^{2} all", 16, -0.5, 15.5);
669  h_nSharedHits_[1][1] = iBooker.book1D(histname+"Barrel_Ass","vertex #chi^{2} barrel", 16, -0.5, 15.5);
670  h_nSharedHits_[1][2] = iBooker.book1D(histname+"Endcap_Ass","vertex #chi^{2} endcap", 16, -0.5, 15.5);
671  h_nSharedHits_[2][0] = iBooker.book1D(histname+"All_Fakes","vertex #chi^{2} all", 16, -0.5, 15.5);
672  h_nSharedHits_[2][1] = iBooker.book1D(histname+"Barrel_Fakes","vertex #chi^{2} barrel", 16, -0.5, 15.5);
673  h_nSharedHits_[2][2] = iBooker.book1D(histname+"Endcap_Fakes","vertex #chi^{2} endcap", 16, -0.5, 15.5);
674 
676  histname="nHits";
677  nHits_[0] = iBooker.book2D(histname+"AllTracks","Photons:Tracks from conversions: # of hits all tracks",etaBin,etaMin, etaMax,30,0., 30.);
678  nHits_[1] = iBooker.book2D(histname+"AllTracks_Ass","Photons:Tracks from conversions: # of hits all tracks ass",etaBin,etaMin, etaMax,30,0., 30.);
679  nHits_[2] = iBooker.book2D(histname+"AllTracks_Fakes","Photons:Tracks from conversions: # of hits all tracks fakes",etaBin,etaMin, etaMax,30,0., 30.);
680 
681 
682  histname="nHitsVsEta";
683  nHitsVsEta_[0] = iBooker.book2D(histname+"AllTracks","Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax,30,0., 30.);
684  nHitsVsEta_[1] = iBooker.book2D(histname+"AllTracks_Ass","Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax,30,0., 30.);
685  nHitsVsEta_[2] = iBooker.book2D(histname+"AllTracks_Fakes","Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax,30,0., 30.);
686  histname="h_nHitsVsEta";
687  p_nHitsVsEta_[0] = iBooker.bookProfile(histname+"AllTracks","Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax, 30,-0.5, 29.5,"");
688  p_nHitsVsEta_[1] = iBooker.bookProfile(histname+"AllTracks_Ass","Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax, 30,-0.5, 29.5,"");
689  p_nHitsVsEta_[2] = iBooker.bookProfile(histname+"AllTracks_Fakes","Photons:Tracks from conversions: # of hits vs #eta all tracks",etaBin,etaMin, etaMax, 30,-0.5, 29.5,"");
690 
691 
692  histname="nHitsVsR";
693  nHitsVsR_[0] = iBooker.book2D(histname+"AllTracks","Photons:Tracks from conversions: # of hits vs radius all tracks" ,rBin,rMin, rMax,30,0., 30.);
694  nHitsVsR_[1] = iBooker.book2D(histname+"AllTracks_Ass","Photons:Tracks from conversions: # of hits vs radius all tracks" ,rBin,rMin, rMax,30,0., 30.);
695  nHitsVsR_[2] = iBooker.book2D(histname+"AllTracks_Fakes","Photons:Tracks from conversions: # of hits vs radius all tracks" ,rBin,rMin, rMax,30,0., 30.);
696 
697  histname="h_nHitsVsR";
698  p_nHitsVsR_[0] = iBooker.bookProfile(histname+"AllTracks","Photons:Tracks from conversions: # of hits vs radius all tracks",rBin,rMin, rMax, 30,-0.5, 29.5,"");
699  p_nHitsVsR_[1] = iBooker.bookProfile(histname+"AllTracks_Ass","Photons:Tracks from conversions: # of hits vs radius all tracks",rBin,rMin, rMax, 30,-0.5, 29.5,"");
700  p_nHitsVsR_[2] = iBooker.bookProfile(histname+"AllTracks_Fakes","Photons:Tracks from conversions: # of hits vs radius all tracks",rBin,rMin, rMax, 30,-0.5, 29.5,"");
701 
702  histname="tkChi2";
703  h_tkChi2_[0] = iBooker.book1D(histname+"AllTracks","Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
704  h_tkChi2_[1] = iBooker.book1D(histname+"AllTracks_Ass","Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
705  h_tkChi2_[2] = iBooker.book1D(histname+"AllTracks_Fakes","Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
706 
707  histname="tkChi2Large";
708  h_tkChi2Large_[0] = iBooker.book1D(histname+"AllTracks","Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
709  h_tkChi2Large_[1] = iBooker.book1D(histname+"AllTracks_Ass","Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
710  h_tkChi2Large_[2] = iBooker.book1D(histname+"AllTracks_Fakes","Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
711 
712 
713  histname="h2Chi2VsEta";
714  h2_Chi2VsEta_[0]=iBooker.book2D(histname+"All"," Reco Track #chi^{2} vs #eta: All ",etaBin2,etaMin, etaMax,100, chi2Min, chi2Max);
715  h2_Chi2VsEta_[1]=iBooker.book2D(histname+"All_Ass"," Reco Track #chi^{2} vs #eta: All ",etaBin2,etaMin, etaMax,100, chi2Min, chi2Max);
716  h2_Chi2VsEta_[2]=iBooker.book2D(histname+"All_Fakes"," Reco Track #chi^{2} vs #eta: All ",etaBin2,etaMin, etaMax,100, chi2Min, chi2Max);
717  histname="pChi2VsEta";
718  p_Chi2VsEta_[0]=iBooker.bookProfile(histname+"All"," Reco Track #chi^{2} vs #eta : All ",etaBin2,etaMin, etaMax, 100, chi2Min, chi2Max,"");
719  p_Chi2VsEta_[1]=iBooker.bookProfile(histname+"All_Ass"," Reco Track #chi^{2} vs #eta : All ",etaBin2,etaMin, etaMax, 100, chi2Min, chi2Max,"");
720  p_Chi2VsEta_[2]=iBooker.bookProfile(histname+"All_Fakes"," Reco Track #chi^{2} vs #eta : All ",etaBin2,etaMin, etaMax, 100, chi2Min, chi2Max,"");
721 
722  histname="h2Chi2VsR";
723  h2_Chi2VsR_[0]=iBooker.book2D(histname+"All"," Reco Track #chi^{2} vs R: All ",rBin,rMin, rMax,100,chi2Min, chi2Max);
724  h2_Chi2VsR_[1]=iBooker.book2D(histname+"All_Ass"," Reco Track #chi^{2} vs R: All ",rBin,rMin, rMax,100,chi2Min, chi2Max);
725  h2_Chi2VsR_[2]=iBooker.book2D(histname+"All_Fakes"," Reco Track #chi^{2} vs R: All ",rBin,rMin, rMax,100,chi2Min, chi2Max);
726  histname="pChi2VsR";
727  p_Chi2VsR_[0]=iBooker.bookProfile(histname+"All"," Reco Track #chi^{2} vas R : All ",rBin,rMin,rMax, 100,chi2Min, chi2Max,"");
728  p_Chi2VsR_[1]=iBooker.bookProfile(histname+"All_Ass"," Reco Track #chi^{2} vas R : All ",rBin,rMin,rMax, 100,chi2Min, chi2Max,"");
729  p_Chi2VsR_[2]=iBooker.bookProfile(histname+"All_Fakes"," Reco Track #chi^{2} vas R : All ",rBin,rMin,rMax, 100,chi2Min, chi2Max,"");
730 
731  histname="hTkD0";
732  h_TkD0_[0]=iBooker.book1D(histname+"All"," Reco Track D0*q: All ",200,-0.1,60);
733  h_TkD0_[1]=iBooker.book1D(histname+"All_Ass"," Reco Track D0*q: Barrel ",200,-0.1,60);
734  h_TkD0_[2]=iBooker.book1D(histname+"All_Fakes"," Reco Track D0*q: Endcap ",200,-0.1,60);
735 
736 
737 
738  histname="hTkPtPull";
739  h_TkPtPull_[0]=iBooker.book1D(histname+"All"," Reco Track Pt pull: All ",100, -20., 10.);
740  histname="hTkPtPull";
741  h_TkPtPull_[1]=iBooker.book1D(histname+"Barrel"," Reco Track Pt pull: Barrel ",100, -20., 10.);
742  histname="hTkPtPull";
743  h_TkPtPull_[2]=iBooker.book1D(histname+"Endcap"," Reco Track Pt pull: Endcap ",100, -20., 10.);
744 
745  histname="h2TkPtPullEta";
746  h2_TkPtPull_[0]=iBooker.book2D(histname+"All"," Reco Track Pt pull: All ",etaBin2,etaMin, etaMax,100, -20., 10.);
747  histname="pTkPtPullEta";
748  p_TkPtPull_[0]=iBooker.bookProfile(histname+"All"," Reco Track Pt pull: All ",etaBin2,etaMin, etaMax, 100, -20., 10., " ");
749 
750 
751  histname="PtRecVsPtSim";
752  h2_PtRecVsPtSim_[0]=iBooker.book2D(histname+"All", "Pt Rec vs Pt sim: All ", etBin,etMin,etMax,etBin,etMin, etMax);
753  h2_PtRecVsPtSim_[1]=iBooker.book2D(histname+"Barrel", "Pt Rec vs Pt sim: Barrel ", etBin,etMin,etMax,etBin,etMin, etMax);
754  h2_PtRecVsPtSim_[2]=iBooker.book2D(histname+"Endcap", "Pt Rec vs Pt sim: Endcap ", etBin,etMin,etMax,etBin,etMin, etMax);
755 
756  histname="photonPtRecVsPtSim";
757  h2_photonPtRecVsPtSim_=iBooker.book2D(histname+"All", "Pt Rec vs Pt sim: All ", etBin,etMin,etMax,etBin,etMin, etMax);
758 
759  histname="nHitsBeforeVtx";
760  h_nHitsBeforeVtx_[0]=iBooker.book1D(histname+"All", "Pt Rec vs Pt sim: All ", 16, -0.5, 15.5);
761  h_nHitsBeforeVtx_[1]=iBooker.book1D(histname+"Barrel", "Pt Rec vs Pt sim: Barrel ", 16, -0.5, 15.5);
762  h_nHitsBeforeVtx_[2]=iBooker.book1D(histname+"Endcap", "Pt Rec vs Pt sim: Endcap ", 16, -0.5, 15.5);
763 
764  histname="dlClosestHitToVtx";
765  h_dlClosestHitToVtx_[0]=iBooker.book1D(histname+"All", "Pt Rec vs Pt sim: All ", 100, -10., 10.);
766  h_dlClosestHitToVtx_[1]=iBooker.book1D(histname+"Barrel", "Pt Rec vs Pt sim: Barrel ", 100, -10., 10.);
767  h_dlClosestHitToVtx_[2]=iBooker.book1D(histname+"Endcap", "Pt Rec vs Pt sim: Endcap ", 100, -10., 10.);
768 
769  histname="dlClosestHitToVtxSig";
770  h_dlClosestHitToVtxSig_[0]=iBooker.book1D(histname+"All", "Pt Rec vs Pt sim: All ", 100, -8., 8.);
771  h_dlClosestHitToVtxSig_[1]=iBooker.book1D(histname+"Barrel", "Pt Rec vs Pt sim: Barrel ", 100, -8., 8.);
772  h_dlClosestHitToVtxSig_[2]=iBooker.book1D(histname+"Endcap", "Pt Rec vs Pt sim: Endcap ", 100, -8., 8.);
773 
774  h_match_= iBooker.book1D("h_match"," ", 3, -0.5,2.5);
775 
776 
777  } // if DQM
778 
779 
780 
781 }
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 * bookProfile(Args &&...args)
Definition: DQMStore.h:157
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 * bookProfile2D(Args &&...args)
Definition: DQMStore.h:163
MonitorElement * h_EoverPTracks_[3][3]
MonitorElement * h_leadNHitsBeforeVtx_[3][3]
MonitorElement * h_distMinAppTracks_[3][3]
MonitorElement * p_DPhiTracksAtVtxVsR_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
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_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * h_convPhi_[3][3]
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
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 
)
virtual

Reimplemented from DQMEDAnalyzer.

Definition at line 785 of file TkConvValidator.cc.

References edm::EventSetup::get().

785  {
786 
787  //get magnetic field
788  edm::LogInfo("ConvertedPhotonProducer") << " get magnetic field" << "\n";
789  theEventSetup.get<IdealMagneticFieldRecord>().get(theMF_);
790 
792 
793 }
edm::ESHandle< MagneticField > theMF_
PhotonMCTruthFinder * thePhotonMCTruthFinder_
void TkConvValidator::endJob ( void  )
virtual

Definition at line 1796 of file TkConvValidator.cc.

References dbe_, dumpDBToFile_GT_ttrig_cfg::outputFileName, mathSSE::return(), and AlCaHLTBitMon_QueryRunRegistry::string.

1796  {
1797 
1798 
1800  if ( ! isRunCentrally_ ) {
1801  dbe_->save(outputFileName);
1802  }
1803 
1804  edm::LogInfo("TkConvValidator") << "Analyzed " << nEvt_ << "\n";
1805  // std::cout << "::endJob Analyzed " << nEvt_ << " events " << " with total " << nPho_ << " Photons " << "\n";
1806  // std::cout << "TkConvValidator::endJob Analyzed " << nEvt_ << " events " << "\n";
1807 
1808  return ;
1809 }
T getParameter(std::string const &) const
edm::ParameterSet parameters_
return((rh^lh)&mask)
void TkConvValidator::endRun ( edm::Run r,
edm::EventSetup const &  es 
)
virtual

Definition at line 795 of file TkConvValidator.cc.

795  {
796 
798 
799 }
PhotonMCTruthFinder * thePhotonMCTruthFinder_
float TkConvValidator::etaTransformation ( float  a,
float  b 
)
private

Definition at line 1862 of file TkConvValidator.cc.

References ETA, etaBarrelEndcap, create_public_lumi_plots::log, PI, R_ECAL, funct::tan(), and Z_Endcap.

1862  {
1863 
1864  //---Definitions
1865  const float PI = 3.1415927;
1866 
1867  //---Definitions for ECAL
1868  const float R_ECAL = 136.5;
1869  const float Z_Endcap = 328.0;
1870  const float etaBarrelEndcap = 1.479;
1871 
1872  //---ETA correction
1873 
1874  float Theta = 0.0 ;
1875  float ZEcal = R_ECAL*sinh(EtaParticle)+Zvertex;
1876 
1877  if(ZEcal != 0.0) Theta = atan(R_ECAL/ZEcal);
1878  if(Theta<0.0) Theta = Theta+PI ;
1879  float ETA = - log(tan(0.5*Theta));
1880 
1881  if( fabs(ETA) > etaBarrelEndcap )
1882  {
1883  float Zend = Z_Endcap ;
1884  if(EtaParticle<0.0 ) Zend = -Zend ;
1885  float Zlen = Zend - Zvertex ;
1886  float RR = Zlen/sinh(EtaParticle);
1887  Theta = atan(RR/Zend);
1888  if(Theta<0.0) Theta = Theta+PI ;
1889  ETA = - log(tan(0.5*Theta));
1890  }
1891  //---Return the result
1892  return ETA;
1893  //---end
1894 }
#define PI
#define ETA
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
static const float etaBarrelEndcap
static const float Z_Endcap
static const float R_ECAL
float TkConvValidator::phiNormalization ( float &  a)
private

Definition at line 1846 of file TkConvValidator.cc.

References phi, PI, and TWOPI.

1847 {
1848  //---Definitions
1849  const float PI = 3.1415927;
1850  const float TWOPI = 2.0*PI;
1851 
1852 
1853  if(phi > PI) {phi = phi - TWOPI;}
1854  if(phi < -PI) {phi = phi + TWOPI;}
1855 
1856  // cout << " Float_t PHInormalization out " << PHI << endl;
1857  return phi;
1858 
1859 }
#define PI
#define TWOPI
EgammaCoreTools.
Definition: DQMSourcePi0.cc:40
Definition: DDAxes.h:10
math::XYZVector TkConvValidator::recalculateMomentumAtFittedVertex ( const MagneticField mf,
const TrackerGeometry trackerGeom,
const edm::RefToBase< reco::Track > &  tk,
const reco::Vertex vtx 
)
private

Definition at line 1812 of file TkConvValidator.cc.

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

1812  {
1813 
1816  auto scp = new SimpleCylinderBounds( sqrt(vtx.position().perp2())-0.001f,
1817  sqrt(vtx.position().perp2())+0.001f,
1818  -fabs(vtx.position().z()),
1819  fabs(vtx.position().z())
1820  );
1822 
1823  ReferenceCountingPointer<Disk> theDisk_(new Disk( Surface::PositionType( 0, 0, vtx.position().z()), rot,
1824  new SimpleDiskBounds( 0, sqrt(vtx.position().perp2()), -0.001, 0.001) )
1825  );
1826 
1827 
1828  const TrajectoryStateOnSurface myTSOS = trajectoryStateTransform::innerStateOnSurface(*tk, trackerGeom, &mf);
1829  PropagatorWithMaterial propag( anyDirection, 0.000511, &mf );
1830  TrajectoryStateOnSurface stateAtVtx;
1831  stateAtVtx = propag.propagate(myTSOS, *theBarrel_);
1832  if (!stateAtVtx.isValid() ) {
1833  stateAtVtx = propag.propagate(myTSOS, *theDisk_);
1834  }
1835  if (stateAtVtx.isValid()){
1836  return math::XYZVector ( double(stateAtVtx.globalMomentum().x()), double(stateAtVtx.globalMomentum().y()), double(stateAtVtx.globalMomentum().z()));
1837  } else {
1838  return math::XYZVector(0.,0.,0.);
1839  }
1840 
1841 
1842 
1843 }
T y() const
Definition: PV3DBase.h:63
const Point & position() const
position
Definition: Vertex.h:106
Definition: BoundDisk.h:19
T sqrt(T t)
Definition: SSEVec.h:48
T z() const
Definition: PV3DBase.h:64
tuple result
Definition: query.py:137
double f[11][100]
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
GlobalVector globalMomentum() const
static float computeRadius(Bounds const &bounds)
Definition: Cylinder.h:30
T x() const
Definition: PV3DBase.h:62
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 141 of file TkConvValidator.h.

bool TkConvValidator::arbitratedMerged_
private

Definition at line 140 of file TkConvValidator.h.

double TkConvValidator::bcEtLow_
private

Definition at line 128 of file TkConvValidator.h.

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

Definition at line 105 of file TkConvValidator.h.

std::string TkConvValidator::conversionCollection_
private

Definition at line 95 of file TkConvValidator.h.

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

Definition at line 96 of file TkConvValidator.h.

std::string TkConvValidator::conversionCollectionProducer_
private

Definition at line 94 of file TkConvValidator.h.

std::string TkConvValidator::conversionTrackProducer_
private

Definition at line 98 of file TkConvValidator.h.

DQMStore* TkConvValidator::dbe_
private

Definition at line 76 of file TkConvValidator.h.

bool TkConvValidator::dCotCutOn_
private

Definition at line 136 of file TkConvValidator.h.

double TkConvValidator::dCotCutValue_
private

Definition at line 137 of file TkConvValidator.h.

double TkConvValidator::dCotHardCutValue_
private

Definition at line 138 of file TkConvValidator.h.

std::string TkConvValidator::dqmpath_
private

Definition at line 114 of file TkConvValidator.h.

bool TkConvValidator::ecalalgotracks_
private

Definition at line 142 of file TkConvValidator.h.

double TkConvValidator::ecalEtSumCut_
private

Definition at line 134 of file TkConvValidator.h.

double TkConvValidator::ecalIsolRadius_
private

Definition at line 127 of file TkConvValidator.h.

std::string TkConvValidator::fName_
private

Definition at line 75 of file TkConvValidator.h.

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

Definition at line 106 of file TkConvValidator.h.

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

Definition at line 107 of file TkConvValidator.h.

bool TkConvValidator::generalTracksOnly_
private

Definition at line 139 of file TkConvValidator.h.

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

Definition at line 111 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_Chi2VsEta_[3]
private

Definition at line 334 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_Chi2VsR_[3]
private

Definition at line 336 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_convVtxdRVsEta_
private

Definition at line 287 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_convVtxdRVsR_
private

Definition at line 286 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_convVtxRrecVsTrue_
private

Definition at line 301 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DCotTracksVsEta_
private

Definition at line 246 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DCotTracksVsR_
private

Definition at line 248 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtEcalVsEta_
private

Definition at line 256 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtEcalVsR_
private

Definition at line 254 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtVtxVsEta_
private

Definition at line 240 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_DPhiTracksAtVtxVsR_
private

Definition at line 242 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_dzPVVsR_
private

Definition at line 310 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_photonPtRecVsPtSim_
private

Definition at line 345 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_PtRecVsPtSim_[3]
private

Definition at line 344 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h2_TkPtPull_[3]
private

Definition at line 342 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_AllSimConv_[5]
private

Denominator for efficiencies.

Definition at line 194 of file TkConvValidator.h.

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

Definition at line 221 of file TkConvValidator.h.

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

Definition at line 220 of file TkConvValidator.h.

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

Definition at line 219 of file TkConvValidator.h.

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

Definition at line 222 of file TkConvValidator.h.

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

Definition at line 225 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convPtRes_[3]
private

Definition at line 235 of file TkConvValidator.h.

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

Definition at line 223 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convRplot_
private

Definition at line 232 of file TkConvValidator.h.

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

Definition at line 228 of file TkConvValidator.h.

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

Definition at line 229 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdEta_
private

Definition at line 272 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdPhi_
private

Definition at line 273 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdR_
private

Definition at line 271 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdR_barrel_
private

Definition at line 278 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdR_endcap_
private

Definition at line 283 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdX_
private

Definition at line 268 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdX_barrel_
private

Definition at line 275 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdX_endcap_
private

Definition at line 280 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdY_
private

Definition at line 269 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdY_barrel_
private

Definition at line 276 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdY_endcap_
private

Definition at line 281 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdZ_
private

Definition at line 270 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdZ_barrel_
private

Definition at line 277 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxdZ_endcap_
private

Definition at line 282 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxRvsZ_[3]
private

Definition at line 263 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxRvsZ_zoom_[2]
private

Definition at line 265 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxYvsX_
private

Definition at line 264 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convVtxYvsX_zoom_[2]
private

Definition at line 266 of file TkConvValidator.h.

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

Definition at line 224 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_convZplot_
private

Definition at line 233 of file TkConvValidator.h.

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

Definition at line 245 of file TkConvValidator.h.

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

Definition at line 318 of file TkConvValidator.h.

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

Definition at line 259 of file TkConvValidator.h.

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

Definition at line 251 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_dlClosestHitToVtx_[3]
private

Definition at line 352 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_dlClosestHitToVtxSig_[3]
private

Definition at line 353 of file TkConvValidator.h.

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

Definition at line 253 of file TkConvValidator.h.

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

Definition at line 239 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_dzPVFromTracks_[2]
private

Definition at line 309 of file TkConvValidator.h.

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

Definition at line 226 of file TkConvValidator.h.

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

Definition at line 237 of file TkConvValidator.h.

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

Definition at line 319 of file TkConvValidator.h.

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

Definition at line 315 of file TkConvValidator.h.

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

Definition at line 313 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_match_
private

Definition at line 347 of file TkConvValidator.h.

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

Definition at line 320 of file TkConvValidator.h.

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

Definition at line 321 of file TkConvValidator.h.

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

Definition at line 314 of file TkConvValidator.h.

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

info per conversion

Definition at line 218 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_nHitsBeforeVtx_[3]
private

Definition at line 351 of file TkConvValidator.h.

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

Definition at line 322 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_nSimConv_[2]
private

Definition at line 183 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_RecoConvTwoMTracks_[5]
private

Definition at line 214 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_RecoConvTwoTracks_[5]
private

Definition at line 212 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvEtaPix_[2]
private

Definition at line 184 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvOneMTracks_[5]
private

Definition at line 199 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvOneTracks_[5]
private

Numerator for efficiencies.

Definition at line 198 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracks_[5]
private

Definition at line 201 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracksAndVtxPGT0005_[5]
private

Definition at line 203 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracksAndVtxPGT01_[5]
private

Definition at line 204 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoMTracksAndVtxPGT0_[5]
private

Definition at line 202 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimConvTwoTracks_[5]
private

Definition at line 200 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simConvVtxRvsZ_[4]
private

Definition at line 189 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simConvVtxYvsX_
private

Definition at line 190 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvOneMTracks_[5]
private

Definition at line 207 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvOneTracks_[5]
private

Definition at line 206 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvTwoMTracks_[5]
private

Definition at line 209 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_SimRecConvTwoTracks_[5]
private

Definition at line 208 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simTkEta_
private

Definition at line 187 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_simTkPt_
private

Definition at line 186 of file TkConvValidator.h.

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

Definition at line 317 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_tkChi2_[3]
private

Definition at line 332 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_tkChi2Large_[3]
private

Definition at line 333 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_TkD0_[3]
private

Definition at line 339 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_TkPtPull_[3]
private

Definition at line 341 of file TkConvValidator.h.

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

Definition at line 316 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_VisSimConv_[6]
private

Definition at line 195 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_VisSimConvLarge_
private

Definition at line 196 of file TkConvValidator.h.

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

Definition at line 304 of file TkConvValidator.h.

MonitorElement* TkConvValidator::h_zPVFromTracks_[2]
private

Definition at line 308 of file TkConvValidator.h.

double TkConvValidator::hcalEtSumCut_
private

Definition at line 135 of file TkConvValidator.h.

double TkConvValidator::hcalHitEtLow_
private

Definition at line 131 of file TkConvValidator.h.

double TkConvValidator::hcalIsolExtRadius_
private

Definition at line 129 of file TkConvValidator.h.

double TkConvValidator::hcalIsolInnRadius_
private

Definition at line 130 of file TkConvValidator.h.

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

Definition at line 110 of file TkConvValidator.h.

bool TkConvValidator::highPurity_
private

Definition at line 143 of file TkConvValidator.h.

bool TkConvValidator::isRunCentrally_
private

Definition at line 120 of file TkConvValidator.h.

edm::InputTag TkConvValidator::label_tp_
private

Definition at line 116 of file TkConvValidator.h.

double TkConvValidator::lip_
private

Definition at line 126 of file TkConvValidator.h.

uint TkConvValidator::maxHitsBeforeVtx_
private

Definition at line 145 of file TkConvValidator.h.

double TkConvValidator::maxPhoEtaForEffic
private

Definition at line 166 of file TkConvValidator.h.

double TkConvValidator::maxPhoEtaForPurity
private

Definition at line 170 of file TkConvValidator.h.

double TkConvValidator::maxPhoRForEffic
private

Definition at line 168 of file TkConvValidator.h.

double TkConvValidator::maxPhoRForPurity
private

Definition at line 172 of file TkConvValidator.h.

double TkConvValidator::maxPhoZForEffic
private

Definition at line 167 of file TkConvValidator.h.

double TkConvValidator::maxPhoZForPurity
private

Definition at line 171 of file TkConvValidator.h.

double TkConvValidator::mcConvEta_
private

Definition at line 158 of file TkConvValidator.h.

double TkConvValidator::mcConvPhi_
private

Definition at line 157 of file TkConvValidator.h.

double TkConvValidator::mcConvPt_
private

Definition at line 152 of file TkConvValidator.h.

double TkConvValidator::mcConvR_
private

Definition at line 153 of file TkConvValidator.h.

double TkConvValidator::mcConvX_
private

Definition at line 156 of file TkConvValidator.h.

double TkConvValidator::mcConvY_
private

Definition at line 155 of file TkConvValidator.h.

double TkConvValidator::mcConvZ_
private

Definition at line 154 of file TkConvValidator.h.

double TkConvValidator::mcEta_
private

Definition at line 151 of file TkConvValidator.h.

double TkConvValidator::mcJetEta_
private

Definition at line 159 of file TkConvValidator.h.

double TkConvValidator::mcJetPhi_
private

Definition at line 160 of file TkConvValidator.h.

double TkConvValidator::mcPhi_
private

global variable for the MC photon

Definition at line 150 of file TkConvValidator.h.

double TkConvValidator::minLxy_
private

Definition at line 146 of file TkConvValidator.h.

double TkConvValidator::minPhoEtCut_
private

Definition at line 122 of file TkConvValidator.h.

double TkConvValidator::minPhoPtForEffic
private

Definition at line 165 of file TkConvValidator.h.

double TkConvValidator::minPhoPtForPurity
private

Definition at line 169 of file TkConvValidator.h.

double TkConvValidator::minProb_
private

Definition at line 144 of file TkConvValidator.h.

int TkConvValidator::nEntry_
private

Definition at line 81 of file TkConvValidator.h.

int TkConvValidator::nEvt_
private

Definition at line 80 of file TkConvValidator.h.

MonitorElement* TkConvValidator::nHits_[3]
private

Definition at line 327 of file TkConvValidator.h.

MonitorElement* TkConvValidator::nHitsVsEta_[3]
private

Definition at line 329 of file TkConvValidator.h.

MonitorElement* TkConvValidator::nHitsVsR_[3]
private

Definition at line 331 of file TkConvValidator.h.

int TkConvValidator::nInvalidPCA_
private

Definition at line 88 of file TkConvValidator.h.

int TkConvValidator::nMatched_
private

Definition at line 83 of file TkConvValidator.h.

int TkConvValidator::nRecConv_
private

Definition at line 84 of file TkConvValidator.h.

int TkConvValidator::nRecConvAss_
private

Definition at line 85 of file TkConvValidator.h.

int TkConvValidator::nRecConvAssWithEcal_
private

Definition at line 86 of file TkConvValidator.h.

int TkConvValidator::nSimConv_[2]
private

Definition at line 82 of file TkConvValidator.h.

int TkConvValidator::numOfTracksInCone_
private

Definition at line 132 of file TkConvValidator.h.

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

Definition at line 104 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p2_convVtxdRVsRZ_
private

Definition at line 298 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p2_convVtxdZVsRZ_
private

Definition at line 299 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p2_effRZ_
private

Definition at line 349 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_Chi2VsEta_[3]
private

Definition at line 335 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_Chi2VsR_[3]
private

Definition at line 337 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdRVsEta_
private

Definition at line 290 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdRVsR_
private

Definition at line 289 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdXVsX_
private

Definition at line 292 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdYVsY_
private

Definition at line 293 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdZVsR_
private

Definition at line 295 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_convVtxdZVsZ_
private

Definition at line 294 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DCotTracksVsEta_
private

Definition at line 247 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DCotTracksVsR_
private

Definition at line 249 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtEcalVsEta_
private

Definition at line 257 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtEcalVsR_
private

Definition at line 255 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtVtxVsEta_
private

Definition at line 241 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_DPhiTracksAtVtxVsR_
private

Definition at line 243 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_dzPVVsR_
private

Definition at line 311 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_nHitsVsEta_[3]
private

Definition at line 328 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_nHitsVsR_[3]
private

Definition at line 330 of file TkConvValidator.h.

MonitorElement* TkConvValidator::p_TkPtPull_[3]
private

Definition at line 343 of file TkConvValidator.h.

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

Definition at line 101 of file TkConvValidator.h.

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

Definition at line 102 of file TkConvValidator.h.

std::string TkConvValidator::photonCollectionProducer_
private

Definition at line 100 of file TkConvValidator.h.

double TkConvValidator::recMaxPt_
private

Definition at line 179 of file TkConvValidator.h.

double TkConvValidator::recMinPt_
private

Global variables for reco Photon.

Definition at line 178 of file TkConvValidator.h.

double TkConvValidator::simMaxPt_
private

Definition at line 175 of file TkConvValidator.h.

double TkConvValidator::simMinPt_
private

Definition at line 174 of file TkConvValidator.h.

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

Definition at line 91 of file TkConvValidator.h.

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

Definition at line 92 of file TkConvValidator.h.

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

Definition at line 162 of file TkConvValidator.h.

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

Definition at line 77 of file TkConvValidator.h.

PhotonMCTruthFinder* TkConvValidator::thePhotonMCTruthFinder_
private

Definition at line 118 of file TkConvValidator.h.

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

Definition at line 108 of file TkConvValidator.h.

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

Definition at line 109 of file TkConvValidator.h.

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

Definition at line 112 of file TkConvValidator.h.

double TkConvValidator::trkIsolExtRadius_
private

Definition at line 123 of file TkConvValidator.h.

double TkConvValidator::trkIsolInnRadius_
private

Definition at line 124 of file TkConvValidator.h.

double TkConvValidator::trkPtLow_
private

Definition at line 125 of file TkConvValidator.h.

double TkConvValidator::trkPtSumCut_
private

Definition at line 133 of file TkConvValidator.h.

int TkConvValidator::verbosity_
private

Definition at line 79 of file TkConvValidator.h.