22 sprintf(
s,
"^(%i)",
Kmap.second);
37 int iu = log2(
range() / u);
41 "analyzing %s: range %g is much larger then %g. suggest cutting by a factor of 2^%i",
51 double eff = h_->Integral() / h_->GetEntries();
53 sprintf(slog,
"analyzing %s: range is too small, contains %f",
name_.c_str(), eff);
58 TCanvas *
c =
new TCanvas();
64 sprintf(slog,
"analyzing %s: no histogram!\n",
name_.c_str());
83 "Name = %s \t Op = %s \t nbits = %i \n ival = %li \t fval = %g \t K = %g Range = %f\n units = %s\n",
100 "Name = %s \t Op = %s \t nbits = %i \n ival = %li \t fval = %g \t K = %g Range = %f\n units = "
101 "%s\n step = %i, latency = %i\n",
127 double r = Knew /
K_;
201 "(.clk(clk), .val_in(" +
name +
"), .val_out(" + name_delayed +
"));\n";
221 if (globals->h_file_ == 0) {
222 globals->h_file_ =
new TFile(
"imath.root",
"RECREATE");
225 globals->h_file_->cd();
226 TTree *
tt = (TTree *)globals->h_file_->Get(
"tt");
228 tt =
new TTree(
"tt",
"");
240 if (!
tt->GetBranchStatus(si.c_str())) {
241 tt->Branch(si.c_str(), (Long64_t *)&(
v->ival_));
242 tt->Branch(sf.c_str(), &(
v->fval_));
243 tt->Branch(
sv.c_str(), &(
v->val_));
247 addToTree(globals,
v->p1_,
s);
249 addToTree(globals,
v->p2_,
s);
251 addToTree(globals,
v->p3_,
s);
255 TTree *VarBase::addToTree(
imathGlobals *globals,
double *
v,
char *
s) {
256 if (globals->h_file_ == 0) {
257 globals->h_file_ =
new TFile(
"imath.root",
"RECREATE");
260 globals->h_file_->cd();
261 TTree *
tt = (TTree *)globals->h_file_->Get(
"tt");
263 tt =
new TTree(
"tt",
"");
269 TTree *VarBase::addToTree(
imathGlobals *globals,
int *
v,
char *
s) {
270 if (globals->h_file_ == 0) {
271 globals->h_file_ =
new TFile(
"imath.root",
"RECREATE");
274 globals->h_file_->cd();
275 TTree *
tt = (TTree *)globals->h_file_->Get(
"tt");
277 tt =
new TTree(
"tt",
"");
284 if (globals->h_file_ == 0)
286 globals->h_file_->cd();
287 TTree *
tt = (TTree *)globals->h_file_->Get(
"tt");
293 if (globals->h_file_ == 0)
295 globals->h_file_->cd();
296 TTree *
tt = (TTree *)globals->h_file_->Get(
"tt");
305 const std::map<
const VarBase *, std::vector<bool> > *
const previous_passes)
const {
308 if (!previous_passes || (previous_passes && !previous_passes->count(
cut_var_))) {
324 << ((
ival_ > lower_cut &&
ival_ < upper_cut) ?
"PASSES" :
"FAILS")
325 <<
" (required: " << lower_cut *
K_ <<
" < " <<
ival_ *
K_ <<
" < " << upper_cut *
K_
333 const std::map<
const VarBase *, std::vector<bool> > *
const previous_passes)
const {
345 if (!previous_passes || (previous_passes && !previous_passes->count(
this))) {
351 << ((
ival_ > lower_cut &&
ival_ < upper_cut) ?
"PASSES" :
"FAILS")
352 <<
" (required: " << lower_cut *
K_ <<
" < " <<
ival_ *
K_ <<
" < "
353 << upper_cut *
K_ <<
")";
361 if (call_set_cut_var)
362 cut->set_cut_var(
this,
false);
375 if (
cut->op() ==
"cut" && call_set_parent_flag) {
400 std::map<const VarBase *, std::vector<bool> > passes0, passes1;
402 if (
cut->op() !=
"cut")
408 if (
cut->op() !=
"cut")
409 cut->passes(passes1, &passes0);
411 if (
cut->cut_var()->p1())
412 cut->cut_var()->p1()->passes(passes1, &passes0);
413 if (
cut->cut_var()->p2())
414 cut->cut_var()->p2()->passes(passes1, &passes0);
415 if (
cut->cut_var()->p3())
416 cut->cut_var()->p3()->passes(passes1, &passes0);
421 for (
const auto &
cut_var : passes0) {
423 for (
const auto &pass :
cut_var.second)
427 for (
const auto &
cut_var : passes1) {
429 for (
const auto &pass :
cut_var.second)