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