Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Samplers.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Helper for MultiParticleGunPileup
6 // Olivier Arnaez, started 17/12/15
7 // adapted from Generators/ParticleGun/python/samplers.py
8 
9 #include "TLorentzVector.h"
10 #include "TRandom.h"
11 #include "TMath.h"
12 #include <map>
13 #include <vector>
14 #include <iostream>
15 #include <string>
16 
17 //Base class for all samplers
18 class Sampler {
19  public:
20  Sampler() = default;
21  explicit Sampler(float val):m_val(val){}
22  virtual ~Sampler()= default;
23  virtual float shoot() {return m_val;};
24  float m_val{};
25  TRandom m_random;
26 };
27 
28 //A special-case sampler which just returns one value rather than sampling.
29 class ConstSampler : public Sampler {
30  public:
31  ConstSampler() =default;
32  explicit ConstSampler(float val): Sampler(val) {};
33  ~ConstSampler() = default;
34  virtual float shoot() { return m_val;};
35 };
36 
37 class MomSampler {
38  public:
39  MomSampler() = default;
40  ~MomSampler() = default;
41  virtual TLorentzVector shoot() {return m_val;};
42  TLorentzVector m_val;
44 };
45 
46 //--------------------------------
47 //Continuous distribution samplers
48 //--------------------------------
49 
50 //Uniformly sample in the range [low,high).
51 class UniformSampler : public Sampler {
52  public:
53  UniformSampler()= default;
54  UniformSampler(float low, float high) {
55  assert(low <= high);
56  m_low = float(low);
57  m_high = float(high);
58  };
60  float shoot() { return Sampler::m_random.Uniform(m_low, m_high); };
61  float m_low{}, m_high{1.0};
62 };
63 
64 //Uniformly sample in the modulus range (-high,low]+[low,high).
66  public:
68  ModUniformSampler(float low, float high) : UniformSampler (low, high){
69  assert(low == fabs(low) && high == fabs(high));
70  assert(low <= high);
71  m_low = float(low);
72  m_high = float(high);
73  };
74 
75  float shoot() {
76  m_val = m_random.Uniform(m_low, m_high);
77  if (m_random.Uniform() > 0.5)
78  m_val *= -1;
79  return m_val;
80  };
81 };
82 
83 //Uniformly sample from a set of disjoint intervals.
85  /* The ranges variable can either be a list of increasing numbers or a
86  list of pairs of numbers.
87 
88  The former case will be treated as
89  defining alternating on/off ranges for sampling, starting with an active
90  one (i.e. it's a list of bin edges). The latter way specifically lists
91  the 'on' regions only, with their start and end values in the pairs.
92 
93  The behaviour is undefined if the numbers are not ordered or overlap --
94  i.e. it might work but hasn't been designed that way and might change in
95  future. Don't rely on this behaviour!
96  */
97  public:
99  DisjointUniformSampler(const std::vector<float> & ranges) {
100  for (unsigned int i=0; i<ranges.size();) {
101  std::pair<float,float> p(ranges[i],ranges[i+1]);
102  i+=2;
103  m_ranges.push_back(p);
104  }
105  _setRanges();
106  };
107  DisjointUniformSampler(const std::vector< std::pair<float,float> > & ranges): m_ranges(ranges){ _setRanges();}
108 
109  const std::vector< std::pair<float,float> > & _getRanges() { return m_ranges; };
110 
111  void _setRanges() {
112  for (unsigned int i=0; i<m_ranges.size(); i++) {
113  m_totalwidth += m_ranges[i].second - m_ranges[i].first;
114  };
115  float runningwidth = 0.0;
116  m_divisions.push_back(0.0);
117  for (unsigned int i=0; i<m_ranges.size(); i++) {
118  assert(m_ranges[i].second >= m_ranges[i].first);
119  runningwidth += float(m_ranges[i].second - m_ranges[i].first);
120  m_divisions.push_back(runningwidth);
121  }
122  m_totalwidth = runningwidth;
123  for (unsigned int i=0; i<m_ranges.size(); i++)
125  };
126 
127  float _map_unit_to_val(float x){
128  assert(x >= 0 && x <= 1);
129  unsigned int idx = -1, rem = 0;
130  for (unsigned int i=0; i<m_divisions.size()-1; i++)
131  if (x >= m_divisions[i] and x < m_divisions[i+1]) {
132  idx = i;
133  rem = x - m_divisions[i];
134  break;
135  }
136  float val = m_ranges[idx].first + m_totalwidth * rem;
137  return val;
138  };
139 
140  float shoot(){
141  float rand = m_random.Uniform();
142  float val = _map_unit_to_val(rand);
143  return val;
144  };
145  private:
146  std::vector< std::pair<float,float> > m_ranges;
147  float m_totalwidth{};
148  std::vector<float> m_divisions;
149 };
150 
151 //Randomly sample from an exponential distribution (i.e. uniformly on a log scale).
152 class LogSampler : public UniformSampler {
153  public:
154  LogSampler(float low, float high): UniformSampler (low, high){
155  m_low = low;
156  m_high = high;
157  };
159 
160  float shoot(){
161  float rand = m_random.Uniform();
162  float logval = rand * TMath::Log(m_high) + (1 - rand) * TMath::Log(m_low);
163  float val = TMath::Exp(logval);
164  return val;
165  };
166 };
167 
168 //Randomly sample from a 1D Gaussian distribution.
170  public:
172  GaussianSampler(float mean, float sigma): UniformSampler (0, 1){
173  m_mean = mean;
174  m_sigma = sigma;
175  }
176 
177  float shoot() { return m_random.Gaus(m_mean, m_sigma);};
178  private:
179  float m_mean{},m_sigma{};
180 };
181 
182 
183 //Sequentially sample from a list of values, returning to the beginning once exhausted.
184 class CyclicSeqSampler : public Sampler {
185  public:
188  CyclicSeqSampler(std::string s) {
189  size_t pos = 0;
190  std::string token;
191  std::cout << "Initializing CyclicSeqSampler..." << std::endl;
192  while ((pos = s.find(',')) != std::string::npos) {
193  token = s.substr(0, pos);
194  m_sequence.push_back(std::stoi(token));
195  s.erase(0, pos + 1);
196  std::cout << " adding " << m_sequence[m_sequence.size()-1] << " from " << token.c_str() << std::endl;
197  }
198  m_index = 0;
199  };
200  float shoot() {
201  m_index = (m_index + 1) % m_sequence.size();
202  std::cout << "CyclicSeqSampler returning " << m_sequence[m_index] << std::endl;
203  return m_sequence[m_index];
204  };
205  private:
206  std::vector<int> m_sequence;
207  int m_index{};
208 };
209 
210 // Convenience function for sampler-making from Python literals
211 /*
212 Sampler mksampler(x){
213 
214 // Automatically cast the provided object to a sampler type. This is used
215 // extensively inside the particle and position samplers, so that the user
216 // can pass in a primitive type like a number or list and it will be
217 // treated as if the more verbose sampler constructors had been called.
218 //
219 // Behaviour:
220 // - if x can be called, i.e. x() is valid, we just return x;
221 // - a Python list (square brackets) will be converted to a continuous
222 // UniformSampler or DisjointUniformSampler;
223 // - TODO: a Python tuple (round brackets/parentheses) will be treated
224 // as a discrete CyclicSeqSampler;
225 // - TODO: a Python set (curly brackets/braces) will be treated
226 // as a discrete RandomSeqSampler;
227 // - otherwise a ConstSampler will be created from x, so that x is
228 // returned when the sampler is called.
229 
230  if hasattr(x, "__call__"):
231  return x
232  elif type(x) is list:
233  # NB: disjoint ranges can be given as nested lists, e.g. [(1,2), (4,5)]
234  if len(x) == 2 and type(x[0]) in (int,float) and type(x[1]) in (int,float):
235  #print "MKSAMPLER: Casting %s to UniformSampler" % str(x)
236  return UniformSampler(*x)
237  elif len(x) > 2 or (len(x) > 0 and type(x[0]) not in (int,float)):
238  #print "MKSAMPLER: Casting %s to DisjointUniformSampler" % str(x)
239  return DisjointUniformSampler(x)
240  if len(x) < 2:
241  raise Exception("Supplied list could not be converted to a continuous sampler")
242  elif type(x) is tuple:
243  #print "MKSAMPLER: Casting %s to CyclicSeqSampler" % str(x)
244  return CyclicSeqSampler(*x)
245  elif type(x) is set:
246  #print "MKSAMPLER: Casting %s to RandomSeqSampler" % str(x)
247  return RandomSeqSampler(*x)
248  else:
249  #print "MKSAMPLER: Casting %s to ConstSampler" % str(x)
250  return ConstSampler(x)
251 */
252 
253 
254 // Beam-spot (origin vertex) sampling
255 //Sampler of position 3-vectors, for modelling a beamspot.
256 class PosSampler {
257  public:
258  ~PosSampler() = default;
259  PosSampler() = default;
260  PosSampler(float x, float y, float z, float t=0):
262  //nop
263  }
264 
265  TLorentzVector shoot(){
266  float x = m_x.shoot();
267  float y = m_y.shoot();
268  float z = m_z.shoot();
269  float t = m_t.shoot();
270  return TLorentzVector(x, y, z, t);
271  }
272  private:
273  Sampler m_x{0.f}, m_y{0.f}, m_z{0.f}, m_t{0.f};
274 };
275 
276 // Momentum sampling
277 //A momentum sampler which just returns a null vector with the given mass.
278 class NullMomSampler : public MomSampler{
279  public:
281  explicit NullMomSampler(float mass=0.0) { m_mass = new ConstSampler(mass);};
282 
283  TLorentzVector shoot() {
284  return TLorentzVector(0, 0, 0, m_mass->shoot());
285  }
286 };
287 
288 
289 
290 //Create a 4-momentum vector from pt, eta, m and phi distributions/samplers.
292  public:
293  ~PtEtaMPhiSampler() { delete m_pt; delete m_eta; delete m_phi;};
296  PtEtaMPhiSampler(float ptmin, float ptmax, float etamin, float etamax, float mass=0.0, float phimin=0, float phimax=2.*TMath::Pi()){
297  if (ptmin==ptmax)
298  m_pt = new ConstSampler(ptmin);
299  else
301  if (etamin==etamax)
302  m_eta = new ConstSampler(etamin);
303  else
304  m_eta = new UniformSampler(etamin,etamax);
305  m_mass = new ConstSampler(mass);
306  if (phimin==phimax)
307  m_phi = new ConstSampler(phimin);
308  else
309  m_phi = new UniformSampler(phimin,phimax);
310  };
311 
312  TLorentzVector shoot() {
313  float eta = m_eta->shoot();
314  float pt = m_pt->shoot();
315  float phi = m_phi->shoot();
316  float m = m_mass->shoot();
317  TLorentzVector tlv; tlv.SetPtEtaPhiM(pt,eta,phi,m);
318  return tlv;
319  };
320 
321  private:
322  Sampler * m_pt{}, * m_eta{}, * m_phi{};
323 };
324 
325 // Combined samplers returning a particle configuration
326 
327 // A particle object for use as a return value from the particle samplers
329  public:
331  SampledParticle(int pid=0, TLorentzVector mom=TLorentzVector(0,0,0,0), TLorentzVector pos= TLorentzVector(0,0,0,0)) :
332  m_pid (pid), m_mom(mom), m_pos(pos), m_mass(0.f){
333  // Constructor/initializer: PID is the (int) PDG particle ID code
334  // of this particle, mom is its momentum 4-vector, and pos is
335  // the vertex 4-position (both as ROOT.TLorentzVector, in MeV).
336  }
337  int m_pid{};
338  TLorentzVector m_mom, m_pos;
339  float m_mass{};
340 };
341 
342 // A simple N-independent-particle sampler.
344  public:
345  ~ParticleSampler() = default;
347  // A default dictionary of particle masses (in MeV)
348  m_massdict[22 ] = 0.0; // photon
349  m_massdict[11 ] = 0.5; // electron
350  m_massdict[12 ] = 0.0; // nu_e
351  m_massdict[13 ] = 105.7; // muon
352  m_massdict[14 ] = 0.0; // nu_mu
353  m_massdict[15 ] = 1777.8; // tau
354  m_massdict[16 ] = 0.0; // nu_tau
355  m_massdict[2212] = 938.0; // proton
356  m_massdict[2112] = 940.0; // neutron
357  m_massdict[111 ] = 135.0; // pi0
358  m_massdict[211 ] = 140.0; // pi+-
359  m_massdict[221 ] = 547.0; // eta
360  m_massdict[321 ] = 494.0; // K+-
361  m_massdict[311 ] = 598.0; // K0
362  };
363 
364  //Return a vector of sampled particles
365  std::vector<SampledParticle> shoot() {
366  int numparticles = m_n.shoot();
367  std::cout << "ParticleSampler throwing " << numparticles << " particles" << std::endl;
368  std::vector<SampledParticle> rtn;
369  for (int i=0; i<numparticles ; i++){
370  //Sample the particle ID and create a particle
371  int pid = m_pid->shoot();
372  std::cout << " shot pid=" << pid << std::endl;
374  // Pass mass info to the v4 sampler and set same generated mass
375  if (m_mass_override && m_massdict.find(abs(pid))!=m_massdict.end()){
376  float m = m_massdict[abs(pid)];
377  m_mom->m_mass = new ConstSampler(m);
378  p.m_mass = m;
379  }
380  // Sample momentum and vertex positions into the particle
381  p.m_mom = m_mom->shoot();
382  p.m_pos = m_pos.shoot();
383  std::cout << " (" << p.m_mom.Eta() << ", " << p.m_mom.Phi() << ", " << p.m_mom.E() << ", " << p.m_mom.M() << ")" << std::endl;
384  // Add particle to output list
385  rtn.push_back(p);
386  }
387  return rtn;
388  }
389  private:
395  std::map<unsigned int,float> m_massdict;
396 };
PosSampler::PosSampler
PosSampler(float x, float y, float z, float t=0)
Definition: Samplers.h:260
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
trigbs_pickEvents.ranges
ranges
Definition: trigbs_pickEvents.py:60
ParticleSampler::m_massdict
std::map< unsigned int, float > m_massdict
Definition: Samplers.h:395
CyclicSeqSampler::~CyclicSeqSampler
~CyclicSeqSampler()
Definition: Samplers.h:186
MomSampler::~MomSampler
~MomSampler()=default
ModUniformSampler::~ModUniformSampler
~ModUniformSampler()
Definition: Samplers.h:67
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
Sampler::m_val
float m_val
Definition: Samplers.h:24
UniformSampler::~UniformSampler
~UniformSampler()
Definition: Samplers.h:59
mean
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition: dependence.cxx:254
Sampler::~Sampler
virtual ~Sampler()=default
ptmax
double ptmax
Definition: dependence.cxx:60
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
DisjointUniformSampler::~DisjointUniformSampler
~DisjointUniformSampler()
Definition: Samplers.h:98
PtEtaMPhiSampler::m_pt
Sampler * m_pt
Definition: Samplers.h:322
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
GaussianSampler::shoot
float shoot()
Definition: Samplers.h:177
MomSampler
Definition: Samplers.h:37
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
DisjointUniformSampler::m_divisions
std::vector< float > m_divisions
Definition: Samplers.h:148
NullMomSampler::NullMomSampler
NullMomSampler(float mass=0.0)
Definition: Samplers.h:281
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
MomSampler::shoot
virtual TLorentzVector shoot()
Definition: Samplers.h:41
TrigJetMonitorAlgorithm.ptmin
ptmin
Definition: TrigJetMonitorAlgorithm.py:1139
GaussianSampler::m_mean
float m_mean
Definition: Samplers.h:179
DisjointUniformSampler::_getRanges
const std::vector< std::pair< float, float > > & _getRanges()
Definition: Samplers.h:109
test_pyathena.pt
pt
Definition: test_pyathena.py:11
UniformSampler::UniformSampler
UniformSampler()=default
Sampler::Sampler
Sampler()=default
DisjointUniformSampler::m_totalwidth
float m_totalwidth
Definition: Samplers.h:147
MomSampler::m_mass
ConstSampler * m_mass
Definition: Samplers.h:43
ModUniformSampler
Definition: Samplers.h:65
NullMomSampler::~NullMomSampler
~NullMomSampler()
Definition: Samplers.h:280
GaussianSampler::GaussianSampler
GaussianSampler(float mean, float sigma)
Definition: Samplers.h:172
LogSampler::~LogSampler
~LogSampler()
Definition: Samplers.h:158
UniformSampler::UniformSampler
UniformSampler(float low, float high)
Definition: Samplers.h:54
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ParticleSampler::m_mass_override
bool m_mass_override
Definition: Samplers.h:394
Sampler::shoot
virtual float shoot()
Definition: Samplers.h:23
PosSampler::shoot
TLorentzVector shoot()
Definition: Samplers.h:265
ConstSampler
Definition: Samplers.h:29
PtEtaMPhiSampler::m_phi
Sampler * m_phi
Definition: Samplers.h:322
PosSampler
Definition: Samplers.h:256
x
#define x
CyclicSeqSampler::CyclicSeqSampler
CyclicSeqSampler(const CyclicSeqSampler &orig)
Definition: Samplers.h:187
ParticleSampler::m_pid
Sampler * m_pid
Definition: Samplers.h:392
ParticleSampler::~ParticleSampler
~ParticleSampler()=default
Sampler::m_random
TRandom m_random
Definition: Samplers.h:25
DisjointUniformSampler::shoot
float shoot()
Definition: Samplers.h:140
CyclicSeqSampler::m_index
int m_index
Definition: Samplers.h:207
MomSampler::MomSampler
MomSampler()=default
PtEtaMPhiSampler::shoot
TLorentzVector shoot()
Definition: Samplers.h:312
SampledParticle::SampledParticle
SampledParticle(int pid=0, TLorentzVector mom=TLorentzVector(0, 0, 0, 0), TLorentzVector pos=TLorentzVector(0, 0, 0, 0))
Definition: Samplers.h:331
DisjointUniformSampler::_setRanges
void _setRanges()
Definition: Samplers.h:111
LogSampler::shoot
float shoot()
Definition: Samplers.h:160
GaussianSampler::~GaussianSampler
~GaussianSampler()
Definition: Samplers.h:171
ConstSampler::ConstSampler
ConstSampler(float val)
Definition: Samplers.h:32
SampledParticle
Definition: Samplers.h:328
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
ParticleSampler
Definition: Samplers.h:343
LArG4FSStartPointFilter.rand
rand
Definition: LArG4FSStartPointFilter.py:80
NullMomSampler::shoot
TLorentzVector shoot()
Definition: Samplers.h:283
lumiFormat.i
int i
Definition: lumiFormat.py:85
ConstSampler::shoot
virtual float shoot()
Definition: Samplers.h:34
z
#define z
DisjointUniformSampler::DisjointUniformSampler
DisjointUniformSampler(const std::vector< float > &ranges)
Definition: Samplers.h:99
beamspotman.n
n
Definition: beamspotman.py:731
ModUniformSampler::shoot
float shoot()
Definition: Samplers.h:75
ConstSampler::ConstSampler
ConstSampler()=default
ConstSampler::~ConstSampler
~ConstSampler()=default
PtEtaMPhiSampler::PtEtaMPhiSampler
PtEtaMPhiSampler(const PtEtaMPhiSampler &other)=delete
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
hist_file_dump.f
f
Definition: hist_file_dump.py:141
PosSampler::PosSampler
PosSampler()=default
UniformSampler::m_high
float m_high
Definition: Samplers.h:61
CyclicSeqSampler
Definition: Samplers.h:184
CyclicSeqSampler::CyclicSeqSampler
CyclicSeqSampler(std::string s)
Definition: Samplers.h:188
PosSampler::m_x
Sampler m_x
Definition: Samplers.h:273
PosSampler::m_z
Sampler m_z
Definition: Samplers.h:273
LogSampler
Definition: Samplers.h:152
ParticleSampler::shoot
std::vector< SampledParticle > shoot()
Definition: Samplers.h:365
DisjointUniformSampler::m_ranges
std::vector< std::pair< float, float > > m_ranges
Definition: Samplers.h:144
DisjointUniformSampler::DisjointUniformSampler
DisjointUniformSampler(const std::vector< std::pair< float, float > > &ranges)
Definition: Samplers.h:107
ParticleSampler::ParticleSampler
ParticleSampler(Sampler *pid, MomSampler *mom, int n=1)
Definition: Samplers.h:346
ParticleSampler::m_pos
PosSampler m_pos
Definition: Samplers.h:391
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SampledParticle::m_mass
float m_mass
Definition: Samplers.h:339
SampledParticle::m_pid
int m_pid
Definition: Samplers.h:337
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
y
#define y
SampledParticle::~SampledParticle
~SampledParticle()
Definition: Samplers.h:330
LogSampler::LogSampler
LogSampler(float low, float high)
Definition: Samplers.h:154
DisjointUniformSampler::_map_unit_to_val
float _map_unit_to_val(float x)
Definition: Samplers.h:127
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
DeMoScan.first
bool first
Definition: DeMoScan.py:536
PosSampler::~PosSampler
~PosSampler()=default
SampledParticle::m_pos
TLorentzVector m_pos
Definition: Samplers.h:338
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
ModUniformSampler::ModUniformSampler
ModUniformSampler(float low, float high)
Definition: Samplers.h:68
Sampler
Definition: Samplers.h:18
Sampler::Sampler
Sampler(float val)
Definition: Samplers.h:21
ParticleSampler::m_n
ConstSampler m_n
Definition: Samplers.h:393
UniformSampler::m_low
float m_low
Definition: Samplers.h:61
PtEtaMPhiSampler::~PtEtaMPhiSampler
~PtEtaMPhiSampler()
Definition: Samplers.h:293
PtEtaMPhiSampler
Definition: Samplers.h:291
PtEtaMPhiSampler::operator=
PtEtaMPhiSampler & operator=(const PtEtaMPhiSampler &other)=delete
UniformSampler::shoot
float shoot()
Definition: Samplers.h:60
MomSampler::m_val
TLorentzVector m_val
Definition: Samplers.h:41
CyclicSeqSampler::m_sequence
std::vector< int > m_sequence
Definition: Samplers.h:204
DisjointUniformSampler
Definition: Samplers.h:84
UniformSampler
Definition: Samplers.h:51
NullMomSampler
Definition: Samplers.h:278
PtEtaMPhiSampler::PtEtaMPhiSampler
PtEtaMPhiSampler(float ptmin, float ptmax, float etamin, float etamax, float mass=0.0, float phimin=0, float phimax=2.*TMath::Pi())
Definition: Samplers.h:296
LArCellBinning.etamin
etamin
Definition: LArCellBinning.py:137
CyclicSeqSampler::shoot
float shoot()
Definition: Samplers.h:200
GaussianSampler::m_sigma
float m_sigma
Definition: Samplers.h:179
GaussianSampler
Definition: Samplers.h:169
SampledParticle::m_mom
TLorentzVector m_mom
Definition: Samplers.h:338
ParticleSampler::m_mom
MomSampler * m_mom
Definition: Samplers.h:390
PosSampler::m_y
Sampler m_y
Definition: Samplers.h:273
PtEtaMPhiSampler::m_eta
Sampler * m_eta
Definition: Samplers.h:322
PosSampler::m_t
Sampler m_t
Definition: Samplers.h:273
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65