#include #include using namespace std; // for standalone// /* //lut */ int fw_binned(double *aob, double *aobe, double &R0, double &sigma, double &phi0, double &birks, double initR0){ // int my_precision=16; // NODIF IN 6 DIG for integ1 //def // int fw_nintegbin=4; // def But dont use calc by hand int my_precision=8; // NODIF IN 6 DIG for integ1 //def int fw_nintegbin=1; // def But dont use calc by hand double fw_precision = 1e-4; // a parameter for numerical integration, reduce to speed up calculation int fw_nbin=32; //just number of bin of data //HHHH LUT gen HHHHH// // hist infor e.g. layer widht of detector double bins_lut[fw_nbin+1]= { 0, 2.90158, 5.7519, 8.78677, 11.6986, 14.5387, 17.5428, 20.4444, 23.3152, 26.3193, 29.2209, 32.1122, 35.1061, 38.0179, 40.899, 43.8723, 46.7739, 49.6755, 52.8437, 55.6837, 58.5033, 61.4561, 64.3885, 67.2798, 70.2224, 73.1445, 75.9538, 78.6606, 81.3879, 84.4125, 87.109, 89.785, 92.4508}; // Calc from bin width divided by # of division to average in a bin for expected double binw_lut[fw_nbin]= { 0.580316, 0.570064, 0.606974, 0.582366, 0.56802, 0.60082, 0.58032, 0.57416, 0.60082, 0.58032, 0.57826, 0.59878, 0.58236, 0.57622, 0.59466, 0.58032, 0.58032, 0.63364, 0.568, 0.56392, 0.59056, 0.58648, 0.57826, 0.58852, 0.58442, 0.56186, 0.54136, 0.54546, 0.60492, 0.5393, 0.5352, 0.53316}; //HHHH Minimize parameters HHHH// int debug_lv=0; double rx=0; int max_test=128; // int max_test=64; //HHHHH parameter min max setting // double cR0=50; //current val // double rR0=50; //range // double minR0=50; //current R0 of minimum -2logL double cR0=initR0; //current val double rR0=20; //range double minR0=initR0; //current R0 of minimum -2logL // double cR0=70; //current val // double rR0=20; //range // double minR0=70; //current R0 of minimum -2logL // double cR0=50; //current val // double rR0=50; //range // double minR0=50; //current R0 of minimum -2logL // double csigma=4; //current val // double rsigma=4; //range // double minsigma=4; //current sigma of minimum -2logL double csigma=2; //current val double rsigma=1; //range double minsigma=2; //current sigma of minimum -2logL // double csigma=5; //current val double rsigma=5; //range double // minsigma=5; //current sigma of minimum -2logL double cphi0=20; //current val *1e-7 double rphi0=20; //range double minphi0=20; //current phi0 of minimum -2logL // double cphi0=10e-7; //current val // double rphi0=10e-7; //range // double minphi0=10e-7; //current phi0 of minimum -2logL double cbirks=0.07; //current val double rbirks=0.03; //range double minbirks=0.07; //current birks of minimum -2logL // double cbirks=0.07; //current val // double rbirks=0.03; //range // double minbirks=0.07; //current birks of minimum -2logL // double cbirks=0.25; //current val // double rbirks=0.25; //range // double minbirks=0.25; //current birks of minimum -2logL int tlv=0, stagelv=0, paran=0; double minLogL=9999999; int npar=4; for(int t=0; t0){ logP=(ob-ex)*(ob-ex)/(obe*obe)+2*log(obe*2.507); } logL+=logP; } // end loop for bins for minL if(debug_lv>3){ cout<