ATLAS Offline Software
Loading...
Searching...
No Matches
DisjointUniformSampler Class Reference

#include <Samplers.h>

Inheritance diagram for DisjointUniformSampler:
Collaboration diagram for DisjointUniformSampler:

Public Member Functions

 ~DisjointUniformSampler ()
 DisjointUniformSampler (const std::vector< float > &ranges)
 DisjointUniformSampler (const std::vector< std::pair< float, float > > &ranges)
const 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 {1.0}
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 ( const 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 };
std::vector< std::pair< float, float > > m_ranges
Definition Samplers.h:148

◆ DisjointUniformSampler() [2/2]

DisjointUniformSampler::DisjointUniformSampler ( const 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()

const 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 };
#define x
std::vector< float > m_divisions
Definition Samplers.h:150

◆ _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++)
126 m_divisions[i] = float(m_divisions[i]) / float(m_totalwidth);
127 };

◆ shoot()

float DisjointUniformSampler::shoot ( )
inlinevirtual

Reimplemented from Sampler.

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 };
float _map_unit_to_val(float x)
Definition Samplers.h:129
TRandom m_random
Definition Samplers.h:27

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 {1.0}
inherited

Definition at line 63 of file Samplers.h.

63{}, m_high{1.0};

◆ m_low

float UniformSampler::m_low {}
inherited

Definition at line 63 of file Samplers.h.

63{}, m_high{1.0};

◆ m_random

TRandom Sampler::m_random
inherited

Definition at line 27 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.

149{};

◆ m_val

float Sampler::m_val {}
inherited

Definition at line 26 of file Samplers.h.

26{};

The documentation for this class was generated from the following file: