ATLAS Offline Software
Classes | Functions
SUSY Namespace Reference

Classes

class  CrossSectionDB
 
class  CrossSectionDBPMG
 

Functions

unsigned int finalState (const int SUSY_Spart1_pdgId, const int SUSY_Spart2_pdgId)
 

Function Documentation

◆ finalState()

unsigned int SUSY::finalState ( const int  SUSY_Spart1_pdgId,
const int  SUSY_Spart2_pdgId 
)

Final classification

Definition at line 227 of file SUSYCrossSection.cxx.

228 {
229  std::array<int, NUM_SPARTICLES> n{};
230  //Classification of the event follows (gg, sq...):
231  int idx = classifyOne(SUSY_Spart1_pdgId);
232  if ( (idx>=0) and (idx<std::ssize(n) )){
233  ++n[idx];
234  }
235  int idx2 = classifyOne(SUSY_Spart2_pdgId);
236  if ( (idx2>=0) and (idx2<std::ssize(n) )){
237  ++n[idx2];
238  }
239 
241  // gluino/squark + X
242  auto nanysquark=[&n](int i)->bool {
243  return (n[nsquark] == i) or (n[nantisquark] == i);
244  };
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;
249 
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;
254 
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;
259 
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;
264 
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;
269 
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;
274 
275 
276  // Gaugino pair-production
277  // chi^{0}_1 + X
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;
286 
287  // chi^{0}_2 + X
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;
295 
296  // chi^{0}_3 + X
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;
303 
304  // chi^{0}_4 + X
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;
310 
311  // chi^{+}_1/2 + chi^{-}_1/2
312  else if (n[nch1plus] == 1 && n[nch1minus] == 1) return 157;
313  else if (n[nch1plus] == 1 && n[nch2minus] == 1) return 158;
314 
315  else if (n[nch2plus] == 1 && n[nch1minus] == 1) return 167;
316  else if (n[nch2plus] == 1 && n[nch2minus] == 1) return 168;
317 
318  // slepton
319  else if (n[nselecLplus] == 1 && n[nselecLminus] == 1) return 201; // sElectronLPair
320  else if (n[nselecRplus] == 1 && n[nselecRminus] == 1) return 202; // sElectronRPair
321  else if (n[nselnuL] == 2) return 203; // sElectron neutrino pair
322  else if (n[nselecLplus] == 1 && n[nselnuL] == 1) return 204; // sElectron+ sNutrino
323  else if (n[nselecLminus] == 1 && n[nselnuL] == 1) return 205; // sElectron- sNutrino
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; // sTau neutrino pair
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;
332 
333  else if (n[nsmuonLplus] == 1 && n[nsmuonLminus] == 1) return 216; // sMuonPair
334  else if (n[nsmuonRplus] == 1 && n[nsmuonRminus] == 1) return 217; // sMuonPair
335  else if (n[nsmunuL] == 2) return 218; // sMuon neutrino pair
336  else if (n[nsmuonLplus] == 1 && n[nsmunuL] == 1) return 219; // sMuon+ sNutrino
337  else if (n[nsmuonLminus] == 1 && n[nsmunuL] == 1) return 220; // sMuon- sNutrino
338 
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;
343 
344  return 0;
345 }
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:731
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69