1489 using namespace edm;
1493 const float BARL = 1.4442;
1495 const float END_HI = 2.5;
1501 LogInfo(
"PhotonValidator") <<
"PhotonValidator Analyzing event number: " << e.
id() <<
" Global Counter " <<
nEvt_ <<
"\n";
1509 e.
getByLabel(
"offlinePrimaryVertices", vtxH);
1521 if (!photonHandle.isValid()) {
1522 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the Photon collection "<< std::endl;
1544 for (
trackingRecHit_iterator itHits=iTk->extra()->recHitsBegin(); itHits!=iTk->extra()->recHitsEnd(); ++itHits ) {
1545 if ( (*itHits)->isValid() ) {
1565 for (
trackingRecHit_iterator itHits=iTk->extra()->recHitsBegin(); itHits!=iTk->extra()->recHitsEnd(); ++itHits ) {
1566 if ( (*itHits)->isValid() ) {
1583 std::vector<SimTrack> theSimTracks;
1584 std::vector<SimVertex> theSimVertices;
1599 theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
1600 theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
1605 const HepMC::GenEvent *myGenEvent = hepMC->GetEvent();
1610 e.
getByLabel(
"iterativeCone5GenJets",
"",GenJetsHandle);
1628 std::vector<reco::PhotonCollection::const_iterator> StoRMatchedConvertedPhotons;
1646 vector<reco::SimToRecoCollection*> StoRCollPtrs;
1647 StoRCollPtrs.push_back(&OISimToReco);
1648 StoRCollPtrs.push_back(&IOSimToReco);
1649 vector<reco::RecoToSimCollection*> RtoSCollPtrs;
1650 RtoSCollPtrs.push_back(&OIRecoToSim);
1651 RtoSCollPtrs.push_back(&IORecoToSim);
1653 for (
int i=0;
i<2;
i++)
1655 for (
int i=0;
i<2;
i++)
1659 std::vector<reco::Photon> myPhotons;
1660 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
1661 if ( fabs(iPho->eta()) > 2.5 )
continue;
1662 myPhotons.push_back(*iPho);
1665 std::sort(myPhotons.begin(), myPhotons.end(), sortPhotons());
1667 if ( myPhotons.size() >=2 ) {
1668 if ( myPhotons[0].et() > 40 && myPhotons[1].et() > 25 ) {
1673 float gamgamMass2 = p12.Dot(p12);
1674 float gamgamMass2_regr1 = p12_regr1.Dot(p12_regr1);
1675 float gamgamMass2_regr2 = p12_regr2.Dot(p12_regr2);
1678 if ( gamgamMass2 > 0 ) {
1681 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1683 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1684 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1685 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1688 if ( myPhotons[0].r9() > 0.94 && myPhotons[1].r9() > 0.94 ) {
1690 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1692 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1693 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1694 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1702 if ( chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005 ) {
1704 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1707 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1708 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1709 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1715 if ( myPhotons[0].
conversions()[0]->nTracks() ==2 ) {
1717 if ( chi2Prob1 > 0.0005 ) {
1719 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1722 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1728 if ( myPhotons[1].
conversions()[0]->nTracks() ==2 ) {
1730 if ( chi2Prob1 > 0.0005 ) {
1732 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1735 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1744 if ( gamgamMass2_regr1 > 0 ) {
1747 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1749 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1750 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1751 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1754 if ( myPhotons[0].r9() > 0.94 && myPhotons[1].r9() > 0.94 ) {
1756 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1758 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1759 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1760 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1770 if ( chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005 ) {
1772 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1775 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1776 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1777 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1783 if ( myPhotons[0].
conversions()[0]->nTracks() ==2 ) {
1785 if ( chi2Prob1 > 0.0005 ) {
1787 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1790 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1796 if ( myPhotons[1].
conversions()[0]->nTracks() ==2 ) {
1798 if ( chi2Prob1 > 0.0005 ) {
1800 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1803 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1813 if ( gamgamMass2_regr2 > 0 ) {
1816 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1818 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1819 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1820 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1823 if ( myPhotons[0].r9() > 0.94 && myPhotons[1].r9() > 0.94 ) {
1825 if ( myPhotons[0].isEB() && myPhotons[1].isEB() )
1827 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1828 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1829 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1839 if ( chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005 ) {
1841 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1844 if ( ( myPhotons[0].isEE() && myPhotons[1].isEE() ) ||
1845 ( myPhotons[0].isEE() && myPhotons[1].isEB() ) ||
1846 ( myPhotons[0].isEB() && myPhotons[1].isEE() ) )
1852 if ( myPhotons[0].
conversions()[0]->nTracks() ==2 ) {
1854 if ( chi2Prob1 > 0.0005 ) {
1856 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1859 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1865 if ( myPhotons[1].
conversions()[0]->nTracks() ==2 ) {
1867 if ( chi2Prob1 > 0.0005 ) {
1869 if ( myPhotons[0].isEB() && myPhotons[1].isEB() ) {
1872 if ( myPhotons[0].isEE() || myPhotons[1].isEE() ) {
1897 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
1898 if ( (*mcPho).fourMomentum().et() <
minPhoEtCut_ )
continue;
1900 for ( HepMC::GenEvent::particle_const_iterator mcIter=myGenEvent->particles_begin(); mcIter != myGenEvent->particles_end(); mcIter++ ) {
1901 if ( (*mcIter)->pdg_id() != 22 )
continue;
1902 bool isTheSame=
false;
1904 if ( (*mcIter)->production_vertex() ) {
1905 if ( (*mcIter)->production_vertex()->particles_begin(
HepMC::parents) !=
1907 mother = *((*mcIter)->production_vertex()->particles_begin(
HepMC::parents));
1913 float mcPhi= (*mcPho).fourMomentum().phi();
1915 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
1917 mcConvR_= (*mcPho).vertex().perp();
1924 if ( fabs(
mcEta_) > END_HI )
continue;
1929 || (mother != 0 && mother->pdg_id() == 22)
1930 || (mother != 0 && mother->pdg_id() == 25)
1931 || (mother != 0 && mother->pdg_id() == 35) )
1935 double dPt = fabs((*mcIter)->momentum().perp() - (*mcPho).fourMomentum().et());
1936 float phiMother=(*mcIter)->momentum().phi();
1938 double dEta = fabs( (*mcIter)->momentum().eta() - (*mcPho).fourMomentum().pseudoRapidity() );
1943 if ( dEta <=0.0001 && dPhi <=0.0001 && dPt <=0.0001)
1947 if ( ! isTheSame )
continue;
1971 bool goodSimConversion=
false;
1972 bool visibleConversion=
false;
1973 bool visibleConversionsWithTwoSimTracks=
false;
1974 if ( (*mcPho).isAConversion() == 1 ) {
1986 if ( ( fabs(
mcEta_) <= BARL && mcConvR_ <85 ) ||
1987 ( fabs(
mcEta_) > BARL && fabs(
mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) visibleConversion=
true;
1999 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.001 &&
2000 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.001 &&
2001 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.001) {
2011 if (
theConvTP_.
size() == 2 ) visibleConversionsWithTwoSimTracks=
true;
2012 goodSimConversion=
false;
2014 if ( visibleConversion && visibleConversionsWithTwoSimTracks ) goodSimConversion=
true;
2015 if ( goodSimConversion ) {
2038 float minDelta=10000.;
2039 std::vector<reco::Photon> thePhotons;
2045 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
2047 thePhotons.push_back(aPho);
2048 float phiPho=aPho.
phi();
2049 float etaPho=aPho.
eta();
2052 if ( deltaPhi >
pi ) deltaPhi -= twopi;
2053 if ( deltaPhi < -
pi) deltaPhi += twopi;
2054 deltaPhi=
pow(deltaPhi,2);
2055 deltaEta=
pow(deltaEta,2);
2057 if ( delta<0.1 && delta < minDelta ) {
2064 if ( iMatch>-1 ) matched=
true;
2082 if ( ! matched)
continue;
2084 bool phoIsInBarrel=
false;
2085 bool phoIsInEndcap=
false;
2086 bool phoIsInEndcapP=
false;
2087 bool phoIsInEndcapM=
false;
2091 if ( fabs(matchingPho.
superCluster()->position().eta() ) < 1.479 ) {
2095 if ( matchingPho.
superCluster()->position().eta() > 0) phoIsInEndcapP=
true;
2096 if ( matchingPho.
superCluster()->position().eta() < 0) phoIsInEndcapM=
true;
2100 if ( phoIsInBarrel ) {
2103 if (!ecalRecHitHandle.
isValid()) {
2108 }
else if ( phoIsInEndcap ) {
2112 if (!ecalRecHitHandle.
isValid()) {
2121 float photonE = matchingPho.
energy();
2122 float photonEt= matchingPho.
energy()/cosh( matchingPho.
eta()) ;
2125 float r9 = matchingPho.
r9();
2126 float r1 = matchingPho.
r1x5();
2127 float r2 = matchingPho.
r2x5();
2139 float photonIso = matchingPho.
photonIso();
2142 float pfMVA = matchingPho.
pfMVA();
2145 std::vector< std::pair<DetId, float> >::const_iterator rhIt;
2146 bool atLeastOneDeadChannel=
false;
2148 for(rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
2151 if (rhIt->first == (*it).id() ) {
2152 if ( (*it).recoFlag() == 9 ) {
2153 atLeastOneDeadChannel=
true;
2161 if ( atLeastOneDeadChannel ) {
2256 p_eResVsEt_[0][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2263 if ( (*mcPho).isAConversion() == 0 ) {
2303 if ( photonE/(*mcPho).fourMomentum().e() < 0.3 && photonE/(*mcPho).fourMomentum().e() > 0.1 ) {
2309 if ( (r9>0.94 && phoIsInBarrel) || (r9>0.95 && phoIsInEndcap) ) {
2314 p_eResVsEt_[0][1]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2317 }
else if ( ( r9 <= 0.94&& phoIsInBarrel) || ( r9 <= 0.95&& phoIsInEndcap) ) {
2321 p_eResVsEt_[0][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2324 h2_eResVsEt_[0][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2332 if ( phoIsInBarrel ) {
2368 h2_eResVsEt_[1][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2370 p_eResVsEt_[1][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2378 p_eResVsEt_[1][1]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2384 p_eResVsEt_[1][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2386 h2_eResVsEt_[1][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2391 if ( phoIsInEndcap ) {
2427 h2_eResVsEt_[2][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2430 p_eResVsEt_[2][0]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2438 p_eResVsEt_[2][1]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2444 p_eResVsEt_[2][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2446 h2_eResVsEt_[2][2]->
Fill ((*mcPho).fourMomentum().et(), photonE/(*mcPho).fourMomentum().e() ) ;
2455 if ( ! (visibleConversion && visibleConversionsWithTwoSimTracks ) )
continue;
2459 if ( phoIsInBarrel )
h_r9_[1][1]->
Fill( r9 );
2460 if ( phoIsInEndcap )
h_r9_[1][2]->
Fill( r9 );
2463 if ( fabs(mcEta_) <=1.) {
2477 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
2479 double like = aConv->MVAout();
2487 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
2488 if (tracks.size() < 1 )
continue;
2493 if ( tracks.size()==2 ) {
2501 if ( (fabs(mcEta_) > 1.1 && fabs (mcEta_) < 1.4 ) &&
2503 if ( fabs( aConv->pairCotThetaSeparation() ) >
dCotCutValue_ )
continue;
2510 std::map<const reco::Track*,TrackingParticleRef> myAss;
2511 std::map<const reco::Track*,TrackingParticleRef>::const_iterator itAss;
2512 std::map<reco::TrackRef,TrackingParticleRef>::const_iterator itAssMin;
2513 std::map<reco::TrackRef,TrackingParticleRef>::const_iterator itAssMax;
2517 for (
unsigned int i=0;
i<tracks.size();
i++) {
2533 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV;
2537 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q[
theConvTP_[0]];
2539 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >) q[
theConvTP_[1]];
2543 if ( !trackV.size() )
continue;
2579 float refP =-99999.;
2580 float refPt =-99999.;
2581 if ( aConv->conversionVertex().isValid() ) {
2582 refP=
sqrt(aConv->refittedPairMomentum().Mag2());
2583 refPt=
sqrt(aConv->refittedPairMomentum().perp2());
2585 float invM = aConv->pairInvariantMass();
2593 if ( tracks.size() ==1 ) {
2601 }
else if ( tracks.size() ==2 ) {
2611 float trkProvenance=3;
2612 if ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"outInEcalSeededConv" ) trkProvenance=0;
2613 if ( tracks[0]->algoName() ==
"inOutEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv" ) trkProvenance=1;
2614 if ( ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv") ||
2615 ( tracks[1]->algoName() ==
"outInEcalSeededConv" && tracks[0]->algoName() ==
"inOutEcalSeededConv") ) trkProvenance=2;
2616 if ( trkProvenance==3 ) {
2630 if ( phoIsInBarrel )
h_r9_[2][1]->
Fill( r9 );
2631 if ( phoIsInEndcap )
h_r9_[2][2]->
Fill( r9 );
2644 if ( aConv->conversionVertex().isValid() ) {
2645 if ( trkProvenance==3 )
std::cout <<
" PhotonValidator provenance of tracks is mixed and vertex is valid " << std::endl;
2646 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
2647 if ( chi2Prob > 0) {
2654 if ( chi2Prob > 0.0005) {
2664 if ( chi2Prob > 0.0005 ) {
2667 h_convERes_[0][0]->
Fill( aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e() );
2675 if ( phoIsInBarrel ) {
2676 h_convERes_[0][1]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e() );
2680 if ( phoIsInEndcap ) {
2681 h_convERes_[0][2]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e() );
2701 float eoverp= -99999.;
2703 if ( aConv->conversionVertex().isValid() ) {
2704 eoverp= aConv->EoverPrefittedTracks();
2714 p_eResVsR_ ->
Fill ( mcConvR_, photonE / (*mcPho).fourMomentum().e() );
2747 float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
2761 if ( phoIsInBarrel ) {
2763 if ( aConv->conversionVertex().isValid() ) {
2780 if ( phoIsInEndcap ) {
2782 if ( aConv->conversionVertex().isValid() ) {
2795 if ( aConv->conversionVertex().isValid() ) {
2821 float signX= aConv->refittedPairMomentum().x()/fabs(aConv->refittedPairMomentum().x());
2822 float signY= aConv->refittedPairMomentum().y()/fabs(aConv->refittedPairMomentum().y());
2823 float signZ= aConv->refittedPairMomentum().z()/fabs(aConv->refittedPairMomentum().z());
2834 float thetaConv=aConv->refittedPairMomentum().Theta();
2835 float thetaSC=matchingPho.
superCluster()->position().theta();
2839 float zPV =
sqrt(rSC*rSC+zSC*zSC)*
sin( thetaConv - thetaSC)/
sin(thetaConv);
2845 if ( phoIsInBarrel ) {
2848 }
else if ( phoIsInEndcap) {
2851 }
else if ( phoIsInEndcapP) {
2854 }
else if ( phoIsInEndcapM) {
2859 p_dzPVVsR_ ->
Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z() );
2865 float dPhiTracksAtEcal=-99;
2866 float dEtaTracksAtEcal=-99;
2867 if (aConv->bcMatchingWithTracks()[0].
isNonnull() && aConv->bcMatchingWithTracks()[1].
isNonnull() ) {
2869 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
2870 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
2871 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
2872 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
2873 float bcPhi1 = aConv->bcMatchingWithTracks()[0]->phi();
2874 float bcPhi2 = aConv->bcMatchingWithTracks()[1]->phi();
2881 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
2883 dEtaTracksAtEcal = recoEta1 -recoEta2;
2894 if ( phoIsInBarrel ) {
2898 if ( phoIsInEndcap ) {
2909 for (
unsigned int i=0;
i<tracks.size();
i++) {
2911 itAss= myAss.find( tfrb.
get() );
2912 if ( itAss == myAss.end() )
continue;
2914 float trkProvenance=3;
2915 if ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"outInEcalSeededConv" ) trkProvenance=0;
2916 if ( tracks[0]->algoName() ==
"inOutEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv" ) trkProvenance=1;
2917 if ( ( tracks[0]->algoName() ==
"outInEcalSeededConv" && tracks[1]->algoName() ==
"inOutEcalSeededConv") ||
2918 ( tracks[1]->algoName() ==
"outInEcalSeededConv" && tracks[0]->algoName() ==
"inOutEcalSeededConv") ) trkProvenance=2;
2933 float simPt =
sqrt( ((*itAss).second)->momentum().perp2() );
2938 if ( aConv->conversionVertex().isValid() ) {
2939 reco::Track refTrack= aConv->conversionVertex().refittedTracks()[
i];
2942 refPt=
sqrt (px*px + py*py );
2944 float ptres= refPt - simPt ;
2946 float pterror = aConv->conversionVertex().refittedTracks()[
i].ptError();
2960 if ( phoIsInBarrel ) {
2967 if ( phoIsInEndcap ) {
2996 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3000 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
3002 double like = aConv->MVAout();
3005 const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
3006 if (tracks.size() < 2 )
continue;
3014 bool phoIsInBarrel=
false;
3015 bool phoIsInEndcap=
false;
3016 if ( fabs(aConv->caloCluster()[0]->eta() ) < 1.479 ) {
3024 if ( ( fabs(mcEta_) > 1.1 && fabs (mcEta_) < 1.4 ) &&
3026 if ( fabs( aConv->pairCotThetaSeparation() ) >
dCotCutValue_ )
continue;
3032 if ( aConv->conversionVertex().isValid() )
h_RecoConvTwoTracks_[2]->
Fill( aConv->conversionVertex().position().perp2() );
3039 for ( std::vector<PhotonMCTruth>::const_iterator mcPho=mcPhotons.begin(); mcPho !=mcPhotons.end(); mcPho++) {
3041 float mcPhi= (*mcPho).fourMomentum().phi();
3044 mcEta_= (*mcPho).fourMomentum().pseudoRapidity();
3052 if ( fabs(mcEta_) > END_HI )
continue;
3058 if ( (*mcPho).isAConversion() != 1 )
continue;
3059 if (!( ( fabs(mcEta_) <= BARL && mcConvR_ <85 ) ||
3060 ( fabs(mcEta_) > BARL && fabs(mcEta_) <=END_HI && fabs( (*mcPho).vertex().z() ) < 210 ) ) )
3067 if ( fabs( tp->vx() - (*mcPho).vertex().x() ) < 0.0001 &&
3068 fabs( tp->vy() - (*mcPho).vertex().y() ) < 0.0001 &&
3069 fabs( tp->vz() - (*mcPho).vertex().z() ) < 0.0001) {
3079 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV1, trackV2;
3081 std::vector<std::pair<TrackingParticleRef, double> > tp1 = p1[tk1];
3082 std::vector<std::pair<TrackingParticleRef, double> > tp2 = p2[tk2];
3084 if (tp1.size()&&tp2.size()) {
3088 if (
abs(tpr1->pdgId())==11&&
abs(tpr2->pdgId())==11) {
3089 if ( (tpr1->parentVertex()->sourceTracks_end()-tpr1->parentVertex()->sourceTracks_begin()==1) &&
3090 (tpr2->parentVertex()->sourceTracks_end()-tpr2->parentVertex()->sourceTracks_begin()==1)) {
3091 if (tpr1->parentVertex().
key()==tpr2->parentVertex().
key() && ((*tpr1->parentVertex()->sourceTracks_begin())->
pdgId()==22)) {
3143 if ( aConv->conversionVertex().isValid() )
h_RecoConvTwoMTracks_[2]->
Fill( aConv->conversionVertex().position().perp2() );
3151 if ( aConv->conversionVertex().isValid() ) {
3152 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
3154 double convR=
sqrt(aConv->conversionVertex().position().perp2());
3155 double scalar = aConv->conversionVertex().position().x()*aConv->pairMomentum().x() +
3156 aConv->conversionVertex().position().y()*aConv->pairMomentum().y();
3157 if ( scalar < 0 ) convR= -
sqrt(aConv->conversionVertex().position().perp2());
3160 h_convVtxRvsZ_[0] ->
Fill ( fabs (aConv->conversionVertex().position().z() ),
sqrt(aConv->conversionVertex().position().perp2()) ) ;
3161 if ( fabs(aConv->caloCluster()[0]->eta() ) <= 1.) {
3163 h_convVtxYvsX_ ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
3164 h_convVtxRvsZ_[1] ->
Fill ( fabs (aConv->conversionVertex().position().z() ), convR ) ;
3167 h_convVtxYvsX_zoom_[0] ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
3168 h_convVtxYvsX_zoom_[1] ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
3174 if ( fabs(aConv->caloCluster()[0]->eta() ) > 1.)
h_convVtxRvsZ_[2] ->
Fill ( fabs (aConv->conversionVertex().position().z() ), convR ) ;
3180 h_vtxChi2_[0]->
Fill( aConv->conversionVertex().normalizedChi2() );
3181 if ( phoIsInBarrel ) {
3183 h_vtxChi2_[1]->
Fill( aConv->conversionVertex().normalizedChi2() );
3185 if ( phoIsInEndcap ) {
3187 h_vtxChi2_[2]->
Fill( aConv->conversionVertex().normalizedChi2() );
3199 for (reco::GenJetCollection::const_iterator genJetIter = genJetCollection.begin();
3200 genJetIter != genJetCollection.end(); ++genJetIter) {
3203 if ( fabs(genJetIter->eta()) > 2.5 )
continue;
3205 float mcJetPhi= genJetIter->phi();
3208 float mcJetPt = genJetIter->pt() ;
3214 std::vector<reco::Photon> thePhotons;
3218 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3220 float phiPho=aPho.
phi();
3221 float etaPho=aPho.
eta();
3224 if ( deltaPhi >
pi ) deltaPhi -= twopi;
3225 if ( deltaPhi < -
pi) deltaPhi += twopi;
3226 deltaPhi=
pow(deltaPhi,2);
3227 deltaEta=
pow(deltaEta,2);
3228 float delta =
sqrt( deltaPhi+deltaEta);
3230 matchingPho = * iPho;
3235 if (! matched )
continue;
3243 bool phoIsInBarrel=
false;
3244 bool phoIsInEndcap=
false;
3245 if ( fabs(matchingPho.
superCluster()->position().eta() ) < 1.479 ) {
3251 if ( phoIsInBarrel ) {
3254 if (!ecalRecHitHandle.
isValid()) {
3259 }
else if ( phoIsInEndcap ) {
3263 if (!ecalRecHitHandle.
isValid()) {
3273 float photonE = matchingPho.
energy();
3274 float photonEt= matchingPho.
et();
3275 float r9 = matchingPho.
r9();
3276 float r1 = matchingPho.
r1x5();
3277 float r2 = matchingPho.
r2x5();
3284 std::vector< std::pair<DetId, float> >::const_iterator rhIt;
3286 bool atLeastOneDeadChannel=
false;
3288 for(rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
3291 if (rhIt->first == (*it).id() ) {
3292 if ( (*it).recoFlag() == 9 ) {
3293 atLeastOneDeadChannel=
true;
3301 if ( atLeastOneDeadChannel ) {
3389 if ( phoIsInBarrel ) {
3418 }
else if ( phoIsInEndcap ) {
3451 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
3454 const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
3455 double like = aConv->MVAout();
3457 if ( tracks.size() < 2 )
continue;
3461 float eoverp= aConv->EoverP();
3465 float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
3468 if ( phoIsInBarrel ) {
3474 }
else if ( phoIsInEndcap ) {
3482 if ( aConv->conversionVertex().isValid() ) {
3484 double convR=
sqrt(aConv->conversionVertex().position().perp2());
3485 double scalar = aConv->conversionVertex().position().x()*aConv->pairMomentum().x() +
3486 aConv->conversionVertex().position().y()*aConv->pairMomentum().y();
3487 if ( scalar < 0 ) convR= -
sqrt(aConv->conversionVertex().position().perp2());
3490 h_convVtxRvsZBkg_[0] ->
Fill ( fabs (aConv->conversionVertex().position().z() ),
sqrt(aConv->conversionVertex().position().perp2()) ) ;
3491 if ( fabs(aConv->caloCluster()[0]->eta() ) <= 1.) {
3492 h_convVtxYvsXBkg_ ->
Fill ( aConv->conversionVertex().position().y() , aConv->conversionVertex().position().x() ) ;
MonitorElement * p_DCotTracksVsR_
MonitorElement * h_convVtxdX_endcap_
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_
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]
virtual double et() const
transverse energy
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]
virtual reco::SimToRecoCollection associateSimToReco(edm::Handle< edm::View< reco::Track > > &tCH, edm::Handle< TrackingParticleCollection > &tPCH, const edm::Event *event=0, const edm::EventSetup *setup=0) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
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_
virtual double eta() const
momentum pseudorapidity
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 double energy() const
energy
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=0, const edm::EventSetup *setup=0) const
compare reco to sim the handle of reco::Track and TrackingParticle collections
MonitorElement * h_SimPhoMotherEt_[2]
MonitorElement * h2_eResVsR9_[3]
MonitorElement * nHitsVsR_[2]
MonitorElement * h_r1Bkg_[3]
float etOutsideMustache() const
const_iterator end() const
MonitorElement * h_convVtxdX_
MonitorElement * p_isoTrkSolidConeDR04VsEtaBkg_
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]
std::vector< PhotonMCTruth > find(std::vector< SimTrack > simTracks, std::vector< SimVertex > simVertices)
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]
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]
virtual double phi() const
momentum azimuthal angle
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 .