22 return StatusCode::SUCCESS;
32 const std::string &
label )
const
46 std::vector< std::pair< const xAOD::Egamma*, const TrigCompositeUtils::Decision * >> pair_vec;
47 std::vector< std::pair< const xAOD::Egamma*, const TrigCompositeUtils::Decision * >> pair_iso_vec;
49 std::vector<asg::AcceptData> accept_vec;
50 std::vector<asg::AcceptData> accept_iso_vec;
52 std::vector<asg::AcceptData> emu_accept_vec;
53 std::vector<asg::AcceptData> emu_accept_iso_vec;
56 for(
auto pairObj : pairObjs ){
61 if(!((
passBits & TrigDefs::L1_isPassedAfterVeto) && ((
passBits & TrigDefs::EF_prescaled)==0))){
62 ATH_MSG_DEBUG(
"Prescaled trigger: " <<
info.trigger <<
" Skipping to normalize efficiencies");
67 if(
et <
info.etthr-5.0)
continue;
71 if(
et <
info.etthr-5.0)
continue;
75 bool pass_CaloIso = getIsolation_topoetcone20(pairObj.first)/getCluster_et(pairObj.first) < 0.065;
76 bool pass_trkIso = getIsolation_ptcone20(pairObj.first)/getCluster_et(pairObj.first) < 0.05;
78 if (!pass_CaloIso || !pass_trkIso){
93 emu_accept_vec.push_back( acceptData );
95 if( IsolatedDec(*pairObj.first) ){
96 emu_accept_iso_vec.push_back(acceptData);
102 pair_vec.push_back(pairObj);
104 accept_vec.push_back(acceptData);
106 if( IsolatedDec(*pairObj.first) ){
107 pair_iso_vec.push_back(pairObj);
108 accept_iso_vec.push_back(acceptData);
115 std::string
dirname=
"Efficiency";
116 std::string l2step =
"FastElectron";
117 if(
info.signature ==
"Electron" ){
118 l2step =
"FastElectron";
119 }
else if(
info.signature ==
"Photon" ){
120 l2step =
"FastPhoton";
157 const std::string &
level,
158 const std::string &pidword,
160 const std::vector< std::pair< const xAOD::Egamma *, const TrigCompositeUtils::Decision* >>& pairObjs,
161 const std::vector< asg::AcceptData >& acceptObjs ,
162 const std::string&
dirname )
const
164 const float etthr =
info.etthr;
165 const std::string trigger =
info.trigger;
168 std::vector<float> et_vec, highet_vec, pt_vec, eta_vec, phi_vec, avgmu_vec, npvtx_vec,et_slice0_vec,et_slice1_vec,et_slice2_vec,et_slice3_vec, ptvarcone20rel_vec, ptvarcone30rel_vec, z0_vec, d0_vec;
169 std::vector<float> match_et_vec, match_highet_vec, match_pt_vec, match_eta_vec, match_phi_vec, match_avgmu_vec, match_npvtx_vec, match_ptvarcone20rel_vec, match_ptvarcone30rel_vec, match_z0_vec, match_d0_vec;
170 std::vector<bool> et_passed_vec, et_failed_vec, highet_passed_vec, highet_failed_vec, pt_passed_vec, eta_passed_vec, eta_failed_vec, phi_passed_vec, avgmu_passed_vec, npvtx_passed_vec;
171 std::vector<bool> ptvarcone20rel_passed_vec, ptvarcone30rel_passed_vec, z0_passed_vec, d0_passed_vec;
172 std::vector<bool> et_slice0_passed_vec,et_slice1_passed_vec,et_slice2_passed_vec,et_slice3_passed_vec;
194 auto match_ptvarcone20rel_col =
Monitored::Collection(
"match_ptvarcone20rel" , match_ptvarcone20rel_vec );
195 auto match_ptvarcone30rel_col =
Monitored::Collection(
"match_ptvarcone30rel" , match_ptvarcone30rel_vec );
210 auto ptvarcone20rel_passed_col =
Monitored::Collection(
"ptvarcone20rel_passed" , ptvarcone20rel_passed_vec );
211 auto ptvarcone30rel_passed_col =
Monitored::Collection(
"ptvarcone30rel_passed" , ptvarcone30rel_passed_vec );
230 for(
auto pairObj : pairObjs ){
233 bool isPassed = acceptObjs[iObj].getCutResult(
level );
235 float ptvarcone20rel = -99.0;
236 float ptvarcone30rel = -99.0;
239 const auto *
eg = pairObj.first;
248 ptvarcone20rel = getIsolation_ptvarcone20(
el)/
el->pt();
249 ptvarcone30rel = getIsolation_ptvarcone30(
el)/
el->pt();
251 z0 = getTrack_z0(
el);
252 d0 = getTrack_d0(
el);
256 float eta =
eg->caloCluster()->etaBE(2);
257 float phi =
eg->phi();
265 et_vec.push_back(
et );
266 pt_vec.push_back(
pt );
267 highet_vec.push_back(
et );
270 eta_vec.push_back(
eta);
271 phi_vec.push_back(
phi);
272 avgmu_vec.push_back(avgmu);
273 npvtx_vec.push_back(npvtx);
274 ptvarcone20rel_vec.push_back(ptvarcone20rel);
275 ptvarcone30rel_vec.push_back(ptvarcone30rel);
276 z0_vec.push_back(
z0);
277 d0_vec.push_back(
d0);
281 et_slice0_vec.push_back(
et);
282 }
else if( abs(
eta) > 0.80 && abs(
eta) <= 1.37 ){
283 et_slice1_vec.push_back(
et);
284 }
else if( abs(
eta) > 1.37 && abs(
eta) <= 1.54 ){
285 et_slice2_vec.push_back(
et);
286 }
else if( abs(
eta) > 1.54 && abs(
eta) <= 2.50 ){
287 et_slice3_vec.push_back(
et);
291 match_et_vec.push_back(
et );
292 match_pt_vec.push_back(
pt );
293 match_highet_vec.push_back(
et );
296 match_eta_vec.push_back(
eta);
297 match_phi_vec.push_back(
phi);
298 match_avgmu_vec.push_back(avgmu);
299 match_npvtx_vec.push_back(npvtx);
300 match_ptvarcone20rel_vec.push_back(ptvarcone20rel);
301 match_ptvarcone30rel_vec.push_back(ptvarcone30rel);
302 match_z0_vec.push_back(
z0);
303 match_d0_vec.push_back(
d0);
306 et_passed_vec.push_back(
true );
307 et_failed_vec.push_back(
false );
308 pt_passed_vec.push_back(
true );
309 highet_passed_vec.push_back(
true );
310 highet_failed_vec.push_back(
false );
313 et_slice0_passed_vec.push_back(
true);
314 }
else if( abs(
eta) > 0.80 && abs(
eta) <= 1.37 ){
315 et_slice1_passed_vec.push_back(
true);
316 }
else if( abs(
eta) > 1.37 && abs(
eta) <= 1.54 ){
317 et_slice2_passed_vec.push_back(
true);
318 }
else if( abs(
eta) > 1.54 && abs(
eta) <= 2.50 ){
319 et_slice3_passed_vec.push_back(
true);
323 eta_passed_vec.push_back(
true );
324 eta_failed_vec.push_back(
false );
325 phi_passed_vec.push_back(
true );
326 avgmu_passed_vec.push_back(
true );
327 npvtx_passed_vec.push_back(
true );
328 ptvarcone20rel_passed_vec.push_back(
true );
329 ptvarcone30rel_passed_vec.push_back(
true );
330 z0_passed_vec.push_back(
true );
331 d0_passed_vec.push_back(
true );
336 et_passed_vec.push_back(
false );
337 et_failed_vec.push_back(
true );
338 pt_passed_vec.push_back(
false );
339 highet_passed_vec.push_back(
false );
340 highet_failed_vec.push_back(
true );
343 et_slice0_passed_vec.push_back(
false);
344 }
else if( abs(
eta) > 0.80 && abs(
eta) <= 1.37 ){
345 et_slice1_passed_vec.push_back(
false);
346 }
else if( abs(
eta) > 1.37 && abs(
eta) <= 1.54 ){
347 et_slice2_passed_vec.push_back(
false);
348 }
else if( abs(
eta) > 1.54 && abs(
eta) <= 2.50 ){
349 et_slice3_passed_vec.push_back(
false);
353 eta_passed_vec.push_back(
false );
354 eta_failed_vec.push_back(
true );
355 phi_passed_vec.push_back(
false );
356 avgmu_passed_vec.push_back(
false );
357 npvtx_passed_vec.push_back(
false );
358 ptvarcone20rel_passed_vec.push_back(
false );
359 ptvarcone30rel_passed_vec.push_back(
false );
360 z0_passed_vec.push_back(
false );
361 d0_passed_vec.push_back(
false );
369 fill(
monGroup, et_col, highet_col, pt_col, eta_col, phi_col, avgmu_col, npvtx_col, ptvarcone20rel_col, ptvarcone30rel_col, z0_col, d0_col,
370 match_et_col, match_highet_col, match_pt_col, match_eta_col, match_phi_col, match_avgmu_col, match_npvtx_col, match_ptvarcone20rel_col, match_ptvarcone30rel_col,match_z0_col,match_d0_col,
371 et_passed_col, et_failed_col, highet_passed_col, highet_failed_col, pt_passed_col, eta_passed_col, eta_failed_col, phi_passed_col, avgmu_passed_col, npvtx_passed_col, ptvarcone20rel_passed_col, ptvarcone30rel_passed_col, z0_passed_col, d0_passed_col,
372 et_slice0_col,et_slice1_col,et_slice2_col,et_slice3_col,et_slice0_passed_col,et_slice1_passed_col,et_slice2_passed_col,et_slice3_passed_col);
381 const std::vector< asg::AcceptData >& acceptObjs )
const
386 for(
auto pairObj : pairObjs ){
389 bool isPassedL1Calo = acceptObjs[iObj].getCutResult(
"L1Calo");
390 bool isPassedL2Calo = acceptObjs[iObj].getCutResult(
"L2Calo");
391 bool isPassedL2 = acceptObjs[iObj].getCutResult(
"L2" );
392 bool isPassedEFCalo = acceptObjs[iObj].getCutResult(
"EFCalo");
393 bool isPassedHLT = acceptObjs[iObj].getCutResult(
"HLT" );
395 const auto *
eg = pairObj.first;
405 }
if(!isPassedL2Calo){
409 }
if(!isPassedEFCalo){
424 const std::string trigger =
info.trigger;
426 unsigned int condition=TrigDefs::Physics;
429 std::vector<const xAOD::Egamma*> eg_vec;
430 std::vector<const xAOD::Electron*> el_vec;
431 for(
auto pairObj: pairObjs )
433 eg_vec.push_back(pairObj.first);
436 el_vec.push_back(elOff);
450 std::vector<const xAOD::EmTauRoI*> l1_vec;
451 for(
auto &initRoi: initRois ){
452 if( !initRoi.link.isValid() )
continue;
453 const auto *feat =
match()->getL1Feature( initRoi.source );
454 if(feat) l1_vec.push_back(feat);
458 std::vector<const xAOD::eFexEMRoI*> l1_vec;
459 for(
auto &initRoi: initRois ){
460 if( !initRoi.link.isValid() )
continue;
461 const auto *feat =
match()->getL1eEMFeature( initRoi.source );
462 if(feat) l1_vec.push_back(feat);
472 std::vector<const xAOD::TrigEMCluster*> emCluster_vec;
474 for(
auto &featLinkInfo :
vec ){
475 if(! featLinkInfo.isValid() )
continue;
476 const auto *feat = *(featLinkInfo.link);
478 emCluster_vec.push_back(feat);
484 std::string
key =
match()->key(
"PrecisionCalo_Electron");
485 if(
info.signature ==
"Photon")
key =
match()->key(
"PrecisionCalo_Photon");
489 std::vector<const xAOD::CaloCluster* > clus_vec;
491 for(
auto &featLinkInfo :
vec ){
492 if(! featLinkInfo.isValid() )
continue;
493 const auto *feat = *(featLinkInfo.link);
495 clus_vec.push_back(feat);
500 if (
info.signature ==
"Electron" ){
504 std::string
key =
match()->key(
"FastElectrons");
507 std::vector<const xAOD::TrigElectron*> el_vec;
510 for(
auto &featLinkInfo :
vec ){
511 if(! featLinkInfo.isValid() )
continue;
512 const auto *feat = *(featLinkInfo.link);
514 el_vec.push_back(feat);
520 std::string
key =
match()->key(
"Electrons_GSF");
524 std::vector<const xAOD::Electron*> el_vec;
525 std::vector<const xAOD::Egamma*> eg_vec;
527 for(
auto &featLinkInfo :
vec ){
528 if(! featLinkInfo.isValid() )
continue;
529 const auto *feat = *(featLinkInfo.link);
531 el_vec.push_back(feat);
532 eg_vec.push_back(feat);
537 }
else if (
info.signature ==
"Photon"){
540 std::string
key =
match()->key(
"FastPhotons");
541 std::vector<const xAOD::TrigPhoton*> ph_vec;
544 for(
auto &featLinkInfo :
vec ){
545 if(! featLinkInfo.isValid() )
continue;
546 const auto *feat = *(featLinkInfo.link);
548 ph_vec.push_back(feat);
555 std::vector<const xAOD::Egamma*> ph_vec;
557 for(
auto &featLinkInfo :
vec ){
558 if(! featLinkInfo.isValid() )
continue;
559 const auto *feat = *(featLinkInfo.link);
561 ph_vec.push_back(feat);
579 std::vector<float> eta_vec, phi_vec, energy_vec, roi_et_vec, emIso_vec, hadCore_vec;
588 for(
const auto *
l1 : l1_vec )
591 eta_vec.push_back(
l1->eta() );
592 phi_vec.push_back(
l1->phi() );
599 fill(
monGroup, eta_col, phi_col, energy_col, roi_et_col, emIso_col, hadCore_col );
608 std::vector<float> eta_vec, phi_vec, et_vec, wstot_vec, reta_vec, rhad_vec;
618 for(
const auto *
l1 : l1_vec )
622 eta_vec.push_back(
l1->eta() );
623 phi_vec.push_back(
l1->phi() );
624 wstot_vec.push_back(
l1->Wstot() );
625 reta_vec.push_back(
l1->Reta() );
626 rhad_vec.push_back(
l1->Rhad() );
629 fill(
monGroup, eta_col, phi_col, et_col, wstot_col, reta_col, rhad_col );
639 std::vector<float> et_vec,highet_vec, eta_vec, phi_vec;
646 for (
const auto *emCluster : emCluster_vec )
648 if(!emCluster)
continue;
651 eta_vec.push_back( emCluster->eta() );
652 phi_vec.push_back( emCluster->phi() );
667 std::vector<float> et_vec, eta_vec, phi_vec, highet_vec;
674 for (
const auto *
el : el_vec )
679 eta_vec.push_back(
el->eta() );
680 phi_vec.push_back(
el->phi() );
691 std::vector<float> et_vec, eta_vec, phi_vec, highet_vec;
698 for (
const auto *ph : ph_vec )
703 eta_vec.push_back( ph->eta() );
704 phi_vec.push_back( ph->phi() );
717 std::vector<float> energyBE0_vec, energyBE1_vec, energyBE2_vec, energyBE3_vec,
718 energy_vec, et_vec, eta_vec, phi_vec, eta_calo_vec, phi_calo_vec, highet_vec;
734 for (
const auto *clus : clus_vec )
736 double tmpeta = -999.;
739 double tmpphi = -999.;
750 eta_vec.push_back( clus->eta() );
751 phi_vec.push_back( clus->phi() );
752 eta_calo_vec.push_back( tmpeta );
753 phi_calo_vec.push_back( tmpphi );
758 fill(
monGroup, energyBE0_col, energyBE1_col, energyBE2_col, energyBE3_col,
759 energy_col, et_col, eta_col, phi_col, eta_calo_col, phi_calo_col, highet_col);
770 auto monGroup =
getGroup( trigger + ( online ?
"_Distributions_HLT" :
"_Distributions_Offline") );
772 std::vector<float> Rhad_vec, Rhad1_vec, Reta_vec, Rphi_vec, weta1_vec, weta2_vec,
773 f1_vec, f3_vec, eratio_vec, et_vec, highet_vec , eta_vec, phi_vec, topoetcone20_vec, topoetcone40_shift_vec,
774 topoetcone20_rel_vec, topoetcone40_shift_rel_vec;
793 auto topoetcone40_shift_rel_col =
Monitored::Collection(
"topoetcone40_shift_rel", topoetcone40_shift_rel_vec );
795 for (
const auto *
eg : eg_vec ){
799 Rhad_vec.push_back( getShowerShape_Rhad(
eg));
800 Rhad1_vec.push_back( getShowerShape_Rhad(
eg));
801 Reta_vec.push_back( getShowerShape_Reta(
eg));
802 Rphi_vec.push_back( getShowerShape_Rphi(
eg));
803 weta1_vec.push_back( getShowerShape_weta1(
eg));
804 weta2_vec.push_back( getShowerShape_weta2(
eg));
805 f1_vec.push_back( getShowerShape_f1(
eg));
806 f3_vec.push_back( getShowerShape_f3(
eg));
807 eratio_vec.push_back( getShowerShape_Eratio(
eg));
810 eta_vec.push_back(
eg->eta());
811 phi_vec.push_back(
eg->phi());
813 topoetcone40_shift_vec.push_back( (getIsolation_topoetcone40(
eg)-2450)/
Gaudi::Units::GeV );
816 topoetcone20_rel_vec.push_back( getIsolation_topoetcone20(
eg)/
eg->pt());
817 topoetcone40_shift_rel_vec.push_back( (getIsolation_topoetcone40(
eg)-2450)/
eg->pt() );
822 fill(
monGroup, Rhad_col, Rhad1_col, Reta_col, Rphi_col, weta1_col, weta2_col,
823 f1_col, f3_col, eratio_col, et_col, highet_col , eta_col, phi_col, topoetcone20_col, topoetcone40_shift_col,
824 topoetcone20_rel_col, topoetcone40_shift_rel_col );
834 auto monGroup =
getGroup( trigger + ( online ?
"_Distributions_HLT" :
"_Distributions_Offline") );
836 std::vector<float> deta1_vec, deta1_EMECA_vec, deta1_EMECC_vec, deta1_EMEBA_vec, deta1_EMEBC_vec, deta2_vec, dphi2_vec,
837 dphiresc_vec, eprobht_vec, npixhits_vec, nscthits_vec, charge_vec, ptcone20_vec, ptvarcone20_vec, ptcone30_vec, ptvarcone30_vec, z0_vec, d0_vec, d0sig_vec,
838 pt_vec,pt_trk_vec, ptcone20_rel_vec, ptvarcone20_rel_vec, ptcone30_rel_vec, ptvarcone30_rel_vec, eta_vec, mu_vec;
870 for (
const auto *
eg : eg_vec ){
875 if(
eg->caloCluster()) cleta=
eg->caloCluster()->eta();
876 else cleta=
eg->eta();
878 deta1_vec.push_back( getCaloTrackMatch_deltaEta1(
eg));
880 if(cleta > 1.375 && cleta < 3.2)
881 deta1_EMECA_vec.push_back( getCaloTrackMatch_deltaEta1(
eg));
882 if(cleta < -1.375 && cleta > -3.2)
883 deta1_EMECC_vec.push_back( getCaloTrackMatch_deltaEta1(
eg));
884 if(cleta > 0 && cleta < 1.375)
885 deta1_EMEBA_vec.push_back( getCaloTrackMatch_deltaEta1(
eg));
886 if(cleta < 0 && cleta > -1.375)
887 deta1_EMEBC_vec.push_back( getCaloTrackMatch_deltaEta1(
eg));
889 deta2_vec.push_back( getCaloTrackMatch_deltaEta2(
eg));
890 dphi2_vec.push_back( getCaloTrackMatch_deltaPhi2(
eg));
891 dphiresc_vec.push_back( getCaloTrackMatch_deltaPhiRescaled2(
eg));
892 eprobht_vec.push_back( getTrackSummaryFloat_eProbabilityHT(
eg));
893 npixhits_vec.push_back( getTrackSummary_numberOfPixelHits(
eg));
894 nscthits_vec.push_back( getTrackSummary_numberOfSCTHits(
eg));
895 charge_vec.push_back(
eg->charge());
903 z0_vec.push_back( getTrack_z0(
eg));
904 d0_vec.push_back( getTrack_d0(
eg));
908 eta_vec.push_back(
eg->eta());
911 mu_vec.push_back( avgmu );
914 ptcone20_rel_vec.push_back( getIsolation_ptcone20(
eg)/
eg->pt());
915 ptvarcone20_rel_vec.push_back( getIsolation_ptvarcone20(
eg)/
eg->pt());
916 ptcone30_rel_vec.push_back( getIsolation_ptcone30(
eg)/
eg->pt());
917 ptvarcone30_rel_vec.push_back( getIsolation_ptvarcone30(
eg)/
eg->pt());
923 fill(
monGroup, deta1_col, deta1_EMECA_col, deta1_EMECC_col, deta1_EMEBA_col, deta1_EMEBC_col, deta2_col, dphi2_col,
924 dphiresc_col, eprobht_col, npixhits_col, nscthits_col, charge_col, ptcone20_col, ptvarcone20_col, ptcone30_col, ptvarcone30_col, z0_col, d0_col, d0sig_col,
925 pt_col, ptcone20_rel_col, ptvarcone20_rel_col, ptcone30_rel_col, ptvarcone30_rel_col, eta_col, mu_col,pt_trk_col);
939 std::vector< std::pair< const xAOD::Egamma*, const xAOD::EmTauRoI * >> pair_l1_vec;
940 std::vector< std::pair< const xAOD::Egamma*, const TrigCompositeUtils::Decision * >> pair_eg_vec;
941 const std::string trigger =
info.trigger;
944 for(
auto pairObj : pairObjs ){
947 const auto *feat = pairObj.second;
954 const auto *
l1 =
match()->getL1Feature( feat );
958 if(
et <
info.etthr-5.0)
continue;
959 if(!pidnameDec(*
eg))
continue;
960 pair_eg_vec.emplace_back(
el,feat);
961 if(
l1) pair_l1_vec.emplace_back(
eg,
l1 );
965 if(
et <
info.etthr-5.0)
continue;
966 pair_eg_vec.emplace_back(
eg,feat);
967 if(
l1) pair_l1_vec.emplace_back(
eg,
l1 );
979 if (
info.signature==
"Electron"){
982 else if (
info.signature==
"Photon"){
992 const std::vector< std::pair< const xAOD::Egamma*, const xAOD::EmTauRoI * >>& pairObjs )
const
996 std::vector<float> eta_vec, res_et_vec;
1002 for (
const auto & pairObj : pairObjs){
1003 const auto *off = pairObj.first;
1004 const auto *
l1 = pairObj.second;
1008 eta_vec.push_back(
l1->eta() );
1009 res_et_vec.push_back( (
l1->emClus()-
getEt(eloff))/
getEt(eloff) ) ;
1022 const std::vector< std::pair< const xAOD::Egamma*, const xAOD::EmTauRoI * >>& pairObjs )
const
1026 std::vector<float> eta_vec, res_et_vec;
1032 for (
const auto & pairObj : pairObjs){
1033 const auto *off = pairObj.first;
1034 const auto *
l1 = pairObj.second;
1038 eta_vec.push_back(
l1->eta() );
1050 const std::vector< std::pair< const xAOD::Egamma*, const TrigCompositeUtils::Decision * >>& pairObjs,
1056 std::vector<float> res_pt_vec, res_et_vec, res_phi_vec, res_eta_vec, res_deta1_vec, res_deta2_vec, res_dphi2_vec, res_dphiresc_vec,
1057 res_z0_vec, res_d0_vec, res_d0sig_vec, res_eprobht_vec, res_npixhits_vec, res_nscthits_vec, res_Rhad_vec, res_Rhad1_vec, res_Reta_vec,
1058 res_Rphi_vec, res_weta1_vec, res_weta2_vec, res_wtots1_vec, res_f1_vec, res_f3_vec, res_eratio_vec, res_ethad_vec, res_ethad1_vec,
1059 et_vec, eta_vec, mu_vec;
1060 std::vector<float> res_ptcone20_vec, res_ptcone20_rel_vec, res_ptvarcone20_vec, res_ptvarcone20_rel_vec;
1061 std::vector<float> res_etInEta0_vec, res_etInEta1_vec, res_etInEta2_vec, res_etInEta3_vec;
1105 auto res_ptvarcone20_rel_col =
Monitored::Collection(
"res_ptvarcone20_rel" , res_ptvarcone20_rel_vec );
1113 std::string
key =
match()->key(
"Electrons_GSF");
1117 for (
const auto & pairObj : pairObjs ){
1124 float maxDeltaR=0.05;
1126 for(
auto &featLinkInfo :
vec ){
1127 if(! featLinkInfo.isValid() )
continue;
1128 const auto *feat = *(featLinkInfo.link);
1130 float deltaR =
dR( off->
eta(), off->
phi(), feat->eta(), feat->phi() );
1141 const float onl_eta=
onl->eta();
1142 const float feta = abs(onl_eta);
1145 const float dummy=-999;
1147 eta_vec.push_back( onl_eta );
1148 et_vec.push_back( onl_et );
1149 mu_vec.push_back( avgmu );
1151 val_off=getTrack_pt(off);
1153 res_pt_vec.push_back( (getTrack_pt(off)-val_off)/val_off );
1160 res_et_vec.push_back( (
getEt(
onl)-val_off)/val_off );
1162 res_etInEta0_vec.push_back((
getEt(
onl)-val_off)/val_off);
1163 else if( feta >=1.37 && feta <= 1.52 )
1164 res_etInEta1_vec.push_back((
getEt(
onl)-val_off)/val_off);
1165 else if( feta >= 1.55 && feta < 1.8 )
1166 res_etInEta2_vec.push_back((
getEt(
onl)-val_off)/val_off);
1167 else if( feta >= 1.8 && feta < 2.45 )
1168 res_etInEta3_vec.push_back((
getEt(
onl)-val_off)/val_off);
1173 res_eta_vec.push_back( (onl_eta-val_off)/val_off );
1175 res_eta_vec.push_back(
dummy );
1180 res_phi_vec.push_back( (
onl->phi()-val_off)/val_off );
1182 res_phi_vec.push_back(
dummy );
1185 val_off=getShowerShape_ethad(off);
1187 res_ethad_vec.push_back((getShowerShape_ethad(
onl)-val_off)/val_off);
1189 res_ethad_vec.push_back(
dummy );
1192 val_off=getShowerShape_ethad1(off);
1194 res_ethad1_vec.push_back((getShowerShape_ethad1(
onl)-val_off)/val_off);
1196 res_ethad1_vec.push_back(
dummy);
1199 val_off=getShowerShape_Rhad(off);
1201 res_Rhad_vec.push_back( (getShowerShape_Rhad(
onl)-val_off)/val_off );
1203 res_Rhad_vec.push_back(
dummy );
1206 val_off=getShowerShape_Rhad1(off);
1208 res_Rhad1_vec.push_back( (getShowerShape_Rhad1(
onl)-val_off)/val_off );
1210 res_Rhad1_vec.push_back(
dummy );
1213 val_off=getShowerShape_Reta(off);
1215 res_Reta_vec.push_back( (getShowerShape_Reta(
onl)-val_off)/val_off );
1217 res_Reta_vec.push_back(
dummy );
1220 val_off=getShowerShape_Rphi(off);
1222 res_Rphi_vec.push_back( (getShowerShape_Rphi(
onl)-val_off)/val_off );
1224 res_Rphi_vec.push_back( (getShowerShape_Rphi(
onl)-val_off)/val_off );
1227 val_off=getShowerShape_weta1(off);
1229 res_weta1_vec.push_back( (getShowerShape_weta1(
onl)-val_off)/val_off );
1231 res_weta1_vec.push_back(
dummy );
1234 val_off=getShowerShape_weta2(off);
1236 res_weta2_vec.push_back( (getShowerShape_weta2(
onl)-val_off)/val_off );
1238 res_weta2_vec.push_back(
dummy );
1241 val_off=getShowerShape_wtots1(off);
1243 res_wtots1_vec.push_back( (getShowerShape_wtots1(
onl)-val_off)/val_off );
1245 res_wtots1_vec.push_back(
dummy );
1248 val_off=getShowerShape_f1(off);
1250 res_f1_vec.push_back( (getShowerShape_f1(
onl)-val_off)/val_off );
1252 res_f1_vec.push_back(
dummy );
1255 val_off=getShowerShape_f3(off);
1257 res_f3_vec.push_back( (getShowerShape_f3(
onl)-val_off)/val_off );
1259 res_f3_vec.push_back(
dummy );
1262 val_off=getShowerShape_Eratio(off);
1264 res_eratio_vec.push_back( (getShowerShape_Eratio(
onl)-val_off)/val_off );
1266 res_eratio_vec.push_back(
dummy );
1274 val_off=getTrack_pt(off);
1276 res_pt_vec.push_back( (getTrack_pt(
onl)-val_off)/val_off );
1278 res_pt_vec.push_back(
dummy );
1283 res_et_vec.push_back( (
getEt(
onl)-val_off)/val_off );
1285 res_et_vec.push_back(
dummy );
1288 val_off=getCaloTrackMatch_deltaEta1(off);
1290 res_deta1_vec.push_back( (getCaloTrackMatch_deltaEta1(
onl)-val_off)/val_off );
1292 res_deta1_vec.push_back(
dummy );
1295 val_off=getCaloTrackMatch_deltaEta2(off);
1296 res_deta2_vec.push_back( (getCaloTrackMatch_deltaEta2(
onl)-val_off)/val_off );
1297 val_off=getCaloTrackMatch_deltaPhi2(off);
1299 res_dphi2_vec.push_back( (getCaloTrackMatch_deltaPhi2(
onl)-val_off)/val_off );
1301 res_dphi2_vec.push_back(
dummy );
1304 val_off=getCaloTrackMatch_deltaPhiRescaled2(off);
1305 res_dphiresc_vec.push_back( (getCaloTrackMatch_deltaPhiRescaled2(
onl)-val_off)/val_off );
1307 val_off=getTrack_z0(off);
1309 res_z0_vec.push_back( getTrack_z0(
onl)-val_off );
1311 res_z0_vec.push_back(
dummy );
1315 val_off=getTrack_d0(off);
1317 res_d0_vec.push_back( getTrack_d0(
onl)-val_off );
1319 res_d0_vec.push_back(
dummy );
1326 res_d0sig_vec.push_back(
dummy );
1330 val_off=getTrackSummaryFloat_eProbabilityHT(off);
1331 res_eprobht_vec.push_back( (getTrackSummaryFloat_eProbabilityHT(
onl)-val_off) );
1332 res_npixhits_vec.push_back( getTrackSummary_numberOfPixelHits(
onl)-getTrackSummary_numberOfPixelHits(
onl) );
1333 res_nscthits_vec.push_back( getTrackSummary_numberOfSCTHits(
onl)-getTrackSummary_numberOfSCTHits(
onl) );
1340 float val_off=getIsolation_ptcone20(off);
1342 res_ptcone20_vec.push_back((getIsolation_ptcone20(
onl)-val_off)/val_off);
1344 const float reliso_onl=getIsolation_ptcone20(
onl)/
getEt(
onl);
1345 const float reliso_off=getIsolation_ptcone20(off)/
getEt(off);
1346 res_ptcone20_rel_vec.push_back((reliso_onl-reliso_off)/reliso_off);
1348 res_ptcone20_rel_vec.push_back(
dummy);
1351 res_ptcone20_vec.push_back(
dummy);
1352 res_ptcone20_rel_vec.push_back(
dummy);
1356 val_off=getIsolation_ptvarcone20(off);
1359 res_ptvarcone20_vec.push_back((getIsolation_ptvarcone20(
onl)-val_off)/val_off);
1360 const float reliso_onl=getIsolation_ptvarcone20(
onl)/
getEt(
onl);
1361 const float reliso_off=getIsolation_ptvarcone20(off)/
getEt(off);
1362 res_ptvarcone20_rel_vec.push_back((reliso_onl-reliso_off)/reliso_off);
1364 res_ptvarcone20_rel_vec.push_back(
dummy);
1367 res_ptvarcone20_vec.push_back(
dummy);
1368 res_ptvarcone20_rel_vec.push_back(
dummy);
1411 res_ptcone20_rel_col ,
1412 res_ptvarcone20_col ,
1413 res_ptvarcone20_rel_col ,
1428 const std::vector< std::pair< const xAOD::Egamma*, const TrigCompositeUtils::Decision * >>& pairObjs,
1434 std::vector<float> res_phi_vec, res_eta_vec, res_Rhad_vec, res_Rhad1_vec, res_Reta_vec, res_ethad_vec, res_ethad1_vec,
1435 res_Rphi_vec, res_weta1_vec, res_weta2_vec, res_wtots1_vec, res_f1_vec, res_f3_vec, res_eratio_vec, et_vec, eta_vec, mu_vec;
1437 std::vector<float> res_et_vec, res_et_cnv_vec, res_et_uncnv_vec;
1438 std::vector<float> res_etInEta0_vec, res_etInEta1_vec, res_etInEta2_vec, res_etInEta3_vec;
1439 std::vector<float> res_cnv_etInEta0_vec, res_cnv_etInEta1_vec, res_cnv_etInEta2_vec, res_cnv_etInEta3_vec;
1440 std::vector<float> res_uncnv_etInEta0_vec, res_uncnv_etInEta1_vec, res_uncnv_etInEta2_vec, res_uncnv_etInEta3_vec;
1444 std::vector<float> res_topoetcone20_vec, res_topoetcone20_rel_vec;
1478 auto res_uncnv_etInEta0_col =
Monitored::Collection(
"res_uncnv_etInEta0" , res_uncnv_etInEta0_vec);
1479 auto res_uncnv_etInEta1_col =
Monitored::Collection(
"res_uncnv_etInEta1" , res_uncnv_etInEta1_vec);
1480 auto res_uncnv_etInEta2_col =
Monitored::Collection(
"res_uncnv_etInEta2" , res_uncnv_etInEta2_vec);
1481 auto res_uncnv_etInEta3_col =
Monitored::Collection(
"res_uncnv_etInEta3" , res_uncnv_etInEta3_vec);
1485 auto res_topoetcone20_rel_col =
Monitored::Collection(
"res_topoetcone20_rel" , res_topoetcone20_rel_vec );
1495 for (
const auto & pairObj : pairObjs ){
1502 float maxDeltaR=0.05;
1504 for(
auto &featLinkInfo :
vec ){
1505 if(! featLinkInfo.isValid() )
continue;
1506 const auto *feat = *(featLinkInfo.link);
1508 float deltaR =
dR( off->
eta(), off->
phi(), feat->eta(), feat->phi() );
1520 const float onl_eta=
onl->eta();
1521 const float feta = abs(onl_eta);
1523 const float dummy=-999;
1526 et_vec.push_back( onl_et );
1527 eta_vec.push_back( onl_eta );
1528 mu_vec.push_back( avgmu );
1531 val_off=getCluster_et(off);
1533 res_et_vec.push_back( (getCluster_et(
onl)-val_off)/val_off );
1535 res_etInEta0_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1536 else if( feta >=1.37 && feta <= 1.52 )
1537 res_etInEta1_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1538 else if( feta >= 1.55 && feta < 1.8 )
1539 res_etInEta2_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1540 else if( feta >= 1.8 && feta < 2.45 )
1541 res_etInEta3_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1544 res_et_cnv_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1546 res_cnv_etInEta0_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1547 else if( feta >=1.37 && feta <= 1.52 )
1548 res_cnv_etInEta1_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1549 else if( feta >= 1.55 && feta < 1.8 )
1550 res_cnv_etInEta2_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1551 else if( feta >= 1.8 && feta < 2.45 )
1552 res_cnv_etInEta3_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1554 res_et_uncnv_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1556 res_uncnv_etInEta0_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1557 else if( feta >=1.37 && feta <= 1.52 )
1558 res_uncnv_etInEta1_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1559 else if( feta >= 1.55 && feta < 1.8 )
1560 res_uncnv_etInEta2_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1561 else if( feta >= 1.8 && feta < 2.45 )
1562 res_uncnv_etInEta3_vec.push_back((getCluster_et(
onl)-val_off)/val_off);
1568 res_eta_vec.push_back( (onl_eta-val_off)/val_off ) ;
1570 res_eta_vec.push_back(
dummy ) ;
1575 res_phi_vec.push_back( (
onl->phi()-val_off)/val_off );
1577 res_phi_vec.push_back(
dummy );
1580 val_off=getShowerShape_ethad(off);
1582 res_ethad_vec.push_back((getShowerShape_ethad(
onl)-val_off)/val_off);
1584 res_ethad_vec.push_back(
dummy);
1587 val_off=getShowerShape_ethad1(off);
1589 res_ethad1_vec.push_back((getShowerShape_ethad1(
onl)-val_off)/val_off);
1591 res_ethad1_vec.push_back(
dummy);
1594 val_off=getShowerShape_Rhad(off);
1596 res_Rhad_vec.push_back( (getShowerShape_Rhad(
onl)-val_off)/val_off );
1598 res_Rhad_vec.push_back(
dummy );
1601 val_off=getShowerShape_Rhad1(off);
1603 res_Rhad1_vec.push_back( (getShowerShape_Rhad1(
onl)-val_off)/val_off );
1605 res_Rhad1_vec.push_back(
dummy );
1608 val_off=getShowerShape_Reta(off);
1610 res_Reta_vec.push_back( (getShowerShape_Reta(
onl)-val_off)/val_off );
1612 res_Reta_vec.push_back(
dummy );
1615 val_off=getShowerShape_Rphi(off);
1617 res_Rphi_vec.push_back( (getShowerShape_Rphi(
onl)-val_off)/val_off );
1619 res_Rphi_vec.push_back(
dummy );
1622 val_off=getShowerShape_weta1(off);
1624 res_weta1_vec.push_back( (getShowerShape_weta1(
onl)-val_off)/val_off );
1626 res_weta1_vec.push_back(
dummy );
1629 val_off=getShowerShape_weta2(off);
1631 res_weta2_vec.push_back( (getShowerShape_weta2(
onl)-val_off)/val_off );
1633 res_weta2_vec.push_back(
dummy);
1636 val_off=getShowerShape_wtots1(off);
1638 res_wtots1_vec.push_back( (getShowerShape_wtots1(
onl)-val_off)/val_off );
1640 res_wtots1_vec.push_back(
dummy );
1643 val_off=getShowerShape_f1(off);
1645 res_f1_vec.push_back( (getShowerShape_f1(
onl)-val_off)/val_off );
1647 res_f1_vec.push_back(
dummy );
1650 val_off=getShowerShape_f3(off);
1652 res_f3_vec.push_back( (getShowerShape_f3(
onl)-val_off)/val_off );
1654 res_f3_vec.push_back(
dummy );
1657 val_off=getShowerShape_Eratio(off);
1659 res_eratio_vec.push_back( (getShowerShape_Eratio(
onl)-val_off)/val_off);
1661 res_eratio_vec.push_back(
dummy);
1665 if(
info.isolated ){
1667 float val_off=getIsolation_topoetcone20(off);
1668 float etonl=
onl->pt();
1669 float etoff=off->
pt();
1671 res_topoetcone20_vec.push_back((getIsolation_topoetcone20(
onl)-val_off)/val_off);
1672 if (etonl > 0. && etoff > 0.) {
1673 const float reliso_onl=getIsolation_topoetcone20(
onl)/etonl;
1674 const float reliso_off=getIsolation_topoetcone20(off)/etoff;
1675 res_topoetcone20_rel_vec.push_back((reliso_onl-reliso_off)/reliso_off);
1677 res_topoetcone20_rel_vec.push_back(
dummy);
1680 res_topoetcone20_vec.push_back(
dummy);
1681 res_topoetcone20_rel_vec.push_back(
dummy);
1709 res_topoetcone20_col ,
1710 res_topoetcone20_rel_col ,
1716 res_cnv_etInEta0_col,
1717 res_cnv_etInEta1_col,
1718 res_cnv_etInEta2_col,
1719 res_cnv_etInEta3_col,
1721 res_uncnv_etInEta0_col,
1722 res_uncnv_etInEta1_col,
1723 res_uncnv_etInEta2_col,
1724 res_uncnv_etInEta3_col
1733 const std::vector< std::pair< const xAOD::Egamma*, const TrigCompositeUtils::Decision * >>& pairObjs )
const
1740 std::vector<float> res_et_vec, res_phi_vec, res_eta_vec, res_Rhad_vec, res_Rhad1_vec, res_Reta_vec, res_ethad_vec, res_ethad1_vec,
1741 res_Rphi_vec, res_weta2_vec, res_f1_vec, res_f3_vec, res_eratio_vec, et_vec, eta_vec;
1761 for (
const auto & pairObj : pairObjs ){
1768 float maxDeltaR=0.05;
1770 for(
auto &featLinkInfo :
vec ){
1771 if(! featLinkInfo.isValid() )
continue;
1772 const auto *feat = *(featLinkInfo.link);
1774 float deltaR =
dR( off->
eta(), off->
phi(), feat->eta(), feat->phi() );
1784 et_vec.push_back(
onl->et()*1
e-3);
1785 eta_vec.push_back(
onl->eta());
1786 const float dummy=-999;
1792 res_et_vec.push_back(((
onl->et())-val_off)/val_off);
1794 res_et_vec.push_back(
dummy);
1799 res_eta_vec.push_back((
onl->eta()-val_off)/val_off);
1801 res_eta_vec.push_back(
dummy);
1806 res_phi_vec.push_back((
onl->phi()-val_off)/val_off);
1808 res_phi_vec.push_back((
onl->phi()-val_off)/val_off);
1816 elonl_ethad /= TMath::CosH(
onl->eta() );
1817 val_off=getShowerShape_ethad(off);
1819 res_ethad_vec.push_back((elonl_ethad-val_off)/val_off);
1821 res_ethad_vec.push_back(
dummy);
1824 val_off=getShowerShape_ethad1(off);
1826 res_ethad1_vec.push_back(( (
onl->ehad1()/TMath::Abs(
onl->eta()) )-val_off)/val_off);
1828 res_ethad1_vec.push_back(
dummy);
1831 float elonl_Rhad = elonl_ethad /
onl->energy() ;
1832 val_off=getShowerShape_Rhad(off);
1834 res_Rhad_vec.push_back(( elonl_Rhad-val_off)/val_off);
1836 res_Rhad_vec.push_back(
dummy);
1839 float elonl_Rhad1 =
onl->ehad1() /
onl->energy() ;
1840 val_off=getShowerShape_Rhad1(off);
1842 res_Rhad1_vec.push_back(( elonl_Rhad1-val_off)/val_off);
1844 res_Rhad1_vec.push_back(
dummy);
1847 float onl_reta= 999.0;
1848 if ( fabsf (
onl->e277() ) > 0.01 ) onl_reta =
onl->e237() /
onl->e277();
1849 val_off=getShowerShape_Reta(off);
1851 res_Reta_vec.push_back( (onl_reta -val_off)/val_off);
1853 res_Reta_vec.push_back(
dummy);
1856 val_off=getShowerShape_weta2(off);
1858 res_weta2_vec.push_back(( (
onl->weta2())-val_off)/val_off);
1860 res_weta2_vec.push_back(
dummy);
1864 onl_f1 /=
onl->energy();
1865 val_off=getShowerShape_f1(off);
1867 res_f1_vec.push_back(( (onl_f1)-val_off)/val_off);
1869 res_f1_vec.push_back(
dummy);
1873 onl_f3 /=
onl->energy();
1874 val_off=getShowerShape_f3(off);
1876 res_f3_vec.push_back(( (onl_f3)-val_off)/val_off);
1878 res_f3_vec.push_back(
dummy);
1881 float onl_eratio = 999.0;
1882 if ( fabsf(
onl->emaxs1() +
onl->e2tsts1()) > 0.01 )
1883 onl_eratio = (
onl->emaxs1() -
onl->e2tsts1()) / (
onl->emaxs1() +
onl->e2tsts1());
1884 val_off=getShowerShape_Eratio(off);
1886 res_eratio_vec.push_back(( (onl_eratio)-val_off)/val_off);
1888 res_eratio_vec.push_back(
dummy);