ATLAS Offline Software
Static Public Member Functions | Private Member Functions | Static Private Member Functions | List of all members
LWBinUtils Class Reference

#include <LWBinUtils.h>

Collaboration diagram for LWBinUtils:

Static Public Member Functions

static unsigned valueToBin (const double &x, const float *varBinnings, const double &invDelta, const double &xmin, const double &xmax, unsigned nbinsplus1)
 
static double getBinCenter (int bin, const float *varBinnings, const double &invDelta, const double &xmin, unsigned nbinsplus1)
 
static unsigned internal_bin (unsigned binx, unsigned biny, unsigned nbinsxPlus2)
 
static void unpack_internal_bin (unsigned internalbin, unsigned &binx, unsigned &biny, unsigned nbinsxPlus2)
 

Private Member Functions

 LWBinUtils ()
 
 ~LWBinUtils ()
 

Static Private Member Functions

static unsigned valueToVarBin (const double &x, const float *varBinnings, unsigned nbinsplus1)
 

Detailed Description

Definition at line 30 of file LWBinUtils.h.

Constructor & Destructor Documentation

◆ LWBinUtils()

LWBinUtils::LWBinUtils ( )
private

◆ ~LWBinUtils()

LWBinUtils::~LWBinUtils ( )
private

Member Function Documentation

◆ getBinCenter()

double LWBinUtils::getBinCenter ( int  bin,
const float *  varBinnings,
const double &  invDelta,
const double &  xmin,
unsigned  nbinsplus1 
)
inlinestatic

Definition at line 85 of file LWBinUtils.h.

88 {
89  if (!varBinnings || bin<1 || bin>=int(nbinsplus1))
90  return xmin + (bin-0.5)/invDelta;
91  else
92  return 0.5*(varBinnings[bin-1] + varBinnings[bin]);
93 }

◆ internal_bin()

unsigned LWBinUtils::internal_bin ( unsigned  binx,
unsigned  biny,
unsigned  nbinsxPlus2 
)
inlinestatic

Definition at line 95 of file LWBinUtils.h.

98 {
99  //Same mapping as in ROOT (mapping is important for copyContents):
100  assert(binx<nbinsxPlus2);
101  return biny * (nbinsxPlus2) + binx;
102 }

◆ unpack_internal_bin()

void LWBinUtils::unpack_internal_bin ( unsigned  internalbin,
unsigned &  binx,
unsigned &  biny,
unsigned  nbinsxPlus2 
)
inlinestatic

Definition at line 104 of file LWBinUtils.h.

108 {
109  binx = internalbin % nbinsxPlus2;
110  biny = (internalbin-binx) / nbinsxPlus2;
111  assert(internal_bin(binx,biny,nbinsxPlus2)==internalbin);
112 }

◆ valueToBin()

unsigned LWBinUtils::valueToBin ( const double &  x,
const float *  varBinnings,
const double &  invDelta,
const double &  xmin,
const double &  xmax,
unsigned  nbinsplus1 
)
inlinestatic

Definition at line 60 of file LWBinUtils.h.

62  {
63 #ifdef LW_STRICT_ROOT_BEHAVIOUR
64  //In ROOT, NaN's go in overflow bin.
65  if (x!=x)
66  return nbinsplus1;
67 #endif
68 #ifndef NDEBUG
69  if (std::isnan(x)) {
70  std::cout<<"LWHisto ERROR: Saw NaN in input axis position"<<std::endl;
71  return USHRT_MAX;
72  }
73 #endif
74  assert(!(x!=x));
75  if (x<xmin)
76  return 0;
77  if (x>xmax)
78  return nbinsplus1;
79  if (!varBinnings)
80  return static_cast<unsigned>(LWHistBitUtils::minZero(std::min<int>(nbinsplus1,int(1+invDelta*(x-xmin)))));
81  return valueToVarBin(x,varBinnings,nbinsplus1);
82 }

◆ valueToVarBin()

unsigned LWBinUtils::valueToVarBin ( const double &  x,
const float *  varBinnings,
unsigned  nbinsplus1 
)
staticprivate

Definition at line 19 of file LWBinUtils.cxx.

22 {
23  //varBinnings has nbinsplus1 entries
24  assert(!(x!=x));
25  assert(varBinnings);
26  assert(nbinsplus1>=2);
27  if (x<varBinnings[0])
28  return 0;
29  if (x>varBinnings[nbinsplus1-1])
30  return nbinsplus1;
31  const unsigned result = std::upper_bound(varBinnings,&(varBinnings[nbinsplus1]),x)-varBinnings;
32  assert(result<=nbinsplus1);
33  return result;
34 }

The documentation for this class was generated from the following files:
get_generator_info.result
result
Definition: get_generator_info.py:21
bin
Definition: BinsDiffFromStripMedian.h:43
x
#define x
LWBinUtils::valueToVarBin
static unsigned valueToVarBin(const double &x, const float *varBinnings, unsigned nbinsplus1)
Definition: LWBinUtils.cxx:19
xmin
double xmin
Definition: listroot.cxx:60
plotBeamSpotVxVal.bin
int bin
Definition: plotBeamSpotVxVal.py:83
LWHistBitUtils::minZero
static int minZero(int x)
Definition: LWHistBitUtils.h:49
xmax
double xmax
Definition: listroot.cxx:61
LWBinUtils::internal_bin
static unsigned internal_bin(unsigned binx, unsigned biny, unsigned nbinsxPlus2)
Definition: LWBinUtils.h:95