TriggerDefines.cpp
Go to the documentation of this file.
1 #include "DAQDataFormats/TriggerDefines.h"
2 
3 // See https://cdcvs.fnal.gov/redmine/documents/253 for more info
4 
5 namespace daqdataformats{
6 // Initialization of constant data associated with the trigger
7 
8 // Verbose names for bits
9  const char* trigIDStrings[] = {
10  "NuMI Beam Spill Trigger", // Bit 0
11  "Booster Beam Spill Trigger", // Bit 1
12  "Periodic Calibration Pulser", // Bit 2
13  "Random Calibration Pulser", // Bit 3
14  "Manually Issued Trigger", // Bit 4
15  "Accelerator PPS Trigger", // Bit 5
16  "Periodic Streamer Pulser", // Bit 6
17  "Random Streamer Pulser", // Bit 7
18  "DAQ Status Block", // Bit 8
19  "Not Defined", // Bit 9
20  "Not Defined", // Bit 10
21  "Not Defined", // Bit 11
22  "Data Driven Supernova", // Bit 12
23  "Data Driven Energy", // Bit 13
24  "Data Driven Calibration Muon", // Bit 14
25  "Data Driven Upmu", // Bit 15
26  "Data Driven Numu", // Bit 16
27  "Data Driven Nue", // Bit 17
28  "Data Driven Fast Monopole", // Bit 18
29  "Data Driven Slow Monople", // Bit 19
30  "Data Driven FEB Overflow", // Bit 20
31  "Data Driven Activity 1", // Bit 21
32  "Data Driven Activity 2", // Bit 22
33  "Monte Carlo/Simulation Trigger", // Bit 23
34  // Start Middle Trigger Word
35  "SNEWS Trigger", // Bit 24
36  "SNEWS Beat Slow", // Bit 25
37  "SNEWS Beat Fast", // Bit 26
38  "Data Driven Contained Vertex", // Bit 27
39  "Data Driven Moon", // Bit 28
40  "Data Driven Sun", // Bit 29
41  "Data Driven Michel", // Bit 30
42  "Supernova Cross-trigger", // Bit 31
43  "Data Driven Michel Variant 2", // Bit 32
44  "Data Driven Michel Variant 3", // Bit 33
45  "Data Driven Michel Variant 4", // Bit 34
46  "Data Driven Michel Test", // Bit 35
47  "Data Driven Fast Monopole Neural Network", // Bit 36
48  "Data Driven Fast Monopole Neural Network Variant 2", // Bit 37
49  "Data Driven Fast Monopole Neural Network Variant 3", // Bit 38
50  "Data Driven Fast Monopole Neural Network Test", // Bit 39
51  "LIGO Trigger", // Bit 40
52  "LIGO Beat Slow", // Bit 41
53  "LIGO Beat Fast", // Bit 42
54  "Testbeam Whole Spill", // Bit 43
55  "Testbeam Triggered Particle", // Bit 44
56  "Data Driven Neutron-Antineutron",// Bit 45
57  "Data Driven Horizontal Muon", // Bit 46
58  "Not Defined", // Bit 47
59  "Not Defined", // Bit 48
60  "Not Defined", // Bit 49
61  "Not Defined", // Bit 50
62  "Not Defined", // Bit 51
63  "Not Defined", // Bit 52
64  "Not Defined", // Bit 53
65  "Not Defined", // Bit 54
66  "Not Defined", // Bit 55
67  "Not Defined", // Bit 56
68  "Not Defined", // Bit 57
69  "Not Defined", // Bit 58
70  "Not Defined", // Bit 59
71  "Not Defined", // Bit 60
72  "Not Defined", // Bit 61
73  "Not Defined", // Bit 62
74  "Not Defined", // Bit 63
75  "Not Defined", // Bit 64
76  "Not Defined", // Bit 65
77  "Not Defined", // Bit 66
78  "Not Defined", // Bit 67
79  "Not Defined", // Bit 68
80  "Not Defined", // Bit 69
81  "Not Defined", // Bit 70
82  "Not Defined", // Bit 71
83  "Not Defined", // Bit 72
84  "Not Defined", // Bit 73
85  "Not Defined", // Bit 74
86  "Not Defined", // Bit 75
87  "Not Defined", // Bit 76
88  "Not Defined", // Bit 77
89  "Not Defined", // Bit 78
90  "Not Defined", // Bit 79
91  "Not Defined", // Bit 80
92  "Not Defined", // Bit 81
93  "Not Defined", // Bit 82
94  "Not Defined", // Bit 83
95  "Not Defined", // Bit 84
96  "Not Defined", // Bit 85
97  "Not Defined", // Bit 86
98  "Not Defined", // Bit 87
99  "Not Defined", // Bit 88
100  };
101 
102 // Terse names for bits
103  const char* trigIDShortStrings[] = {
104  "NuMI", // Bit 0
105  "BnB", // Bit 1
106  "PerCal", // Bit 2
107  "RandCal", // Bit 3
108  "Manual", // Bit 4
109  "PPS", // Bit 5
110  "PerStream", // Bit 6
111  "RandStream", // Bit 7
112  "DAQStatus", // Bit 8
113  "ND", // Bit 9
114  "ND", // Bit 10
115  "ND", // Bit 11
116  "DDSN", // Bit 12
117  "DDenergy", // Bit 13
118  "DDcalmu", // Bit 14
119  "DDupmu", // Bit 15
120  "DDnumu", // Bit 16
121  "DDnue", // Bit 17
122  "DDfastmono", // Bit 18
123  "DDslowmono", // Bit 19
124  "FEBOverflow", // Bit 20
125  "DDActivity1", // Bit 21
126  "DDActivity2", // Bit 22
127  "MC", // Bit 23
128  // Start Middle Trigger Word
129  "SNEWSTrig", // Bit 24
130  "SNEWSBeatSlow", // Bit 25
131  "SNEWSBeatFast", // Bit 26
132  "DDContained", // Bit 27
133  "DDMoon", // Bit 28
134  "DDSun", // Bit 29
135  "DDMichel", // Bit 30
136  "SNXTrig", // Bit 31
137  "DDMichelV2", // Bit 32
138  "DDMichelV3", // Bit 33
139  "DDMichelV4", // Bit 34
140  "DDMichelTest", // Bit 35
141  "DDFastMonoNN", // Bit 36
142  "DDFastMonoNNV2", // Bit 37
143  "DDFastMonoNNV3", // Bit 38
144  "DDFastMonoNNTest", // Bit 39
145  "LIGOTrig", // Bit 40
146  "LIGOBeatSlow", // Bit 41
147  "LIGOBeatFast", // Bit 42
148  "TBSpill", // Bit 43
149  "TBTrig", // Bit 44
150  "DDNNBar", // Bit 45
151  "DDHmu", // Bit 46
152  "ND", // Bit 47
153  "ND", // Bit 48
154  "ND", // Bit 49
155  "ND", // Bit 50
156  "ND", // Bit 51
157  "ND", // Bit 52
158  "ND", // Bit 53
159  "ND", // Bit 54
160  "ND", // Bit 55
161  "ND", // Bit 56
162  "ND", // Bit 57
163  "ND", // Bit 58
164  "ND", // Bit 59
165  "ND", // Bit 60
166  "ND", // Bit 61
167  "ND", // Bit 62
168  "ND", // Bit 63
169  "ND", // Bit 64
170  "ND", // Bit 65
171  "ND", // Bit 66
172  "ND", // Bit 67
173  "ND", // Bit 68
174  "ND", // Bit 69
175  "ND", // Bit 70
176  "ND", // Bit 71
177  "ND", // Bit 72
178  "ND", // Bit 73
179  "ND", // Bit 74
180  "ND", // Bit 75
181  "ND", // Bit 76
182  "ND", // Bit 77
183  "ND", // Bit 78
184  "ND", // Bit 79
185  "ND", // Bit 80
186  "ND", // Bit 81
187  "ND", // Bit 82
188  "ND", // Bit 83
189  "ND", // Bit 84
190  "ND", // Bit 85
191  "ND", // Bit 86
192  "ND", // Bit 87
193  "ND", // Bit 88
194  };
195 
196  const char* getTriggerName(trigID t){
197  if(t < 0){return "Invalid Trigger";}
198  if(t == 0){return "NULL Trigger";}
199  if(t > MAX_TRIGGER_BITS){return "Invalid Trigger";}
200  return trigIDStrings[t-1];
201  }
202 
203  const char* getTriggerNameFromMask(unsigned int t){
204  return getTriggerName(DecodeTrigMask32(t) );
205  }
206 
208  if(t < 0){return "Invalid Trigger";}
209  if(t == 0){return "NULL";}
210  if(t > MAX_TRIGGER_BITS){return "Invalid Trigger";}
211  return trigIDShortStrings[t-1];
212  }
213 
214  const char* getTriggerShortNameFromMask(unsigned int t){
216  }
217 
218  /**
219  * Encode a trigger masked based on a given trigger ID
220  *
221  */
222 
224  if( t < 1){return TRIG_BIT_NULL;}
225  if( t > MAX_TRIGGER_BITS){return TRIG_BIT_NULL;}
226 
227  // We return only a 32bit mask for the trigger
228  // triggers > 32 are returned shifted down by 32/64 bits
229 
230  if( t < 33){
231  return (trigBitID)( 0x1 << (t-1));
232  }else{
233  return (trigBitID)( 0x1 << (t % 33));
234  }
235  return TRIG_BIT_NULL;
236  }
237 
238  /**
239  * Decode a trigger masked based to a given trigger ID
240  *
241  */
242  trigID DecodeTrigMask32(unsigned int t){
243 
244  if( t == TRIG_BIT_NULL){return TRIG_ID_NULL;}
245 
246  // We only decode a 32bit word and return
247  // the lowest bit that was set
248  int i=0;
249  for(i=0; i<32; ++i){
250  if( t & (0x1 << i)){return (trigID)(i+1);}
251  }
252  return TRIG_ID_NULL;
253  }
254 
255  /**
256  * Map an integer partition number to an enum trigSourceSubID
257  *
258  */
260  {
261  switch(partition) {
262  case 0:
264  break;
265  case 1:
267  break;
268  case 2:
270  break;
271  case 3:
273  break;
274  case 4:
276  break;
277  default:
278  return TRIGSRC_SUBID_DUMMY;
279  }
280  }
281 
282 
283  /**
284  * Map an enum trigSourceSubID to an integer partition
285  *
286  */
288  {
289  switch(subid) {
291  return 0;
292  break;
294  return 1;
295  break;
297  return 2;
298  break;
300  return 3;
301  break;
303  return 4;
304  break;
305  default:
306  return -1;
307  }
308  }
309 
310 }
const char * trigIDStrings[]
Float_t x1[n_points_granero]
Definition: compare.C:5
trigBitID EncodeTrigMask32(trigID triggerID)
const char * getTriggerShortNameFromMask(unsigned int trigmask)
#define MAX_TRIGGER_BITS
const char * trigIDShortStrings[]
trigSourceSubID PartitionToSubID(int32_t)
trigID DecodeTrigMask32(unsigned int trigmask)
const char * getTriggerName(trigID triggerID)
const char * getTriggerNameFromMask(unsigned int trigmask)
Class to hold the data from the FEBs in correct formats.
int32_t SubIDtoPartition(trigSourceSubID)
const char * getTriggerShortName(trigID triggerID)