Jpp
Public Member Functions | Protected Attributes | Friends | List of all members
JSUPPORT::JRandomSampler< T > Struct Template Reference

Template class for randomly sampling from a JLANG::JRewindableObjectIterator using a JLANG::JObjectSampler. More...

#include <JRandomSampler.hh>

Public Member Functions

 JRandomSampler ()
 Default constructor. More...
 
 JRandomSampler (const unsigned int on, const unsigned int off)
 Constructor. More...
 
const JRandomSamplergetRandomSampler () const
 Get random sampler. More...
 
JRandomSamplergetRandomSampler ()
 Get random sampler. More...
 
skip_type operator() (const T &object) const
 Acceptance test operator. More...
 

Protected Attributes

skip_type averageOn
 
skip_type averageOff
 
skip_type count
 

Friends

std::istream & operator>> (std::istream &in, JRandomSampler &sampler)
 Read random sampler from input. More...
 
std::ostream & operator<< (std::ostream &out, const JRandomSampler &sampler)
 Write random sampler to output. More...
 

Detailed Description

template<class T>
struct JSUPPORT::JRandomSampler< T >

Template class for randomly sampling from a JLANG::JRewindableObjectIterator using a JLANG::JObjectSampler.

The JRandomSampler class provides for an implementation of randomly sampling objects.
The sampling is controlled via two parameters, namely:

Definition at line 33 of file JRandomSampler.hh.

Constructor & Destructor Documentation

◆ JRandomSampler() [1/2]

template<class T>
JSUPPORT::JRandomSampler< T >::JRandomSampler ( )
inline

Default constructor.

This constructor will sample all objects.

Definition at line 39 of file JRandomSampler.hh.

39  :
40  averageOn (1),
41  averageOff(0),
42  count (0)
43  {}

◆ JRandomSampler() [2/2]

template<class T>
JSUPPORT::JRandomSampler< T >::JRandomSampler ( const unsigned int  on,
const unsigned int  off 
)
inline

Constructor.

Parameters
onaverage number of consecutively accepted events
offaverage number of consecutively rejected events

Definition at line 52 of file JRandomSampler.hh.

53  :
54  averageOn (on),
55  averageOff(off),
56  count (0)
57  {}

Member Function Documentation

◆ getRandomSampler() [1/2]

template<class T>
const JRandomSampler& JSUPPORT::JRandomSampler< T >::getRandomSampler ( ) const
inline

Get random sampler.

Returns
random sampler

Definition at line 65 of file JRandomSampler.hh.

66  {
67  return static_cast<const JRandomSampler&>(*this);
68  }

◆ getRandomSampler() [2/2]

template<class T>
JRandomSampler& JSUPPORT::JRandomSampler< T >::getRandomSampler ( )
inline

Get random sampler.

Returns
random sampler

Definition at line 76 of file JRandomSampler.hh.

77  {
78  return static_cast<JRandomSampler&>(*this);
79  }

◆ operator()()

template<class T>
skip_type JSUPPORT::JRandomSampler< T >::operator() ( const T &  object) const
inline

Acceptance test operator.

Parameters
objectobject
Returns
number of object to skip

Definition at line 88 of file JRandomSampler.hh.

89  {
90  if (count == 0) {
91 
92  count = gRandom->Integer(2 * averageOn);
93 
94  return (unsigned int) gRandom->Integer(2 * averageOff);
95 
96  } else {
97 
98  count -= 1;
99 
100  return 0;
101  }
102  }

Friends And Related Function Documentation

◆ operator>>

template<class T>
std::istream& operator>> ( std::istream &  in,
JRandomSampler< T > &  sampler 
)
friend

Read random sampler from input.

Parameters
ininput stream
samplerrandom sampler
Returns
input stream

Definition at line 112 of file JRandomSampler.hh.

113  {
114  in >> sampler.averageOn;
115  in >> sampler.averageOff;
116 
117  sampler.count = 0;
118 
119  return in;
120  }

◆ operator<<

template<class T>
std::ostream& operator<< ( std::ostream &  out,
const JRandomSampler< T > &  sampler 
)
friend

Write random sampler to output.

Parameters
outoutput stream
samplerrandom sampler
Returns
output stream

Definition at line 130 of file JRandomSampler.hh.

131  {
132  out << sampler.averageOn;
133  out << ' ';
134  out << sampler.averageOff;
135 
136  return out;
137  }

Member Data Documentation

◆ averageOn

template<class T>
skip_type JSUPPORT::JRandomSampler< T >::averageOn
protected

Definition at line 140 of file JRandomSampler.hh.

◆ averageOff

template<class T>
skip_type JSUPPORT::JRandomSampler< T >::averageOff
protected

Definition at line 141 of file JRandomSampler.hh.

◆ count

template<class T>
skip_type JSUPPORT::JRandomSampler< T >::count
mutableprotected

Definition at line 142 of file JRandomSampler.hh.


The documentation for this struct was generated from the following file:
JSUPPORT::JRandomSampler::count
skip_type count
Definition: JRandomSampler.hh:142
JSUPPORT::JRandomSampler::averageOn
skip_type averageOn
Definition: JRandomSampler.hh:140
JSUPPORT::JRandomSampler::averageOff
skip_type averageOff
Definition: JRandomSampler.hh:141