229 std::array<int, NUM_SPARTICLES>
n{};
231 int idx = classifyOne(SUSY_Spart1_pdgId);
232 if ( (
idx>=0) and (
idx<std::ssize(
n) )){
235 int idx2 = classifyOne(SUSY_Spart2_pdgId);
236 if ( (idx2>=0) and (idx2<std::ssize(
n) )){
242 auto nanysquark=[&
n](
int i)->
bool {
243 return (
n[nsquark] ==
i) or (
n[nantisquark] ==
i);
245 if (
n[ngluino] == 1 && nanysquark(1))
return 1;
246 else if (
n[ngluino] == 2)
return 2;
247 else if (nanysquark(2))
return 3;
248 else if (
n[nsquark] == 1 &&
n[nantisquark] == 1)
return 4;
250 else if (
n[nsbottom] == 1 &&
n[nantisbottom] == 1)
return 51;
251 else if (
n[nsbottom2] == 1 &&
n[nantisbottom2] == 1)
return 52;
252 else if (
n[nstop] == 1 &&
n[nantistop] == 1)
return 61;
253 else if (
n[nstop2] == 1 &&
n[nantistop2] == 1)
return 62;
255 else if (
n[ngluino] == 1 &&
n[nchi01] == 1)
return 71;
256 else if (
n[ngluino] == 1 &&
n[nchi02] == 1)
return 72;
257 else if (
n[ngluino] == 1 &&
n[nchi03] == 1)
return 73;
258 else if (
n[ngluino] == 1 &&
n[nchi04] == 1)
return 74;
260 else if (
n[ngluino] == 1 &&
n[nch1plus] == 1)
return 75;
261 else if (
n[ngluino] == 1 &&
n[nch2plus] == 1)
return 76;
262 else if (
n[ngluino] == 1 &&
n[nch1minus] == 1)
return 77;
263 else if (
n[ngluino] == 1 &&
n[nch2minus] == 1)
return 78;
265 else if (nanysquark(1) &&
n[nchi01] == 1)
return 81;
266 else if (nanysquark(1) &&
n[nchi02] == 1)
return 82;
267 else if (nanysquark(1) &&
n[nchi03] == 1)
return 83;
268 else if (nanysquark(1) &&
n[nchi04] == 1)
return 84;
270 else if (nanysquark(1) &&
n[nch1plus] == 1)
return 85;
271 else if (nanysquark(1) &&
n[nch2plus] == 1)
return 86;
272 else if (nanysquark(1) &&
n[nch1minus] == 1)
return 87;
273 else if (nanysquark(1) &&
n[nch2minus] == 1)
return 88;
278 else if (
n[nchi01] == 2)
return 111;
279 else if (
n[nchi01] == 1 &&
n[nchi02] == 1)
return 112;
280 else if (
n[nchi01] == 1 &&
n[nchi03] == 1)
return 113;
281 else if (
n[nchi01] == 1 &&
n[nchi04] == 1)
return 114;
282 else if (
n[nchi01] == 1 &&
n[nch1plus] == 1)
return 115;
283 else if (
n[nchi01] == 1 &&
n[nch2plus] == 1)
return 116;
284 else if (
n[nchi01] == 1 &&
n[nch1minus] == 1)
return 117;
285 else if (
n[nchi01] == 1 &&
n[nch2minus] == 1)
return 118;
288 else if (
n[nchi02] == 2)
return 122;
289 else if (
n[nchi02] == 1 &&
n[nchi03] == 1)
return 123;
290 else if (
n[nchi02] == 1 &&
n[nchi04] == 1)
return 124;
291 else if (
n[nchi02] == 1 &&
n[nch1plus] == 1)
return 125;
292 else if (
n[nchi02] == 1 &&
n[nch2plus] == 1)
return 126;
293 else if (
n[nchi02] == 1 &&
n[nch1minus] == 1)
return 127;
294 else if (
n[nchi02] == 1 &&
n[nch2minus] == 1)
return 128;
297 else if (
n[nchi03] == 2)
return 133;
298 else if (
n[nchi03] == 1 &&
n[nchi04] == 1)
return 134;
299 else if (
n[nchi03] == 1 &&
n[nch1plus] == 1)
return 135;
300 else if (
n[nchi03] == 1 &&
n[nch2plus] == 1)
return 136;
301 else if (
n[nchi03] == 1 &&
n[nch1minus] == 1)
return 137;
302 else if (
n[nchi03] == 1 &&
n[nch2minus] == 1)
return 138;
305 else if (
n[nchi04] == 2)
return 144;
306 else if (
n[nchi04] == 1 &&
n[nch1plus] == 1)
return 145;
307 else if (
n[nchi04] == 1 &&
n[nch2plus] == 1)
return 146;
308 else if (
n[nchi04] == 1 &&
n[nch1minus] == 1)
return 147;
309 else if (
n[nchi04] == 1 &&
n[nch2minus] == 1)
return 148;
312 else if (
n[nch1plus] == 1 &&
n[nch1minus] == 1)
return 157;
313 else if (
n[nch1plus] == 1 &&
n[nch2minus] == 1)
return 158;
315 else if (
n[nch2plus] == 1 &&
n[nch1minus] == 1)
return 167;
316 else if (
n[nch2plus] == 1 &&
n[nch2minus] == 1)
return 168;
319 else if (
n[nselecLplus] == 1 &&
n[nselecLminus] == 1)
return 201;
320 else if (
n[nselecRplus] == 1 &&
n[nselecRminus] == 1)
return 202;
321 else if (
n[nselnuL] == 2)
return 203;
322 else if (
n[nselecLplus] == 1 &&
n[nselnuL] == 1)
return 204;
323 else if (
n[nselecLminus] == 1 &&
n[nselnuL] == 1)
return 205;
324 else if (
n[nstau1plus] == 1 &&
n[nstau1minus] == 1)
return 206;
325 else if (
n[nstau2plus] == 1 &&
n[nstau2minus] == 1)
return 207;
326 else if ((
n[nstau1plus] == 1 ||
n[nstau1minus] == 1) && (
n[nstau2plus] == 1 ||
n[nstau2minus] == 1))
return 208;
327 else if (
n[nstaunuL] == 2)
return 209;
328 else if (
n[nstau1plus] == 1 &&
n[nstaunuL] == 1)
return 210;
329 else if (
n[nstau1minus] == 1 &&
n[nstaunuL] == 1)
return 211;
330 else if (
n[nstau2plus] == 1 &&
n[nstaunuL] == 1)
return 212;
331 else if (
n[nstau2minus] == 1 &&
n[nstaunuL] == 1)
return 213;
333 else if (
n[nsmuonLplus] == 1 &&
n[nsmuonLminus] == 1)
return 216;
334 else if (
n[nsmuonRplus] == 1 &&
n[nsmuonRminus] == 1)
return 217;
335 else if (
n[nsmunuL] == 2)
return 218;
336 else if (
n[nsmuonLplus] == 1 &&
n[nsmunuL] == 1)
return 219;
337 else if (
n[nsmuonLminus] == 1 &&
n[nsmunuL] == 1)
return 220;
339 std::cerr <<
"ERROR. could not determine finalState for:" << std::endl;
340 std::cerr <<
" SUSY_Spart1_pdgId: " << SUSY_Spart1_pdgId << std::endl;
341 std::cerr <<
" SUSY_Spart2_pdgId: " << SUSY_Spart2_pdgId << std::endl;
342 std::cerr <<
"Returning 0" << std::endl;