57     return StatusCode::SUCCESS;
 
   60   if (
m_trigDecTool->ExperimentalAndExpertMethods().isHLTTruncated()){
 
   62     return StatusCode::SUCCESS;
 
   67   if (! hltCluster_readHandle.
isValid() ) {
 
   69     return StatusCode::FAILURE;
 
   74   if (! offCluster_readHandle.
isValid() ) {
 
   76     return StatusCode::FAILURE;
 
   80   int bcid = ctx.eventID().bunch_crossing_id();
 
   85      ATH_MSG_ERROR( 
"Unable to retrieve BunchCrossing conditions object" );
 
   86      return StatusCode::FAILURE;
 
   97   std::vector<clus_kin> vec_hlt_clusters;
 
  101    if (accepted_hlt_clusters.size()>0){
 
  102     for (
const auto* hlt_cluster : accepted_hlt_clusters) {
 
  103         auto hlt_clus_et = hlt_cluster->et();
 
  106         bool HLT_type_match = 
false;
 
  109                 if (hlt_cluster->clusterSize() == 
m_HLT_types[
n]) { HLT_type_match = 
true; 
break; }
 
  112     if (!
m_HLT_types.empty() && !HLT_type_match) 
continue;
 
  113         vec_hlt_clusters.push_back({hlt_clus_et*0.001, hlt_cluster->eta(), hlt_cluster->phi(), hlt_cluster});
 
  117     for (
const auto hlt_cluster : *hltCluster_readHandle) {
 
  118         auto hlt_clus_et = hlt_cluster->et();
 
  121         bool HLT_type_match = 
false;
 
  124                 if (hlt_cluster->clusterSize() == 
m_HLT_types[
n]) { HLT_type_match = 
true; 
break; }
 
  127     if (!
m_HLT_types.empty() && !HLT_type_match) 
continue;
 
  128         vec_hlt_clusters.push_back({hlt_clus_et*0.001, hlt_cluster->eta(), hlt_cluster->phi(), hlt_cluster});
 
  133   float off_clus_eta = 0;
 
  134   float off_clus_phi = 0;
 
  135   float off_clus_et = 0;
 
  136   std::vector<clus_kin> vec_off_clusters;
 
  137   for (
const auto off_cluster : *offCluster_readHandle) {
 
  139       off_clus_et = off_cluster->et();
 
  140           off_clus_eta = off_cluster->eta();
 
  141           off_clus_phi = off_cluster->phi();
 
  144           off_clus_et = off_cluster->rawE()/std::cosh(std::abs(off_cluster->rawEta()));
 
  145           off_clus_eta = off_cluster->rawEta();
 
  146           off_clus_phi = off_cluster->rawPhi();
 
  150     bool OFF_type_match = 
false;
 
  153         if (off_cluster->clusterSize() == 
m_OFF_types[
n]) { OFF_type_match = 
true; 
break; }
 
  156     if (!
m_OFF_types.empty() && !OFF_type_match) 
continue;
 
  157     vec_off_clusters.push_back({off_clus_et*0.001, off_clus_eta, off_clus_phi, off_cluster});
 
  165   unsigned int n_hlt_clusters = 0;
 
  166   unsigned int n_hlt_barrel_high_et_clusters = 0;
 
  167   unsigned int n_hlt_clusters_no_match = 0;
 
  168   unsigned int n_hlt_clusters_with_match = 0;
 
  184   std::vector<char> vec_hlt_barrel_high_et, vec_hlt_no_off_match, vec_hlt_with_off_match;
 
  194   std::vector<float> vec_hlt_vs_off_minimum_delta_r, vec_hlt_vs_off_delta_eta, vec_hlt_vs_off_delta_phi, vec_hlt_vs_off_delta_time, vec_hlt_vs_off_resolution, vec_off_match_et;
 
  197   auto HLT_vs_OFF_minimum_delta_r = 
Monitored::Collection(
"HLT_vs_OFF_minimum_delta_r", vec_hlt_vs_off_minimum_delta_r);
 
  200   auto HLT_vs_OFF_delta_time = 
Monitored::Collection(
"HLT_vs_OFF_delta_time", vec_hlt_vs_off_delta_time);
 
  201   auto HLT_vs_OFF_resolution = 
Monitored::Collection(
"HLT_vs_OFF_resolution", vec_hlt_vs_off_resolution);
 
  204   const clus_kin *off_match = 
nullptr; 
 
  208   for (
const auto& hlt_cluster : vec_hlt_clusters) {
 
  213     if (hlt_cluster.et > (
m_HLT_high_et * 0.001) && std::abs(hlt_cluster.eta) < 2.5) {
 
  214         ++n_hlt_barrel_high_et_clusters;
 
  215         vec_hlt_barrel_high_et.push_back(1);
 
  217     else vec_hlt_barrel_high_et.push_back(0);
 
  221     float min_delta_r  = 999999.9;
 
  223     for (
const auto& off_cluster : vec_off_clusters) {
 
  226         if (delta_r < min_delta_r) {
 
  228             min_delta_r = delta_r;
 
  229             off_match = &off_cluster;
 
  234     vec_hlt_vs_off_minimum_delta_r.push_back(min_delta_r);
 
  239         ++n_hlt_clusters_no_match;
 
  241         vec_off_match_et.push_back(0.);
 
  243         vec_hlt_vs_off_resolution.push_back(0.);
 
  244         vec_hlt_vs_off_delta_eta.push_back(0.);
 
  245         vec_hlt_vs_off_delta_phi.push_back(0.);
 
  246         vec_hlt_vs_off_delta_time.push_back(0.);
 
  248         vec_hlt_no_off_match.push_back(1);
 
  249         vec_hlt_with_off_match.push_back(0);
 
  255         ++n_hlt_clusters_with_match;
 
  257         vec_off_match_et.push_back(off_match->
et);
 
  259         vec_hlt_vs_off_resolution.push_back(((off_match->
et - hlt_cluster.et) / off_match->
et) * 100);
 
  260         vec_hlt_vs_off_delta_eta.push_back(off_match->
eta - hlt_cluster.eta);
 
  262         vec_hlt_vs_off_delta_time.push_back(off_match->
parent->time() - hlt_cluster.parent->time());
 
  264         vec_hlt_no_off_match.push_back(0);
 
  265         vec_hlt_with_off_match.push_back(1);
 
  270   HLT_num = n_hlt_clusters;
 
  271   HLT_barrel_high_et_num = n_hlt_barrel_high_et_clusters;
 
  272   HLT_no_OFF_match_num = n_hlt_clusters_no_match;
 
  273   HLT_with_OFF_match_num = n_hlt_clusters_with_match;
 
  274   if (n_hlt_clusters>0) {
 
  275     HLT_matched_fraction = 
static_cast<float>(n_hlt_clusters_with_match) / n_hlt_clusters;
 
  282   unsigned int n_off_clusters = 0;
 
  283   unsigned int n_off_clusters_no_match = 0;
 
  284   unsigned int n_off_clusters_with_match = 0;
 
  287   std::vector<float> vec_off_et, vec_off_eta, vec_off_phi, vec_off_time;
 
  288   std::vector<int> vec_off_type;
 
  298   std::vector<char> vec_off_no_hlt_match, vec_off_with_hlt_match;
 
  306   std::vector<float> vec_off_vs_hlt_minimum_delta_r, vec_off_vs_hlt_delta_eta, vec_off_vs_hlt_delta_phi, vec_off_vs_hlt_delta_time, vec_off_vs_hlt_resolution, vec_hlt_match_et;
 
  309   auto OFF_vs_HLT_minimum_delta_r = 
Monitored::Collection(
"OFF_vs_HLT_minimum_delta_r", vec_off_vs_hlt_minimum_delta_r);
 
  312   auto OFF_vs_HLT_delta_time = 
Monitored::Collection(
"OFF_vs_HLT_delta_time", vec_off_vs_hlt_delta_time);
 
  313   auto OFF_vs_HLT_resolution = 
Monitored::Collection(
"OFF_vs_HLT_resolution", vec_off_vs_hlt_resolution);
 
  316   const clus_kin *hlt_match = 
nullptr; 
 
  320   for (
const auto& off_cluster: vec_off_clusters) {
 
  326     float min_delta_r  = 999999.9;
 
  328     for (
const auto& hlt_cluster : vec_hlt_clusters) {
 
  332         if (delta_r < min_delta_r) {
 
  334             min_delta_r = delta_r;
 
  335             hlt_match = &hlt_cluster; 
 
  340     vec_off_vs_hlt_minimum_delta_r.push_back(min_delta_r);
 
  345         ++n_off_clusters_no_match;
 
  347         vec_hlt_match_et.push_back(0.);
 
  349         vec_off_vs_hlt_resolution.push_back(0.);
 
  350         vec_off_vs_hlt_delta_eta.push_back(0.);
 
  351         vec_off_vs_hlt_delta_phi.push_back(0.);
 
  352         vec_off_vs_hlt_delta_time.push_back(0.);
 
  354         vec_off_no_hlt_match.push_back(1);
 
  355         vec_off_with_hlt_match.push_back(0);
 
  360         ++n_off_clusters_with_match;
 
  362         vec_hlt_match_et.push_back(hlt_match->
et);
 
  364         vec_off_vs_hlt_resolution.push_back(((off_cluster.et - hlt_match->
et) / off_cluster.et) * 100);
 
  365         vec_off_vs_hlt_delta_eta.push_back(off_cluster.eta - hlt_match->
eta);
 
  367         vec_off_vs_hlt_delta_time.push_back(off_cluster.parent->time() - hlt_match->
parent->time());
 
  369         vec_off_no_hlt_match.push_back(0);
 
  370         vec_off_with_hlt_match.push_back(1);
 
  376   OFF_num = n_off_clusters;
 
  377   OFF_no_HLT_match_num = n_off_clusters_no_match;
 
  378   OFF_with_HLT_match_num = n_off_clusters_with_match;
 
  379   if (n_off_clusters>0) {
 
  380     OFF_matched_fraction = 
static_cast<float>(n_off_clusters_with_match) / n_off_clusters;
 
  385    if(accepted_hlt_clusters.size()>0){
 
  390         HLT_num, HLT_et, HLT_eta, HLT_phi, HLT_time, HLT_type, HLT_size, HLT_barrel_high_et_num, HLT_bc,
 
  393         HLT_barrel_high_et, HLT_no_OFF_match, HLT_with_OFF_match,
 
  396         OFF_num, OFF_et, OFF_eta, OFF_phi, OFF_time, OFF_type,
 
  399         OFF_no_HLT_match, OFF_with_HLT_match,
 
  402         HLT_matched_fraction, HLT_no_OFF_match_num, HLT_vs_OFF_minimum_delta_r, HLT_with_OFF_match_num,
 
  403         OFF_match_et, HLT_vs_OFF_resolution, HLT_vs_OFF_delta_eta, HLT_vs_OFF_delta_phi, HLT_vs_OFF_delta_time,
 
  406         OFF_matched_fraction, OFF_no_HLT_match_num, OFF_vs_HLT_minimum_delta_r, OFF_with_HLT_match_num,
 
  407         HLT_match_et, OFF_vs_HLT_resolution, OFF_vs_HLT_delta_eta, OFF_vs_HLT_delta_phi, OFF_vs_HLT_delta_time
 
  415         HLT_num, HLT_et, HLT_eta, HLT_phi, HLT_time, HLT_type, HLT_size, HLT_barrel_high_et_num, HLT_bc,
 
  418         HLT_barrel_high_et, HLT_no_OFF_match, HLT_with_OFF_match,
 
  421         OFF_num, OFF_et, OFF_eta, OFF_phi, OFF_time, OFF_type,
 
  424         OFF_no_HLT_match, OFF_with_HLT_match,
 
  427         HLT_matched_fraction, HLT_no_OFF_match_num, HLT_vs_OFF_minimum_delta_r, HLT_with_OFF_match_num,
 
  428         OFF_match_et, HLT_vs_OFF_resolution, HLT_vs_OFF_delta_eta, HLT_vs_OFF_delta_phi, HLT_vs_OFF_delta_time,
 
  431         OFF_matched_fraction, OFF_no_HLT_match_num, OFF_vs_HLT_minimum_delta_r, OFF_with_HLT_match_num,
 
  432         HLT_match_et, OFF_vs_HLT_resolution, OFF_vs_HLT_delta_eta, OFF_vs_HLT_delta_phi, OFF_vs_HLT_delta_time
 
  440         HLT_num, HLT_et, HLT_eta, HLT_phi, HLT_time, HLT_type, HLT_size, HLT_barrel_high_et_num, HLT_bc,
 
  443         HLT_barrel_high_et, HLT_no_OFF_match, HLT_with_OFF_match,
 
  446         OFF_num, OFF_et, OFF_eta, OFF_phi, OFF_time, OFF_type,
 
  449         OFF_no_HLT_match, OFF_with_HLT_match,
 
  452         HLT_matched_fraction, HLT_no_OFF_match_num, HLT_vs_OFF_minimum_delta_r, HLT_with_OFF_match_num,
 
  453         OFF_match_et, HLT_vs_OFF_resolution, HLT_vs_OFF_delta_eta, HLT_vs_OFF_delta_phi, HLT_vs_OFF_delta_time,
 
  456         OFF_matched_fraction, OFF_no_HLT_match_num, OFF_vs_HLT_minimum_delta_r, OFF_with_HLT_match_num,
 
  457         HLT_match_et, OFF_vs_HLT_resolution, OFF_vs_HLT_delta_eta, OFF_vs_HLT_delta_phi, OFF_vs_HLT_delta_time
 
  461   return StatusCode::SUCCESS;
 
  467   if (std::abs(eta_1-eta_2) > max_deltar) 
return 99.9;
 
  469   if (DeltaPhi > max_deltar) 
return 99.9;
 
  470   return sqrt( ((eta_1-eta_2)*(eta_1-eta_2)) + (DeltaPhi*DeltaPhi) );
 
  474   return std::abs( std::abs( std::abs( phi_1 - phi_2 ) - TMath::Pi() ) - TMath::Pi() );
 
  480   featureRequestDescriptor.
setCondition(TrigDefs::includeFailedDecisions);
 
  482   std::vector<const xAOD::CaloCluster*> clustersToMonitorForChain;
 
  485        clustersToMonitorForChain.
push_back( *(
f.link) );
 
  488   ATH_MSG_DEBUG(
"clustersToMonitorForChain.size(): "<<clustersToMonitorForChain.size());
 
  489   for(
auto &
p: clustersToMonitorForChain) 
 
  491   return clustersToMonitorForChain;