ROOT Analysis for the Inclusive Detachted Dilepton Trigger Lines
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

78 lines
1.6 KiB

#include <iostream>
#include "TMath.h"
void println(std::string str) {
std::cout << str << std::endl;
}
int get_ten_pow(double number) {
int sign = 0;
int pow = 0;
if (number >= 1) {
sign = 1;
while (number >= 1) {
// std::cout << number << " " << pow << std::endl;
number = number / 10;
pow++;
}
} else {
sign = -1;
while (number < 1) {
number = number * 10;
pow++;
}
}
return sign * pow;
}
int get_decimals(double number) {
int dec = 0;
while ((int) number != number) {
number = number * 10;
dec++;
}
return dec;
}
int rounder() {
// 2,543 ± 0,235 174,032 ± 82,543
double val = 1.2456;// -> 4300
double err = 0.2231; // -> 240
std::cout << get_ten_pow(231.4345) << " " << get_ten_pow(0.0045) << std::endl;
int mv = 0;
if (err < 1) {
mv = 1;
} else {
mv = -1;
}
int pot = 0;
while((mv == 1 && err < 3) || (mv == -1 && err > 30)) {
err = err * TMath::Power(10, mv);
pot++;
}
int err_ten_pow = get_ten_pow(err);
int val_ten_pow = get_ten_pow(val);
int diff = TMath::Abs(err_ten_pow - val_ten_pow);
double input_err = err * TMath::Power(10, -mv * pot);
double round_err = TMath::Ceil(err) * TMath::Power(10, -mv * pot);
int err_dec = get_decimals(round_err);
diff += err_dec;
double mv_val = val * TMath::Power(10, mv * diff);
double round_val = TMath::Ceil(mv_val) * TMath::Power(10, -mv * diff);
std::cout << val << " " << mv_val << " " << err << " " << input_err<< " " << std::endl;
std::cout << val << "+-" << input_err << " -> " << round_val << "+-" << round_err << std::endl;
return 0;
}