8 const std::pair<unsigned, unsigned>
range) {
9 TH1* fake = (TH1*)(candidates[0]->Clone(basename.c_str()));
14 for (
auto const* candidate : candidates) {
22 delete combined.
chi2_;
23 combined.
chi2_ =
nullptr;
25 return combined.
chi2_;
42 minmaxUsable_(findUsableMinMax()),
55 chi2_ =
new TH1F(XXname.c_str(),
"", Nbins, low,
up);
59 unsigned NEAR(0), FAR(0);
61 for (
unsigned L = 0;
L < cont.size();
L++) {
64 for (
unsigned R =
L;
R < cont.size();
R++) {
69 const unsigned near =
std::max(
range_.second < cont[L].second ? 0 :
range_.second - cont[L].second,
72 if ((far > near) && (far - near) > (FAR - NEAR)) {
78 return std::make_pair(NEAR, FAR);
82 std::vector<std::pair<unsigned, unsigned> >
ranges;
85 while (++i <= Nbins) {
87 std::pair<unsigned, unsigned>
range(i, i + 1);
88 while (++i <= Nbins && symm_candidate_->GetBinError(i))
90 ranges.push_back(range);
100 for (
int i = 1;
i <=
chi2_->GetNbinsX(); ++
i) {
102 chi2_->SetBinContent(
i,
chi2(std::make_pair(
L, R)));
124 return pow(y0 - y1, 2) / (e0 * e0 + e1 * e1);
129 if (p.empty() || p[0] <
chi2_->GetBinCenter(1) || p[0] >
chi2_->GetBinCenter(
chi2_->GetNbinsX()))
133 f->SetParameter(0, p[0]);
134 f->SetParLimits(0, p[0], p[0]);
135 f->SetParameter(1, p[1]);
136 f->SetParLimits(1, p[1], p[1]);
137 f->SetParameter(2, p[2]);
138 f->SetParLimits(2, p[2], p[2]);
139 f->SetParameter(3,
ndf_);
141 chi2_->Fit(f.get(),
"WQ");
146 TF1*
f =
new TF1(
"SymmetryFit",
"((x-[0])/[1])**2+[2]+0*[3]");
147 f->SetParName(0,
"middle");
148 f->SetParName(1,
"uncertainty");
149 f->SetParName(2,
"chi2");
150 f->SetParName(3,
"NDF");
155 std::vector<double>
v;
158 TF1
func(
"mypol2",
"pol2");
159 int status = hist->Fit(&func,
"WQ");
161 std::vector<double>
p;
162 p.push_back(func.GetParameter(0));
163 p.push_back(func.GetParameter(1));
164 p.push_back(func.GetParameter(2));
166 v.push_back(-0.5 * p[1] / p[2]);
167 v.push_back(1. /
sqrt(p[2]));
168 v.push_back(p[0] - 0.25 * p[1] * p[1] / p[2]);
175 std::vector<double>
v;
177 auto func = std::make_unique<TF1>(
"mypol3",
"pol3");
180 std::vector<double>
p;
181 p.push_back(
func->GetParameter(0));
182 p.push_back(
func->GetParameter(1));
183 p.push_back(
func->GetParameter(2));
184 p.push_back(
func->GetParameter(3));
185 double radical = p[2] * p[2] - 3 * p[1] * p[3];
187 double x0 = (-p[2] +
sqrt(radical)) / (3 * p[3]);
189 v.push_back(
pow(radical, -0.25));
190 v.push_back(p[0] + p[1] * x0 + p[2] * x0 * x0 + p[3] * x0 * x0 * x0);
SymmetryFit(const TH1 *, const std::pair< unsigned, unsigned >)
static std::string name(std::string base)
tuple cont
load Luminosity info ##
std::pair< unsigned, unsigned > findUsableMinMax() const
static TH1 * symmetryChi2(std::string, const std::vector< TH1 * > &, const std::pair< unsigned, unsigned >)
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t Func __host__ __device__ V int Func func
static std::vector< double > pol2_from_pol2(TH1 *hist)
const uint16_t range(const Frame &aFrame)
float chi2_element(std::pair< unsigned, unsigned >)
U second(std::pair< T, U > const &p)
static std::vector< double > pol2_from_pol3(TH1 *hist)
float chi2(std::pair< unsigned, unsigned >)
static TF1 * fitfunction()
const TH1 * symm_candidate_
std::vector< std::pair< unsigned, unsigned > > continuousRanges() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
const std::pair< unsigned, unsigned > minmaxUsable_
const std::pair< unsigned, unsigned > range_
Power< A, B >::type pow(const A &a, const B &b)
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point