27 TH1D *h_clone = (TH1D *)hist->Clone(
"h_clone");
28 h_clone->Scale(1.0 / h_clone->Integral());
30 auto histoVals = std::make_unique<double[]>(h_clone->GetNbinsX());
31 histoVals[0] = h_clone->GetBinContent(1);
32 for (
int i = 1; i < h_clone->GetNbinsX(); i++) {
33 histoVals[i] = histoVals[i - 1] + h_clone->GetBinContent(i + 1);
90 TH1D *h_input = (TH1D *)hist->Clone(
"h_input");
91 TH1D *h_output =
nullptr;
98 h_out = (TH1D *)h_input->Clone(
"h_out");
101 h_out->SetName(
"h_out");
108 ATH_MSG_INFO(
"Iteration nr. " << i <<
" -----> change " << change
109 <<
" bins " << h_out->GetNbinsX()
110 <<
" -> maxdev=" << maxdev);
112 if (maxdev < cut_maxdev && h_out->GetNbinsX() > 5 && i < 1000) {
114 h_input = (TH1D *)h_out->Clone(
"h_input");
119 h_output = (TH1D *)h_input->Clone(
"h_output");
125 ATH_MSG_INFO(
"Info: Rebinned histogram has " << h_output->GetNbinsX()
130 for (
int b = 1; b <= h_output->GetNbinsX(); b++)
134 for (
int b = 1; b < h_output->GetNbinsX(); b++)
166 TH1D *h_out1 = (TH1D *)h_input->Clone(
"h_out1");
171 vector<double> content;
172 vector<double> binborder;
174 binborder.push_back(h_out1->GetXaxis()->GetXmin());
178 int secondlastbin_merge = 0;
179 for (
int b = 1; b < h_out1->GetNbinsX() - 1; b++)
181 double thisBin = h_out1->GetBinContent(b);
182 double nextBin = h_out1->GetBinContent(b + 1);
183 double width = h_out1->GetBinWidth(b);
184 double nextwidth = h_out1->GetBinWidth(b + 1);
185 double diff = fabs(nextBin - thisBin);
186 if (!
skip && (
diff > change || merged)) {
187 binborder.push_back(h_out1->GetBinLowEdge(b + 1));
188 content.push_back(thisBin);
191 if (
diff <= change && !merged) {
192 double sum = thisBin *
width + nextBin * nextwidth;
193 double sumwidth =
width + nextwidth;
194 binborder.push_back(h_out1->GetBinLowEdge(b + 2));
195 content.push_back(sum / sumwidth);
198 if (b == (h_out1->GetNbinsX() - 2))
199 secondlastbin_merge = 1;
202 if (!secondlastbin_merge) {
203 binborder.push_back(h_out1->GetBinLowEdge(h_out1->GetNbinsX()));
204 content.push_back(h_out1->GetBinContent(h_out1->GetNbinsX() - 1));
206 binborder.push_back(h_out1->GetXaxis()->GetXmax());
207 content.push_back(h_out1->GetBinContent(h_out1->GetNbinsX()));
209 double *
bins =
new double[content.size() + 1];
210 for (
unsigned int i = 0; i < binborder.size(); i++)
211 bins[i] = binborder[i];
213 TH1D *h_out2 =
new TH1D(
"h_out2",
"h_out2", content.size(),
bins);
214 for (
unsigned int b = 1; b <= content.size(); b++)
215 h_out2->SetBinContent(b, content[b - 1]);
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.