ATLAS Offline Software
PadEmulatorCoincidences.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 #ifndef PADEMULATORCOINCIDENCES_H
5 #define PADEMULATORCOINCIDENCES_H
6 
7 #include <algorithm>
8 #include <vector>
9 
18 namespace NSWL1 {
19 
20  inline bool trigger_1over4(const bool in0, const bool in1, const bool in2, const bool in3) {
21  return (in0 or in1 or in2 or in3);
22  }
23 
24  inline bool trigger_2over4(const bool in0, const bool in1, const bool in2, const bool in3) {
25  return (in0 + in1 + in2 + in3 >= 2);
26  }
27 
28  inline bool trigger_specific2over4(const bool in0, const bool in1, const bool in2, const bool in3) {
29  return (in0 or in1) and (in2 or in3);
30  }
31 
32  inline bool trigger_3over4(const bool in0, const bool in1, const bool in2, const bool in3) {
33  return (in0 + in1 + in2 + in3 >= 3);
34  }
35 
36  inline bool trigger_4over4(const bool in0, const bool in1, const bool in2, const bool in3) {
37  return (in0 and in1 and in2 and in3);
38  }
39 
40  inline bool trigger_3and1(const bool in0, const bool in1, const bool in2, const bool in3,
41  const bool in4, const bool in5, const bool in6, const bool in7) {
42  if(trigger_1over4(in0, in1, in2, in3) and trigger_3over4(in4, in5, in6, in7)) return true;
43  if(trigger_3over4(in0, in1, in2, in3) and trigger_1over4(in4, in5, in6, in7)) return true;
44  return false;
45  }
46 
47  inline bool trigger_2and2(const bool in0, const bool in1, const bool in2, const bool in3,
48  const bool in4, const bool in5, const bool in6, const bool in7) {
49  return (trigger_2over4(in0, in1, in2, in3) and trigger_2over4(in4, in5, in6, in7));
50  }
51 
52  inline bool trigger_4over8(const bool in0, const bool in1, const bool in2, const bool in3,
53  const bool in4, const bool in5, const bool in6, const bool in7) {
54  if(trigger_2and2(in0, in1, in2, in3, in4, in5, in6, in7)) return true;
55  if(trigger_3and1(in0, in1, in2, in3, in4, in5, in6, in7)) return true;
56  return false;
57  }
58 
59  inline bool trigger_specific4over8(const bool in0, const bool in1, const bool in2, const bool in3,
60  const bool in4, const bool in5, const bool in6, const bool in7) {
61  return trigger_specific2over4(in0, in1, in2, in3) and trigger_specific2over4(in4, in5, in6, in7);
62  }
63 
64  inline bool trigger_5over8(const bool in0, const bool in1, const bool in2, const bool in3,
65  const bool in4, const bool in5, const bool in6, const bool in7) {
66  return (in0 + in1 + in2 + in3 + in4 + in5 + in6 + in7 >= 5);
67  }
68 
69  inline bool trigger_specific5over8(const bool in0, const bool in1, const bool in2, const bool in3,
70  const bool in4, const bool in5, const bool in6, const bool in7) {
71  if(not trigger_3over4(in0, in1, in2, in3) and not trigger_3over4(in4, in5, in6, in7)) return false;
72 
73  return (in0 + in1 + in2 + in3 >= 2) and (in4 + in5 + in6 + in7 >= 2) and ((in0 + in1 + in2 + in3 >= 3) or (in4 + in5 + in6 + in7 >= 3));
74  }
75 
76  inline bool trigger_superspecific5over8(const bool in0, const bool in1, const bool in2, const bool in3,
77  const bool in4, const bool in5, const bool in6, const bool in7) {
78  bool IP3over4 = trigger_3over4(in0, in1, in2, in3);
79  bool HO3over4 = trigger_3over4(in4, in5, in6, in7);
80  if(not IP3over4 and not HO3over4) return false;
81  return ((IP3over4 and trigger_specific2over4(in4, in5, in6, in7)) or (HO3over4 and trigger_specific2over4(in0, in1, in2, in3)));
82  }
83 
84  inline bool trigger_6over8(const bool in0, const bool in1, const bool in2, const bool in3,
85  const bool in4, const bool in5, const bool in6, const bool in7) {
86  return (in0 + in1 + in2 + in3 + in4 + in5 + in6 + in7 >= 6);
87  }
88 
89  inline bool trigger_2X_3over4(const bool in0, const bool in1, const bool in2, const bool in3,
90  const bool in4, const bool in5, const bool in6, const bool in7) {
91  return trigger_3over4(in0, in1, in2, in3) and trigger_3over4(in4, in5, in6, in7);
92  }
93 
94  inline bool trigger_8over8(const bool in0, const bool in1, const bool in2, const bool in3,
95  const bool in4, const bool in5, const bool in6, const bool in7) {
96  return trigger_4over4(in0, in1, in2, in3) and trigger_4over4(in4, in5, in6, in7);
97  }
98 }
99 #endif
NSWL1::trigger_superspecific5over8
bool trigger_superspecific5over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:76
NSWL1::trigger_3and1
bool trigger_3and1(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:40
NSWL1::trigger_specific2over4
bool trigger_specific2over4(const bool in0, const bool in1, const bool in2, const bool in3)
Definition: PadEmulatorCoincidences.h:28
NSWL1::trigger_4over8
bool trigger_4over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:52
NSWL1::trigger_8over8
bool trigger_8over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:94
NSWL1::trigger_4over4
bool trigger_4over4(const bool in0, const bool in1, const bool in2, const bool in3)
Definition: PadEmulatorCoincidences.h:36
NSWL1::trigger_2and2
bool trigger_2and2(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:47
NSWL1::trigger_6over8
bool trigger_6over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:84
NSWL1::trigger_2over4
bool trigger_2over4(const bool in0, const bool in1, const bool in2, const bool in3)
Definition: PadEmulatorCoincidences.h:24
NSWL1::trigger_specific4over8
bool trigger_specific4over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:59
NSWL1::trigger_specific5over8
bool trigger_specific5over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:69
NSWL1::trigger_2X_3over4
bool trigger_2X_3over4(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:89
NSWL1
PadEmulatorCoincidences.
Definition: NSWL1Simulation.cxx:7
NSWL1::trigger_1over4
bool trigger_1over4(const bool in0, const bool in1, const bool in2, const bool in3)
Definition: PadEmulatorCoincidences.h:20
NSWL1::trigger_5over8
bool trigger_5over8(const bool in0, const bool in1, const bool in2, const bool in3, const bool in4, const bool in5, const bool in6, const bool in7)
Definition: PadEmulatorCoincidences.h:64
NSWL1::trigger_3over4
bool trigger_3over4(const bool in0, const bool in1, const bool in2, const bool in3)
Definition: PadEmulatorCoincidences.h:32