ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigAnalysis
TrigInDetAnalysisUser
Resplot
src
generate.h
Go to the documentation of this file.
1
/* emacs: this is -*- c++ -*- */
9
10
#ifndef GENERATE_H
11
#define GENERATE_H
12
13
14
#include <cmath>
15
#include <vector>
16
#include <iostream>
17
18
#include "TH1D.h"
19
20
#include "
BasicRandom.h
"
21
22
23
namespace
Resplot::generate
{
24
26
double
get_mean
(
const
std::vector<double>& m );
27
double
get_rms
(
const
std::vector<double>& m );
28
29
31
TH1D*
integrate
( TH1D* hin );
32
34
void
ScaleIntegral
(TH1D* hin );
35
37
TH1D*
PDF
(TH1D* hin);
38
41
TH1D*
smooth
( TH1D* hin,
bool
sym=
true
);
42
43
45
class
generator_base
{
46
public
:
47
virtual
~generator_base
() { }
48
virtual
double
generate
()
const
= 0;
49
};
50
51
52
54
class
breit_generator
:
public
generator_base
{
55
56
public
:
57
58
virtual
double
generate
()
const
{
59
double
x
= std::tan((
r
.uniform()-0.5)*
M_PI
);
60
return
x
;
61
}
62
63
static
inline
thread_local
BasicRandom
r
;
64
65
};
66
67
68
69
72
class
hist_generator
:
public
generator_base
{
73
74
public
:
75
76
hist_generator
(TH1D*
h
,
bool
smooth_=
true
);
77
78
hist_generator
(
const
hist_generator
&) =
delete
;
79
hist_generator
operator=
(
const
hist_generator
&) =
delete
;
80
81
virtual
~hist_generator
() {
delete
m_s
; }
// if ( m_random ) delete m_random; }
82
84
double
generate
()
const
{
85
return
invert
(
s_random
.uniform());
86
}
87
88
TH1D*
histogram
() {
return
m_s
; }
89
TH1D*
rawhistogram
() {
return
m_raw
; }
90
TH1D*
smoothhistogram
() {
return
m_smooth
; }
91
92
private
:
93
94
int
getbin
(
double
y
)
const
{
95
for
(
unsigned
i=0 ; i<
m_y
.size() ; i++ )
if
(
y
<=
m_y
[i] )
return
i;
96
return
m_y
.size()-1;
97
}
98
99
double
invert
(
double
y
)
const
{
100
int
i =
getbin
(
y
);
101
if
( i==0 )
return
0;
102
else
return
(
y
-
m_y
[i-1])*
m_dxdy
[i-1]+
m_x
[i-1];
103
}
104
105
106
private
:
107
108
std::vector<double>
m_y
;
109
std::vector<double>
m_x
;
110
111
112
std::vector<double>
m_dx
;
113
std::vector<double>
m_dy
;
114
115
std::vector<double>
m_dxdy
;
116
117
TH1D*
m_s
;
// accumated histogram
118
TH1D*
m_raw
;
// raw histogram
119
TH1D*
m_smooth
;
// smoothed raw histogram
120
121
// static BasicRandom* m_random;
122
123
static
inline
thread_local
BasicRandom
s_random
=
BasicRandom
(
true
);
124
125
};
126
127
128
129
133
134
class
experiment
{
135
136
public
:
137
138
experiment
( TH1D*
h
,
int
Nexperiments=10,
int
fevents=0 );
139
experiment
(
const
experiment
& ) =
delete
;
140
experiment
operator=
(
const
experiment
& ) =
delete
;
141
142
double
hmean
()
const
{
return
m_hmean
; }
143
double
hrms
()
const
{
return
m_hrms
; }
144
145
double
mean
()
const
{
return
m_global_mean
; }
146
double
mean_error
()
const
{
return
m_global_mean_error
; }
147
148
double
rms
()
const
{
return
m_global_rms
; }
149
double
rms_error
()
const
{
return
m_global_rms_error
; }
150
151
generator_base
*
gen
() {
return
m_gen
; }
152
153
TH1D*
rmshisto
() {
return
m_THrms
; }
154
155
private
:
156
157
int
m_N
;
158
159
std::vector<double>
m_mean
;
160
std::vector<double>
m_rms
;
161
162
double
m_hmean
;
163
double
m_hrms
;
164
166
double
m_global_mean
;
167
double
m_global_mean_error
;
168
169
double
m_global_rms
;
170
double
m_global_rms_error
;
171
172
generator_base
*
m_gen
;
173
174
TH1D*
m_THrms
;
175
};
176
177
178
179
}
// namespace generate
180
181
#endif
// GENERATE_H
M_PI
#define M_PI
Definition
ActiveFraction.h:14
BasicRandom.h
a Randomnumber generator with a data member TRandom3 so that we can either use a shared generator or ...
y
#define y
x
#define x
h
Header file for AthHistogramAlgorithm.
Resplot::BasicRandom
Definition
BasicRandom.h:34
Resplot::generate::breit_generator
breit-wigner generator
Definition
generate.h:54
Resplot::generate::breit_generator::r
static BasicRandom r
Definition
generate.h:63
Resplot::generate::breit_generator::generate
virtual double generate() const
Definition
generate.h:58
Resplot::generate::experiment::hrms
double hrms() const
Definition
generate.h:143
Resplot::generate::experiment::rms
double rms() const
Definition
generate.h:148
Resplot::generate::experiment::m_mean
std::vector< double > m_mean
number of experiments
Definition
generate.h:159
Resplot::generate::experiment::operator=
experiment operator=(const experiment &)=delete
Resplot::generate::experiment::hmean
double hmean() const
Definition
generate.h:142
Resplot::generate::experiment::mean
double mean() const
Definition
generate.h:145
Resplot::generate::experiment::m_hrms
double m_hrms
actual histogram mean95
Definition
generate.h:163
Resplot::generate::experiment::m_global_rms
double m_global_rms
Definition
generate.h:169
Resplot::generate::experiment::m_gen
generator_base * m_gen
Definition
generate.h:172
Resplot::generate::experiment::m_rms
std::vector< double > m_rms
means from each experiment
Definition
generate.h:160
Resplot::generate::experiment::m_THrms
TH1D * m_THrms
Definition
generate.h:174
Resplot::generate::experiment::m_global_mean_error
double m_global_mean_error
Definition
generate.h:167
Resplot::generate::experiment::m_N
int m_N
Definition
generate.h:157
Resplot::generate::experiment::experiment
experiment(TH1D *h, int Nexperiments=10, int fevents=0)
given a distribution, gnerate some number of pseudo experiments to estimate the uncertainties in the ...
Definition
generate.cxx:302
Resplot::generate::experiment::rms_error
double rms_error() const
Definition
generate.h:149
Resplot::generate::experiment::experiment
experiment(const experiment &)=delete
Resplot::generate::experiment::rmshisto
TH1D * rmshisto()
Definition
generate.h:153
Resplot::generate::experiment::m_global_mean
double m_global_mean
actual histogram rms95
Definition
generate.h:166
Resplot::generate::experiment::m_global_rms_error
double m_global_rms_error
Definition
generate.h:170
Resplot::generate::experiment::m_hmean
double m_hmean
rms from each experiment
Definition
generate.h:162
Resplot::generate::experiment::gen
generator_base * gen()
Definition
generate.h:151
Resplot::generate::experiment::mean_error
double mean_error() const
Definition
generate.h:146
Resplot::generate::generator_base
base class for a "generator" class
Definition
generate.h:45
Resplot::generate::generator_base::generate
virtual double generate() const =0
Resplot::generate::generator_base::~generator_base
virtual ~generator_base()
Definition
generate.h:47
Resplot::generate::hist_generator::m_smooth
TH1D * m_smooth
Definition
generate.h:119
Resplot::generate::hist_generator::operator=
hist_generator operator=(const hist_generator &)=delete
Resplot::generate::hist_generator::m_s
TH1D * m_s
Definition
generate.h:117
Resplot::generate::hist_generator::hist_generator
hist_generator(const hist_generator &)=delete
Resplot::generate::hist_generator::histogram
TH1D * histogram()
Definition
generate.h:88
Resplot::generate::hist_generator::m_raw
TH1D * m_raw
Definition
generate.h:118
Resplot::generate::hist_generator::m_dx
std::vector< double > m_dx
Definition
generate.h:112
Resplot::generate::hist_generator::hist_generator
hist_generator(TH1D *h, bool smooth_=true)
Definition
generate.cxx:231
Resplot::generate::hist_generator::s_random
static BasicRandom s_random
Definition
generate.h:123
Resplot::generate::hist_generator::m_dy
std::vector< double > m_dy
Definition
generate.h:113
Resplot::generate::hist_generator::rawhistogram
TH1D * rawhistogram()
Definition
generate.h:89
Resplot::generate::hist_generator::m_dxdy
std::vector< double > m_dxdy
Definition
generate.h:115
Resplot::generate::hist_generator::generate
double generate() const
actually generate a random number from the distribution
Definition
generate.h:84
Resplot::generate::hist_generator::~hist_generator
virtual ~hist_generator()
Definition
generate.h:81
Resplot::generate::hist_generator::getbin
int getbin(double y) const
Definition
generate.h:94
Resplot::generate::hist_generator::invert
double invert(double y) const
Definition
generate.h:99
Resplot::generate::hist_generator::smoothhistogram
TH1D * smoothhistogram()
Definition
generate.h:90
Resplot::generate::hist_generator::m_y
std::vector< double > m_y
Definition
generate.h:108
Resplot::generate::hist_generator::m_x
std::vector< double > m_x
Definition
generate.h:109
Resplot::generate
Definition
generate.cxx:28
Resplot::generate::ScaleIntegral
void ScaleIntegral(TH1D *hin)
scale a distribution by the integral
Definition
generate.cxx:92
Resplot::generate::smooth
TH1D * smooth(TH1D *hin, bool sym)
smooth a distribution about the maximum NB: maximum is not smoothed
Definition
generate.cxx:158
Resplot::generate::integrate
TH1D * integrate(TH1D *hin)
generate an integrated distribution
Definition
generate.cxx:68
Resplot::generate::get_rms
double get_rms(const std::vector< double > &m)
Definition
generate.cxx:54
Resplot::generate::get_mean
double get_mean(const std::vector< double > &m)
mean and rms
Definition
generate.cxx:47
Resplot::generate::PDF
TH1D * PDF(TH1D *hin)
generate a (normalised) pdf from a distribution
Definition
generate.cxx:112
Generated on
for ATLAS Offline Software by
1.17.0