Belle II Software  release-05-02-19
TrgBit.h
1 #ifndef TRGBIT_h
2 #define TRGBIT_h
3 
4 #include <string>
5 #include <framework/dataobjects/EventMetaData.h>
6 #include <mdst/dataobjects/TRGSummary.h>
7 
8 const int N_INPUT_ARRAY = 5;
9 const int N_OUTPUT_ARRAY = 5;
10 const int N_PSNM_ARRAY = 10;
11 const int N_BITS_RESERVED = 200;
12 
13 namespace Belle2 {
19  class TrgBit {
21 
22  public:
23 
25  TrgBit();
26 
28  virtual ~TrgBit();
29 
30  public:
31 
32 #include <trg/gdl/TrgBitInput.h>
33 #include <trg/gdl/TrgBitOutput.h>
34 
35  public:
38 
39  public:
42 
44  virtual ~InputBitPattern() {};
45 
46  public:
47 
49  void set(unsigned pattern, unsigned wordPosition);
50 
52  bool isFired(unsigned bit) const;
53 
54  public:// Operators
57 
59  int operator [](unsigned);
60 
61  private:
62 
64  unsigned _pattern[6];
65 
66  };
67 
70 
71  public:
74 
76  virtual ~OutputBitPattern() {};
77 
78  public:
79 
81  void set(unsigned pattern, unsigned wordPosition);
82 
84  bool isFired(unsigned bit) const;
85 
86  public:// Operators
87 
90 
92  int operator [](unsigned);
93 
94  private:
95 
97  unsigned _pattern[6];
98 
99  };
100 
101  private:
102 
103  unsigned _exp;
104  unsigned _run;
105 
106  // configuration numbers
107  unsigned nconf_psnm;
108  unsigned nconf_ftdl;
109  unsigned nconf_input;
110 
111  // number of using bits
112  unsigned n_input;
113  unsigned n_output;
114 
115  // Whether hit information is filled or not.
116  // This is true when TRGSummary class is available.
117  bool _isFiredFilled;
118 
119  public:// Selectors
120 
122  std::string version(void) const;
123 
125  unsigned preScaleValue(output A) const;
126  unsigned preScaleValue(unsigned i) const;
127 
129  void printPreScaleValues(void) const;
131  void printConf(void) const;
132 
134  bool isFired(output bitname) const;
136  bool isFired(const char* bitname) const;
138  bool isFired(input bitname) const;
139  bool isFiredInput(unsigned ith_bit) const;
140  bool isFiredInput(input bitname) const;
141  bool isFiredInput(const char* bitname) const;
142  bool isFiredFtdl(unsigned ith_bit) const;
143  bool isFiredFtdl(output bitname) const;
144  bool isFiredFtdl(const char* bitname) const;
145  bool isFiredPsnm(unsigned ith_bit) const;
146  bool isFiredPsnm(output bitname) const;
147  bool isFiredPsnm(const char* bitname) const;
148 
150  unsigned getNumOfInputs(void) {return n_input;}
151  unsigned getNumOfOutputs(void) {return n_output;}
152 
154  unsigned getOutputBitNum(const char* bitname) const;
155  unsigned getOutputBitNum(output a) {return _outputMap[nconf_ftdl][a];}
156 
158  unsigned getInputBitNum(const char* bitname) const;
159  unsigned getInputBitNum(input a) {return _inputMap[nconf_input][a];}
160 
164  int getBitNum(const char* bitname) const;
165 
167  bool isFiredFilled(void) {return _isFiredFilled;}
168 
170  bool isUsed(input a) const;
171  bool isUsed(output a) const;
172  bool isUsed(const char* bitname) const;
173 
175  const char* getInputBitName(unsigned ith_bit) const;
176  const char* getOutputBitName(unsigned ith_bit) const;
177 
180 
182  std::vector<unsigned> getInputVector(void) {return _itdVector;}
183  std::vector<unsigned> getFtdlVector(void) {return _ftdVector;}
184  std::vector<unsigned> getPsnmVector(void) {return _psnVector;}
185 
186  public:
187 
189  std::string versionFTDL(void) const;
190 
191  private:// Modifiers
192 
193  // Set configuration version from exp, run number
194  // Valid only for physics run, not for cosmic.
195  void mapNumber(unsigned exp, unsigned run);
196 
197  private:
198 
199  static const std::string _ftdlVersion[2];
200  static const unsigned _inputMap[N_INPUT_ARRAY][N_BITS_RESERVED];
201  static const unsigned _outputMap[N_OUTPUT_ARRAY][N_BITS_RESERVED];
202  static const unsigned _psnmValues[N_PSNM_ARRAY][N_BITS_RESERVED];
203  static const char* _inputBitNames[N_BITS_RESERVED];
204  static const char* _outputBitNames[N_BITS_RESERVED];
205 
206  TRGSummary::ETimingType timtype;
207 
208  InputBitPattern _input;
209  OutputBitPattern _ftdl;
210  OutputBitPattern _psnm;
211 
213  std::vector<unsigned> _itdVector;
214  std::vector<unsigned> _ftdVector;
215  std::vector<unsigned> _psnVector;
216 
217  };
218 
220 }
221 
222 #endif
Belle2::TrgBit::versionFTDL
std::string versionFTDL(void) const
returns FTDL version;
Definition: TrgBit.cc:14
Belle2::TrgBit::getOutputBitNum
unsigned getOutputBitNum(const char *bitname) const
returns bit number
Definition: TrgBit.cc:290
Belle2::TrgBit::isFiredFilled
bool isFiredFilled(void)
Whether hit information is available or not.
Definition: TrgBit.h:167
Belle2::TrgBit::InputBitPattern::InputBitPattern
InputBitPattern()
Constructor.
Definition: TrgBit.h:41
Belle2::TrgBit::OutputBitPattern::isFired
bool isFired(unsigned bit) const
get fired or not
Definition: TrgBit.cc:197
Belle2::TrgBit::OutputBitPattern::set
void set(unsigned pattern, unsigned wordPosition)
reads/sets a bit.
Definition: TrgBit.cc:183
Belle2::TrgBit::printPreScaleValues
void printPreScaleValues(void) const
print prescale values
Definition: TrgBit.cc:247
Belle2::TrgBit::isFired
bool isFired(output bitname) const
returns true if the psnm bit is fired.
Definition: TrgBit.cc:92
Belle2::TrgBit::getInputVector
std::vector< unsigned > getInputVector(void)
return hit information in vector
Definition: TrgBit.h:182
Belle2::TrgBit::InputBitPattern::isFired
bool isFired(unsigned bit) const
get fired or not
Definition: TrgBit.cc:189
Belle2::TrgBit::OutputBitPattern
Output bit pattern class.
Definition: TrgBit.h:69
Belle2::TrgBit::printConf
void printConf(void) const
print configuration values
Definition: TrgBit.cc:261
Belle2::TrgBit::preScaleValue
unsigned preScaleValue(output A) const
returns pre-scale value.
Definition: TrgBit.cc:164
Belle2::TrgBit::InputBitPattern::operator[]
int operator[](unsigned)
Bit.
Definition: TrgBit.cc:205
Belle2::TrgBit::OutputBitPattern::_pattern
unsigned _pattern[6]
hit pattern
Definition: TrgBit.h:97
Belle2::TrgBit::InputBitPattern::_pattern
unsigned _pattern[6]
hit pattern
Definition: TrgBit.h:64
Belle2::TrgBit::~TrgBit
virtual ~TrgBit()
Destructor.
Definition: TrgBit.cc:55
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrgBit::version
std::string version(void) const
returns TrgBit version;
Definition: TrgBit.cc:8
Belle2::TrgBit::getTimingSource
TRGSummary::ETimingType getTimingSource(void) const
returns timing source
Definition: TrgBit.cc:158
Belle2::TrgBit::InputBitPattern::set
void set(unsigned pattern, unsigned wordPosition)
reads/sets a bit.
Definition: TrgBit.cc:177
Belle2::TrgBit::_itdVector
std::vector< unsigned > _itdVector
hit information in vector
Definition: TrgBit.h:213
Belle2::TrgBit::TrgBit
TrgBit()
Constructor.
Definition: TrgBit.cc:19
Belle2::TrgBit::OutputBitPattern::OutputBitPattern
OutputBitPattern()
Constructor.
Definition: TrgBit.h:73
Belle2::TrgBit::getInputBitNum
unsigned getInputBitNum(const char *bitname) const
returns bit number
Definition: TrgBit.cc:279
Belle2::TrgBit::getNumOfInputs
unsigned getNumOfInputs(void)
return number of used bits
Definition: TrgBit.h:150
Belle2::TrgBit::OutputBitPattern::~OutputBitPattern
virtual ~OutputBitPattern()
Destructor.
Definition: TrgBit.h:76
Belle2::TRGSummary::ETimingType
ETimingType
types of trigger timing source defined in b2tt firmware
Definition: TRGSummary.h:54
Belle2::TrgBit::InputBitPattern::operator==
int operator==(InputBitPattern &)
Comparison.
Belle2::TrgBit::InputBitPattern::~InputBitPattern
virtual ~InputBitPattern()
Destructor.
Definition: TrgBit.h:44
Belle2::TrgBit::OutputBitPattern::operator==
int operator==(OutputBitPattern &)
Comparison.
Belle2::TrgBit::OutputBitPattern::operator[]
int operator[](unsigned)
Bit.
Definition: TrgBit.cc:216
Belle2::TrgBit::InputBitPattern
Input bit pattern class.
Definition: TrgBit.h:37
Belle2::TrgBit::getBitNum
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:268
Belle2::TrgBit::getInputBitName
const char * getInputBitName(unsigned ith_bit) const
returns bit name
Definition: TrgBit.cc:227
Belle2::TrgBit::isUsed
bool isUsed(input a) const
Whether the bit exists for the run.
Definition: TrgBit.cc:301