18 {
19
20 if(ips.size() != 1){
22 ss <<
"NNJVTCondition::isSatisfied must see exactly 1 particle, but received "
23 << ips.size()
24 << '\n';
25 throw std::runtime_error(
ss.str());
26 }
27
28 auto jet = ips[0];
29 auto xJet = *jet->xAODJet();
30
31
32 bool pass = (*m_nnjvtpass_acc)(*xJet);
33 float nnjvt = (*m_nnjvt_acc)(*xJet);
34
35 if(collector){
36 std::stringstream ss0;
37 const void*
address =
static_cast<const void*
>(
this);
38 ss0 <<
"NNJVTCondition: (" <<
address
39 << ") nnjvt " << nnjvt
40 << " pt " << jet->pt()
41 << " eta " << jet->eta()
42 << " pass: " <<std::boolalpha << pass << " jet group: \n";
43
44 std::stringstream ss1;
45
46 for(const auto& ip : ips){
47 address =
static_cast<const void*
>(
ip.get());
48 ss1 <<
" " <<
address <<
" " <<
ip->eta() <<
" pt " <<
ip->pt() <<
'\n';
49 }
50 ss1 << '\n';
51 collector ->
collect(ss0.str(), ss1.str());
52 }
53 return pass;
54
55}
void collect(const HLT::TriggerElement *te, std::vector< Trig::Feature< T > > &data, const std::string &label, unsigned int condition, const std::string &teName, const HLT::TrigNavStructure *navstructure)
actual feature acceess implementation It has (thanks to the ClassTraits) functionality to flatten con...