146 for (
auto electron : *electrons){
160 bool loose =
false, medium =
false, tight =
false, lhloose =
false, lhmedium =
false, lhtight =
false, oq =
false;
161 electron -> passSelection(loose,
"Loose");
162 electron -> passSelection(medium,
"Medium");
163 electron -> passSelection(tight,
"Tight");
164 electron -> passSelection(lhloose,
"LHLoose");
165 electron -> passSelection(lhmedium,
"LHMedium");
166 electron -> passSelection(lhtight,
"LHTight");
239 for(
auto truth_part : *truth_particles)
265 bool loose =
false, medium =
false, tight =
false, lhloose =
false, lhmedium =
false, lhtight =
false, oq =
false;
327 for (
auto truth_part : *truth_particles){
341 bool loose =
false, tight =
false;
366 for (
auto electron : *electrons){
373 electron -> passSelection(medium,
"Medium");
374 if (medium ==
false)
continue;
378 }
else if (nel >= 1 && electron -> pt() > z_el[0] -> pt()) {
381 }
else if (nel == 1 || (nel >= 2 && electron -> pt() > z_el[1] -> pt())) {
391 for (
auto electron : *electrons){
397 electron -> passSelection(medium,
"Medium");
403 }
else if (nel >= 1 && electron -> pt() > z_el[0] -> pt()) {
406 }
else if (nel == 1 || (nel >= 2 && electron -> pt() > z_el[1] -> pt())) {
418 for (
auto electron : *electrons){
426 }
else if (nel >= 1 && electron -> pt() > z_el[0] -> pt()) {
429 }
else if (nel == 1 || (nel >= 2 && electron -> pt() > z_el[1] -> pt())) {
440 TLorentzVector el4v[2], elclus4v[2], eltrack4v[2];
441 bool inAcceptance[2];
442 for (
int i = 0; i < 2; i++) {
443 el4v[i] = z_el[i] -> p4();
453 eltrack4v[i] = trackp -> p4();
454 uint8_t iPixHits, iSCTHits;
459 if (hits&& (iPixHits + iSCTHits > 3)){
461 double e = z_el[i] -> caloCluster() -> e();
463 double eta = trackp ->
eta();
464 double phi = trackp ->
phi();
467 double p = std::sqrt(e*e - m*m);
468 double pt = p * 1/std::cosh(
eta);
469 double px = pt * std::cos(
phi);
470 double py = pt * std::sin(
phi);
471 double pz = p * std::tanh(
eta);
473 el4v[i] = TLorentzVector(px, py, pz, e);
479 TLorentzVector
z = el4v[0] + el4v[1];
481 bool z_passed_cuts =
true;
484 bool bothLoose =
false, bothMedium =
false, bothTight =
false, bothOQ =
false;
485 bool loose1 =
false, loose2 =
false, medium1 =
false, medium2 =
false, tight1 =
false, tight2 =
false;
487 z_el[0] -> passSelection(loose1,
"Loose");
488 z_el[1] -> passSelection(loose2,
"Loose");
489 z_el[0] -> passSelection(medium1,
"Medium");
490 z_el[1] -> passSelection(medium2,
"Medium");
491 z_el[0] -> passSelection(tight1,
"Tight");
492 z_el[1] -> passSelection(tight2,
"Tight");
495 if ( loose1 && loose2 ) bothLoose =
true;
496 if ( medium1 && medium2 ) bothMedium =
true;
497 if ( tight1 && tight2 ) bothTight =
true;
499 if (elclus4v[0].Perp()*(1./
GeV) <
m_PtCentCut || !inAcceptance[0]) z_passed_cuts =
false;
500 if (elclus4v[1].Perp()*(1./
GeV) <
m_PtCentCut || !inAcceptance[1]) z_passed_cuts =
false;
507 if (z_el[0] ->
charge() + z_el[1] ->
charge() != 0) OS =
false;
510 if(z_passed_cuts && OS){
512 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 0);
516 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 1);
520 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 2);
524 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 3);
528 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 4);
532 if(z_passed_cuts && !OS){
534 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 5);
538 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 6);
542 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 7);
546 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 8);
550 m_ZeePlots.fillElectronPlots(el4v[0], el4v[1], elclus4v[0], elclus4v[1], eltrack4v[0], eltrack4v[1], z_el[0] ->
charge(), z_el[1] ->
charge(), 9);
565 for (
auto electron : *electrons){
572 electron -> passSelection(medium,
"Medium");
573 if (medium ==
false)
continue;
576 zfwd_el[0] = electron;
577 }
else if (nelcent >= 1 && electron -> pt() > zfwd_el[0] -> pt()) {
578 zfwd_el[0] = electron;
584 for (
auto fwd_electron : *fwd_electrons){
590 fwd_electron -> passSelection(tight,
"Tight");
591 if (tight ==
false)
continue;
594 zfwd_el[1] = fwd_electron;
595 }
else if (nelfwd >= 1 && fwd_electron -> pt() > zfwd_el[1] -> pt()) {
596 zfwd_el[1] = fwd_electron;
602 for (
auto fwd_electron : *fwd_electrons){
608 fwd_electron -> passSelection(loose,
"Loose");
609 if (loose ==
false)
continue;
612 zfwd_el[1] = fwd_electron;
613 }
else if (nelfwd >= 1 && fwd_electron -> pt() > zfwd_el[1] -> pt()) {
614 zfwd_el[1] = fwd_electron;
620 for (
auto fwd_electron : *fwd_electrons){
625 zfwd_el[1] = fwd_electron;
626 }
else if (nelfwd >= 1 && fwd_electron -> pt() > zfwd_el[1] -> pt()) {
627 zfwd_el[1] = fwd_electron;
635 TLorentzVector elfwd4v[2];
636 bool inAcceptance[2];
639 double e = zfwd_el[0] -> caloCluster() -> e();
640 double etaclus = zfwd_el[0] -> caloCluster() ->
eta();
641 double eta = zfwd_el[0] -> trackParticle() ->
eta();
642 double phi = zfwd_el[0] -> trackParticle() ->
phi();
644 float pt = e * 1/std::cosh(
eta);
645 float px = pt * std::cos(
phi);
646 float py = pt * std::sin(
phi);
647 float pz = e * std::tanh(
eta);
649 elfwd4v[0] = TLorentzVector(px, py, pz, e);
652 elfwd4v[1] = zfwd_el[1] -> p4();
655 bool tight_cent =
false, loose_fwd =
false, tight_fwd =
false;
657 float ptcone40_value = -100;
658 zfwd_el[0] -> passSelection(tight_cent,
"Tight");
659 zfwd_el[1] -> passSelection(loose_fwd,
"Loose");
660 zfwd_el[1] -> passSelection(tight_fwd,
"Tight");
665 TLorentzVector zfwd = elfwd4v[0] + elfwd4v[1];
667 bool zfwd_passed_cuts =
true;
668 if ( !(tight_cent && ptcone40_value < 2000.)) zfwd_passed_cuts =
false;
670 if (elfwd4v[0].Perp()*(1./
GeV) <
m_PtCentCut || !inAcceptance[0]) zfwd_passed_cuts =
false;
671 if (elfwd4v[1].Perp()*(1./
GeV) <
m_PtFwdCut || !inAcceptance[1]) zfwd_passed_cuts =
false;
673 if(zfwd_passed_cuts){
696 return StatusCode::SUCCESS;