CMS 3D CMS Logo

List of all members | Public Member Functions
trklet::VarDef Class Reference

#include <imath.h>

Inheritance diagram for trklet::VarDef:
trklet::VarBase

Public Member Functions

void print (std::ofstream &fs, HLS, int l1=0, int l2=0, int l3=0) override
 
void print (std::ofstream &fs, Verilog, int l1=0, int l2=0, int l3=0) override
 
void set_fval (double fval)
 
void set_ival (int ival)
 
 VarDef (imathGlobals *globals, std::string name, std::string units, double fmax, double K)
 
 VarDef (imathGlobals *globals, std::string name, VarBase *p)
 
 ~VarDef () override=default
 
- Public Member Functions inherited from trklet::VarBase
void add_cut (VarCut *cut, const bool call_set_cut_var=true)
 
void add_delay (int i)
 
void add_latency (unsigned int l)
 
void analyze ()
 
bool calculate ()
 
bool calculate (int debug_level)
 
VarBasecut_var ()
 
std::string dump ()
 
void dump_msg ()
 
double fval () const
 
bool has_delay (int i)
 
void inputs (std::vector< VarBase * > *vd)
 
long int ival () const
 
double K () const
 
std::map< std::string, int > Kmap () const
 
std::string kstring () const
 
int latency () const
 
virtual void local_calculate ()
 
bool local_passes () const
 
void makeready ()
 
double maxval () const
 
double minval () const
 
std::string name () const
 
int nbits () const
 
std::string op () const
 
VarBasep1 () const
 
VarBasep2 () const
 
VarBasep3 () const
 
void passes (std::map< const VarBase *, std::vector< bool > > &passes, const std::map< const VarBase *, std::vector< bool > > *const previous_passes=nullptr) const
 
int pipe_counter ()
 
std::string pipe_delays (const int step)
 
void pipe_increment ()
 
void print_all (std::ofstream &fs, HLS)
 
void print_all (std::ofstream &fs, Verilog)
 
void print_cuts (std::map< const VarBase *, std::set< std::string > > &cut_strings, const int step, HLS, const std::map< const VarBase *, std::set< std::string > > *const previous_cut_strings=nullptr) const
 
void print_cuts (std::map< const VarBase *, std::set< std::string > > &cut_strings, const int step, Verilog, const std::map< const VarBase *, std::set< std::string > > *const previous_cut_strings=nullptr) const
 
void print_step (int step, std::ofstream &fs, HLS)
 
void print_step (int step, std::ofstream &fs, Verilog)
 
void print_truncation (std::string &t, const std::string &o1, const int ps, HLS) const
 
void print_truncation (std::string &t, const std::string &o1, const int ps, Verilog) const
 
double range () const
 
void reset ()
 
int shift () const
 
int step () const
 
 VarBase (imathGlobals *globals, std::string name, VarBase *p1, VarBase *p2, VarBase *p3, int l)
 
virtual ~VarBase ()
 

Additional Inherited Members

- Static Public Member Functions inherited from trklet::VarBase
static void design_print (std::vector< VarBase * > v, std::ofstream &fs, HLS)
 
static void design_print (std::vector< VarBase * > v, std::ofstream &fs, Verilog)
 
static void hls_print (std::vector< VarBase * > v, std::ofstream &fs)
 
static std::string itos (int i)
 
static std::string pipe_delay (VarBase *v, int nbits, int delay)
 
static std::string pipe_delay_wire (VarBase *v, std::string name_delayed, int nbits, int delay)
 
static void verilog_print (std::vector< VarBase * > v, std::ofstream &fs)
 
- Static Public Attributes inherited from trklet::VarBase
static struct trklet::VarBase::HLS hls
 
static struct trklet::VarBase::Verilog verilog
 
- Protected Attributes inherited from trklet::VarBase
VarBasecut_var_
 
std::vector< VarBase * > cuts_
 
double fval_
 
imathGlobalsglobals_
 
long int ival_
 
double K_
 
std::map< std::string, int > Kmap_
 
int latency_
 
double maxval_
 
double minval_
 
std::string name_
 
int nbits_
 
std::string op_
 
VarBasep1_
 
VarBasep2_
 
VarBasep3_
 
int pipe_counter_
 
std::vector< int > pipe_delays_
 
bool readytoanalyze_
 
bool readytoprint_
 
int step_
 
bool usedasinput_
 
double val_
 

Detailed Description

Definition at line 465 of file imath.h.

Constructor & Destructor Documentation

◆ VarDef() [1/2]

trklet::VarDef::VarDef ( imathGlobals globals,
std::string  name,
std::string  units,
double  fmax,
double  K 
)
inline

Definition at line 468 of file imath.h.

469  : VarBase(globals, name, nullptr, nullptr, nullptr, 1) {
470  op_ = "def";
471  K_ = K;
472  nbits_ = log2(fmax / K) + 1.999999; //plus one to round up
473  if (!units.empty())
474  Kmap_[units] = 1;
475  else {
476  //defining a constant, K should be a power of two
477  int l = log2(K);
478  if (std::abs(pow(2, l) / K - 1) > 1e-5) {
479  char slog[100];
480  snprintf(slog, 100, "defining unitless constant, yet K is not a power of 2! %g, %g", K, pow(2, l));
481  edm::LogVerbatim("Tracklet") << slog;
482  }
483  Kmap_["2"] = l;
484  }
485  }

References funct::abs(), MillePedeFileConverter_cfg::e, trklet::VarBase::K(), trklet::VarBase::K_, trklet::VarBase::Kmap_, cmsLHEtoEOSManager::l, trklet::VarBase::nbits_, trklet::VarBase::op_, funct::pow(), and units().

◆ VarDef() [2/2]

trklet::VarDef::VarDef ( imathGlobals globals,
std::string  name,
VarBase p 
)
inline

Definition at line 487 of file imath.h.

487  : VarBase(globals, name, nullptr, nullptr, nullptr, 1) {
488  op_ = "def";
489  K_ = p->K();
490  nbits_ = p->nbits();
491  Kmap_ = p->Kmap();
492  }

References trklet::VarBase::K_, trklet::VarBase::Kmap_, trklet::VarBase::nbits_, trklet::VarBase::op_, and AlCaHLTBitMon_ParallelJobs::p.

◆ ~VarDef()

trklet::VarDef::~VarDef ( )
overridedefault

Member Function Documentation

◆ print() [1/2]

void VarDef::print ( std::ofstream &  fs,
HLS  ,
int  l1 = 0,
int  l2 = 0,
int  l3 = 0 
)
overridevirtual

Reimplemented from trklet::VarBase.

Definition at line 102 of file imath_HLS.cc.

102  {
103  assert(l1 == 0);
104  assert(l2 == 0);
105  assert(l3 == 0);
106 
107  fs << "// units " << kstring() << "\t" << K_ << "\n";
108  fs << "const ap_int<" << nbits_ << "> " << name_ << " = " << name_ << "_wire;\n";
109 }

References cms::cuda::assert(), trklet::VarBase::K_, trklet::VarBase::kstring(), trklet::VarBase::name_, and trklet::VarBase::nbits_.

◆ print() [2/2]

void VarDef::print ( std::ofstream &  fs,
Verilog  ,
int  l1 = 0,
int  l2 = 0,
int  l3 = 0 
)
overridevirtual

Reimplemented from trklet::VarBase.

Definition at line 115 of file imath_Verilog.cc.

115  {
116  assert(l1 == 0);
117  assert(l2 == 0);
118  assert(l3 == 0);
119 
120  std::string t = "reg signed [" + itos(nbits_ - 1) + ":0]" + name_ + ";\n";
121  t = t + "always @(posedge clk) " + name_ + " <= " + name_ + "_wire;\n";
122  fs << "// units " << kstring() << "\t" << K_ << "\n" << t;
123 }

References cms::cuda::assert(), trklet::VarBase::itos(), trklet::VarBase::K_, trklet::VarBase::kstring(), trklet::VarBase::name_, trklet::VarBase::nbits_, AlCaHLTBitMon_QueryRunRegistry::string, and OrderedSet::t.

◆ set_fval()

void trklet::VarDef::set_fval ( double  fval)
inline

◆ set_ival()

void trklet::VarDef::set_ival ( int  ival)
inline
trklet::VarBase::fval
double fval() const
Definition: imath.h:212
trklet::VarBase::name
std::string name() const
Definition: imath.h:207
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
cms::cuda::assert
assert(be >=bs)
trklet::VarBase::val_
double val_
Definition: imath.h:306
trklet::VarBase::kstring
std::string kstring() const
Definition: imath.cc:18
trklet::VarBase::VarBase
VarBase(imathGlobals *globals, std::string name, VarBase *p1, VarBase *p2, VarBase *p3, int l)
Definition: imath.h:161
units
TString units(TString variable, Char_t axis)
trklet::VarBase::op_
std::string op_
Definition: imath.h:300
OrderedSet.t
t
Definition: OrderedSet.py:90
trklet::VarBase::itos
static std::string itos(int i)
Definition: imath.cc:16
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
trklet::VarBase::ival_
long int ival_
Definition: imath.h:305
trklet::VarBase::K
double K() const
Definition: imath.h:246
edm::LogVerbatim
Definition: MessageLogger.h:297
trklet::VarBase::ival
long int ival() const
Definition: imath.h:213
trklet::VarBase::Kmap_
std::map< std::string, int > Kmap_
Definition: imath.h:313
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:193
trklet::VarBase::name_
std::string name_
Definition: imath.h:296
trklet::VarBase::K_
double K_
Definition: imath.h:312
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
trklet::VarBase::nbits_
int nbits_
Definition: imath.h:311
trklet::VarBase::fval_
double fval_
Definition: imath.h:304
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37