ATLAS Offline Software
Public Member Functions | Public Attributes | Private Attributes | List of all members
DisjointUniformSampler Class Reference

#include <Samplers.h>

Inheritance diagram for DisjointUniformSampler:
Collaboration diagram for DisjointUniformSampler:

Public Member Functions

 ~DisjointUniformSampler ()
 
 DisjointUniformSampler (std::vector< float > ranges)
 
 DisjointUniformSampler (std::vector< std::pair< float, float > > ranges)
 
std::vector< std::pair< float, float > > _getRanges ()
 
void _setRanges ()
 
float _map_unit_to_val (float x)
 
float shoot ()
 

Public Attributes

float m_low
 
float m_high
 
float m_val
 
TRandom m_random
 

Private Attributes

std::vector< std::pair< float, float > > m_ranges
 
float m_totalwidth
 
std::vector< float > m_divisions
 

Detailed Description

Definition at line 86 of file Samplers.h.

Constructor & Destructor Documentation

◆ ~DisjointUniformSampler()

DisjointUniformSampler::~DisjointUniformSampler ( )
inline

Definition at line 100 of file Samplers.h.

100 {};

◆ DisjointUniformSampler() [1/2]

DisjointUniformSampler::DisjointUniformSampler ( std::vector< float >  ranges)
inline

Definition at line 101 of file Samplers.h.

101  {
102  for (unsigned int i=0; i<ranges.size();) {
103  std::pair<float,float> p(ranges[i],ranges[i+1]);
104  i+=2;
105  m_ranges.push_back(p);
106  }
107  _setRanges();
108  };

◆ DisjointUniformSampler() [2/2]

DisjointUniformSampler::DisjointUniformSampler ( std::vector< std::pair< float, float > >  ranges)
inline

Definition at line 109 of file Samplers.h.

109 { m_ranges = ranges; _setRanges();};

Member Function Documentation

◆ _getRanges()

std::vector< std::pair<float,float> > DisjointUniformSampler::_getRanges ( )
inline

Definition at line 111 of file Samplers.h.

111 { return m_ranges; };

◆ _map_unit_to_val()

float DisjointUniformSampler::_map_unit_to_val ( float  x)
inline

Definition at line 129 of file Samplers.h.

129  {
130  assert(x >= 0 && x <= 1);
131  unsigned int idx = -1, rem = 0;
132  for (unsigned int i=0; i<m_divisions.size()-1; i++)
133  if (x >= m_divisions[i] and x < m_divisions[i+1]) {
134  idx = i;
135  rem = x - m_divisions[i];
136  break;
137  }
138  float val = m_ranges[idx].first + m_totalwidth * rem;
139  return val;
140  };

◆ _setRanges()

void DisjointUniformSampler::_setRanges ( )
inline

Definition at line 113 of file Samplers.h.

113  {
114  for (unsigned int i=0; i<m_ranges.size(); i++) {
115  m_totalwidth += m_ranges[i].second - m_ranges[i].first;
116  };
117  float runningwidth = 0.0;
118  m_divisions.push_back(0.0);
119  for (unsigned int i=0; i<m_ranges.size(); i++) {
120  assert(m_ranges[i].second >= m_ranges[i].first);
121  runningwidth += float(m_ranges[i].second - m_ranges[i].first);
122  m_divisions.push_back(runningwidth);
123  }
124  m_totalwidth = runningwidth;
125  for (unsigned int i=0; i<m_ranges.size(); i++)
127  };

◆ shoot()

float DisjointUniformSampler::shoot ( )
inlinevirtual

Reimplemented from UniformSampler.

Definition at line 142 of file Samplers.h.

142  {
143  float rand = m_random.Uniform();
144  float val = _map_unit_to_val(rand);
145  return val;
146  };

Member Data Documentation

◆ m_divisions

std::vector<float> DisjointUniformSampler::m_divisions
private

Definition at line 150 of file Samplers.h.

◆ m_high

float UniformSampler::m_high
inherited

Definition at line 63 of file Samplers.h.

◆ m_low

float UniformSampler::m_low
inherited

Definition at line 63 of file Samplers.h.

◆ m_random

TRandom Sampler::m_random
inherited

Definition at line 25 of file Samplers.h.

◆ m_ranges

std::vector< std::pair<float,float> > DisjointUniformSampler::m_ranges
private

Definition at line 148 of file Samplers.h.

◆ m_totalwidth

float DisjointUniformSampler::m_totalwidth
private

Definition at line 149 of file Samplers.h.

◆ m_val

float Sampler::m_val
inherited

Definition at line 24 of file Samplers.h.


The documentation for this class was generated from the following file:
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
trigbs_pickEvents.ranges
ranges
Definition: trigbs_pickEvents.py:60
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
DisjointUniformSampler::m_divisions
std::vector< float > m_divisions
Definition: Samplers.h:150
DisjointUniformSampler::m_totalwidth
float m_totalwidth
Definition: Samplers.h:149
x
#define x
Sampler::m_random
TRandom m_random
Definition: Samplers.h:25
DisjointUniformSampler::_setRanges
void _setRanges()
Definition: Samplers.h:113
LArG4FSStartPointFilter.rand
rand
Definition: LArG4FSStartPointFilter.py:80
lumiFormat.i
int i
Definition: lumiFormat.py:92
DisjointUniformSampler::m_ranges
std::vector< std::pair< float, float > > m_ranges
Definition: Samplers.h:146
DisjointUniformSampler::_map_unit_to_val
float _map_unit_to_val(float x)
Definition: Samplers.h:129
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
DeMoScan.first
bool first
Definition: DeMoScan.py:534
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
readCCLHist.float
float
Definition: readCCLHist.py:83