21 declareInterface<DerivationFramework::IAugmentationTool>(
this);
37 return StatusCode::SUCCESS;
45 return StatusCode::SUCCESS;
56 return StatusCode::FAILURE;
62 return StatusCode::FAILURE;
73 dec_procID(*eventInfo) = 0;
74 dec_pdgId1(*eventInfo) = -99;
75 dec_pdgId2(*eventInfo) = -99;
77 return StatusCode::SUCCESS;
84 dec_procID(*eventInfo) = procID;
85 dec_pdgId1(*eventInfo) = pdgId1;
86 dec_pdgId2(*eventInfo) = pdgId2;
88 return StatusCode::SUCCESS;
100 if (!truthP || truthP->
empty()) {
103 for (
const auto tp : *truthP) {
106 if ((std::abs(
tp->pdgId()) > 1000000 && std::abs(
tp->pdgId()) < 1000007) ||
107 (std::abs(
tp->pdgId()) > 1000010 && std::abs(
tp->pdgId()) < 1000017) ||
108 (std::abs(
tp->pdgId()) > 2000000 && std::abs(
tp->pdgId()) < 2000007) ||
109 (std::abs(
tp->pdgId()) > 2000010 && std::abs(
tp->pdgId()) < 2000017) ||
110 (std::abs(
tp->pdgId()) > 1000020 && std::abs(
tp->pdgId()) < 1000040)) {
112 if (
tp->nParents() != 0) {
113 if (
tp->parent(0)->absPdgId() < 1000000) {
116 }
else if (!secondsp) {
140 if (!firstsp && !secondsp)
return false;
142 if (firstsp && firstsp->
nChildren() == 1) {
143 for (
const auto tp : *truthP) {
151 if (secondsp && secondsp->
nChildren() == 1) {
152 for (
const auto tp : *truthP) {
160 if (firstsp && abs(firstsp->
pdgId()) > 1000000) pdgid1 = firstsp->
pdgId();
161 if (secondsp && abs(secondsp->
pdgId()) > 1000000) pdgid2 = secondsp->
pdgId();
215 if (std::abs(SUSY_Spart1_pdgId)== 1000022) nchi01++;
216 else if (std::abs(SUSY_Spart1_pdgId)== 1000023) nchi02++;
217 else if (std::abs(SUSY_Spart1_pdgId)== 1000025) nchi03++;
218 else if (std::abs(SUSY_Spart1_pdgId)== 1000035) nchi04++;
219 else if (SUSY_Spart1_pdgId == 1000024) nch1plus++;
220 else if (SUSY_Spart1_pdgId ==-1000024) nch1minus++;
221 else if (SUSY_Spart1_pdgId == 1000037) nch2plus++;
222 else if (SUSY_Spart1_pdgId ==-1000037) nch2minus++;
223 else if (SUSY_Spart1_pdgId == 1000021) ngluino++;
224 else if ((std::abs(SUSY_Spart1_pdgId)>1000000 && std::abs(SUSY_Spart1_pdgId)<= 1000004) || (std::abs(SUSY_Spart1_pdgId)>2000000 && std::abs(SUSY_Spart1_pdgId)<=2000004)) {
225 if (SUSY_Spart1_pdgId>0) nsquark++;
228 else if (SUSY_Spart1_pdgId==1000005) nsbottom++;
229 else if (SUSY_Spart1_pdgId==1000006) nstop++;
230 else if (SUSY_Spart1_pdgId==2000005) nsbottom2++;
231 else if (SUSY_Spart1_pdgId==2000006) nstop2++;
232 else if (SUSY_Spart1_pdgId==-1000005) nantisbottom++;
233 else if (SUSY_Spart1_pdgId==-1000006) nantistop++;
234 else if (SUSY_Spart1_pdgId==-2000005) nantisbottom2++;
235 else if (SUSY_Spart1_pdgId==-2000006) nantistop2++;
236 else if (SUSY_Spart1_pdgId==2000011) nselecRminus++;
237 else if (SUSY_Spart1_pdgId==-2000011) nselecRplus++;
238 else if (SUSY_Spart1_pdgId==1000011) nselecLminus++;
239 else if (SUSY_Spart1_pdgId==-1000011) nselecLplus++;
240 else if (std::abs(SUSY_Spart1_pdgId)==1000012) nselnuL++;
241 else if (SUSY_Spart1_pdgId==2000013) nsmuonRminus++;
242 else if (SUSY_Spart1_pdgId==-2000013) nsmuonRplus++;
243 else if (SUSY_Spart1_pdgId==1000013) nsmuonLminus++;
244 else if (SUSY_Spart1_pdgId==-1000013) nsmuonLplus++;
245 else if (std::abs(SUSY_Spart1_pdgId)==1000014) nsmunuL++;
246 else if (SUSY_Spart1_pdgId==1000015) nstau1minus++;
247 else if (SUSY_Spart1_pdgId==-1000015) nstau1plus++;
248 else if (SUSY_Spart1_pdgId==2000015) nstau2minus++;
249 else if (SUSY_Spart1_pdgId==-2000015) nstau2plus++;
250 else if (std::abs(SUSY_Spart1_pdgId)==1000016) nstaunuL++;
255 if (std::abs(SUSY_Spart2_pdgId)==1000022) nchi01++;
256 else if (std::abs(SUSY_Spart2_pdgId)==1000023) nchi02++;
257 else if (std::abs(SUSY_Spart2_pdgId)==1000025) nchi03++;
258 else if (std::abs(SUSY_Spart2_pdgId)==1000035) nchi04++;
259 else if (SUSY_Spart2_pdgId==1000024) nch1plus++;
260 else if (SUSY_Spart2_pdgId==-1000024) nch1minus++;
261 else if (SUSY_Spart2_pdgId==1000037) nch2plus++;
262 else if (SUSY_Spart2_pdgId==-1000037) nch2minus++;
264 else if (SUSY_Spart2_pdgId==1000021) ngluino++;
265 else if ((std::abs(SUSY_Spart2_pdgId)>1000000 && std::abs(SUSY_Spart2_pdgId)<=1000004) || (std::abs(SUSY_Spart2_pdgId)>2000000 && std::abs(SUSY_Spart2_pdgId)<=2000004)) {
266 if (SUSY_Spart2_pdgId>0) nsquark++;
269 else if (SUSY_Spart2_pdgId==1000005) nsbottom++;
270 else if (SUSY_Spart2_pdgId==1000006) nstop++;
271 else if (SUSY_Spart2_pdgId==2000005) nsbottom2++;
272 else if (SUSY_Spart2_pdgId==2000006) nstop2++;
273 else if (SUSY_Spart2_pdgId==-1000005) nantisbottom++;
274 else if (SUSY_Spart2_pdgId==-1000006) nantistop++;
275 else if (SUSY_Spart2_pdgId==-2000005) nantisbottom2++;
276 else if (SUSY_Spart2_pdgId==-2000006) nantistop2++;
278 else if (SUSY_Spart2_pdgId==2000011) nselecRminus++;
279 else if (SUSY_Spart2_pdgId==-2000011) nselecRplus++;
280 else if (SUSY_Spart2_pdgId==1000011) nselecLminus++;
281 else if (SUSY_Spart2_pdgId==-1000011) nselecLplus++;
282 else if (std::abs(SUSY_Spart2_pdgId)==1000012) nselnuL++;
283 else if (SUSY_Spart2_pdgId==2000013) nsmuonRminus++;
284 else if (SUSY_Spart2_pdgId==-2000013) nsmuonRplus++;
285 else if (SUSY_Spart2_pdgId==1000013) nsmuonLminus++;
286 else if (SUSY_Spart2_pdgId==-1000013) nsmuonLplus++;
287 else if (std::abs(SUSY_Spart2_pdgId)==1000014) nsmunuL++;
288 else if (SUSY_Spart2_pdgId==1000015) nstau1minus++;
289 else if (SUSY_Spart2_pdgId==-1000015) nstau1plus++;
290 else if (SUSY_Spart2_pdgId==2000015) nstau2minus++;
291 else if (SUSY_Spart2_pdgId==-2000015) nstau2plus++;
292 else if (std::abs(SUSY_Spart2_pdgId)==1000016) nstaunuL++;
297 if (ngluino==1 && (nsquark==1 || nantisquark ==1))
return 1;
298 else if (ngluino==2)
return 2;
299 else if (nsquark==2 || nantisquark==2)
return 3;
300 else if (nsquark==1 && nantisquark==1)
return 4;
302 else if (nsbottom==1 && nantisbottom==1)
return 51;
303 else if (nsbottom2==1 && nantisbottom2==1)
return 52;
304 else if (nstop==1 && nantistop==1)
return 61;
305 else if (nstop2==1 && nantistop2==1)
return 62;
307 else if (ngluino==1 && nchi01==1)
return 71;
308 else if (ngluino==1 && nchi02==1)
return 72;
309 else if (ngluino==1 && nchi03==1)
return 73;
310 else if (ngluino==1 && nchi04==1)
return 74;
312 else if (ngluino==1 && nch1plus==1)
return 75;
313 else if (ngluino==1 && nch2plus==1)
return 76;
314 else if (ngluino==1 && nch1minus==1)
return 77;
315 else if (ngluino==1 && nch2minus==1)
return 78;
317 else if ((nsquark==1 || nantisquark ==1) && nchi01==1)
return 81;
318 else if ((nsquark==1 || nantisquark ==1) && nchi02==1)
return 82;
319 else if ((nsquark==1 || nantisquark ==1) && nchi03==1)
return 83;
320 else if ((nsquark==1 || nantisquark ==1) && nchi04==1)
return 84;
322 else if ((nsquark==1 || nantisquark ==1) && nch1plus==1)
return 85;
323 else if ((nsquark==1 || nantisquark ==1) && nch2plus==1)
return 86;
324 else if ((nsquark==1 || nantisquark ==1) && nch1minus==1)
return 87;
325 else if ((nsquark==1 || nantisquark ==1) && nch2minus==1)
return 88;
330 else if (nchi01==2)
return 111;
331 else if (nchi01==1 && nchi02==1)
return 112;
332 else if (nchi01==1 && nchi03==1)
return 113;
333 else if (nchi01==1 && nchi04==1)
return 114;
334 else if (nchi01==1 && nch1plus==1)
return 115;
335 else if (nchi01==1 && nch2plus==1)
return 116;
336 else if (nchi01==1 && nch1minus==1)
return 117;
337 else if (nchi01==1 && nch2minus==1)
return 118;
340 else if (nchi02==2)
return 122;
341 else if (nchi02==1 && nchi03==1)
return 123;
342 else if (nchi02==1 && nchi04==1)
return 124;
343 else if (nchi02==1 && nch1plus==1)
return 125;
344 else if (nchi02==1 && nch2plus==1)
return 126;
345 else if (nchi02==1 && nch1minus==1)
return 127;
346 else if (nchi02==1 && nch2minus==1)
return 128;
349 else if (nchi03==2)
return 133;
350 else if (nchi03==1 && nchi04==1)
return 134;
351 else if (nchi03==1 && nch1plus==1)
return 135;
352 else if (nchi03==1 && nch2plus==1)
return 136;
353 else if (nchi03==1 && nch1minus==1)
return 137;
354 else if (nchi03==1 && nch2minus==1)
return 138;
357 else if (nchi04==2)
return 144;
358 else if (nchi04==1 && nch1plus==1)
return 145;
359 else if (nchi04==1 && nch2plus==1)
return 146;
360 else if (nchi04==1 && nch1minus==1)
return 147;
361 else if (nchi04==1 && nch2minus==1)
return 148;
364 else if (nch1plus==1 && nch1minus==1)
return 157;
365 else if (nch1plus==1 && nch2minus==1)
return 158;
367 else if (nch2plus==1 && nch1minus==1)
return 167;
368 else if (nch2plus==1 && nch2minus==1)
return 168;
371 else if (nselecLplus==1 && nselecLminus==1)
return 201;
372 else if (nselecRplus==1 && nselecRminus==1)
return 202;
373 else if (nselnuL==2)
return 203;
374 else if (nselecLplus==1 && nselnuL==1)
return 204;
375 else if (nselecLminus==1 && nselnuL==1)
return 205;
376 else if (nstau1plus==1 && nstau1minus==1)
return 206;
377 else if (nstau2plus==1 && nstau2minus==1)
return 207;
378 else if ((nstau1plus==1 || nstau1minus==1) && (nstau2plus==1 || nstau2minus==1))
return 208;
379 else if (nstaunuL==2)
return 209;
380 else if (nstau1plus==1 && nstaunuL==1)
return 210;
381 else if (nstau1minus==1 && nstaunuL==1)
return 211;
382 else if (nstau2plus==1 && nstaunuL==1)
return 212;
383 else if (nstau2minus==1 && nstaunuL==1)
return 213;
385 else if (nsmuonLplus==1 && nsmuonLminus==1)
return 216;
386 else if (nsmuonRplus==1 && nsmuonRminus==1)
return 217;
387 else if (nsmunuL==2)
return 218;
388 else if (nsmuonLplus==1 && nsmunuL==1)
return 219;
389 else if (nsmuonLminus==1 && nsmunuL==1)
return 220;
391 ATH_MSG_WARNING(
"could not determine finalState for : (" << SUSY_Spart1_pdgId <<
" , " << SUSY_Spart2_pdgId <<
"). Returning 0.");