ATLAS Offline Software
Loading...
Searching...
No Matches
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
17
18namespace 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
PadEmulatorCoincidences.
bool trigger_1over4(const bool in0, const bool in1, const bool in2, const bool in3)
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)
bool trigger_specific2over4(const bool in0, const bool in1, const bool in2, const bool in3)
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)
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)
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)
bool trigger_3over4(const bool in0, const bool in1, const bool in2, const bool in3)
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)
bool trigger_4over4(const bool in0, const bool in1, const bool in2, const bool in3)
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)
bool trigger_2over4(const bool in0, const bool in1, const bool in2, const bool in3)
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)
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)
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)
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)