Belle II Software  release-05-02-19
JLUT.h
1 //-----------------------------------------------------------------------------
2 // $Id$
3 //-----------------------------------------------------------------------------
4 // Filename : JLUT.h
5 // Section : TRG CDC
6 // Owner : Jaebak KIM (K.U.)
7 // Email : jbkim@hep.korea.ac.kr
8 //-----------------------------------------------------------------------------
9 // Description : A class for LUT in CDC Trigger
10 //-----------------------------------------------------------------------------
11 // $Log$
12 //-----------------------------------------------------------------------------
13 
14 #ifndef TRGCDCJLUT_FLAG_
15 #define TRGCDCJLUT_FLAG_
16 
17 #include <string>
18 #include <vector>
19 #include <map>
20 #include <functional>
21 #include "JSignal.h"
22 
23 #ifdef TRGCDC_SHORT_NAMES
24 #define JLUT TRGCDCJLUT
25 #endif
26 
27 namespace Belle2 {
33 //class TRGCDCJSignal;
34 
36  class TRGCDCJLUT {
37 
38  public:
39 
41  TRGCDCJLUT(const std::string& name = "no_name");
42 
44  TRGCDCJLUT(const TRGCDCJLUT& in);
45 
47  virtual ~TRGCDCJLUT();
48 
50  //TRGCDCJLUT& operator= (const TRGCDCJLUT& in);
51 
52  public:
53 
55  std::string name(void) const;
56 
58  std::string version(void) const;
59 
61  void setData(int inputBitsize, int outputBitSize, const std::string& filename, bool twoscomplement = 0);
62 
64  void setFunction(std::function<int(int)> function);
65 
67  int setFloatFunction(std::function<double(double)> function,
68  TRGCDCJSignal const& input,
69  TRGCDCJSignal const& minInv, TRGCDCJSignal const& maxInv, double outputToReal,
70  int lutInputBitwidth, int lutOutputBitwidth);
71 
73  void setOutputFlag(int outputFlag);
74 
76  void setBitsize(int inputBitsize, int outputBitsize);
77 
79  void setInputBitsize(int inputBitsize);
80 
82  void setOutputBitsize(int outputBitsize);
83 
85  std::string getFileName() const;
86 
88  int getInputBitsize() const;
89 
91  int getOutputBitsize() const;
92 
94  std::function<int(int)> getFunction();
95 
97  std::function<double(double)> getFloatFunction();
98 
100  int getOutputFlag() const;
101 
103  int getOutputType() const;
104 
106  int getOutput(int) const;
107 
109  double getFloatOutput(double) const;
110 
112  void dump();
113 
115  void makeCOE(std::string = "");
116 
118  std::vector<double> m_const;
119 
121  std::string operate(std::string out, std::string in, std::map<std::string, std::map<std::string, double>* >& m_intStorage);
122 
124  TRGCDCJSignal const operate(TRGCDCJSignal const& in, TRGCDCJSignal& out);
125 
127  void operateNoOffset(TRGCDCJSignal const& in, TRGCDCJSignal& out) const;
128 
130  std::string const lutVhdlCode(std::string const& shiftOffsetInput) const;
131 
132  private:
133 
135  std::string m_name;
136 
138  std::vector<int> m_data;
139 
141  std::string m_fileName;
142 
144  std::function<int(int)> m_function;
145 
147  std::function<double(double)> m_floatFunction;
148 
151 
154 
157 
159  bool m_write;
160 
163 
166 
169 
172 
174  double m_toReal;
175 
178 
180  double m_outputType;
181 
184 
187 
190 
193 
196 
199 
200  };
201 
202 //-----------------------------------------------------------------------------
203 
204  inline
205  std::string
206  TRGCDCJLUT::name(void) const
207  {
208  return m_name;
209  }
210 
211 
213 } // namespace Belle2
214 
215 #endif /* TRGCDCLUT_FLAG_ */
Belle2::TRGCDCJLUT::getInputBitsize
int getInputBitsize() const
get input bitsize
Definition: JLUT.cc:374
Belle2::TRGCDCJLUT::m_outputIntMax
double m_outputIntMax
The integer offset of the output for LUT.
Definition: JLUT.h:168
Belle2::TRGCDCJLUT::m_outputBitsize
int m_outputBitsize
output bitsize. Number of bits.
Definition: JLUT.h:156
Belle2::TRGCDCJLUT::m_write
bool m_write
VHDL write flag for signals. 1: Write is on. 0: Write is off.
Definition: JLUT.h:159
Belle2::TRGCDCJLUT::getOutput
int getOutput(int) const
get output using int values.
Definition: JLUT.cc:404
Belle2::TRGCDCJLUT::m_inputToReal
double m_inputToReal
The factor of the input integer to change to float value.
Definition: JLUT.h:171
Belle2::TRGCDCJLUT::m_shiftOffsetOutputMax
TRGCDCJSignal m_shiftOffsetOutputMax
The maximum output value that is bit shifted.
Definition: JLUT.h:195
Belle2::TRGCDCJLUT::m_const
std::vector< double > m_const
Storage for values used in function.
Definition: JLUT.h:118
Belle2::TRGCDCJLUT::name
std::string name(void) const
Operators.
Definition: JLUT.h:206
Belle2::TRGCDCJLUT::lutVhdlCode
const std::string lutVhdlCode(std::string const &shiftOffsetInput) const
Creates vhdlCode for lut.
Definition: JLUT.cc:596
Belle2::TRGCDCJLUT::m_outputType
double m_outputType
The output type of the LUT. (Will be deprecated.)
Definition: JLUT.h:180
Belle2::TRGCDCJLUT::m_outputFlag
int m_outputFlag
Flag for output. 0 is from function. 1 is from LUT file.
Definition: JLUT.h:150
Belle2::TRGCDCJLUT::m_name
std::string m_name
Name.
Definition: JLUT.h:135
Belle2::TRGCDCJLUT::setInputBitsize
void setInputBitsize(int inputBitsize)
set input bitsize.
Definition: JLUT.cc:359
Belle2::TRGCDCJLUT::setBitsize
void setBitsize(int inputBitsize, int outputBitsize)
set input & output bitsize.
Definition: JLUT.cc:348
Belle2::TRGCDCJSignal
A class to use Signals for TRGCDC 3D tracker.
Definition: JSignal.h:36
Belle2::TRGCDCJLUT::getOutputType
int getOutputType() const
get output type.
Definition: JLUT.cc:399
Belle2::TRGCDCJLUT::getOutputBitsize
int getOutputBitsize() const
get output bitsize
Definition: JLUT.cc:379
Belle2::TRGCDCJLUT::m_inputOffset
double m_inputOffset
Changing float function to int function variables.
Definition: JLUT.h:162
Belle2::TRGCDCJLUT::getFunction
std::function< int(int)> getFunction()
get LUT function using int values.
Definition: JLUT.cc:384
Belle2::TRGCDCJLUT::getFileName
std::string getFileName() const
get LUT filename
Definition: JLUT.cc:369
Belle2::TRGCDCJLUT::m_toReal
double m_toReal
The factor to change integer to float value.
Definition: JLUT.h:174
Belle2::TRGCDCJLUT::m_floatFunction
std::function< double(double)> m_floatFunction
Float LUT function.
Definition: JLUT.h:147
Belle2::TRGCDCJLUT::m_inputBitsize
int m_inputBitsize
input bitsize. Number of bits.
Definition: JLUT.h:153
Belle2::TRGCDCJLUT::m_outputOffset
double m_outputOffset
The float offset of the output for LUT.
Definition: JLUT.h:165
Belle2::TRGCDCJLUT::version
std::string version(void) const
returns version.
Definition: JLUT.cc:43
Belle2::TRGCDCJLUT::m_shiftOutputMin
TRGCDCJSignal m_shiftOutputMin
The minimum output signal that is bit shifted.
Definition: JLUT.h:192
Belle2::TRGCDCJLUT::setOutputBitsize
void setOutputBitsize(int outputBitsize)
set output bitsize.
Definition: JLUT.cc:364
Belle2::TRGCDCJLUT::~TRGCDCJLUT
virtual ~TRGCDCJLUT()
Destructor.
Definition: JLUT.cc:83
Belle2::TRGCDCJLUT::setData
void setData(int inputBitsize, int outputBitSize, const std::string &filename, bool twoscomplement=0)
set LookUpTable(LUT) data.
Definition: JLUT.cc:87
Belle2::TRGCDCJLUT::setFunction
void setFunction(std::function< int(int)> function)
set LUT function directly using int values.
Definition: JLUT.cc:195
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TRGCDCJLUT::m_outputNBitsWithOffset
double m_outputNBitsWithOffset
The output bit width with offset. (Will be deprecated.)
Definition: JLUT.h:183
Belle2::TRGCDCJLUT::operate
std::string operate(std::string out, std::string in, std::map< std::string, std::map< std::string, double > * > &m_intStorage)
Operate on LUT. (Will be deprecated.)
Definition: JLUT.cc:476
Belle2::TRGCDCJLUT::setFloatFunction
int setFloatFunction(std::function< double(double)> function, TRGCDCJSignal const &input, TRGCDCJSignal const &minInv, TRGCDCJSignal const &maxInv, double outputToReal, int lutInputBitwidth, int lutOutputBitwidth)
set LUT function using JSignals.
Definition: JLUT.cc:201
Belle2::TRGCDCJLUT::m_fileName
std::string m_fileName
LUT filename.
Definition: JLUT.h:141
Belle2::TRGCDCJLUT
A class to use LUTs for TRGCDC.
Definition: JLUT.h:36
Belle2::TRGCDCJLUT::operateNoOffset
void operateNoOffset(TRGCDCJSignal const &in, TRGCDCJSignal &out) const
Output is LUT Out + offset. Input is non offset input.
Belle2::TRGCDCJLUT::m_shiftOffsetInput
TRGCDCJSignal m_shiftOffsetInput
The bt shifted offset signal of input.
Definition: JLUT.h:198
Belle2::TRGCDCJLUT::TRGCDCJLUT
TRGCDCJLUT(const std::string &name="no_name")
Contructor.
Definition: JLUT.cc:48
Belle2::TRGCDCJLUT::getOutputFlag
int getOutputFlag() const
get output type.
Definition: JLUT.cc:394
Belle2::TRGCDCJLUT::m_inputMin
TRGCDCJSignal m_inputMin
The minimum input signal.
Definition: JLUT.h:186
Belle2::TRGCDCJLUT::m_function
std::function< int(int)> m_function
LUT function.
Definition: JLUT.h:144
Belle2::TRGCDCJLUT::makeCOE
void makeCOE(std::string="")
make COE file.
Definition: JLUT.cc:426
Belle2::TRGCDCJLUT::setOutputFlag
void setOutputFlag(int outputFlag)
set output flag.
Definition: JLUT.cc:354
Belle2::TRGCDCJLUT::getFloatFunction
std::function< double(double)> getFloatFunction()
get LUT function using float values.
Definition: JLUT.cc:389
Belle2::TRGCDCJLUT::getFloatOutput
double getFloatOutput(double) const
get output using float values.
Definition: JLUT.cc:409
Belle2::TRGCDCJLUT::m_data
std::vector< int > m_data
LUT data.
Definition: JLUT.h:138
Belle2::TRGCDCJLUT::dump
void dump()
Print variables for LUT.
Definition: JLUT.cc:414
Belle2::TRGCDCJLUT::m_inputMax
TRGCDCJSignal m_inputMax
The maximum input signal.
Definition: JLUT.h:189
Belle2::TRGCDCJLUT::m_inputShiftBits
int m_inputShiftBits
The number of bits to shift to make input the wanted bit width.
Definition: JLUT.h:177