3171 using namespace edm;
3175 const float BARL = 1.4442;
3177 const float END_HI = 2.5;
3182 e.getByLabel(
"trackAssociatorByHitsForPhotonValidation", theHitsAssociator);
3186 LogInfo(
"PhotonValidator") <<
"PhotonValidator Analyzing event number: " <<
e.id() <<
" Global Counter " <<
nEvt_ 3203 if (!photonHandle.
isValid()) {
3204 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the Photon collection " << std::endl;
3211 if (!pfCandidateHandle.
isValid()) {
3212 edm::LogError(
"PhotonValidator") <<
"Error! Can't get the product pfCandidates " << std::endl;
3217 if (
fName_ ==
"pfPhotonValidator") {
3219 if (!phoToParticleBasedIsoMapHandle.
isValid()) {
3220 edm::LogInfo(
"PhotonValidator") <<
"Error! Can't get the product: valueMap photons to particle based iso " 3223 phoToParticleBasedIsoMap = *(phoToParticleBasedIsoMapHandle.
product());
3241 if ((*itHits)->isValid()) {
3256 if ((*itHits)->isValid()) {
3267 std::vector<SimTrack> theSimTracks;
3268 std::vector<SimVertex> theSimVertices;
3280 theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
3281 theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
3308 std::vector<reco::PhotonCollection::const_iterator> StoRMatchedConvertedPhotons;
3318 OISimToReco =
trackAssociator->associateSimToReco(outInTrkHandle, ElectronTPHandle);
3319 IOSimToReco =
trackAssociator->associateSimToReco(inOutTrkHandle, ElectronTPHandle);
3321 OIRecoToSim =
trackAssociator->associateRecoToSim(outInTrkHandle, ElectronTPHandle);
3322 IORecoToSim =
trackAssociator->associateRecoToSim(inOutTrkHandle, ElectronTPHandle);
3326 vector<reco::SimToRecoCollection*> StoRCollPtrs;
3327 StoRCollPtrs.push_back(&OISimToReco);
3328 StoRCollPtrs.push_back(&IOSimToReco);
3329 vector<reco::RecoToSimCollection*> RtoSCollPtrs;
3330 RtoSCollPtrs.push_back(&OIRecoToSim);
3331 RtoSCollPtrs.push_back(&IORecoToSim);
3333 for (
int i = 0;
i < 2;
i++)
3335 for (
int i = 0;
i < 2;
i++)
3338 std::vector<reco::PhotonRef> myPhotons;
3340 for (
unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3343 if (fabs(phoRef->eta()) > 2.5)
3345 myPhotons.push_back(phoRef);
3348 std::sort(myPhotons.begin(), myPhotons.end(), sortPhotons());
3350 if (myPhotons.size() >= 2) {
3351 if (myPhotons[0]->
et() > 40 && myPhotons[1]->et() > 25) {
3357 float gamgamMass2 = p12.Dot(p12);
3358 float gamgamMass2_regr1 = p12_regr1.Dot(p12_regr1);
3359 float gamgamMass2_regr2 = p12_regr2.Dot(p12_regr2);
3362 if (gamgamMass2 > 0) {
3365 if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3367 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3368 (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3371 if (myPhotons[0]->
r9() > 0.94 && myPhotons[1]->
r9() > 0.94) {
3373 if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3375 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3376 (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3386 if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3388 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3391 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3392 (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3398 myPhotons[1]->
r9() > 0.93) {
3402 if (chi2Prob1 > 0.0005) {
3404 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3407 if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3413 myPhotons[0]->
r9() > 0.93) {
3417 if (chi2Prob1 > 0.0005) {
3419 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3422 if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3431 if (gamgamMass2_regr1 > 0) {
3434 if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3436 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3437 (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3440 if (myPhotons[0]->
r9() > 0.94 && myPhotons[1]->
r9() > 0.94) {
3442 if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3444 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3445 (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3456 if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3458 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3461 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3462 (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3468 myPhotons[1]->
r9() > 0.93) {
3472 if (chi2Prob1 > 0.0005) {
3474 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3477 if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3483 myPhotons[0]->
r9() > 0.93) {
3487 if (chi2Prob1 > 0.0005) {
3489 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3492 if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3501 if (gamgamMass2_regr2 > 0) {
3504 if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3506 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3507 (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3510 if (myPhotons[0]->
r9() > 0.94 && myPhotons[1]->
r9() > 0.94) {
3512 if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3514 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3515 (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3526 if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3528 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3531 if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3532 (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3538 myPhotons[1]->
r9() > 0.93) {
3542 if (chi2Prob1 > 0.0005) {
3544 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3547 if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3553 myPhotons[0]->
r9() > 0.93) {
3557 if (chi2Prob1 > 0.0005) {
3559 if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3562 if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3573 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
3577 for (HepMC::GenEvent::particle_const_iterator mcIter = myGenEvent->particles_begin();
3578 mcIter != myGenEvent->particles_end();
3580 if ((*mcIter)->pdg_id() != 22)
3582 bool isTheSame =
false;
3584 if ((*mcIter)->production_vertex()) {
3585 if ((*mcIter)->production_vertex()->particles_begin(
HepMC::parents) !=
3587 mother = *((*mcIter)->production_vertex()->particles_begin(
HepMC::parents));
3590 float mcPhi = (*mcPho).fourMomentum().phi();
3592 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
3594 mcConvR_ = (*mcPho).vertex().perp();
3601 if (fabs(
mcEta_) > END_HI)
3604 if (mother ==
nullptr || (mother !=
nullptr && mother->pdg_id() == 22) ||
3605 (mother !=
nullptr && mother->pdg_id() == 25) || (mother !=
nullptr && mother->pdg_id() == 35)) {
3606 double dPt = fabs((*mcIter)->momentum().perp() - (*mcPho).fourMomentum().et());
3607 float phiMother = (*mcIter)->momentum().phi();
3609 double dEta = fabs((*mcIter)->momentum().eta() - (*mcPho).fourMomentum().pseudoRapidity());
3611 if (
dEta <= 0.0001 &&
dPhi <= 0.0001 && dPt <= 0.0001)
3629 bool goodSimConversion =
false;
3630 bool visibleConversion =
false;
3631 bool visibleConversionsWithTwoSimTracks =
false;
3632 if ((*mcPho).isAConversion() == 1) {
3646 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
3647 visibleConversion =
true;
3652 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.001 &&
3653 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.001) {
3658 visibleConversionsWithTwoSimTracks =
true;
3659 goodSimConversion =
false;
3661 if (visibleConversion && visibleConversionsWithTwoSimTracks)
3662 goodSimConversion =
true;
3663 if (goodSimConversion) {
3684 float minDelta = 10000.;
3685 std::vector<reco::PhotonRef> thePhotons;
3690 for (
unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3692 thePhotons.push_back(aPho);
3693 float phiPho = aPho->phi();
3694 float etaPho = aPho->eta();
3727 bool phoIsInBarrel =
false;
3728 bool phoIsInEndcap =
false;
3729 bool phoIsInEndcapP =
false;
3730 bool phoIsInEndcapM =
false;
3734 if (fabs(matchingPho->superCluster()->position().eta()) < 1.479) {
3735 phoIsInBarrel =
true;
3737 phoIsInEndcap =
true;
3738 if (matchingPho->superCluster()->position().eta() > 0)
3739 phoIsInEndcapP =
true;
3740 if (matchingPho->superCluster()->position().eta() < 0)
3741 phoIsInEndcapM =
true;
3745 if (phoIsInBarrel) {
3748 if (!ecalRecHitHandle.
isValid()) {
3751 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the product " <<
l.module;
3755 }
else if (phoIsInEndcap) {
3758 if (!ecalRecHitHandle.
isValid()) {
3761 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the product " <<
l.module;
3768 float photonE = matchingPho->energy();
3769 float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
3771 float photonEt = matchingPho->pt();
3774 float r9 = matchingPho->r9();
3776 float r1 = matchingPho->r1x5();
3777 float r2 = matchingPho->r2x5();
3778 float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
3780 float hOverE = matchingPho->hadronicOverEm();
3781 float newhOverE = matchingPho->hadTowOverEm();
3782 float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
3783 float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
3784 float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
3785 float trkIso = matchingPho->trkSumPtSolidConeDR04();
3786 float nIsoTrk = matchingPho->nTrkSolidConeDR04();
3788 float chargedHadIso = matchingPho->chargedHadronIso();
3789 float neutralHadIso = matchingPho->neutralHadronIso();
3790 float photonIso = matchingPho->photonIso();
3791 float etOutsideMustache = matchingPho->etOutsideMustache();
3792 int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
3793 float pfMVA = matchingPho->pfMVA();
3795 std::vector<std::pair<DetId, float> >::const_iterator rhIt;
3796 bool atLeastOneDeadChannel =
false;
3798 bcIt != matchingPho->superCluster()->clustersEnd();
3800 for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
3803 if (rhIt->first == (*it).id()) {
3804 if ((*it).recoFlag() == 9) {
3805 atLeastOneDeadChannel =
true;
3813 if (atLeastOneDeadChannel) {
3831 h_scEt_[
type][0]->
Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
3833 h_psE_->
Fill(matchingPho->superCluster()->preshowerEnergy());
3906 h_phoDEta_[0]->
Fill(matchingPho->eta() - (*mcPho).fourMomentum().eta());
3910 h_nConv_[0][0]->
Fill(
float(matchingPho->conversions().size()));
3911 h_nConv_[1][0]->
Fill(
float(matchingPho->conversionsOneLeg().size()));
3921 p_eResVsEt_[0][0]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3926 h2_eResVsEt_[0][0]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3930 h2_sceResVsR9_[0]->
Fill(
r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3934 p_sceResVsR9_[0]->
Fill(
r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3936 if ((*mcPho).isAConversion() == 0) {
3967 if (photonE / (*mcPho).fourMomentum().e() < 0.3 && photonE / (*mcPho).fourMomentum().e() > 0.1) {
3970 if ((
r9 > 0.94 && phoIsInBarrel) || (
r9 > 0.95 && phoIsInEndcap)) {
3976 h2_eResVsEt_[0][1]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3977 p_eResVsEt_[0][1]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3982 }
else if ((
r9 <= 0.94 && phoIsInBarrel) || (
r9 <= 0.95 && phoIsInEndcap)) {
3987 p_eResVsEt_[0][2]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3993 h2_eResVsEt_[0][2]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3998 if (phoIsInBarrel) {
4000 h_scEt_[
type][1]->
Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
4024 h_nConv_[1][1]->
Fill(
float(matchingPho->conversionsOneLeg().size()));
4030 p_sceResVsR9_[1]->
Fill(
r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4033 h2_sceResVsR9_[1]->
Fill(
r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4036 h2_eResVsEt_[1][0]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4038 p_eResVsEt_[1][0]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4039 p_eResVsNVtx_[1][0]->
Fill(
float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4049 h2_eResVsEt_[1][1]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4050 p_eResVsEt_[1][1]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4051 p_eResVsNVtx_[1][1]->
Fill(
float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4060 p_eResVsEt_[1][2]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4061 p_eResVsNVtx_[1][2]->
Fill(
float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4065 h2_eResVsEt_[1][2]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4070 if (phoIsInEndcap) {
4072 h_scEt_[
type][2]->
Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
4096 h_nConv_[1][2]->
Fill(
float(matchingPho->conversionsOneLeg().size()));
4102 p_sceResVsR9_[2]->
Fill(
r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4105 h2_sceResVsR9_[2]->
Fill(
r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4108 h2_eResVsEt_[2][0]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4111 p_eResVsEt_[2][0]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4112 p_eResVsNVtx_[2][0]->
Fill(
float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4122 h2_eResVsEt_[2][1]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4123 p_eResVsEt_[2][1]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4124 p_eResVsNVtx_[2][1]->
Fill(
float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4133 p_eResVsEt_[2][2]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4134 p_eResVsNVtx_[2][2]->
Fill(
float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4139 h2_eResVsEt_[2][2]->
Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4146 if (
fName_ ==
"pfPhotonValidator") {
4147 float SumPtIsoValCh = 0.;
4148 float SumPtIsoValNh = 0.;
4149 float SumPtIsoValPh = 0.;
4151 float SumPtIsoValCleanCh = 0.;
4152 float SumPtIsoValCleanNh = 0.;
4153 float SumPtIsoValCleanPh = 0.;
4155 for (
unsigned int lCand = 0; lCand < pfCandidateHandle->size(); lCand++) {
4157 float dR =
deltaR(matchingPho->eta(), matchingPho->phi(), pfCandRef->eta(), pfCandRef->phi());
4167 SumPtIsoValCh += pfCandRef->pt();
4175 SumPtIsoValNh += pfCandRef->pt();
4183 SumPtIsoValPh += pfCandRef->pt();
4192 for (std::vector<reco::PFCandidateRef>::const_iterator
i = phoToParticleBasedIsoMap[matchingPho].
begin();
4193 i != phoToParticleBasedIsoMap[matchingPho].
end();
4195 if ((*
i) == pfCandRef) {
4203 SumPtIsoValCleanCh += pfCandRef->pt();
4211 SumPtIsoValCleanNh += pfCandRef->pt();
4219 SumPtIsoValCleanPh += pfCandRef->pt();
4236 if (phoIsInBarrel) {
4254 if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
4265 if (fabs(
mcEta_) <= 1.) {
4275 bool atLeastOneRecoTwoTrackConversion =
false;
4276 for (
unsigned int iConv = 0; iConv <
conversions.size(); iConv++) {
4278 double like = aConv->MVAout();
4287 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
4290 atLeastOneRecoTwoTrackConversion =
true;
4294 if (
tracks.size() == 2) {
4309 std::map<const reco::Track*, TrackingParticleRef> myAss;
4310 std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
4311 std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMin;
4312 std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMax;
4316 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
4333 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV;
4337 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q[
theConvTP_[0]];
4339 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q[
theConvTP_[1]];
4353 float refP = -99999.;
4354 float refPt = -99999.;
4355 if (aConv->conversionVertex().isValid()) {
4356 refP =
sqrt(aConv->refittedPairMomentum().Mag2());
4357 refPt =
sqrt(aConv->refittedPairMomentum().perp2());
4359 float invM = aConv->pairInvariantMass();
4368 if (
tracks.size() == 2) {
4375 if (!aConv->caloCluster().empty())
4378 float trkProvenance = 3;
4379 if (
tracks[0]->
algoName() ==
"outInEcalSeededConv" &&
tracks[1]->algoName() ==
"outInEcalSeededConv")
4381 if (
tracks[0]->
algoName() ==
"inOutEcalSeededConv" &&
tracks[1]->algoName() ==
"inOutEcalSeededConv")
4384 (
tracks[1]->algoName() ==
"outInEcalSeededConv" &&
tracks[0]->algoName() ==
"inOutEcalSeededConv"))
4386 if (trkProvenance == 3) {
4403 if (!aConv->caloCluster().empty())
4413 if (aConv->conversionVertex().isValid()) {
4423 if (chi2Prob > 0.0005) {
4431 if (chi2Prob > 0.0005) {
4432 if (!aConv->caloCluster().empty()) {
4435 h_convERes_[0][0]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4445 if (phoIsInBarrel) {
4446 if (!aConv->caloCluster().empty())
4447 h_convERes_[0][1]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4452 if (phoIsInEndcap) {
4453 if (!aConv->caloCluster().empty())
4454 h_convERes_[0][2]->
Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4468 float eoverp = -99999.;
4470 if (aConv->conversionVertex().isValid()) {
4471 eoverp = photonE /
sqrt(aConv->refittedPairMomentum().Mag2());
4478 matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4495 matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4498 matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4506 float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
4523 if (phoIsInBarrel) {
4525 if (aConv->conversionVertex().isValid()) {
4537 eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4545 if (phoIsInEndcap) {
4547 if (aConv->conversionVertex().isValid()) {
4553 eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4561 if (aConv->conversionVertex().isValid()) {
4587 float signX = aConv->refittedPairMomentum().x() / fabs(aConv->refittedPairMomentum().x());
4588 float signY = aConv->refittedPairMomentum().y() / fabs(aConv->refittedPairMomentum().y());
4589 float signZ = aConv->refittedPairMomentum().z() / fabs(aConv->refittedPairMomentum().z());
4598 float thetaConv = aConv->refittedPairMomentum().Theta();
4599 float thetaSC = matchingPho->superCluster()->position().theta();
4601 sqrt(matchingPho->superCluster()->position().x() * matchingPho->superCluster()->position().x() +
4602 matchingPho->superCluster()->position().y() * matchingPho->superCluster()->position().y());
4603 float zSC = matchingPho->superCluster()->position().z();
4604 float zPV =
sqrt(rSC * rSC + zSC * zSC) *
sin(thetaConv - thetaSC) /
sin(thetaConv);
4609 if (phoIsInBarrel) {
4612 }
else if (phoIsInEndcap) {
4615 }
else if (phoIsInEndcapP) {
4618 }
else if (phoIsInEndcapM) {
4629 float dPhiTracksAtEcal = -99;
4630 float dEtaTracksAtEcal = -99;
4631 if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[0].
isNonnull() &&
4632 aConv->bcMatchingWithTracks()[1].
isNonnull()) {
4634 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
4635 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
4636 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
4637 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
4644 dPhiTracksAtEcal = recoPhi1 - recoPhi2;
4646 dEtaTracksAtEcal = recoEta1 - recoEta2;
4658 if (phoIsInBarrel) {
4662 if (phoIsInEndcap) {
4668 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
4670 itAss = myAss.find(tfrb.
get());
4671 if (itAss == myAss.end())
4674 float trkProvenance = 3;
4675 if (
tracks[0]->
algoName() ==
"outInEcalSeededConv" &&
tracks[1]->algoName() ==
"outInEcalSeededConv")
4677 if (
tracks[0]->
algoName() ==
"inOutEcalSeededConv" &&
tracks[1]->algoName() ==
"inOutEcalSeededConv")
4681 (
tracks[1]->algoName() ==
"outInEcalSeededConv" &&
tracks[0]->algoName() ==
"inOutEcalSeededConv"))
4699 float simPt =
sqrt(((*itAss).second)->momentum().perp2());
4701 float refPt = -9999.;
4702 float px = 0,
py = 0;
4704 if (aConv->conversionVertex().isValid()) {
4705 reco::Track refTrack = aConv->conversionVertex().refittedTracks()[
i];
4710 float ptres = refPt - simPt;
4712 float pterror = aConv->conversionVertex().refittedTracks()[
i].ptError();
4715 if (trkProvenance == 3)
4726 if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[
i].
isNonnull())
4728 sqrt(aConv->tracks()[
i]->outerMomentum().Mag2()));
4730 if (phoIsInBarrel) {
4736 if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[
i].
isNonnull())
4738 sqrt(aConv->tracks()[
i]->outerMomentum().Mag2()));
4740 if (phoIsInEndcap) {
4746 if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[
i].
isNonnull())
4748 sqrt(aConv->tracks()[
i]->outerMomentum().Mag2()));
4761 if (!atLeastOneRecoTwoTrackConversion) {
4762 for (
unsigned int iConv = 0; iConv < conversionsOneLeg.
size(); iConv++) {
4764 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
4770 std::map<const reco::Track*, TrackingParticleRef> myAss;
4771 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
4776 float eoverp = photonE /
tracks[0]->p();
4778 if (phoIsInBarrel) {
4784 if (fabs(
mcEta_) <= 1.) {
4794 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV;
4798 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q[
theConvTP_[0]];
4800 trackV = (std::vector<std::pair<RefToBase<reco::Track>,
double> >)
q[
theConvTP_[1]];
4839 for (
unsigned int iConv = 0; iConv <
conversions.size(); iConv++) {
4841 double like = aConv->MVAout();
4845 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
4855 bool phoIsInBarrel =
false;
4856 bool phoIsInEndcap =
false;
4857 if (fabs(aPho.
superCluster()->position().eta()) < 1.479) {
4858 phoIsInBarrel =
true;
4860 phoIsInEndcap =
true;
4872 if (aConv->conversionVertex().isValid())
4878 for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
4880 float mcPhi = (*mcPho).fourMomentum().phi();
4883 mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
4891 if (fabs(
mcEta_) > END_HI)
4898 if ((*mcPho).isAConversion() != 1)
4901 (fabs(
mcEta_) > BARL && fabs(
mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
4907 if (fabs(
tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(
tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
4908 fabs(
tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
4918 std::vector<std::pair<RefToBase<reco::Track>,
double> > trackV1, trackV2;
4920 auto itP1 =
p1.find(tk1);
4921 auto itP2 =
p2.find(tk2);
4922 bool good = (itP1 !=
p1.end()) and (not itP1->val.empty()) and (itP2 !=
p2.end()) and (not itP2->val.empty());
4924 itP1 =
p1.find(tk2);
4925 itP2 =
p2.find(tk1);
4926 good = (itP1 !=
p1.end()) and (not itP1->val.empty()) and (itP2 !=
p2.end()) and (not itP2->val.empty());
4929 std::vector<std::pair<TrackingParticleRef, double> >
const& tp1 = itP1->val;
4930 std::vector<std::pair<TrackingParticleRef, double> >
const& tp2 = itP2->val;
4935 if (
abs(tpr1->pdgId()) == 11 &&
abs(tpr2->pdgId()) == 11) {
4936 if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
4937 (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
4938 if (tpr1->parentVertex().
key() == tpr2->parentVertex().
key() &&
4939 ((*tpr1->parentVertex()->sourceTracks_begin())->
pdgId() == 22)) {
4952 if (aConv->conversionVertex().isValid())
4959 if (aConv->conversionVertex().isValid()) {
4960 float chi2Prob =
ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4961 double convR =
sqrt(aConv->conversionVertex().position().perp2());
4962 double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
4963 aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
4966 convR = -
sqrt(aConv->conversionVertex().position().perp2());
4968 sqrt(aConv->conversionVertex().position().perp2()));
4970 if (!aConv->caloCluster().empty()) {
4973 sqrt(aConv->conversionVertex().position().perp2()));
4974 if (fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
4975 h_convVtxYvsX_->
Fill(aConv->conversionVertex().position().y(), aConv->conversionVertex().position().x());
4980 aConv->conversionVertex().position().x());
4982 aConv->conversionVertex().position().x());
4987 if (fabs(aConv->caloCluster()[0]->eta()) > 1.)
4993 if (phoIsInBarrel) {
4997 if (phoIsInEndcap) {
5009 for (reco::GenJetCollection::const_iterator genJetIter =
genJetCollection.begin();
5014 if (fabs(genJetIter->eta()) > 2.5)
5017 float mcJetPhi = genJetIter->phi();
5020 float mcJetPt = genJetIter->pt();
5026 std::vector<reco::Photon> thePhotons;
5033 float phiPho = aPho.
phi();
5034 float etaPho = aPho.
eta();
5045 matchingPho = *iPho;
5058 bool phoIsInBarrel =
false;
5059 bool phoIsInEndcap =
false;
5060 if (fabs(matchingPho.
superCluster()->position().eta()) < 1.479) {
5061 phoIsInBarrel =
true;
5063 phoIsInEndcap =
true;
5066 if (phoIsInBarrel) {
5069 if (!ecalRecHitHandle.
isValid()) {
5072 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the product " <<
l.module;
5076 }
else if (phoIsInEndcap) {
5079 if (!ecalRecHitHandle.
isValid()) {
5082 edm::LogError(
"PhotonProducer") <<
"Error! Can't get the product " <<
l.module;
5088 float photonE = matchingPho.
energy();
5089 float photonEt = matchingPho.
et();
5090 float r9 = matchingPho.
r9();
5091 float r1 = matchingPho.
r1x5();
5092 float r2 = matchingPho.
r2x5();
5099 std::vector<std::pair<DetId, float> >::const_iterator rhIt;
5101 bool atLeastOneDeadChannel =
false;
5105 for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
5108 if (rhIt->first == (*it).id()) {
5109 if ((*it).recoFlag() == 9) {
5110 atLeastOneDeadChannel =
true;
5118 if (atLeastOneDeadChannel) {
5187 if (phoIsInBarrel) {
5211 }
else if (phoIsInEndcap) {
5240 for (
unsigned int iConv = 0; iConv <
conversions.size(); iConv++) {
5243 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
5244 double like = aConv->MVAout();
5249 if (!aConv->caloCluster().empty()) {
5254 float eoverp = aConv->EoverP();
5258 float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
5261 if (phoIsInBarrel) {
5267 }
else if (phoIsInEndcap) {
5275 if (aConv->conversionVertex().isValid()) {
5276 double convR =
sqrt(aConv->conversionVertex().position().perp2());
5277 double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
5278 aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
5280 convR = -
sqrt(aConv->conversionVertex().position().perp2());
5284 sqrt(aConv->conversionVertex().position().perp2()));
5285 if (!aConv->caloCluster().empty() && fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
5287 aConv->conversionVertex().position().x());
5301 if (!(mcIter->pdgId() == 22))
5303 if (mcIter->mother() !=
nullptr and !(mcIter->mother()->pdgId() == 25))
5305 if (fabs(mcIter->eta()) > 2.5)
5308 float mcPhi = mcIter->phi();
5309 float mcEta = mcIter->eta();
5311 float mcEnergy = mcIter->energy();
5313 double dR = 9999999.;
5314 float minDr = 10000.;
5318 for (
unsigned int ipho = 0; ipho < photonHandle->size(); ipho++) {
5321 double dphi = pho->phi() - mcPhi;
5323 dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
5325 double deta = pho->superCluster()->position().eta() - mcEta;
5328 if (
dR < 0.1 &&
dR < minDr) {
5341 bool phoIsInBarrel =
false;
5342 bool phoIsInEndcap =
false;
5344 float phoEta = matchingPho->
superCluster()->position().eta();
5345 if (fabs(phoEta) < 1.479) {
5346 phoIsInBarrel =
true;
5348 phoIsInEndcap =
true;
5351 float photonE = matchingPho->
energy();
5353 float photonEt = matchingPho->
energy() / cosh(matchingPho->
eta());
5356 float r9 = matchingPho->
r9();
5357 float full5x5_r9 = matchingPho->
full5x5_r9();
5358 float r1 = matchingPho->
r1x5();
5359 float r2 = matchingPho->
r2x5();
5377 if ((photonEt > 14 && newhOverE < 0.15) || (photonEt > 10 && photonEt < 14 && chargedHadIso < 10)) {
5409 if (phoIsInBarrel) {
5433 if (phoIsInEndcap) {
MonitorElement * p_DCotTracksVsR_
MonitorElement * p_sigmaEoEVsEta_[3]
MonitorElement * h_convVtxdX_endcap_
MonitorElement * h_SumPtOverPhoPt_NeuHad_unCleaned_[3]
MonitorElement * h_zPVFromTracks_[5]
MonitorElement * h_hOverE_miniAOD_[3][3]
edm::EDGetTokenT< EcalRecHitCollection > barrelEcalHits_
MonitorElement * h_OIinnermostHitR_
MonitorElement * h2_nTrkSolidConeDR04VsEta_[3]
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
MonitorElement * p_hOverEVsEtBkg_
MonitorElement * h_nSimPho_[2]
MonitorElement * p_DPhiTracksAtEcalVsR_
MonitorElement * h_scBkgPhi_
MonitorElement * h2_Chi2VsR_[3]
T getParameter(std::string const &) const
MonitorElement * h_sigmaIetaIeta_[3][3]
auto const good
min quality of good
ParticleType
particle types
MonitorElement * p_sceResVsR9_[3]
MonitorElement * h_DPhiTracksAtEcal_[2][3]
MonitorElement * h_scPhi_miniAOD_[2]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEta_[3]
MonitorElement * h_IOinnermostHitR_
MonitorElement * h_phoBkgDPhi_
MonitorElement * p_nHitsVsEtaSL_[2]
MonitorElement * h_DPhiTracksAtVtx_[2][3]
MonitorElement * p_EoverEtrueVsEta_[3]
MonitorElement * p_EoverPVsEta_[3]
MonitorElement * h_convVtxdZ_
MonitorElement * h_dRPhoPFcand_Pho_Cleaned_[3]
MonitorElement * h_newhOverE_[3][3]
MonitorElement * h_phoBkgPhi_
MonitorElement * h_chHadIso_[3]
MonitorElement * h_phoPhi_[2]
edm::EDGetTokenT< edm::SimVertexContainer > g4_simVtx_Token_
MonitorElement * h_hcalTowerBcSumEtConeDR04_[3][3]
MonitorElement * h2_PoverPtrueVsEoverP_[3]
reco::ConversionRefVector conversions() const
vector of references to Conversion's
MonitorElement * h_mvaOut_[3]
MonitorElement * h_scE_[2][3]
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
MonitorElement * h_nRecoVtx_
MonitorElement * h_convVtxRvsZ_zoom_[2]
MonitorElement * h2_hOverEVsEt_[3]
MonitorElement * h_hcalTowerSumEtConeDR04_miniAOD_[3][3]
MonitorElement * h_SumPtOverPhoPt_NeuHad_Cleaned_[3]
edm::EDGetTokenT< edm::HepMCProduct > hepMC_Token_
MonitorElement * p_hcalTowerSumEtConeDR04VsEt_[3]
MonitorElement * p_isoTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h_DPhiTracksAtVtxBkg_[3]
edm::EDGetTokenT< edm::SimVertexContainer > famos_simVtx_Token_
MonitorElement * h2_EoverPVsR_[3]
MonitorElement * h_phoEt_[2][3]
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilderToken_
float ecalRecHitSumEtConeDR04() const
MonitorElement * h_DEtaTracksAtEcal_[2][3]
edm::EDGetTokenT< reco::PFCandidateCollection > pfCandidates_
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)
MonitorElement * h2_hOverEVsEtaBkg_
MonitorElement * h2_DCotTracksVsEta_
std::vector< GenJet > GenJetCollection
collection of GenJet objects
T const * product() const
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]
edm::EDGetTokenT< edm::View< reco::Track > > conversionIOTrackPr_Token_
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]
MonitorElement * p_nHitsVsRSL_[2]
MonitorElement * p_r2VsEtBkg_
bool isNonnull() const
Checks for non-null.
MonitorElement * h_dRPhoPFcand_NeuHad_Cleaned_[3]
MonitorElement * h2_isoTrkSolidConeDR04VsEtaBkg_
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
MonitorElement * h2_r1VsEtaBkg_
MonitorElement * h2_isoTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h_TkD0_[3]
MonitorElement * h_dRPhoPFcand_ChHad_Cleaned_[3]
MonitorElement * h_chHadIso_miniAOD_[3]
MonitorElement * h_convVtxdY_endcap_
MonitorElement * h_EoverP_SL_[3]
std::unique_ptr< PhotonMCTruthFinder > thePhotonMCTruthFinder_
MonitorElement * p_eResVsR9_[3]
MonitorElement * h_etOutsideMustache_[3]
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * p_DPhiTracksAtVtxVsR_
MonitorElement * h_SumPtOverPhoPt_ChHad_Cleaned_[3]
MonitorElement * p_sigmaEoEVsEt_[3][3]
MonitorElement * h_convVtxdR_endcap_
Log< level::Error, false > LogError
MonitorElement * h_convSLVtxRvsZ_[3]
MonitorElement * h_phoEt_miniAOD_[2][3]
MonitorElement * p_newhOverEVsEta_[3]
MonitorElement * h2_convVtxRrecVsTrue_
MonitorElement * h2_DCotTracksVsR_
edm::EDGetTokenT< EcalRecHitCollection > endcapEcalHits_
MonitorElement * h2_PtRecVsPtSimMixProv_
MonitorElement * h_SumPtOverPhoPt_ChHad_unCleaned_[3]
key_type key() const
Accessor for product key.
MonitorElement * h_convEtaBkg_
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIso_token
static const double deltaEta
MonitorElement * h_phoE_miniAOD_[2][3]
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.
const_iterator end() const
MonitorElement * h2_r2VsEtBkg_
MonitorElement * p_r2VsEtaBkg_
MonitorElement * h_convVtxRvsZ_[3]
MonitorElement * h_nTrkSolidConeDR04_miniAOD_[3][3]
MonitorElement * h_convPhi_[2]
MonitorElement * h_nConv_[2][3]
info per conversion
MonitorElement * h2_isoTrkSolidConeDR04VsEt_[3]
MonitorElement * h_full5x5_r9_miniAOD_[3][3]
P4type getCandidateP4type() const
MonitorElement * h_r9_[3][3]
MonitorElement * h2_sigmaIetaIetaVsEta_[3]
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
MonitorElement * h_dRPhoPFcand_Pho_unCleaned_[3]
MonitorElement * p_EoverPVsR_[3]
float trkSumPtSolidConeDR04() const
MonitorElement * h2_sceResVsR9_[3]
MonitorElement * h_phoEta_[2]
MonitorElement * h2_Chi2VsEta_[3]
MonitorElement * h_simTkPt_
MonitorElement * h_mvaOutBkg_[3]
MonitorElement * h_trkAlgo_
MonitorElement * h2_dzPVVsR_
edm::EDGetTokenT< edm::SimTrackContainer > g4_simTk_Token_
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_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float hcalTowerSumEtConeDR04(int depth=0) const
edm::ParameterSet parameters_
MonitorElement * p_convVtxdRVsEta_
MonitorElement * h_r1_[3][3]
MonitorElement * h_EoverPTracks_[2][3]
MonitorElement * h_phoSigmaEoE_miniAOD_[3][3]
MonitorElement * h_scPhiWidth_[2]
MonitorElement * h2_etaVsRreco_[3]
float sigmaIetaIeta() const
MonitorElement * h2_r1VsEta_[3]
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtaBkg_
float phiNormalization(float &a)
MonitorElement * h2_r2VsEta_[3]
MonitorElement * h_nHadIso_miniAOD_[3]
MonitorElement * h_isoTrkSolidConeDR04_[3][3]
MonitorElement * p_hOverEVsEt_[3]
MonitorElement * h_EtR9Less093_[3][3]
MonitorElement * h_tkChi2SL_[2]
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
MonitorElement * h2_eResVsEt_[3][3]
MonitorElement * h_r9VsNofTracks_[2][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_[3][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_miniAOD_[3][3]
float full5x5_sigmaIetaIeta() const
MonitorElement * h_phoEResRegr1_[3][3]
MonitorElement * h2_r9VsEtBkg_
MonitorElement * p_hOverEVsEta_[3]
float getCorrectedEnergyError(P4type type) const
MonitorElement * h2_TkPtPull_[3]
Abs< T >::type abs(const T &t)
float hcalTowerSumEtBcConeDR04(int depth=0) const
MonitorElement * h_SumPtOverPhoPt_Pho_Cleaned_[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_phoIso_miniAOD_[3]
MonitorElement * h_simTkEta_
MonitorElement * nHitsVsEta_[2]
const_iterator begin() const
MonitorElement * p_nTrkSolidConeDR04VsEtaBkg_
MonitorElement * h2_sigmaIetaIetaVsEtaBkg_
MonitorElement * h_gamgamMassRegr1_[3][3]
MonitorElement * p_convVtxdXVsX_
MonitorElement * p_dzPVVsR_
double convTrackMinPtCut_
MonitorElement * hBCEnergyOverTrackPout_[3]
MonitorElement * h_PoverETracksBkg_[3]
MonitorElement * h_invMass_[2][3]
edm::EDGetTokenT< TrackingParticleCollection > token_tp_
MonitorElement * h2_EoverEtrueVsEoverP_[3]
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
MonitorElement * h_phoE_[2][3]
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_hOverE_[3][3]
MonitorElement * h_hOverEBkg_[3]
MonitorElement * h_dRPhoPFcand_NeuHad_unCleaned_[3]
float hadTowOverEm(int depth=0) const
MonitorElement * h_SimPhoMotherEt_[2]
MonitorElement * h2_eResVsR9_[3]
MonitorElement * nHitsVsR_[2]
MonitorElement * h_r1Bkg_[3]
MonitorElement * h_scEta_miniAOD_[2]
Histos for comparison with miniAOD content.
const_iterator end() const
MonitorElement * h_convVtxdX_
MonitorElement * p_isoTrkSolidConeDR04VsEtaBkg_
MonitorElement * h2_DPhiTracksAtVtxVsR_
MonitorElement * h_convVtxYvsXBkg_
MonitorElement * h_TkPtPull_[3]
MonitorElement * h2_EoverPVsEta_[3]
edm::ESHandle< CaloGeometry > theCaloGeom_
MonitorElement * h_nTrkSolidConeDR04Bkg_[3]
Log< level::Info, false > LogInfo
int nTrkSolidConeDR04() const
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_
static constexpr float d0
float hadronicOverEm(int depth=0) const
MonitorElement * h_convVtxRvsZBkg_[2]
MonitorElement * p_Chi2VsEta_[3]
MonitorElement * h_nHadIso_[3]
MonitorElement * h2_hOverEVsEtBkg_
MonitorElement * p_sigmaEoEVsNVtx_[3][3]
size_type size() const
Size of the RefVector.
MonitorElement * p_eResVsNVtx_[3][3]
MonitorElement * h_SumPtOverPhoPt_Pho_unCleaned_[3]
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]
std::vector< Photon > PhotonCollection
collectin of Photon objects
MonitorElement * p_PoverPtrueVsEta_[3]
edm::EDGetTokenT< reco::GenParticleCollection > genpartToken_
const_iterator end() const
Termination of iteration.
MonitorElement * h_r9Bkg_[3]
MonitorElement * h_phoERes_[3][3]
MonitorElement * h_isoTrkSolidConeDR04Bkg_[3]
MonitorElement * h2_r9VsEtaBkg_
MonitorElement * h_convVtxYvsX_zoom_[2]
MonitorElement * h_convAlgo_
MonitorElement * h_nCluOutsideMustache_[3]
edm::EDGetTokenT< reco::GenJetCollection > genjets_Token_
MonitorElement * h_hcalTowerSumEtConeDR04_[3][3]
MonitorElement * h2_nTrkSolidConeDR04VsEt_[3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEtBkg_[3]
MonitorElement * h2_r1VsEtBkg_
MonitorElement * h_DCotTracksBkg_[3]
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_phoPixSeedSize_[2]
const Vector & momentum() const
track momentum vector
MonitorElement * h_vtxChi2_[3]
MonitorElement * p_nTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * p_hcalTowerBcSumEtConeDR04VsEt_[3]
MonitorElement * h_pfMva_[3]
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionToken_
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtBkg_[3]
MonitorElement * h_hcalTowerSumEtConeDR04Bkg_[3]
MonitorElement * p_convVtxdZVsZ_
MonitorElement * p_hcalTowerSumEtConeDR04VsEta_[3]
MonitorElement * h_r1_miniAOD_[3][3]
MonitorElement * p_r1VsEtBkg_
MonitorElement * h_phoBkgEt_[3]
double et() const final
transverse energy
MonitorElement * h2_isoTrkSolidConeDR04VsEta_[3]
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
MonitorElement * h_SimPhoMotherEta_[2]
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.
MonitorElement * h_convVtxYvsX_
MonitorElement * h_phoBkgE_[3]
MonitorElement * p_hOverEVsEtaBkg_
MonitorElement * h_r2_miniAOD_[3][3]
MonitorElement * h_phoSigmaEoE_[3][3]
MonitorElement * h_RecoConvTwoTracks_[5]
MonitorElement * p_r9VsEta_[3]
MonitorElement * h_DCotTracks_[2][3]
MonitorElement * h_phoERes_miniAOD_[3][3]
MonitorElement * h2_DPhiTracksAtEcalVsR_
std::vector< TrackingParticle > TrackingParticleCollection
MonitorElement * p_eResVsEta_[3]
edm::RefVector< TrackingParticleCollection > theConvTP_
MonitorElement * h_newhOverE_miniAOD_[3][3]
MonitorElement * h_dRPhoPFcand_ChHad_unCleaned_[3]
MonitorElement * h_AllSimConv_[5]
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
MonitorElement * h_vtxChi2Prob_[3]
MonitorElement * h_scBkgEta_
MonitorElement * p_nHitsVsR_[2]
const_iterator begin() const
Initialize an iterator over the RefVector.
MonitorElement * h_hcalTowerBcSumEtConeDR04_miniAOD_[3][3]
MonitorElement * h_r9_miniAOD_[3][3]
MonitorElement * h2_convVtxdRVsR_
double phi() const final
momentum azimuthal angle
MonitorElement * h_gamgamMassRegr2_[3][3]
MonitorElement * p_newhOverEVsEt_[3]
MonitorElement * h2_r2VsEt_[3]
MonitorElement * h_convVtxdR_
MonitorElement * h_convVtxdZ_barrel_
value_type const * get() const
MonitorElement * h_full5x5_sigmaIetaIeta_miniAOD_[3][3]
MonitorElement * h_convEta_[3]
MonitorElement * p_hcalTowerSumEtConeDR04VsEtaBkg_
float neutralHadronIso() const
MonitorElement * p_ecalRecHitSumEtConeDR04VsEt_[3]
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]
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEtaBkg_
MonitorElement * h_scBkgEt_[3]
MonitorElement * h2_DPhiTracksAtEcalVsEta_
edm::EDGetTokenT< edm::View< reco::Track > > conversionOITrackPr_Token_
MonitorElement * h_sigmaIetaIeta_miniAOD_[3][3]
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEta_[3]
MonitorElement * h_SimConvEtaPix_[2]
MonitorElement * h2_eResVsEta_[3]
MonitorElement * p_DPhiTracksAtVtxVsEta_
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
MonitorElement * p_DPhiTracksAtEcalVsEta_
MonitorElement * h_phoDPhi_[2]
MonitorElement * h_convPhiBkg_
edm::EDGetTokenT< edm::SimTrackContainer > famos_simTk_Token_
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 .
MonitorElement * h_SimConvOneMTracks_[5]
double energy() const final
energy
MonitorElement * h_isoTrkSolidConeDR04_miniAOD_[3][3]
double eta() const final
momentum pseudorapidity