Check of valid fit range, and added the plus/minus1 to the range finder functions.
This commit is contained in:
639
CS_analysis.cpp
639
CS_analysis.cpp
@ -21,7 +21,7 @@
|
||||
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());
|
||||
double lowest_fully_switched_val = *max_element(higher_filter.begin(),higher_filter.end())+1;
|
||||
|
||||
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()) {
|
||||
@ -37,7 +37,7 @@ double lowestFullySwitchedPoint(const vector<double> &higher_filter, const vecto
|
||||
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());
|
||||
double highest_fully_switched_val = *min_element(lower_filter.begin(),lower_filter.end())-1;
|
||||
|
||||
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()) {
|
||||
@ -987,115 +987,116 @@ int main(int argc, char* argv[]) {
|
||||
TF1 *fit_g1 = 0;
|
||||
TF1 *fit_g2 = 0;
|
||||
|
||||
double rangemin_g0;
|
||||
double rangemax_g0;
|
||||
double rangemin_g1;
|
||||
double rangemax_g1;
|
||||
double rangemin_g2;
|
||||
double rangemax_g2;
|
||||
double rangemin_g0 = 0;
|
||||
double rangemax_g0 = 0;
|
||||
double rangemin_g1 = 0;
|
||||
double rangemax_g1 = 0;
|
||||
double rangemin_g2 = 0;
|
||||
double rangemax_g2 = 0;
|
||||
|
||||
if (r0_adc.size() > 1) {
|
||||
|
||||
grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0]));
|
||||
|
||||
if (module_str == "003") {
|
||||
rangemin_g0 = 2.0;
|
||||
} else {
|
||||
rangemin_g0 = 0.15;
|
||||
}
|
||||
rangemax_g0 = highestFullySwitchedPoint(r0_filter, r1_filter);
|
||||
fit_g0 = new TF1("fit_g0","[0]+[1]*x",rangemin_g0, rangemax_g0);
|
||||
fit_g0->SetParameter(0, 3000.);
|
||||
fit_g0->SetParameter(1, 30000.);
|
||||
fit_g0->SetLineColor(kBlue);
|
||||
fit_g0->SetParName(0,"G0 const");
|
||||
fit_g0->SetParName(1,"G0 grad");
|
||||
grap_g0->Fit(fit_g0,"QR+","");
|
||||
|
||||
g0hist->Fill(fit_g0->GetParameter(1));
|
||||
g0map->Fill(i%NC,i/NC,fit_g0->GetParameter(1));
|
||||
g0erhist->Fill(fit_g0->GetParError(1));
|
||||
g0ermap->Fill(i%NC,i/NC,fit_g0->GetParError(1));
|
||||
if (rangemax_g0 > rangemin_g0) {
|
||||
grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0]));
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
(i >= (256*1024)+10 && i < (256*1024)+10+10) || // double
|
||||
(i >= (257*1024)+10 && i < (257*1024)+10+10) || // next to double
|
||||
(i == (255*1024)+255) // quad
|
||||
) {
|
||||
fit_g0 = new TF1("fit_g0","[0]+[1]*x",rangemin_g0, rangemax_g0);
|
||||
fit_g0->SetParameter(0, 3000.);
|
||||
fit_g0->SetParameter(1, 30000.);
|
||||
fit_g0->SetLineColor(kBlue);
|
||||
fit_g0->SetParName(0,"G0 const");
|
||||
fit_g0->SetParName(1,"G0 grad");
|
||||
grap_g0->Fit(fit_g0,"QR+","");
|
||||
|
||||
g0hist->Fill(fit_g0->GetParameter(1));
|
||||
g0map->Fill(i%NC,i/NC,fit_g0->GetParameter(1));
|
||||
g0erhist->Fill(fit_g0->GetParError(1));
|
||||
g0ermap->Fill(i%NC,i/NC,fit_g0->GetParError(1));
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
(i >= (256*1024)+10 && i < (256*1024)+10+10) || // double
|
||||
(i >= (257*1024)+10 && i < (257*1024)+10+10) || // next to double
|
||||
(i == (255*1024)+255) // quad
|
||||
) {
|
||||
|
||||
string pixel_type = "x";
|
||||
if (i >= 58000 && i < 58000+10) {
|
||||
pixel_type = "b";
|
||||
} else if (i >= 10 && i < 10+10) {
|
||||
pixel_type = "e";
|
||||
} else if (i >= 1024+10 && i < 1024+10+10) {
|
||||
pixel_type = "ie";
|
||||
} else if (i >= (256*1024)+10 && i < (256*1024)+10+10) {
|
||||
pixel_type = "d";
|
||||
} else if (i >= (257*1024)+10 && i < (257*1024)+10+10) {
|
||||
pixel_type = "ntd";
|
||||
} else if (i == (255*1024)+255) {
|
||||
pixel_type = "q";
|
||||
string pixel_type = "x";
|
||||
if (i >= 58000 && i < 58000+10) {
|
||||
pixel_type = "b";
|
||||
} else if (i >= 10 && i < 10+10) {
|
||||
pixel_type = "e";
|
||||
} else if (i >= 1024+10 && i < 1024+10+10) {
|
||||
pixel_type = "ie";
|
||||
} else if (i >= (256*1024)+10 && i < (256*1024)+10+10) {
|
||||
pixel_type = "d";
|
||||
} else if (i >= (257*1024)+10 && i < (257*1024)+10+10) {
|
||||
pixel_type = "ntd";
|
||||
} else if (i == (255*1024)+255) {
|
||||
pixel_type = "q";
|
||||
}
|
||||
|
||||
grap_g0->SetMarkerStyle(20);
|
||||
grap_g0->SetMarkerColor(kBlue);
|
||||
grap_g0->SetLineColor(kBlue);
|
||||
|
||||
grap_g0->SetMinimum(0);
|
||||
grap_g0->SetMaximum(16000);
|
||||
grap_g0->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
grap_g0->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g0->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g0->Draw("AP");
|
||||
fit_g0->Draw("same");
|
||||
mapcanvas->Update();
|
||||
TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats");
|
||||
st0->SetX1NDC(0.2);
|
||||
st0->SetX2NDC(0.54);
|
||||
st0->SetY1NDC(0.71);
|
||||
st0->SetY2NDC(0.90);
|
||||
st0->SetBorderSize(0);
|
||||
st0->SetTextColor(kBlue);
|
||||
mapcanvas->SetLogx();
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g0_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
mapcanvas->SetLogx(0);
|
||||
|
||||
vector<double> r0_adc_norm;
|
||||
for (size_t j = 0; j < r0_adc.size(); j++) {
|
||||
r0_adc_norm.push_back(r0_adc[j] - fit_g0->Eval(r0_filter[j]));
|
||||
}
|
||||
|
||||
TGraphErrors *norm_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc_norm[0]),&(r0_ferr[0]),&(r0_adcerr[0]));
|
||||
norm_g0->SetMarkerColor(kBlue);
|
||||
norm_g0->SetLineColor(kBlue);
|
||||
|
||||
TF1* flat_g0 = new TF1("flat_g0","0",rangemin_g0, rangemax_g0);
|
||||
flat_g0->SetLineColor(kBlue);
|
||||
|
||||
norm_g0->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]");
|
||||
norm_g0->GetYaxis()->SetTitleOffset(0.9);
|
||||
norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end()));
|
||||
norm_g0->SetMinimum(-100);
|
||||
norm_g0->SetMaximum(100);
|
||||
norm_g0->Draw("AP");
|
||||
flat_g0->Draw("same");
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
|
||||
delete norm_g0;
|
||||
delete flat_g0;
|
||||
}
|
||||
|
||||
grap_g0->SetMarkerStyle(20);
|
||||
grap_g0->SetMarkerColor(kBlue);
|
||||
grap_g0->SetLineColor(kBlue);
|
||||
|
||||
grap_g0->SetMinimum(0);
|
||||
grap_g0->SetMaximum(16000);
|
||||
grap_g0->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
grap_g0->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g0->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g0->Draw("AP");
|
||||
fit_g0->Draw("same");
|
||||
mapcanvas->Update();
|
||||
TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats");
|
||||
st0->SetX1NDC(0.2);
|
||||
st0->SetX2NDC(0.54);
|
||||
st0->SetY1NDC(0.71);
|
||||
st0->SetY2NDC(0.90);
|
||||
st0->SetBorderSize(0);
|
||||
st0->SetTextColor(kBlue);
|
||||
mapcanvas->SetLogx();
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g0_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
mapcanvas->SetLogx(0);
|
||||
|
||||
vector<double> r0_adc_norm;
|
||||
for (size_t j = 0; j < r0_adc.size(); j++) {
|
||||
r0_adc_norm.push_back(r0_adc[j] - fit_g0->Eval(r0_filter[j]));
|
||||
}
|
||||
|
||||
TGraphErrors *norm_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc_norm[0]),&(r0_ferr[0]),&(r0_adcerr[0]));
|
||||
norm_g0->SetMarkerColor(kBlue);
|
||||
norm_g0->SetLineColor(kBlue);
|
||||
|
||||
TF1* flat_g0 = new TF1("flat_g0","0",rangemin_g0, rangemax_g0);
|
||||
flat_g0->SetLineColor(kBlue);
|
||||
|
||||
norm_g0->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]");
|
||||
norm_g0->GetYaxis()->SetTitleOffset(0.9);
|
||||
norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end()));
|
||||
norm_g0->SetMinimum(-100);
|
||||
norm_g0->SetMaximum(100);
|
||||
norm_g0->Draw("AP");
|
||||
flat_g0->Draw("same");
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
|
||||
delete norm_g0;
|
||||
delete flat_g0;
|
||||
}
|
||||
}
|
||||
|
||||
if (r1_adc.size() > 1) {
|
||||
|
||||
grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0]));
|
||||
|
||||
rangemin_g1 = 2.;
|
||||
if (module_str == "032") {
|
||||
rangemin_g1 = 0.75;
|
||||
@ -1103,122 +1104,125 @@ int main(int argc, char* argv[]) {
|
||||
rangemin_g1 = lowestFullySwitchedPoint(r1_filter, r0_filter);
|
||||
}
|
||||
rangemax_g1 = highestFullySwitchedPoint(r1_filter, r2_filter);
|
||||
fit_g1 = new TF1("fit_g1","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
fit_g1->SetParameter(0, 10000.);
|
||||
fit_g1->SetParameter(1, -0.1);
|
||||
fit_g1->SetLineColor(kGreen+2);
|
||||
fit_g1->SetParName(0,"G1 const");
|
||||
fit_g1->SetParName(1,"G1 grad");
|
||||
grap_g1->Fit(fit_g1,"QR","");
|
||||
|
||||
g1hist->Fill(fit_g1->GetParameter(1));
|
||||
g1map->Fill(i%NC,i/NC,fit_g1->GetParameter(1));
|
||||
g1erhist->Fill(fit_g1->GetParError(1));
|
||||
g1ermap->Fill(i%NC,i/NC,fit_g1->GetParError(1));
|
||||
if (rangemax_g1 > rangemin_g1) {
|
||||
grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0]));
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
(i >= (256*1024)+10 && i < (256*1024)+10+10) || // double
|
||||
(i >= (257*1024)+10 && i < (257*1024)+10+10) || // next to double
|
||||
(i == (255*1024)+255) // quad
|
||||
) {
|
||||
fit_g1 = new TF1("fit_g1","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
fit_g1->SetParameter(0, 10000.);
|
||||
fit_g1->SetParameter(1, -0.1);
|
||||
fit_g1->SetLineColor(kGreen+2);
|
||||
fit_g1->SetParName(0,"G1 const");
|
||||
fit_g1->SetParName(1,"G1 grad");
|
||||
grap_g1->Fit(fit_g1,"QR","");
|
||||
|
||||
g1hist->Fill(fit_g1->GetParameter(1));
|
||||
g1map->Fill(i%NC,i/NC,fit_g1->GetParameter(1));
|
||||
g1erhist->Fill(fit_g1->GetParError(1));
|
||||
g1ermap->Fill(i%NC,i/NC,fit_g1->GetParError(1));
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
(i >= (256*1024)+10 && i < (256*1024)+10+10) || // double
|
||||
(i >= (257*1024)+10 && i < (257*1024)+10+10) || // next to double
|
||||
(i == (255*1024)+255) // quad
|
||||
) {
|
||||
|
||||
string pixel_type = "x";
|
||||
if (i >= 58000 && i < 58000+10) {
|
||||
pixel_type = "b";
|
||||
} else if (i >= 10 && i < 10+10) {
|
||||
pixel_type = "e";
|
||||
} else if (i >= 1024+10 && i < 1024+10+10) {
|
||||
pixel_type = "ie";
|
||||
} else if (i >= (256*1024)+10 && i < (256*1024)+10+10) {
|
||||
pixel_type = "d";
|
||||
} else if (i >= (257*1024)+10 && i < (257*1024)+10+10) {
|
||||
pixel_type = "ntd";
|
||||
} else if (i == (255*1024)+255) {
|
||||
pixel_type = "q";
|
||||
string pixel_type = "x";
|
||||
if (i >= 58000 && i < 58000+10) {
|
||||
pixel_type = "b";
|
||||
} else if (i >= 10 && i < 10+10) {
|
||||
pixel_type = "e";
|
||||
} else if (i >= 1024+10 && i < 1024+10+10) {
|
||||
pixel_type = "ie";
|
||||
} else if (i >= (256*1024)+10 && i < (256*1024)+10+10) {
|
||||
pixel_type = "d";
|
||||
} else if (i >= (257*1024)+10 && i < (257*1024)+10+10) {
|
||||
pixel_type = "ntd";
|
||||
} else if (i == (255*1024)+255) {
|
||||
pixel_type = "q";
|
||||
}
|
||||
|
||||
grap_g1->SetMarkerStyle(20);
|
||||
grap_g1->SetMarkerColor(kGreen+2);
|
||||
grap_g1->SetLineColor(kGreen+2);
|
||||
|
||||
grap_g1->SetMinimum(0);
|
||||
grap_g1->SetMaximum(16000);
|
||||
grap_g1->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
grap_g1->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g1->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g1->Draw("AP");
|
||||
fit_g1->Draw("same");
|
||||
mapcanvas->Update();
|
||||
TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats");
|
||||
st0->SetX1NDC(0.2);
|
||||
st0->SetX2NDC(0.54);
|
||||
st0->SetY1NDC(0.17);
|
||||
st0->SetY2NDC(0.36);
|
||||
st0->SetBorderSize(0);
|
||||
st0->SetTextColor(kGreen+2);
|
||||
mapcanvas->SetLogx();
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g1_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
mapcanvas->SetLogx(0);
|
||||
|
||||
vector<double> r1_adc_norm;
|
||||
for (size_t j = 0; j < r1_adc.size(); j++) {
|
||||
r1_adc_norm.push_back(r1_adc[j] - fit_g1->Eval(r1_filter[j]));
|
||||
}
|
||||
|
||||
TGraphErrors *norm_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc_norm[0]),&(r1_ferr[0]),&(r1_adcerr[0]));
|
||||
norm_g1->SetMarkerColor(kGreen+2);
|
||||
norm_g1->SetLineColor(kGreen+2);
|
||||
|
||||
TF1* flat_g1 = new TF1("flat_g1","0",rangemin_g1, rangemax_g1);
|
||||
flat_g1->SetLineColor(kGreen+2);
|
||||
|
||||
TF1* lin_g1_p02pc = new TF1("lin_g1_p02pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_p02pc->SetParameter(0,fit_g1->GetParameter(0)/500.);
|
||||
lin_g1_p02pc->SetParameter(1,fit_g1->GetParameter(1)/500.);
|
||||
lin_g1_p02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g1_p05pc = new TF1("lin_g1_p05pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_p05pc->SetParameter(0,fit_g1->GetParameter(0)/200.);
|
||||
lin_g1_p05pc->SetParameter(1,fit_g1->GetParameter(1)/200.);
|
||||
lin_g1_p05pc->SetLineColor(kOrange+1);
|
||||
|
||||
TF1* lin_g1_m02pc = new TF1("lin_g1_m02pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_m02pc->SetParameter(0,fit_g1->GetParameter(0)/-500.);
|
||||
lin_g1_m02pc->SetParameter(1,fit_g1->GetParameter(1)/-500.);
|
||||
lin_g1_m02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g1_m05pc = new TF1("lin_g1_m05pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_m05pc->SetParameter(0,fit_g1->GetParameter(0)/-200.);
|
||||
lin_g1_m05pc->SetParameter(1,fit_g1->GetParameter(1)/-200.);
|
||||
lin_g1_m05pc->SetLineColor(kOrange+1);
|
||||
|
||||
norm_g1->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]");
|
||||
norm_g1->GetYaxis()->SetTitleOffset(0.9);
|
||||
norm_g1->GetXaxis()->SetRangeUser(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end()));
|
||||
norm_g1->SetMinimum(1.5*lin_g1_m05pc->Eval(rangemin_g1));
|
||||
norm_g1->SetMaximum(1.5*lin_g1_p05pc->Eval(rangemin_g1));
|
||||
norm_g1->Draw("AP");
|
||||
flat_g1->Draw("same");
|
||||
lin_g1_p02pc->Draw("same");
|
||||
lin_g1_p05pc->Draw("same");
|
||||
lin_g1_m02pc->Draw("same");
|
||||
lin_g1_m05pc->Draw("same");
|
||||
norm_g1->Draw("P");
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
|
||||
delete norm_g1;
|
||||
delete flat_g1;
|
||||
}
|
||||
|
||||
grap_g1->SetMarkerStyle(20);
|
||||
grap_g1->SetMarkerColor(kGreen+2);
|
||||
grap_g1->SetLineColor(kGreen+2);
|
||||
|
||||
grap_g1->SetMinimum(0);
|
||||
grap_g1->SetMaximum(16000);
|
||||
grap_g1->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
grap_g1->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g1->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g1->Draw("AP");
|
||||
fit_g1->Draw("same");
|
||||
mapcanvas->Update();
|
||||
TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats");
|
||||
st0->SetX1NDC(0.2);
|
||||
st0->SetX2NDC(0.54);
|
||||
st0->SetY1NDC(0.17);
|
||||
st0->SetY2NDC(0.36);
|
||||
st0->SetBorderSize(0);
|
||||
st0->SetTextColor(kGreen+2);
|
||||
mapcanvas->SetLogx();
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g1_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
mapcanvas->SetLogx(0);
|
||||
|
||||
vector<double> r1_adc_norm;
|
||||
for (size_t j = 0; j < r1_adc.size(); j++) {
|
||||
r1_adc_norm.push_back(r1_adc[j] - fit_g1->Eval(r1_filter[j]));
|
||||
}
|
||||
|
||||
TGraphErrors *norm_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc_norm[0]),&(r1_ferr[0]),&(r1_adcerr[0]));
|
||||
norm_g1->SetMarkerColor(kGreen+2);
|
||||
norm_g1->SetLineColor(kGreen+2);
|
||||
|
||||
TF1* flat_g1 = new TF1("flat_g1","0",rangemin_g1, rangemax_g1);
|
||||
flat_g1->SetLineColor(kGreen+2);
|
||||
|
||||
TF1* lin_g1_p02pc = new TF1("lin_g1_p02pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_p02pc->SetParameter(0,fit_g1->GetParameter(0)/500.);
|
||||
lin_g1_p02pc->SetParameter(1,fit_g1->GetParameter(1)/500.);
|
||||
lin_g1_p02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g1_p05pc = new TF1("lin_g1_p05pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_p05pc->SetParameter(0,fit_g1->GetParameter(0)/200.);
|
||||
lin_g1_p05pc->SetParameter(1,fit_g1->GetParameter(1)/200.);
|
||||
lin_g1_p05pc->SetLineColor(kOrange+1);
|
||||
|
||||
TF1* lin_g1_m02pc = new TF1("lin_g1_m02pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_m02pc->SetParameter(0,fit_g1->GetParameter(0)/-500.);
|
||||
lin_g1_m02pc->SetParameter(1,fit_g1->GetParameter(1)/-500.);
|
||||
lin_g1_m02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g1_m05pc = new TF1("lin_g1_m05pc","[0]+[1]*x",rangemin_g1,rangemax_g1);
|
||||
lin_g1_m05pc->SetParameter(0,fit_g1->GetParameter(0)/-200.);
|
||||
lin_g1_m05pc->SetParameter(1,fit_g1->GetParameter(1)/-200.);
|
||||
lin_g1_m05pc->SetLineColor(kOrange+1);
|
||||
|
||||
norm_g1->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]");
|
||||
norm_g1->GetYaxis()->SetTitleOffset(0.9);
|
||||
norm_g1->GetXaxis()->SetRangeUser(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end()));
|
||||
norm_g1->SetMinimum(1.5*lin_g1_m05pc->Eval(rangemin_g1));
|
||||
norm_g1->SetMaximum(1.5*lin_g1_p05pc->Eval(rangemin_g1));
|
||||
norm_g1->Draw("AP");
|
||||
flat_g1->Draw("same");
|
||||
lin_g1_p02pc->Draw("same");
|
||||
lin_g1_p05pc->Draw("same");
|
||||
lin_g1_m02pc->Draw("same");
|
||||
lin_g1_m05pc->Draw("same");
|
||||
norm_g1->Draw("P");
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
|
||||
delete norm_g1;
|
||||
delete flat_g1;
|
||||
}
|
||||
}
|
||||
|
||||
if (r2_adc.size() > 1) {
|
||||
|
||||
grap_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc[0]),&(r2_ferr[0]),&(r2_adcerr[0]));
|
||||
|
||||
rangemin_g2 = 0;
|
||||
if (module_str == "032") {
|
||||
@ -1227,120 +1231,125 @@ int main(int argc, char* argv[]) {
|
||||
rangemin_g2 = lowestFullySwitchedPoint(r2_filter, r1_filter);
|
||||
}
|
||||
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->SetParameter(0, 10000.);
|
||||
fit_g2->SetParameter(1, -0.01);
|
||||
fit_g2->SetLineColor(kRed);
|
||||
fit_g2->SetParName(0,"G2 const");
|
||||
fit_g2->SetParName(1,"G2 grad");
|
||||
grap_g2->Fit(fit_g2,"QR+","");
|
||||
|
||||
g2hist->Fill(fit_g2->GetParameter(1));
|
||||
g2map->Fill(i%NC,i/NC,fit_g2->GetParameter(1));
|
||||
g2erhist->Fill(fit_g2->GetParError(1));
|
||||
g2ermap->Fill(i%NC,i/NC,fit_g2->GetParError(1));
|
||||
if (rangemax_g2 > rangemin_g2) {
|
||||
grap_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc[0]),&(r2_ferr[0]),&(r2_adcerr[0]));
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
(i >= (256*1024)+10 && i < (256*1024)+10+10) || // double
|
||||
(i >= (257*1024)+10 && i < (257*1024)+10+10) || // next to double
|
||||
(i == (255*1024)+255) // quad
|
||||
) {
|
||||
fit_g2 = new TF1("fit_g2","[0]+[1]*x",rangemin_g2, rangemax_g2);
|
||||
fit_g2->SetParameter(0, 10000.);
|
||||
fit_g2->SetParameter(1, -0.01);
|
||||
fit_g2->SetLineColor(kRed);
|
||||
fit_g2->SetParName(0,"G2 const");
|
||||
fit_g2->SetParName(1,"G2 grad");
|
||||
grap_g2->Fit(fit_g2,"QR+","");
|
||||
|
||||
g2hist->Fill(fit_g2->GetParameter(1));
|
||||
g2map->Fill(i%NC,i/NC,fit_g2->GetParameter(1));
|
||||
g2erhist->Fill(fit_g2->GetParError(1));
|
||||
g2ermap->Fill(i%NC,i/NC,fit_g2->GetParError(1));
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
(i >= (256*1024)+10 && i < (256*1024)+10+10) || // double
|
||||
(i >= (257*1024)+10 && i < (257*1024)+10+10) || // next to double
|
||||
(i == (255*1024)+255) // quad
|
||||
) {
|
||||
|
||||
string pixel_type = "x";
|
||||
if (i >= 58000 && i < 58000+10) {
|
||||
pixel_type = "b";
|
||||
} else if (i >= 10 && i < 10+10) {
|
||||
pixel_type = "e";
|
||||
} else if (i >= 1024+10 && i < 1024+10+10) {
|
||||
pixel_type = "ie";
|
||||
} else if (i >= (256*1024)+10 && i < (256*1024)+10+10) {
|
||||
pixel_type = "d";
|
||||
} else if (i >= (257*1024)+10 && i < (257*1024)+10+10) {
|
||||
pixel_type = "ntd";
|
||||
} else if (i == (255*1024)+255) {
|
||||
pixel_type = "q";
|
||||
string pixel_type = "x";
|
||||
if (i >= 58000 && i < 58000+10) {
|
||||
pixel_type = "b";
|
||||
} else if (i >= 10 && i < 10+10) {
|
||||
pixel_type = "e";
|
||||
} else if (i >= 1024+10 && i < 1024+10+10) {
|
||||
pixel_type = "ie";
|
||||
} else if (i >= (256*1024)+10 && i < (256*1024)+10+10) {
|
||||
pixel_type = "d";
|
||||
} else if (i >= (257*1024)+10 && i < (257*1024)+10+10) {
|
||||
pixel_type = "ntd";
|
||||
} else if (i == (255*1024)+255) {
|
||||
pixel_type = "q";
|
||||
}
|
||||
|
||||
grap_g2->SetMarkerStyle(20);
|
||||
grap_g2->SetMarkerColor(kRed);
|
||||
grap_g2->SetLineColor(kRed);
|
||||
|
||||
grap_g2->SetMinimum(0);
|
||||
grap_g2->SetMaximum(16000);
|
||||
grap_g2->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
grap_g2->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g2->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g2->Draw("AP");
|
||||
fit_g2->Draw("same");
|
||||
mapcanvas->Update();
|
||||
TPaveStats *st0 = (TPaveStats*)grap_g2->FindObject("stats");
|
||||
st0->SetX1NDC(0.2);
|
||||
st0->SetX2NDC(0.54);
|
||||
st0->SetY1NDC(0.17);
|
||||
st0->SetY2NDC(0.36);
|
||||
st0->SetBorderSize(0);
|
||||
st0->SetTextColor(kRed);
|
||||
mapcanvas->SetLogx();
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g2_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
mapcanvas->SetLogx(0);
|
||||
|
||||
vector<double> r2_adc_norm;
|
||||
for (size_t j = 0; j < r2_adc.size(); j++) {
|
||||
r2_adc_norm.push_back(r2_adc[j] - fit_g2->Eval(r2_filter[j]));
|
||||
}
|
||||
|
||||
TGraphErrors *norm_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc_norm[0]),&(r2_ferr[0]),&(r2_adcerr[0]));
|
||||
norm_g2->SetMarkerColor(kRed);
|
||||
norm_g2->SetLineColor(kRed);
|
||||
|
||||
TF1* flat_g2 = new TF1("flat_g2","0",rangemin_g2, rangemax_g2);
|
||||
flat_g2->SetLineColor(kRed);
|
||||
|
||||
TF1* lin_g2_p02pc = new TF1("lin_g2_p02pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_p02pc->SetParameter(0,fit_g2->GetParameter(0)/500.);
|
||||
lin_g2_p02pc->SetParameter(1,fit_g2->GetParameter(1)/500.);
|
||||
lin_g2_p02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g2_p05pc = new TF1("lin_g2_p05pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_p05pc->SetParameter(0,fit_g2->GetParameter(0)/200.);
|
||||
lin_g2_p05pc->SetParameter(1,fit_g2->GetParameter(1)/200.);
|
||||
lin_g2_p05pc->SetLineColor(kOrange+1);
|
||||
|
||||
TF1* lin_g2_m02pc = new TF1("lin_g2_m02pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_m02pc->SetParameter(0,fit_g2->GetParameter(0)/-500.);
|
||||
lin_g2_m02pc->SetParameter(1,fit_g2->GetParameter(1)/-500.);
|
||||
lin_g2_m02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g2_m05pc = new TF1("lin_g2_m05pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_m05pc->SetParameter(0,fit_g2->GetParameter(0)/-200.);
|
||||
lin_g2_m05pc->SetParameter(1,fit_g2->GetParameter(1)/-200.);
|
||||
lin_g2_m05pc->SetLineColor(kOrange+1);
|
||||
|
||||
norm_g2->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
norm_g2->GetYaxis()->SetTitle("Normalised ADC [ADU]");
|
||||
norm_g2->GetYaxis()->SetTitleOffset(0.9);
|
||||
norm_g2->GetXaxis()->SetRangeUser(*min_element(r2_filter.begin(),r2_filter.end()),*max_element(r2_filter.begin(),r2_filter.end()));
|
||||
norm_g2->SetMinimum(1.5*lin_g2_m05pc->Eval(rangemin_g2));
|
||||
norm_g2->SetMaximum(1.5*lin_g2_p05pc->Eval(rangemin_g2));
|
||||
norm_g2->Draw("AP");
|
||||
flat_g2->Draw("same");
|
||||
lin_g2_p02pc->Draw("same");
|
||||
lin_g2_p05pc->Draw("same");
|
||||
lin_g2_m02pc->Draw("same");
|
||||
lin_g2_m05pc->Draw("same");
|
||||
norm_g2->Draw("P");
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g2norm_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
|
||||
delete norm_g2;
|
||||
delete flat_g2;
|
||||
}
|
||||
|
||||
grap_g2->SetMarkerStyle(20);
|
||||
grap_g2->SetMarkerColor(kRed);
|
||||
grap_g2->SetLineColor(kRed);
|
||||
|
||||
grap_g2->SetMinimum(0);
|
||||
grap_g2->SetMaximum(16000);
|
||||
grap_g2->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
grap_g2->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g2->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g2->Draw("AP");
|
||||
fit_g2->Draw("same");
|
||||
mapcanvas->Update();
|
||||
TPaveStats *st0 = (TPaveStats*)grap_g2->FindObject("stats");
|
||||
st0->SetX1NDC(0.2);
|
||||
st0->SetX2NDC(0.54);
|
||||
st0->SetY1NDC(0.17);
|
||||
st0->SetY2NDC(0.36);
|
||||
st0->SetBorderSize(0);
|
||||
st0->SetTextColor(kRed);
|
||||
mapcanvas->SetLogx();
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g2_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
mapcanvas->SetLogx(0);
|
||||
|
||||
vector<double> r2_adc_norm;
|
||||
for (size_t j = 0; j < r2_adc.size(); j++) {
|
||||
r2_adc_norm.push_back(r2_adc[j] - fit_g2->Eval(r2_filter[j]));
|
||||
}
|
||||
|
||||
TGraphErrors *norm_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc_norm[0]),&(r2_ferr[0]),&(r2_adcerr[0]));
|
||||
norm_g2->SetMarkerColor(kRed);
|
||||
norm_g2->SetLineColor(kRed);
|
||||
|
||||
TF1* flat_g2 = new TF1("flat_g2","0",rangemin_g2, rangemax_g2);
|
||||
flat_g2->SetLineColor(kRed);
|
||||
|
||||
TF1* lin_g2_p02pc = new TF1("lin_g2_p02pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_p02pc->SetParameter(0,fit_g2->GetParameter(0)/500.);
|
||||
lin_g2_p02pc->SetParameter(1,fit_g2->GetParameter(1)/500.);
|
||||
lin_g2_p02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g2_p05pc = new TF1("lin_g2_p05pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_p05pc->SetParameter(0,fit_g2->GetParameter(0)/200.);
|
||||
lin_g2_p05pc->SetParameter(1,fit_g2->GetParameter(1)/200.);
|
||||
lin_g2_p05pc->SetLineColor(kOrange+1);
|
||||
|
||||
TF1* lin_g2_m02pc = new TF1("lin_g2_m02pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_m02pc->SetParameter(0,fit_g2->GetParameter(0)/-500.);
|
||||
lin_g2_m02pc->SetParameter(1,fit_g2->GetParameter(1)/-500.);
|
||||
lin_g2_m02pc->SetLineColor(kOrange);
|
||||
|
||||
TF1* lin_g2_m05pc = new TF1("lin_g2_m05pc","[0]+[1]*x",rangemin_g2,rangemax_g2);
|
||||
lin_g2_m05pc->SetParameter(0,fit_g2->GetParameter(0)/-200.);
|
||||
lin_g2_m05pc->SetParameter(1,fit_g2->GetParameter(1)/-200.);
|
||||
lin_g2_m05pc->SetLineColor(kOrange+1);
|
||||
|
||||
norm_g2->GetXaxis()->SetTitle("Integration time [#mus]");
|
||||
norm_g2->GetYaxis()->SetTitle("Normalised ADC [ADU]");
|
||||
norm_g2->GetYaxis()->SetTitleOffset(0.9);
|
||||
norm_g2->GetXaxis()->SetRangeUser(*min_element(r2_filter.begin(),r2_filter.end()),*max_element(r2_filter.begin(),r2_filter.end()));
|
||||
norm_g2->SetMinimum(1.5*lin_g2_m05pc->Eval(rangemin_g2));
|
||||
norm_g2->SetMaximum(1.5*lin_g2_p05pc->Eval(rangemin_g2));
|
||||
norm_g2->Draw("AP");
|
||||
flat_g2->Draw("same");
|
||||
lin_g2_p02pc->Draw("same");
|
||||
lin_g2_p05pc->Draw("same");
|
||||
lin_g2_m02pc->Draw("same");
|
||||
lin_g2_m05pc->Draw("same");
|
||||
norm_g2->Draw("P");
|
||||
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_g2norm_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
|
||||
mapcanvas->SaveAs((const char *)(savename));
|
||||
|
||||
delete norm_g2;
|
||||
delete flat_g2;
|
||||
}
|
||||
}
|
||||
|
||||
if (r0_adc.size() > 1 && r1_adc.size() > 1) {
|
||||
if (rangemax_g0 > rangemin_g0 && rangemax_g1 > rangemin_g1) {
|
||||
|
||||
g0overg1hist->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
|
||||
g0overg1erhist->Fill(abs(fit_g0->GetParameter(1)/fit_g1->GetParameter(1))*sqrt(pow((fit_g0->GetParError(1)/fit_g0->GetParameter(1)),2) + pow((fit_g1->GetParError(1)/fit_g1->GetParameter(1)),2)));
|
||||
@ -1368,7 +1377,7 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
|
||||
|
||||
if (r1_adc.size() > 1 && r2_adc.size() > 1) {
|
||||
if (rangemax_g1 > rangemin_g1 && rangemax_g2 > rangemin_g2) {
|
||||
|
||||
g1overg2hist->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
|
||||
g1overg2erhist->Fill(abs(fit_g1->GetParameter(1)/fit_g2->GetParameter(1))*sqrt(pow((fit_g1->GetParError(1)/fit_g1->GetParameter(1)),2) + pow((fit_g2->GetParError(1)/fit_g2->GetParameter(1)),2)));
|
||||
@ -1395,7 +1404,9 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((r0_adc.size() > 1 && r1_adc.size() > 1) || (r1_adc.size() > 1 && r2_adc.size() > 1)) {
|
||||
if ((rangemax_g0 > rangemin_g0 && rangemax_g1 > rangemin_g1) ||
|
||||
(rangemax_g1 > rangemin_g1 && rangemax_g2 > rangemin_g2)) {
|
||||
|
||||
if ((i >= 58000 && i < 58000+10) || // bulk
|
||||
(i >= 10 && i < 10+10) || // edge
|
||||
(i >= 1024+10 && i < 1024+10+10) || // inner edge
|
||||
@ -1419,7 +1430,7 @@ int main(int argc, char* argv[]) {
|
||||
pixel_type = "q";
|
||||
}
|
||||
|
||||
if (r0_adc.size() > 1) {
|
||||
if (rangemax_g0 > rangemin_g0) {
|
||||
grap_g0->SetMarkerStyle(20);
|
||||
grap_g0->SetMarkerColor(kBlue);
|
||||
grap_g0->SetLineColor(kBlue);
|
||||
@ -1433,7 +1444,7 @@ int main(int argc, char* argv[]) {
|
||||
grap_g1->GetFunction("fit_g1")->Delete();
|
||||
grap_g1->FindObject("stats")->Delete();
|
||||
|
||||
if (r2_adc.size() > 1) {
|
||||
if (rangemax_g2 > rangemin_g2) {
|
||||
grap_g2->SetMarkerStyle(20);
|
||||
grap_g2->SetMarkerColor(kRed);
|
||||
grap_g2->SetLineColor(kRed);
|
||||
@ -1454,10 +1465,10 @@ int main(int argc, char* argv[]) {
|
||||
grap_g1->GetYaxis()->SetTitle("ADC [ADU]");
|
||||
grap_g1->GetYaxis()->SetTitleOffset(0.9);
|
||||
grap_g1->Draw("AP");
|
||||
if (r2_adc.size() > 1) {
|
||||
if (rangemax_g2 > rangemin_g2) {
|
||||
grap_g2->Draw("P");
|
||||
}
|
||||
if (r0_adc.size() > 1) {
|
||||
if (rangemax_g0 > rangemin_g0) {
|
||||
grap_g0->Draw("P");
|
||||
}
|
||||
mapcanvas->SetLogx();
|
||||
|
Reference in New Issue
Block a user