diff --git a/ChangeLog b/ChangeLog index 9f60fc6f..03568492 100644 --- a/ChangeLog +++ b/ChangeLog @@ -60,6 +60,11 @@ FIXED 2012-09-23 fixed wrong chisq output in musrview if expected chisq is present. FIXED 2012-05-30 fixed RRF bug in single histo plotting. FIXED 2012-05-18 fixed wrong forward/backward tag for ROOT-PPC (MUSR-215) +CHANGED 2014-11-10 (i) added cross-check for Asymmetry view which makes sure that + fbg-t0 is equal for forward and backward histo. + (ii) extended the command block for the test-nonlocal.msr in + order to have an example which shows the more 'advanced' features + of minuit. CHANGED 2014-10-28 BMWlibs, calculation of superconducting gap functions: allow to choose between to different parameterization of the temperature dependence of the gap. For details see the memo diff --git a/doc/examples/ASlibs/test-nonlocal.msr b/doc/examples/ASlibs/test-nonlocal.msr index 1454723b..185249f9 100644 --- a/doc/examples/ASlibs/test-nonlocal.msr +++ b/doc/examples/ASlibs/test-nonlocal.msr @@ -4,22 +4,22 @@ FITPARAMETER # Nr. Name Value Step Pos_Error Boundaries 1 one 1 0 none 2 zero 0 0 none - 3 Asy 0.2133 -0.0053 0.0056 0 0.33 + 3 Asy 0.2235 -0.0066 0.0072 0 0.33 4 energy 22 0 none 5 redTemp 0.8683 0 none 6 thickness 5000 0 none 7 ell 12000 0 none 8 xi 94 0 none - 9 lambdaL 48.21 0.98 none + 9 lambdaL 52.5 -1.4 1.2 10 Bext 47.11 0 none - 11 deadLayer 15.555 0.063 none 0 none - 12 RateSmear 0.363 -0.016 0.016 - 13 N0_L 299.40 -0.99 1.02 - 14 Bkg_L 24.535 -0.089 0.089 - 15 Phase_L 35.5 -2.0 2.1 - 16 Alpha_LR 1.0734 -0.0059 0.0057 - 17 Bkg_R 27.611 -0.088 0.088 - 18 RelPhase_R 153.4 -1.1 1.1 + 11 deadLayer 0.00052 -0.00052 6.89563 0 none + 12 RateSmear 0.418 -0.015 0.015 + 13 N0_L 301.61 0.62 none + 14 Bkg_L 24.442 0.076 none + 15 Phase_L 42.0 -2.2 2.2 + 16 Alpha_LR 1.0614 -0.0066 0.0064 + 17 Bkg_R 27.646 -0.090 0.090 + 18 RelPhase_R 154.4 -1.1 1.1 ############################################################### THEORY @@ -60,6 +60,8 @@ packing 250 ############################################################### COMMANDS MAX_LIKELIHOOD +PRINT_LEVEL 3 +STRATEGY=2 MINIMIZE #HESSE MINOS @@ -82,8 +84,8 @@ phase 8.5 range 0.0 200.0 ############################################################### -STATISTIC --- 2013-11-12 10:23:31 - maxLH = 415.7, NDF = 358, maxLH/NDF = 1.161264 +STATISTIC --- 2014-11-05 12:34:54 + maxLH = 415.6, NDF = 358, maxLH/NDF = 1.160933 diff --git a/src/classes/PRunAsymmetry.cpp b/src/classes/PRunAsymmetry.cpp index 5ecb8d0d..12fed44e 100644 --- a/src/classes/PRunAsymmetry.cpp +++ b/src/classes/PRunAsymmetry.cpp @@ -1216,20 +1216,33 @@ Bool_t PRunAsymmetry::PrepareViewData(PRawRunData* runData, UInt_t histoNo[2]) cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; cerr << endl; } else { - // calculate the max(data range start[i]-t0[i]) - Int_t diff = fRunInfo->GetDataRange(0)-static_cast(t0[0]); - if (abs(diff) < abs(fRunInfo->GetDataRange(2)-static_cast(t0[1]))) - diff = fRunInfo->GetDataRange(0)-static_cast(t0[0]); + // check if the data ranges and t0's between forward/backward are compatible + Int_t fgb[2]; + if (fRunInfo->GetDataRange(0)-t0[0] != fRunInfo->GetDataRange(2)-t0[1]) { // wrong fgb aligning + if (fabs(fRunInfo->GetDataRange(0)-t0[0]) > fabs(fRunInfo->GetDataRange(2)-t0[1])) { + fgb[0] = fRunInfo->GetDataRange(0); + fgb[1] = static_cast(t0[1]) + fRunInfo->GetDataRange(0)-t0[0]; + cerr << endl << ">> PRunAsymmetry::PrepareViewData(): **WARNING** needed to shift backward fgb from "; + cerr << fRunInfo->GetDataRange(2) << " to " << fgb[1] << endl; + } else { + fgb[0] = static_cast(t0[0]) + fRunInfo->GetDataRange(2)-t0[1]; + fgb[1] = fRunInfo->GetDataRange(2); + cerr << endl << ">> PRunAsymmetry::PrepareViewData(): **WARNING** needed to shift forward fgb from "; + cerr << fRunInfo->GetDataRange(0) << " to " << fgb[0] << endl; + } + } else { // fgb aligning is correct + fgb[0] = fRunInfo->GetDataRange(0); + fgb[1] = fRunInfo->GetDataRange(2); + } - // calculate start position for plotting - Int_t val = static_cast(t0[1])+diff-packing*((static_cast(t0[1])+diff)/packing); + Int_t val = fgb[0]-packing*(fgb[0]/packing); do { - if (static_cast(val)+t0[1]-t0[0] < 0.0) + if (fgb[1] - fgb[0] < 0) val += packing; - } while (static_cast(val) + t0[1] - t0[0] < 0.0); + } while (val + fgb[1] - fgb[0] < 0); start[0] = val; - start[1] = val + static_cast(t0[1] - t0[0]); + start[1] = val + fgb[1] - fgb[0]; } // make sure that there are equal number of rebinned bins in forward and backward @@ -1468,15 +1481,34 @@ Bool_t PRunAsymmetry::PrepareRRFViewData(PRawRunData* runData, UInt_t histoNo[2] cerr << endl << ">> PRunAsymmetry::PrepareRRFViewData(): **WARNING** data range (backward) was not provided, will try data range start = " << start[1] << "."; cerr << endl << ">> NO WARRANTY THAT THIS DOES MAKE ANY SENSE."; cerr << endl; - } else { - Int_t val = fRunInfo->GetDataRange(0)-packing*(fRunInfo->GetDataRange(0)/packing); + } else { // data range has been provided + // check if the data ranges and t0's between forward/backward are compatible + Int_t fgb[2]; + if (fRunInfo->GetDataRange(0)-t0[0] != fRunInfo->GetDataRange(2)-t0[1]) { // wrong fgb aligning + if (fabs(fRunInfo->GetDataRange(0)-t0[0]) > fabs(fRunInfo->GetDataRange(2)-t0[1])) { + fgb[0] = fRunInfo->GetDataRange(0); + fgb[1] = static_cast(t0[1]) + fRunInfo->GetDataRange(0)-t0[0]; + cerr << endl << ">> PRunAsymmetry::PrepareRRFViewData(): **WARNING** needed to shift backward fgb from "; + cerr << fRunInfo->GetDataRange(2) << " to " << fgb[1] << endl; + } else { + fgb[0] = static_cast(t0[0]) + fRunInfo->GetDataRange(2)-t0[1]; + fgb[1] = fRunInfo->GetDataRange(2); + cerr << endl << ">> PRunAsymmetry::PrepareRRFViewData(): **WARNING** needed to shift forward fgb from "; + cerr << fRunInfo->GetDataRange(0) << " to " << fgb[0] << endl; + } + } else { // fgb aligning is correct + fgb[0] = fRunInfo->GetDataRange(0); + fgb[1] = fRunInfo->GetDataRange(2); + } + + Int_t val = fgb[0]-packing*(fgb[0]/packing); do { - if (fRunInfo->GetDataRange(2) - fRunInfo->GetDataRange(0) < 0) + if (fgb[1] - fgb[0] < 0) val += packing; - } while (val + fRunInfo->GetDataRange(2) - fRunInfo->GetDataRange(0) < 0); + } while (val + fgb[1] - fgb[0] < 0); start[0] = val; - start[1] = val + fRunInfo->GetDataRange(2) - fRunInfo->GetDataRange(0); + start[1] = val + fgb[1] - fgb[0]; } // make sure that there are equal number of rebinned bins in forward and backward