1493 using namespace edm;
1497 const float BARL = 1.4442;
1499 const float END_HI = 2.5;
1505 LogInfo(
"PhotonValidator") <<
"PhotonValidator Analyzing event number: " << e.
id() <<
" Global Counter " <<
nEvt_ <<
"\n";
1513 e.
getByLabel(
"offlinePrimaryVertices", vtxH);
1525 if (!photonHandle.isValid()) {
1526 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the Photon collection "<< std::endl;
1548 for (
trackingRecHit_iterator itHits=iTk->extra()->recHitsBegin(); itHits!=iTk->extra()->recHitsEnd(); ++itHits ) {
1549 if ( (*itHits)->isValid() ) {
1569 for (
trackingRecHit_iterator itHits=iTk->extra()->recHitsBegin(); itHits!=iTk->extra()->recHitsEnd(); ++itHits ) {
1570 if ( (*itHits)->isValid() ) {
1587 std::vector<SimTrack> theSimTracks;
1588 std::vector<SimVertex> theSimVertices;
1603 theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
1604 theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
1609 const HepMC::GenEvent *myGenEvent = hepMC->GetEvent();
1614 e.
getByLabel(
"iterativeCone5GenJets",
"",GenJetsHandle);
1632 std::vector<reco::PhotonCollection::const_iterator> StoRMatchedConvertedPhotons;
1650 vector<reco::SimToRecoCollection*> StoRCollPtrs;
1651 StoRCollPtrs.push_back(&OISimToReco);
1652 StoRCollPtrs.push_back(&IOSimToReco);
1653 vector<reco::RecoToSimCollection*> RtoSCollPtrs;
1654 RtoSCollPtrs.push_back(&OIRecoToSim);
1655 RtoSCollPtrs.push_back(&IORecoToSim);
1657 for (
int i=0;
i<2;
i++)
1659 for (
int i=0;
i<2;
i++)
1663 std::vector<reco::Photon> myPhotons;
1664 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
1665 if ( fabs(iPho->eta()) > 2.5 )
continue;
1666 myPhotons.push_back(*iPho);
1669 std::sort(myPhotons.begin(), myPhotons.end(), sortPhotons());
1671 if ( myPhotons.size() >=2 ) {
1672 if ( myPhotons[0].et() > 40 && myPhotons[1].et() > 25 ) {
1677 float gamgamMass2 = p12.Dot(p12);
1678 float gamgamMass2_regr1 = p12_regr1.Dot(p12_regr1);
1679 float gamgamMass2_regr2 = p12_regr2.Dot(p12_regr2);
1682 if ( gamgamMass2 > 0 ) {
1685 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1687 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1688 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1689 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1692 if ( myPhotons[0].r9() > 0.94 && myPhotons[1].r9() > 0.94 ) {
1694 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1696 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1697 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1698 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1706 if ( chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005 ) {
1708 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1711 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1712 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1713 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1719 if ( myPhotons[0].
conversions()[0]->nTracks() ==2 ) {
1721 if ( chi2Prob1 > 0.0005 ) {
1723 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1726 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1732 if ( myPhotons[1].
conversions()[0]->nTracks() ==2 ) {
1734 if ( chi2Prob1 > 0.0005 ) {
1736 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1739 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1748 if ( gamgamMass2_regr1 > 0 ) {
1751 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1753 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1754 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1755 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1758 if ( myPhotons[0].r9() > 0.94 && myPhotons[1].r9() > 0.94 ) {
1760 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1762 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1763 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1764 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1774 if ( chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005 ) {
1776 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1779 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1780 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1781 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1787 if ( myPhotons[0].
conversions()[0]->nTracks() ==2 ) {
1789 if ( chi2Prob1 > 0.0005 ) {
1791 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1794 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1800 if ( myPhotons[1].
conversions()[0]->nTracks() ==2 ) {
1802 if ( chi2Prob1 > 0.0005 ) {
1804 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1807 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1817 if ( gamgamMass2_regr2 > 0 ) {
1820 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1822 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1823 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1824 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1827 if ( myPhotons[0].r9() > 0.94 && myPhotons[1].r9() > 0.94 ) {
1829 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1831 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1832 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1833 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1843 if ( chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005 ) {
1845 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1848 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1849 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1850 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1856 if ( myPhotons[0].
conversions()[0]->nTracks() ==2 ) {
1858 if ( chi2Prob1 > 0.0005 ) {
1860 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1863 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1869 if ( myPhotons[1].
conversions()[0]->nTracks() ==2 ) {
1871 if ( chi2Prob1 > 0.0005 ) {
1873 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1876 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1901 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
1902 if ( (*mcPho).fourMomentum().et() <
minPhoEtCut_ )
continue;
1904 for ( HepMC::GenEvent::particle_const_iterator mcIter=myGenEvent->particles_begin(); mcIter != myGenEvent->particles_end(); mcIter++ ) {
1905 if ( (*mcIter)->pdg_id() != 22 )
continue;
1906 bool isTheSame=
false;
1908 if ( (*mcIter)->production_vertex() ) {
1909 if ( (*mcIter)->production_vertex()->particles_begin(
HepMC::parents) !=
1911 mother = *((*mcIter)->production_vertex()->particles_begin(
HepMC::parents));
1917 float mcPhi= (*mcPho).fourMomentum().phi();
1919 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
1921 mcConvR_= (*mcPho).vertex().perp();
1928 if ( fabs(
mcEta_) > END_HI )
continue;
1933 || (mother != 0 && mother->pdg_id() == 22)
1934 || (mother != 0 && mother->pdg_id() == 25)
1935 || (mother != 0 && mother->pdg_id() == 35) )
1939 double dPt = fabs((*mcIter)->momentum().perp() - (*mcPho).fourMomentum().et());
1940 float phiMother=(*mcIter)->momentum().phi();
1942 double dEta = fabs( (*mcIter)->momentum().eta() - (*mcPho).fourMomentum().pseudoRapidity() );
1947 if ( dEta <=0.0001 && dPhi <=0.0001 && dPt <=0.0001)
1951 if ( ! isTheSame )
continue;
1975 bool goodSimConversion=
false;
1976 bool visibleConversion=
false;
1977 bool visibleConversionsWithTwoSimTracks=
false;
1978 if ( (*mcPho).isAConversion() == 1 ) {
1990 if ( ( fabs(
mcEta_) <= BARL && mcConvR_ <85 ) ||
1991 ( fabs(
mcEta_) > BARL && fabs(
mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) visibleConversion=
true;
2003 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.001 &&
2004 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.001 &&
2005 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.001) {
2015 if (
theConvTP_.
size() == 2 ) visibleConversionsWithTwoSimTracks=
true;
2016 goodSimConversion=
false;
2018 if ( visibleConversion && visibleConversionsWithTwoSimTracks ) goodSimConversion=
true;
2019 if ( goodSimConversion ) {
2042 float minDelta=10000.;
2043 std::vector<reco::Photon> thePhotons;
2049 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
2051 thePhotons.push_back(aPho);
2052 float phiPho=aPho.
phi();
2053 float etaPho=aPho.
eta();
2056 if ( deltaPhi >
pi ) deltaPhi -= twopi;
2057 if ( deltaPhi < -
pi) deltaPhi += twopi;
2058 deltaPhi=
pow(deltaPhi,2);
2059 deltaEta=
pow(deltaEta,2);
2061 if ( delta<0.1 && delta < minDelta ) {
2068 if ( iMatch>-1 ) matched=
true;
2086 if ( ! matched)
continue;
2088 bool phoIsInBarrel=
false;
2089 bool phoIsInEndcap=
false;
2090 bool phoIsInEndcapP=
false;
2091 bool phoIsInEndcapM=
false;
2095 if ( fabs(matchingPho.
superCluster()->position().eta() ) < 1.479 ) {
2099 if ( matchingPho.
superCluster()->position().eta() > 0) phoIsInEndcapP=
true;
2100 if ( matchingPho.
superCluster()->position().eta() < 0) phoIsInEndcapM=
true;
2106 if ( phoIsInBarrel ) {
2109 if (!ecalRecHitHandle.
isValid()) {
2114 }
else if ( phoIsInEndcap ) {
2118 if (!ecalRecHitHandle.
isValid()) {
2127 float photonE = matchingPho.
energy();
2128 float photonEt= matchingPho.
energy()/cosh( matchingPho.
eta()) ;
2131 float r9 = matchingPho.
r9();
2132 float r1 = matchingPho.
r1x5();
2133 float r2 = matchingPho.
r2x5();
2145 float photonIso = matchingPho.
photonIso();
2148 float pfMVA = matchingPho.
pfMVA();
2153 std::vector< std::pair<DetId, float> >::const_iterator rhIt;
2154 bool atLeastOneDeadChannel=
false;
2156 for(rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
2159 if (rhIt->first == (*it).id() ) {
2160 if ( (*it).recoFlag() == 9 ) {
2161 atLeastOneDeadChannel=
true;
2170 if ( atLeastOneDeadChannel ) {
2266 p_eResVsEt_[0][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2276 if ( (*mcPho).isAConversion() == 0 ) {
2316 if ( photonE/(*mcPho).fourMomentum().e() < 0.3 && photonE/(*mcPho).fourMomentum().e() > 0.1 ) {
2322 if ( (r9>0.94 && phoIsInBarrel) || (r9>0.95 && phoIsInEndcap) ) {
2327 p_eResVsEt_[0][1]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2330 }
else if ( ( r9 <= 0.94&& phoIsInBarrel) || ( r9 <= 0.95&& phoIsInEndcap) ) {
2334 p_eResVsEt_[0][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2337 h2_eResVsEt_[0][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2345 if ( phoIsInBarrel ) {
2381 h2_eResVsEt_[1][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2383 p_eResVsEt_[1][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2391 p_eResVsEt_[1][1]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2397 p_eResVsEt_[1][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2399 h2_eResVsEt_[1][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2405 if ( phoIsInEndcap ) {
2448 h2_eResVsEt_[2][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2452 p_eResVsEt_[2][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2460 p_eResVsEt_[2][1]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2466 p_eResVsEt_[2][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2468 h2_eResVsEt_[2][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2478 if ( ! (visibleConversion && visibleConversionsWithTwoSimTracks ) )
continue;
2484 if ( phoIsInBarrel )
h_r9_[1][1]->
Fill( r9 );
2485 if ( phoIsInEndcap )
h_r9_[1][2]->
Fill( r9 );
2488 if ( fabs(mcEta_) <=1.) {
2503 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
2505 double like = aConv->MVAout();
2513 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
2514 if (tracks.size() < 1 )
continue;
2519 if ( tracks.size()==2 ) {
2527 if ( (fabs(mcEta_) > 1.1 && fabs (mcEta_) < 1.4 ) &&
2529 if ( fabs( aConv->pairCotThetaSeparation() ) >
dCotCutValue_ )
continue;
2536 std::map<const reco::Track*,TrackingParticleRef> myAss;
2537 std::map<const reco::Track*,TrackingParticleRef>::const_iterator itAss;
2538 std::map<reco::TrackRef,TrackingParticleRef>::const_iterator itAssMin;
2539 std::map<reco::TrackRef,TrackingParticleRef>::const_iterator itAssMax;
2543 for (
unsigned int i=0;
i<tracks.size();
i++) {
2560 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV;
2564 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q[
theConvTP_[0]];
2566 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q[
theConvTP_[1]];
2570 if ( !trackV.size() )
continue;
2606 float refP =-99999.;
2607 float refPt =-99999.;
2608 if ( aConv->conversionVertex().isValid() ) {
2609 refP=
sqrt(aConv->refittedPairMomentum().Mag2());
2610 refPt=
sqrt(aConv->refittedPairMomentum().perp2());
2612 float invM = aConv->pairInvariantMass();
2621 if ( tracks.size() ==1 ) {
2629 }
else if ( tracks.size() ==2 ) {
2638 if (aConv->caloCluster().size() !=0)
h_convEta_[1]->
Fill( aConv->caloCluster()[0]->eta() );
2641 float trkProvenance=3;
2642 if ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"outInEcalSeededConv" ) trkProvenance=0;
2643 if ( tracks[0]->algoName() ==
"inOutEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv" ) trkProvenance=1;
2644 if ( ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv") ||
2645 ( tracks[1]->algoName() ==
"outInEcalSeededConv" && tracks[0]->algoName() ==
"inOutEcalSeededConv") ) trkProvenance=2;
2646 if ( trkProvenance==3 ) {
2660 if ( phoIsInBarrel )
h_r9_[2][1]->
Fill( r9 );
2661 if ( phoIsInEndcap )
h_r9_[2][2]->
Fill( r9 );
2664 if (aConv->caloCluster().size() !=0)
h_convEta_[2]->
Fill( aConv->caloCluster()[0]->eta() );
2674 if ( aConv->conversionVertex().isValid() ) {
2676 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
2677 if ( chi2Prob > 0) {
2684 if ( chi2Prob > 0.0005) {
2695 if ( chi2Prob > 0.0005 ) {
2696 if (aConv->caloCluster().size() !=0) {
2699 h_convERes_[0][0]->
Fill( aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e() );
2708 if ( phoIsInBarrel ) {
2709 if (aConv->caloCluster().size() !=0)
h_convERes_[0][1]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e() );
2713 if ( phoIsInEndcap ) {
2714 if (aConv->caloCluster().size() !=0)
h_convERes_[0][2]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e() );
2737 float eoverp= -99999.;
2739 if ( aConv->conversionVertex().isValid() ) {
2740 eoverp= aConv->EoverPrefittedTracks();
2750 p_eResVsR_ ->
Fill ( mcConvR_, photonE / (*mcPho).fourMomentum().e() );
2783 float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
2798 if ( phoIsInBarrel ) {
2800 if ( aConv->conversionVertex().isValid() ) {
2818 if ( phoIsInEndcap ) {
2820 if ( aConv->conversionVertex().isValid() ) {
2833 if ( aConv->conversionVertex().isValid() ) {
2859 float signX= aConv->refittedPairMomentum().x()/fabs(aConv->refittedPairMomentum().x());
2860 float signY= aConv->refittedPairMomentum().y()/fabs(aConv->refittedPairMomentum().y());
2861 float signZ= aConv->refittedPairMomentum().z()/fabs(aConv->refittedPairMomentum().z());
2872 float thetaConv=aConv->refittedPairMomentum().Theta();
2873 float thetaSC=matchingPho.
superCluster()->position().theta();
2877 float zPV =
sqrt(rSC*rSC+zSC*zSC)*
sin( thetaConv - thetaSC)/
sin(thetaConv);
2884 if ( phoIsInBarrel ) {
2887 }
else if ( phoIsInEndcap) {
2890 }
else if ( phoIsInEndcapP) {
2893 }
else if ( phoIsInEndcapM) {
2899 p_dzPVVsR_ ->
Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z() );
2906 float dPhiTracksAtEcal=-99;
2907 float dEtaTracksAtEcal=-99;
2908 if (
fName_ !=
"pfPhotonValidator" &&
fName_ !=
"oldpfPhotonValidator" ) {
2909 if (aConv->bcMatchingWithTracks()[0].
isNonnull() && aConv->bcMatchingWithTracks()[1].
isNonnull() ) {
2912 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
2913 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
2914 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
2915 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
2916 float bcPhi1 = aConv->bcMatchingWithTracks()[0]->phi();
2917 float bcPhi2 = aConv->bcMatchingWithTracks()[1]->phi();
2924 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
2926 dEtaTracksAtEcal = recoEta1 -recoEta2;
2938 if ( phoIsInBarrel ) {
2943 if ( phoIsInEndcap ) {
2956 for (
unsigned int i=0;
i<tracks.size();
i++) {
2958 itAss= myAss.find( tfrb.
get() );
2959 if ( itAss == myAss.end() )
continue;
2961 float trkProvenance=3;
2962 if ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"outInEcalSeededConv" ) trkProvenance=0;
2963 if ( tracks[0]->algoName() ==
"inOutEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv" ) trkProvenance=1;
2964 if ( ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv") ||
2965 ( tracks[1]->algoName() ==
"outInEcalSeededConv" && tracks[0]->algoName() ==
"inOutEcalSeededConv") ) trkProvenance=2;
2981 float simPt =
sqrt( ((*itAss).second)->momentum().perp2() );
2986 if ( aConv->conversionVertex().isValid() ) {
2987 reco::Track refTrack= aConv->conversionVertex().refittedTracks()[
i];
2990 refPt=
sqrt (px*px + py*py );
2992 float ptres= refPt - simPt ;
2994 float pterror = aConv->conversionVertex().refittedTracks()[
i].ptError();
3006 if (
fName_ !=
"pfPhotonValidator" &&
fName_ !=
"oldpfPhotonValidator" )
3009 if ( phoIsInBarrel ) {
3013 if (
fName_ !=
"pfPhotonValidator" &&
fName_ !=
"oldpfPhotonValidator")
3017 if ( phoIsInEndcap ) {
3021 if (
fName_ !=
"pfPhotonValidator" &&
fName_ !=
"oldpfPhotonValidator")
3047 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3051 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
3053 double like = aConv->MVAout();
3056 const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
3057 if (tracks.size() < 2 )
continue;
3065 bool phoIsInBarrel=
false;
3066 bool phoIsInEndcap=
false;
3067 if ( fabs(aPho.
superCluster()->position().eta()) < 1.479 ) {
3075 if ( ( fabs(mcEta_) > 1.1 && fabs (mcEta_) < 1.4 ) &&
3077 if ( fabs( aConv->pairCotThetaSeparation() ) >
dCotCutValue_ )
continue;
3083 if ( aConv->conversionVertex().isValid() )
h_RecoConvTwoTracks_[2]->
Fill( aConv->conversionVertex().position().perp2() );
3090 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
3092 float mcPhi= (*mcPho).fourMomentum().phi();
3095 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
3103 if ( fabs(mcEta_) > END_HI )
continue;
3109 if ( (*mcPho).isAConversion() != 1 )
continue;
3110 if (!( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
3111 ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) )
3118 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
3119 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
3120 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
3130 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV1, trackV2;
3132 std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1[tk1];
3133 std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2[tk2];
3135 if (tp1.size()&&tp2.size()) {
3139 if (
abs(tpr1->pdgId())==11&&
abs(tpr2->pdgId())==11) {
3140 if ( (tpr1->parentVertex()->sourceTracks_end()-tpr1->parentVertex()->sourceTracks_begin()==1) &&
3141 (tpr2->parentVertex()->sourceTracks_end()-tpr2->parentVertex()->sourceTracks_begin()==1)) {
3142 if (tpr1->parentVertex().
key()==tpr2->parentVertex().
key() && ((*tpr1->parentVertex()->sourceTracks_begin())->
pdgId()==22)) {
3194 if ( aConv->conversionVertex().isValid() )
h_RecoConvTwoMTracks_[2]->
Fill( aConv->conversionVertex().position().perp2() );
3202 if ( aConv->conversionVertex().isValid() ) {
3205 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
3206 double convR=
sqrt(aConv->conversionVertex().position().perp2());
3207 double scalar = aConv->conversionVertex().position().x()*aConv->pairMomentum().x() +
3208 aConv->conversionVertex().position().y()*aConv->pairMomentum().y();
3212 if ( scalar < 0 ) convR= -
sqrt(aConv->conversionVertex().position().perp2());
3213 h_convVtxRvsZ_[0] ->
Fill ( fabs (aConv->conversionVertex().position().z() ),
sqrt(aConv->conversionVertex().position().perp2()) ) ;
3215 if (aConv->caloCluster().size() !=0) {
3217 if ( fabs(aConv->caloCluster()[0]->eta() ) <= 1.) {
3219 h_convVtxYvsX_ ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
3220 h_convVtxRvsZ_[1] ->
Fill ( fabs (aConv->conversionVertex().position().z() ), convR ) ;
3223 h_convVtxYvsX_zoom_[0] ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
3224 h_convVtxYvsX_zoom_[1] ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
3230 if ( fabs(aConv->caloCluster()[0]->eta() ) > 1.)
h_convVtxRvsZ_[2] ->
Fill ( fabs (aConv->conversionVertex().position().z() ), convR ) ;
3236 h_vtxChi2_[0]->
Fill( aConv->conversionVertex().normalizedChi2() );
3237 if ( phoIsInBarrel ) {
3239 h_vtxChi2_[1]->
Fill( aConv->conversionVertex().normalizedChi2() );
3241 if ( phoIsInEndcap ) {
3243 h_vtxChi2_[2]->
Fill( aConv->conversionVertex().normalizedChi2() );
3258 for (reco::GenJetCollection::const_iterator genJetIter = genJetCollection.begin();
3259 genJetIter != genJetCollection.end(); ++genJetIter) {
3262 if ( fabs(genJetIter->eta()) > 2.5 )
continue;
3264 float mcJetPhi= genJetIter->phi();
3267 float mcJetPt = genJetIter->pt() ;
3275 std::vector<reco::Photon> thePhotons;
3279 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3281 float phiPho=aPho.
phi();
3282 float etaPho=aPho.
eta();
3285 if ( deltaPhi >
pi ) deltaPhi -= twopi;
3286 if ( deltaPhi < -
pi) deltaPhi += twopi;
3287 deltaPhi=
pow(deltaPhi,2);
3288 deltaEta=
pow(deltaEta,2);
3289 float delta =
sqrt( deltaPhi+deltaEta);
3291 matchingPho = * iPho;
3298 if (! matched )
continue;
3306 bool phoIsInBarrel=
false;
3307 bool phoIsInEndcap=
false;
3308 if ( fabs(matchingPho.
superCluster()->position().eta() ) < 1.479 ) {
3314 if ( phoIsInBarrel ) {
3317 if (!ecalRecHitHandle.
isValid()) {
3322 }
else if ( phoIsInEndcap ) {
3326 if (!ecalRecHitHandle.
isValid()) {
3336 float photonE = matchingPho.
energy();
3337 float photonEt= matchingPho.
et();
3338 float r9 = matchingPho.
r9();
3339 float r1 = matchingPho.
r1x5();
3340 float r2 = matchingPho.
r2x5();
3347 std::vector< std::pair<DetId, float> >::const_iterator rhIt;
3349 bool atLeastOneDeadChannel=
false;
3351 for(rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
3354 if (rhIt->first == (*it).id() ) {
3355 if ( (*it).recoFlag() == 9 ) {
3356 atLeastOneDeadChannel=
true;
3364 if ( atLeastOneDeadChannel ) {
3441 if ( phoIsInBarrel ) {
3469 }
else if ( phoIsInEndcap ) {
3501 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
3504 const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
3505 double like = aConv->MVAout();
3507 if ( tracks.size() < 2 )
continue;
3508 if (aConv->caloCluster().size() !=0) {
3513 float eoverp= aConv->EoverP();
3517 float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
3520 if ( phoIsInBarrel ) {
3526 }
else if ( phoIsInEndcap ) {
3534 if ( aConv->conversionVertex().isValid() ) {
3536 double convR=
sqrt(aConv->conversionVertex().position().perp2());
3537 double scalar = aConv->conversionVertex().position().x()*aConv->pairMomentum().x() +
3538 aConv->conversionVertex().position().y()*aConv->pairMomentum().y();
3539 if ( scalar < 0 ) convR= -
sqrt(aConv->conversionVertex().position().perp2());
3542 h_convVtxRvsZBkg_[0] ->
Fill ( fabs (aConv->conversionVertex().position().z() ),
sqrt(aConv->conversionVertex().position().perp2()) ) ;
3543 if ( aConv->caloCluster().size() !=0 && fabs(aConv->caloCluster()[0]->eta() ) <= 1. ) {
3544 h_convVtxYvsXBkg_ ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_convVtxdX_endcap_
virtual double energy() const GCC11_FINAL
energy
T getParameter(std::string const &) const
MonitorElement * h_zPVFromTracks_[5]
MonitorElement * h_OIinnermostHitR_
MonitorElement * h2_nTrkSolidConeDR04VsEta_[3]
MonitorElement * p_hOverEVsEtBkg_
MonitorElement * h_nSimPho_[2]
MonitorElement * p_DPhiTracksAtEcalVsR_
virtual double et() const GCC11_FINAL
transverse energy
float hcalTowerSumEtConeDR04() const
Hcal isolation sum.
MonitorElement * h_scBkgPhi_
PhotonMCTruthFinder * thePhotonMCTruthFinder_
MonitorElement * h2_Chi2VsR_[3]
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
MonitorElement * h_sigmaIetaIeta_[3][3]
MonitorElement * p_sceResVsR9_[3]
MonitorElement * h_DPhiTracksAtEcal_[2][3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEta_[3]
MonitorElement * h_IOinnermostHitR_
MonitorElement * h_phoBkgDPhi_
const Vector & momentum() const
track momentum vector
MonitorElement * h_DPhiTracksAtVtx_[2][3]
MonitorElement * p_EoverEtrueVsEta_[3]
MonitorElement * p_EoverPVsEta_[3]
MonitorElement * h_convVtxdZ_
MonitorElement * h_newhOverE_[3][3]
MonitorElement * h_phoBkgPhi_
MonitorElement * h_chHadIso_[3]
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
MonitorElement * h_phoPhi_[2]
MonitorElement * h_hcalTowerBcSumEtConeDR04_[3][3]
std::vector< TrackingParticle > TrackingParticleCollection
MonitorElement * h2_PoverPtrueVsEoverP_[3]
MonitorElement * h_mvaOut_[3]
MonitorElement * h_scE_[2][3]
const_iterator end() const
last iterator over the map (read only)
float neutralHadronIso() const
MonitorElement * h_nRecoVtx_
std::string photonCollectionProducer_
MonitorElement * h_convVtxRvsZ_zoom_[2]
std::string photonCollection_
MonitorElement * h2_hOverEVsEt_[3]
MonitorElement * p_hcalTowerSumEtConeDR04VsEt_[3]
MonitorElement * p_isoTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h_DPhiTracksAtVtxBkg_[3]
MonitorElement * h2_EoverPVsR_[3]
MonitorElement * h_phoEt_[2][3]
MonitorElement * h_DEtaTracksAtEcal_[2][3]
MonitorElement * h_phoEResRegr2_[3][3]
MonitorElement * p_convVtxdYVsY_
MonitorElement * h_phoDEta_[2]
MonitorElement * h_SimJet_[3]
MonitorElement * h2_convVtxdRVsEta_
MonitorElement * h_RecoConvTwoMTracks_[5]
MonitorElement * h_convVtxdY_
MonitorElement * h_scEtaWidth_[2]
Sin< T >::type sin(const T &t)
float trkSumPtSolidConeDR04() const
MonitorElement * h2_hOverEVsEtaBkg_
MonitorElement * h2_DCotTracksVsEta_
std::vector< GenJet > GenJetCollection
collection of GenJet objects
const_iterator find(const key_type &k) const
find element with specified reference key
MonitorElement * h2_etaVsRsim_[3]
MonitorElement * h2_PtRecVsPtSim_[3]
MonitorElement * h2_PoverPtrueVsEta_[3]
MonitorElement * h_convVtxdZ_endcap_
std::vector< EcalRecHit >::const_iterator const_iterator
MonitorElement * h_scEt_[2][3]
MonitorElement * h_dzPVFromTracks_[5]
MonitorElement * p_EoverEtrueVsR_[3]
MonitorElement * h2_sigmaIetaIetaVsEtBkg_[3]
MonitorElement * h_ecalRecHitSumEtConeDR04Bkg_[3]
MonitorElement * h_simConvVtxRvsZ_[4]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEt_[3]
MonitorElement * h_MatchedSimJet_[3]
TrackAssociatorBase * theTrackAssociator_
MonitorElement * p_r2VsEtBkg_
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
float ecalRecHitSumEtConeDR04() const
MonitorElement * h2_isoTrkSolidConeDR04VsEtaBkg_
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
MonitorElement * h2_r1VsEtaBkg_
MonitorElement * h2_isoTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h_TkD0_[3]
MonitorElement * h_convVtxdY_endcap_
MonitorElement * p_eResVsR9_[3]
MonitorElement * h_etOutsideMustache_[3]
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * p_DPhiTracksAtVtxVsR_
MonitorElement * h_convVtxdR_endcap_
const_iterator end() const
Termination of iteration.
MonitorElement * p_newhOverEVsEta_[3]
MonitorElement * h2_convVtxRrecVsTrue_
MonitorElement * h2_DCotTracksVsR_
MonitorElement * h2_PtRecVsPtSimMixProv_
MonitorElement * h_convEtaBkg_
const_iterator begin() const
Initialize an iterator over the RefVector.
MonitorElement * h_scPhi_[2]
MonitorElement * h2_r2VsEtaBkg_
MonitorElement * h_convVtxdPhi_
MonitorElement * h_scBkgE_[3]
MonitorElement * h_convERes_[2][3]
MonitorElement * p_Chi2VsR_[3]
MonitorElement * h_SimPho_[3]
Denominator for efficiencies.
float getCorrectedEnergy(P4type type) const
MonitorElement * h2_r2VsEtBkg_
MonitorElement * p_r2VsEtaBkg_
MonitorElement * h_convVtxRvsZ_[3]
MonitorElement * h_convPhi_[2]
MonitorElement * h_nConv_[2][3]
info per conversion
MonitorElement * h2_isoTrkSolidConeDR04VsEt_[3]
MonitorElement * h_r9_[3][3]
MonitorElement * h2_sigmaIetaIetaVsEta_[3]
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
MonitorElement * p_EoverPVsR_[3]
bool isNonnull() const
Checks for non-null.
MonitorElement * h2_sceResVsR9_[3]
MonitorElement * h_phoEta_[2]
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
MonitorElement * h2_Chi2VsEta_[3]
MonitorElement * h_simTkPt_
MonitorElement * h_mvaOutBkg_[3]
MonitorElement * h2_dzPVVsR_
MonitorElement * h_scEta_[2]
MonitorElement * h_convVtxdX_barrel_
MonitorElement * h2_hOverEVsEta_[3]
MonitorElement * p_eResVsR_
MonitorElement * p_hcalTowerSumEtConeDR04VsEtBkg_[3]
MonitorElement * h_tkChi2Large_[2]
MonitorElement * h2_r1VsEt_[3]
MonitorElement * h_trkProv_[2]
MonitorElement * p_sigmaIetaIetaVsEtaBkg_
edm::ParameterSet parameters_
double dPhi(double phi1, double phi2)
MonitorElement * p_convVtxdRVsEta_
MonitorElement * h_r1_[3][3]
MonitorElement * h_EoverPTracks_[2][3]
MonitorElement * h_scPhiWidth_[2]
MonitorElement * h2_etaVsRreco_[3]
MonitorElement * h2_r9VsEta_[3]
reco::ConversionRefVector conversions() const
vector of references to Conversion's
MonitorElement * h2_r1VsEta_[3]
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
float hcalTowerSumEtBcConeDR04() const
Hcal isolation sum subtracting the hadronic energy in towers behind the BCs in the SC...
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtaBkg_
float phiNormalization(float &a)
MonitorElement * h2_r2VsEta_[3]
MonitorElement * h_isoTrkSolidConeDR04_[3][3]
MonitorElement * p_hOverEVsEt_[3]
std::string conversionIOTrackProducer_
MonitorElement * h_EtR9Less093_[3][3]
MonitorElement * h2_eResVsEt_[3][3]
MonitorElement * h_r9VsNofTracks_[2][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_[3][3]
float sigmaIetaIeta() const
MonitorElement * h_phoEResRegr1_[3][3]
MonitorElement * h2_r9VsEtBkg_
MonitorElement * p_hOverEVsEta_[3]
MonitorElement * h2_TkPtPull_[3]
MonitorElement * h_MatchedSimPhoBadCh_[3]
MonitorElement * h_MatchedSimJetBadCh_[3]
MonitorElement * h_convVtxdEta_
MonitorElement * h_r2_[3][3]
MonitorElement * p_nHitsVsEta_[2]
MonitorElement * h_convVtxdY_barrel_
float ChiSquaredProbability(double chiSquared, double nrDOF)
MonitorElement * p_sigmaIetaIetaVsEtBkg_[3]
MonitorElement * h2_EoverEtrueVsEta_[3]
MonitorElement * h_phoBkgDEta_
MonitorElement * h_simTkEta_
float hadTowOverEm() const
the ration of hadronic energy in towers behind the BCs in the SC and the SC energy ...
MonitorElement * nHitsVsEta_[2]
std::string conversionOITrackProducer_
MonitorElement * p_nTrkSolidConeDR04VsEtaBkg_
MonitorElement * h2_sigmaIetaIetaVsEtaBkg_
MonitorElement * h_gamgamMassRegr1_[3][3]
MonitorElement * p_convVtxdXVsX_
MonitorElement * p_dzPVVsR_
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
double convTrackMinPtCut_
MonitorElement * hBCEnergyOverTrackPout_[3]
MonitorElement * h_PoverETracksBkg_[3]
MonitorElement * h_invMass_[2][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
MonitorElement * h2_EoverEtrueVsEoverP_[3]
MonitorElement * h_phoE_[2][3]
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_hOverE_[3][3]
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * h_hOverEBkg_[3]
virtual reco::RecoToSimCollection associateRecoToSim(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event, const edm::EventSetup *setup) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
MonitorElement * h_SimPhoMotherEt_[2]
MonitorElement * h2_eResVsR9_[3]
MonitorElement * nHitsVsR_[2]
virtual float eta() const GCC11_FINAL
momentum pseudorapidity
MonitorElement * h_r1Bkg_[3]
float etOutsideMustache() const
const_iterator end() const
MonitorElement * h_convVtxdX_
MonitorElement * p_isoTrkSolidConeDR04VsEtaBkg_
virtual reco::SimToRecoCollection associateSimToReco(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event, const edm::EventSetup *setup) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
MonitorElement * h2_DPhiTracksAtVtxVsR_
MonitorElement * h_convVtxYvsXBkg_
MonitorElement * h_TkPtPull_[3]
edm::InputTag endcapEcalHits_
MonitorElement * h2_EoverPVsEta_[3]
edm::ESHandle< CaloGeometry > theCaloGeom_
MonitorElement * h_nTrkSolidConeDR04Bkg_[3]
MonitorElement * p_DCotTracksVsEta_
MonitorElement * h_convPtRes_[2][3]
MonitorElement * h2_nTrkSolidConeDR04VsEtaBkg_
MonitorElement * h_r2Bkg_[3]
MonitorElement * h_MatchedSimPho_[3]
Numerator for efficiencies.
MonitorElement * p_convVtxdRVsR_
MonitorElement * h_convVtxRvsZBkg_[2]
MonitorElement * p_Chi2VsEta_[3]
MonitorElement * h_nHadIso_[3]
MonitorElement * h2_hOverEVsEtBkg_
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEtBkg_[3]
void clear()
Clear the vector.
MonitorElement * h_nSimConv_[2]
MonitorElement * h_nTrkSolidConeDR04_[3][3]
MonitorElement * h_sigmaIetaIetaBkg_[3]
MonitorElement * h2_EoverEtrueVsR_[3]
MonitorElement * p_hcalTowerBcSumEtConeDR04VsEta_[3]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0_[5]
MonitorElement * h_gamgamMass_[3][3]
MonitorElement * p_PoverPtrueVsEta_[3]
MonitorElement * h_r9Bkg_[3]
MonitorElement * h_phoERes_[3][3]
MonitorElement * h_isoTrkSolidConeDR04Bkg_[3]
MonitorElement * h2_r9VsEtaBkg_
key_type key() const
Accessor for product key.
MonitorElement * h_convVtxYvsX_zoom_[2]
MonitorElement * h_nCluOutsideMustache_[3]
MonitorElement * h_hcalTowerSumEtConeDR04_[3][3]
int nTrkSolidConeDR04() const
MonitorElement * h2_nTrkSolidConeDR04VsEt_[3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEtBkg_[3]
std::vector< Photon > PhotonCollection
collectin of Photon objects
MonitorElement * h2_r1VsEtBkg_
MonitorElement * h_DCotTracksBkg_[3]
T const * product() const
MonitorElement * h_phoIso_[3]
MonitorElement * p_ecalRecHitSumEtConeDR04VsEta_[3]
MonitorElement * p_r1VsEtaBkg_
MonitorElement * h_PoverETracks_[2][3]
float etaTransformation(float a, float b)
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEt_[3]
std::vector< PhotonMCTruth > find(const std::vector< SimTrack > &simTracks, const std::vector< SimVertex > &simVertices)
MonitorElement * h_vtxChi2_[3]
MonitorElement * p_nTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * p_hcalTowerBcSumEtConeDR04VsEt_[3]
MonitorElement * h_pfMva_[3]
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtBkg_[3]
MonitorElement * h_hcalTowerSumEtConeDR04Bkg_[3]
MonitorElement * p_convVtxdZVsZ_
MonitorElement * p_hcalTowerSumEtConeDR04VsEta_[3]
MonitorElement * p_r1VsEtBkg_
MonitorElement * h_phoBkgEt_[3]
MonitorElement * h2_isoTrkSolidConeDR04VsEta_[3]
MonitorElement * h_SimPhoMotherEta_[2]
int nClusterOutsideMustache() const
MonitorElement * h_EoverPTracksBkg_[3]
MonitorElement * h_convVtxdR_barrel_
void push_back(const RefToBase< T > &)
MonitorElement * h_VisSimConv_[6]
MonitorElement * h_SimConvTwoMTracks_[5]
MonitorElement * h2_nTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEtaBkg_
MonitorElement * p_eResVsEt_[3][3]
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
size_type size() const
Size of the RefVector.
MonitorElement * h_convVtxYvsX_
MonitorElement * h_phoBkgE_[3]
MonitorElement * p_hOverEVsEtaBkg_
MonitorElement * h_RecoConvTwoTracks_[5]
MonitorElement * h_DCotTracks_[2][3]
MonitorElement * h2_DPhiTracksAtEcalVsR_
MonitorElement * p_eResVsEta_[3]
edm::RefVector< TrackingParticleCollection > theConvTP_
MonitorElement * h_AllSimConv_[5]
MonitorElement * h_vtxChi2Prob_[3]
MonitorElement * h_scBkgEta_
MonitorElement * p_nHitsVsR_[2]
MonitorElement * h2_convVtxdRVsR_
MonitorElement * h_gamgamMassRegr2_[3][3]
MonitorElement * p_newhOverEVsEt_[3]
MonitorElement * h2_r2VsEt_[3]
MonitorElement * h_convVtxdR_
MonitorElement * h_convVtxdZ_barrel_
MonitorElement * h_SimConvOneTracks_[5]
MonitorElement * h_convEta_[3]
value_type const * get() const
MonitorElement * p_hcalTowerSumEtConeDR04VsEtaBkg_
MonitorElement * p_ecalRecHitSumEtConeDR04VsEt_[3]
tuple size
Write out results.
double mcPhi_
global variable for the MC photon
Power< A, B >::type pow(const A &a, const B &b)
MonitorElement * h_SimConvTwoTracks_[5]
MonitorElement * h2_sigmaIetaIetaVsEt_[3]
edm::InputTag barrelEcalHits_
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEtaBkg_
MonitorElement * h_scBkgEt_[3]
MonitorElement * h2_DPhiTracksAtEcalVsEta_
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEta_[3]
MonitorElement * h_SimConvEtaPix_[2]
MonitorElement * h2_eResVsEta_[3]
const_iterator begin() const
MonitorElement * p_DPhiTracksAtVtxVsEta_
MonitorElement * p_DPhiTracksAtEcalVsEta_
MonitorElement * h_phoDPhi_[2]
MonitorElement * h_convPhiBkg_
MonitorElement * h_phoBkgEta_
MonitorElement * h2_r9VsEt_[3]
MonitorElement * h_tkChi2_[2]
MonitorElement * p_dzPVVsEta_
double scalar(const CLHEP::HepGenMatrix &m)
Return the matrix as a scalar. Raise an assertion if the matris is not .