102 {
103
104
105
107 previousDecisionIDs)) {
108 return StatusCode::SUCCESS;
109 }
110
111 std::unique_ptr<ITrigJetHypoInfoCollector> infocollector(nullptr);
112 std::unique_ptr<ITrigJetHypoInfoCollector> jetdumper(nullptr);
114 auto collectorName =
name() +
"_" + std::to_string(
m_id++);
115 infocollector.reset(new DebugInfoCollector(collectorName));
116 auto jetdumperName =
117 name()+
"_passingjets_" + std::to_string(
m_id++);
118 jetdumper.reset(new DebugInfoCollector(jetdumperName));
119 }
120
121
123
124 std::transform(jets ->
begin(),
126 hypoJets.begin(),
127 xAODJetAsIJetFactory());
128
129
131 << " no of jets ... "
133 << "...");
134
135
136
137 auto mon_NInputs = Monitored::Scalar(
"NJetsIn",
jets->size());
138 auto mon_NOutputs = Monitored::Scalar("NJetsOut",-1);
139 auto tHypo = Monitored::Timer<std::chrono::milliseconds>("TIME_jetHypo");
140 auto monitor_group_multTime = Monitored::Group(
m_monTool, tHypo, mon_NOutputs, mon_NInputs);
141
142 xAODJetCollector jetCollector;
143 bool pass;
144 try{
145 pass =
m_helper->pass(hypoJets, jetCollector, infocollector);
146 } catch(std::exception& e){
147 ATH_MSG_ERROR(
"Exception raised by the TrigJetHypoToolHelper: "
149 return StatusCode::FAILURE;
150 }
151 tHypo.stop();
152
153 if (!pass) {
154
155 if (infocollector){
156
158 "hypo testing done: no of input jets " + std::to_string(
jets->size())
159 +
" no of participating jets " + std::to_string(jetCollector.
size())
160 + " pass: false ";
161
162 infocollector->collect(
"TrigJetHypoTool",
msg);
163 }
164
165 return StatusCode::SUCCESS;
166 }
167
170
171
172
173
174 if (infocollector){
175
177 "hypo testing done: no of input jets " + std::to_string(
jets->size())
178 +
" no of particlating jets " + std::to_string(jetCollector.
size())
179 + " pass: true";
180
181
182 infocollector->collect(
"TrigJetHypoTool",
msg);
183 infocollector->write();
184
185 std::stringstream
ss;
187 jetdumper->collect(
"passed",
ss.str());
188 }
189
190
192
193 mon_NOutputs = hjv.size();
194 for(const auto& j : hjv) {
195 auto mon_jetEt = Monitored::Scalar("Et", j->et()*0.001);
196 auto mon_jetEta = Monitored::Scalar("Eta", j->eta());
197 auto mon_jetPhi = Monitored::Scalar("Phi", j->phi());
198 auto mon_jetMass = Monitored::Scalar("Mass", j->m()*0.001);
199 float this_z = 999;
200 float this_negLogSigma2 = 999;
201 j->getAttribute("dipz20231122_z", this_z);
202 j->getAttribute("dipz20231122_negLogSigma2", this_negLogSigma2);
203 auto mon_dipz_z = Monitored::Scalar( "dipz_z", this_z);
204 auto mon_dipz_negLogSigma2 = Monitored::Scalar( "dipz_negLogSigma2", this_negLogSigma2);
205 float this_GN2X_phbb{999.}, this_GN2X_phcc{999.}, this_GN2X_pqcd{999.}, this_GN2X_ptop{999.};
206 j->getAttribute("GN2Xv01_phbb", this_GN2X_phbb);
207 j->getAttribute("GN2Xv01_phcc", this_GN2X_phcc);
208 j->getAttribute("GN2Xv01_ptop", this_GN2X_ptop);
209 j->getAttribute("GN2Xv01_pqcd", this_GN2X_pqcd);
210 auto mon_GN2X_phbb = Monitored::Scalar("GN2Xv01_phbb", this_GN2X_phbb);
211 auto mon_GN2X_phcc = Monitored::Scalar("GN2Xv01_phcc", this_GN2X_phcc);
212 auto mon_GN2X_ptop = Monitored::Scalar("GN2Xv01_ptop", this_GN2X_ptop);
213 auto mon_GN2X_pqcd = Monitored::Scalar("GN2Xv01_pqcd", this_GN2X_pqcd);
214 float this_GN2X_discriminant{999.};
215 if (this_GN2X_phbb > 0.){
216 float top_frac{0.25};
217 float denom = this_GN2X_pqcd*(1. - top_frac) + this_GN2X_ptop * top_frac;
218 if (denom > 0.){
219 this_GN2X_discriminant =
log(this_GN2X_phbb/denom);
220 }
221 }
222 auto mon_GN2X_discriminant = Monitored::Scalar("GN2Xv01_discriminant", this_GN2X_discriminant);
223
224 float this_GN2XTrig_phbb{999.}, this_GN2XTrig_pqcd{999.}, this_GN2XTrig_ptop{999.};
225 j->getAttribute("GN2XTrig_phbb", this_GN2XTrig_phbb);
226 j->getAttribute("GN2XTrig_ptop", this_GN2XTrig_ptop);
227 j->getAttribute("GN2XTrig_pqcd", this_GN2XTrig_pqcd);
228 auto mon_GN2XTrig_phbb = Monitored::Scalar("GN2XTrig_phbb", this_GN2XTrig_phbb);
229 auto mon_GN2XTrig_ptop = Monitored::Scalar("GN2XTrig_ptop", this_GN2XTrig_ptop);
230 auto mon_GN2XTrig_pqcd = Monitored::Scalar("GN2XTrig_pqcd", this_GN2XTrig_pqcd);
231 float this_GN2XTrig_discriminant{999.};
232 if (this_GN2XTrig_phbb > 0.){
233 float top_frac{0.25};
234 float denom = this_GN2XTrig_pqcd*(1. - top_frac) + this_GN2XTrig_ptop * top_frac;
235 if (denom > 0.){
236 this_GN2XTrig_discriminant =
log(this_GN2XTrig_phbb/denom);
237 }
238 }
239 auto mon_GN2XTrig_discriminant = Monitored::Scalar("GN2XTrig_discriminant", this_GN2XTrig_discriminant);
240
241 auto monitor_group_passingjets = Monitored::Group(
m_monTool, mon_jetEt, mon_jetEta, mon_jetPhi , mon_dipz_z, mon_dipz_negLogSigma2, mon_jetMass, mon_GN2X_phbb, mon_GN2X_phcc, mon_GN2X_ptop, mon_GN2X_pqcd, mon_GN2X_discriminant, mon_GN2XTrig_phbb, mon_GN2XTrig_ptop, mon_GN2XTrig_pqcd, mon_GN2XTrig_discriminant);
242
243 }
244
245 auto legInds = jetCollector.
legInds();
246 for (
const auto&
label : legInds) {
248 auto monitor_nJt = Monitored::Scalar(
"NJets",
jets.size());
249 auto htsum = Monitored::Scalar(
"HT", std::accumulate(
jets.begin(),
jets.end(),0.0,
250 [](double sum, const HypoJetVector::value_type jptr){return sum + jptr->et()*0.001;} ));
251 auto monitor_group_passinght = Monitored::Group(
m_monTool, monitor_nJt,htsum);
252 }
253
254 return StatusCode::SUCCESS;
255}
#define CHECK(...)
Evaluate an expression and check for errors.
std::vector< pHypoJet > HypoJetVector
HypoJetVector hypoJets() const
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container