Belle II Software development
TrgBit.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#ifndef TRGBIT_h
9#define TRGBIT_h
10
11#include <string>
12#include <framework/dataobjects/EventMetaData.h>
13#include <mdst/dataobjects/TRGSummary.h>
14#include <trg/gdl/TrgBitInput.h>
15#include <trg/gdl/TrgBitOutput.h>
16
17const int N_INPUT_ARRAY = 5;
18const int N_OUTPUT_ARRAY = 5;
19const int N_PSNM_ARRAY = 10;
20const int N_BITS_RESERVED = 200;
21
22namespace Belle2 {
29 class TrgBit {
30
31 public:
32
34 TrgBit();
35
37 virtual ~TrgBit();
38
39 public:
42
43 public:
45 InputBitPattern() : _pattern{} {}; //TODO is it good default?
46
48 virtual ~InputBitPattern() {};
49
50 public:
51
53 void set(unsigned pattern, unsigned wordPosition);
54
56 bool isFired(unsigned bit) const;
57
58 public:// Operators
61
63 int operator [](unsigned);
64
65 private:
66
68 unsigned _pattern[6];
69
70 };
71
74
75 public:
77 OutputBitPattern() : _pattern{} {}; //TODO is it good default?
78
80 virtual ~OutputBitPattern() {};
81
82 public:
83
85 void set(unsigned pattern, unsigned wordPosition);
86
88 bool isFired(unsigned bit) const;
89
90 public:// Operators
91
94
96 int operator [](unsigned);
97
98 private:
99
101 unsigned _pattern[6];
102
103 };
104
105 private:
106
107 unsigned _exp;
108 unsigned _run;
109
110 // configuration numbers
111 unsigned nconf_psnm;
112 unsigned nconf_ftdl;
113 unsigned nconf_input;
114
115 // number of using bits
116 unsigned n_input;
117 unsigned n_output;
118
119 // Whether hit information is filled or not.
120 // This is true when TRGSummary class is available.
121 bool _isFiredFilled;
122
123 public:// Selectors
124
126 std::string version(void) const;
127
129 unsigned preScaleValue(output A) const;
130 unsigned preScaleValue(unsigned i) const;
131
133 void printPreScaleValues(void) const;
135 void printConf(void) const;
136
138 bool isFired(output bitname) const;
140 bool isFired(const char* bitname) const;
142 bool isFired(input bitname) const;
143 bool isFiredInput(unsigned ith_bit) const;
144 bool isFiredInput(input bitname) const;
145 bool isFiredInput(const char* bitname) const;
146 bool isFiredFtdl(unsigned ith_bit) const;
147 bool isFiredFtdl(output bitname) const;
148 bool isFiredFtdl(const char* bitname) const;
149 bool isFiredPsnm(unsigned ith_bit) const;
150 bool isFiredPsnm(output bitname) const;
151 bool isFiredPsnm(const char* bitname) const;
152
154 unsigned getNumOfInputs(void) {return n_input;}
155 unsigned getNumOfOutputs(void) {return n_output;}
156
158 unsigned getOutputBitNum(const char* bitname) const;
159 unsigned getOutputBitNum(output a) {return _outputMap[nconf_ftdl][a];}
160
162 unsigned getInputBitNum(const char* bitname) const;
163 unsigned getInputBitNum(input a) {return _inputMap[nconf_input][a];}
164
168 int getBitNum(const char* bitname) const;
169
171 bool isFiredFilled(void) {return _isFiredFilled;}
172
174 bool isUsed(input a) const;
175 bool isUsed(output a) const;
176 bool isUsed(const char* bitname) const;
177
179 const char* getInputBitName(unsigned ith_bit) const;
180 const char* getOutputBitName(unsigned ith_bit) const;
181
184
186 std::vector<unsigned> getInputVector(void) {return _itdVector;}
187 std::vector<unsigned> getFtdlVector(void) {return _ftdVector;}
188 std::vector<unsigned> getPsnmVector(void) {return _psnVector;}
189
190 public:
191
193 std::string versionFTDL(void) const;
194
195 private:// Modifiers
196
197 // Set configuration version from exp, run number
198 // Valid only for physics run, not for cosmic.
199 void mapNumber(unsigned exp, unsigned run);
200
201 private:
202
203 static const std::string _ftdlVersion[2];
204 static const unsigned _inputMap[N_INPUT_ARRAY][N_BITS_RESERVED];
205 static const unsigned _outputMap[N_OUTPUT_ARRAY][N_BITS_RESERVED];
206 static const unsigned _psnmValues[N_PSNM_ARRAY][N_BITS_RESERVED];
207 static const char* _inputBitNames[N_BITS_RESERVED];
208 static const char* _outputBitNames[N_BITS_RESERVED];
209
211
212 InputBitPattern _input;
213 OutputBitPattern _ftdl;
214 OutputBitPattern _psnm;
215
217 std::vector<unsigned> _itdVector;
218 std::vector<unsigned> _ftdVector;
219 std::vector<unsigned> _psnVector;
220
221 };
222
224}
225
226#endif
ETimingType
types of trigger timing source defined in b2tt firmware
Definition: TRGSummary.h:43
Input bit pattern class.
Definition: TrgBit.h:41
int operator[](unsigned)
Bit.
Definition: TrgBit.cc:215
virtual ~InputBitPattern()
Destructor.
Definition: TrgBit.h:48
bool isFired(unsigned bit) const
get fired or not
Definition: TrgBit.cc:199
unsigned _pattern[6]
hit pattern
Definition: TrgBit.h:68
void set(unsigned pattern, unsigned wordPosition)
reads/sets a bit.
Definition: TrgBit.cc:187
int operator==(InputBitPattern &)
Comparison.
InputBitPattern()
Constructor.
Definition: TrgBit.h:45
Output bit pattern class.
Definition: TrgBit.h:73
int operator[](unsigned)
Bit.
Definition: TrgBit.cc:226
int operator==(OutputBitPattern &)
Comparison.
bool isFired(unsigned bit) const
get fired or not
Definition: TrgBit.cc:207
OutputBitPattern()
Constructor.
Definition: TrgBit.h:77
unsigned _pattern[6]
hit pattern
Definition: TrgBit.h:101
virtual ~OutputBitPattern()
Destructor.
Definition: TrgBit.h:80
void set(unsigned pattern, unsigned wordPosition)
reads/sets a bit.
Definition: TrgBit.cc:193
A general interface to get a trigger response.
Definition: TrgBit.h:29
const char * getInputBitName(unsigned ith_bit) const
returns bit name
Definition: TrgBit.cc:237
std::vector< unsigned > _itdVector
hit information in vector
Definition: TrgBit.h:217
std::vector< unsigned > getInputVector(void)
return hit information in vector
Definition: TrgBit.h:186
bool isFired(output bitname) const
returns true if the psnm bit is fired.
Definition: TrgBit.cc:102
bool isFiredFilled(void)
Whether hit information is available or not.
Definition: TrgBit.h:171
bool isUsed(input a) const
Whether the bit exists for the run.
Definition: TrgBit.cc:311
std::string version(void) const
returns TrgBit version;
Definition: TrgBit.cc:15
unsigned getNumOfInputs(void)
return number of used bits
Definition: TrgBit.h:154
std::string versionFTDL(void) const
returns FTDL version;
Definition: TrgBit.cc:21
int getBitNum(const char *bitname) const
returns bit number for the exprun, if >=0 it is input_bitnum if <0 it is -output_bitnum-1
Definition: TrgBit.cc:278
unsigned getOutputBitNum(const char *bitname) const
returns bit number
Definition: TrgBit.cc:300
virtual ~TrgBit()
Destructor.
Definition: TrgBit.cc:65
unsigned getInputBitNum(const char *bitname) const
returns bit number
Definition: TrgBit.cc:289
void printConf(void) const
print configuration values
Definition: TrgBit.cc:271
unsigned preScaleValue(output A) const
returns pre-scale value.
Definition: TrgBit.cc:174
TrgBit()
Constructor.
Definition: TrgBit.cc:26
void printPreScaleValues(void) const
print prescale values
Definition: TrgBit.cc:257
TRGSummary::ETimingType getTimingSource(void) const
returns timing source
Definition: TrgBit.cc:168
Abstract base class for different kinds of events.