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.
|
|
#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; }
|