Important change to fit ranges. Was not checking for full switching, so partially switched points were included.
This commit is contained in:
@ -18,6 +18,38 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
double lowestFullySwitchedPoint(const vector<double> &higher_filter, const vector<double> &lower_filter) {
|
||||||
|
|
||||||
|
// find the lowest value in higher_filter that does not appear in lower_filter
|
||||||
|
double lowest_fully_switched_val = *max_element(higher_filter.begin(),higher_filter.end());
|
||||||
|
|
||||||
|
for(vector<double>::const_iterator it = higher_filter.begin(); it != higher_filter.end(); ++it) {
|
||||||
|
if (find(lower_filter.begin(), lower_filter.end(), *it) == lower_filter.end()) {
|
||||||
|
if (*it < lowest_fully_switched_val) {
|
||||||
|
lowest_fully_switched_val = *it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lowest_fully_switched_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
double highestFullySwitchedPoint(const vector<double> &lower_filter, const vector<double> &higher_filter) {
|
||||||
|
|
||||||
|
// find the highest value in lower_filter that does not appear in higher_filter
|
||||||
|
double highest_fully_switched_val = *min_element(lower_filter.begin(),lower_filter.end());
|
||||||
|
|
||||||
|
for(vector<double>::const_iterator it = lower_filter.begin(); it != lower_filter.end(); ++it) {
|
||||||
|
if (find(higher_filter.begin(), higher_filter.end(), *it) == higher_filter.end()) {
|
||||||
|
if (*it > highest_fully_switched_val) {
|
||||||
|
highest_fully_switched_val = *it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return highest_fully_switched_val;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
jungfrauStyle();
|
jungfrauStyle();
|
||||||
@ -925,7 +957,7 @@ int main(int argc, char* argv[]) {
|
|||||||
} else {
|
} else {
|
||||||
rangemin_g0 = 0.15;
|
rangemin_g0 = 0.15;
|
||||||
}
|
}
|
||||||
rangemax_g0 = *max_element(r0_filter.begin(),r0_filter.end());
|
rangemax_g0 = highestFullySwitchedPoint(r0_filter, r1_filter);
|
||||||
fit_g0 = new TF1("fit_g0","[0]+[1]*x",rangemin_g0, rangemax_g0);
|
fit_g0 = new TF1("fit_g0","[0]+[1]*x",rangemin_g0, rangemax_g0);
|
||||||
fit_g0->SetParameter(0, 3000.);
|
fit_g0->SetParameter(0, 3000.);
|
||||||
fit_g0->SetParameter(1, 30000.);
|
fit_g0->SetParameter(1, 30000.);
|
||||||
@ -1028,9 +1060,9 @@ int main(int argc, char* argv[]) {
|
|||||||
if (module_str == "032") {
|
if (module_str == "032") {
|
||||||
rangemin_g1 = 0.75;
|
rangemin_g1 = 0.75;
|
||||||
} else if (module_str == "003" || module_str == "008" || module_str == "040" || module_str == "044") {
|
} else if (module_str == "003" || module_str == "008" || module_str == "040" || module_str == "044") {
|
||||||
rangemin_g1 = *min_element(r1_filter.begin(),r1_filter.end());
|
rangemin_g1 = lowestFullySwitchedPoint(r1_filter, r0_filter);
|
||||||
}
|
}
|
||||||
rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end());
|
rangemax_g1 = highestFullySwitchedPoint(r1_filter, r2_filter);
|
||||||
fit_g1 = new TF1("fit_g1","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
fit_g1 = new TF1("fit_g1","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||||
fit_g1->SetParameter(0, 10000.);
|
fit_g1->SetParameter(0, 10000.);
|
||||||
fit_g1->SetParameter(1, -0.1);
|
fit_g1->SetParameter(1, -0.1);
|
||||||
@ -1159,7 +1191,7 @@ int main(int argc, char* argv[]) {
|
|||||||
if (module_str == "032") {
|
if (module_str == "032") {
|
||||||
rangemin_g2 = 5;
|
rangemin_g2 = 5;
|
||||||
} else {
|
} else {
|
||||||
rangemin_g2 = *min_element(r2_filter.begin(),r2_filter.end());
|
rangemin_g2 = lowestFullySwitchedPoint(r2_filter, r1_filter);
|
||||||
}
|
}
|
||||||
rangemax_g2 = *max_element(r2_filter.begin(),r2_filter.end());
|
rangemax_g2 = *max_element(r2_filter.begin(),r2_filter.end());
|
||||||
fit_g2 = new TF1("fit_g2","[0]+[1]*x",rangemin_g2, rangemax_g2);
|
fit_g2 = new TF1("fit_g2","[0]+[1]*x",rangemin_g2, rangemax_g2);
|
||||||
|
Reference in New Issue
Block a user