Rejig of the fitting. Added treatment of G0 to see if G0-G1 ratio is measurable with CS.

Removed diff from linearity plots. Renamed variables to better follow g0, g1, g2 convention.
Results of G-G2 ratio unchanged.
This commit is contained in:
redford_s
2018-04-03 16:05:03 +02:00
parent b664461426
commit 4f5dfb1190
+547 -226
View File
@@ -29,7 +29,6 @@ int main(int argc, char* argv[]) {
cout << "arg 1: specify module number" << endl;
cout << "arg 2: specify data location" << endl;
cout << "arg 3: specify data file" << endl;
cout << "eg: ./JFMC_CurrentSourceScan 006 ..." << endl;
cout << " " << endl;
exit(1);
}
@@ -575,18 +574,24 @@ int main(int argc, char* argv[]) {
}
}
TH2F *g0map = new TH2F("g0map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g0ermap = new TH2F("g0ermap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g1map = new TH2F("g1map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g1ermap = new TH2F("g1ermap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g2map = new TH2F("g2map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g2ermap = new TH2F("g2ermap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g0overg1map = new TH2F("g0overg1map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g0overg1ermap = new TH2F("g0overg1ermap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g1overg2map = new TH2F("g1overg2map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *g1overg2ermap = new TH2F("g1overg2ermap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *diffFromLinG1map = new TH2F("diffFromLinG1map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH2F *diffFromLinG2map = new TH2F("diffFromLinG2map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5);
TH1F *g0hist = new TH1F("g0hist","",100,10000,50000);
TH1F *g0erhist = new TH1F("g0erhist","",100,0,200);
TH1F *g1hist = 0;
if (module_str == "032") {
g1hist = new TH1F("g1hist","",100,-12000,-4000);
@@ -603,11 +608,18 @@ int main(int argc, char* argv[]) {
}
TH1F *g2erhist = new TH1F("g2erhist","",100,0,10);
TH1F *g0overg1hist = new TH1F("g0overg1hist","",100,-50,0);
TH1F *g0overg1erhist = new TH1F("g0overg1erhist","",100,0,1);
TH1F *g1overg2hist = new TH1F("g1overg2hist","",100,11,15);
TH1F *g1overg2erhist = new TH1F("g1overg2erhist","",100,0,1);
TH1F *diffFromLinG1hist = new TH1F("diffFromLinG1hist","",100,-0.05,0.05);
TH1F *diffFromLinG2hist = new TH1F("diffFromLinG2hist","",100,-0.1,0.1);
TH1F *g0overg1_isEdge = new TH1F("g0overg1_isEdge","",100,-50,0);
TH1F *g0overg1_isInnerEdge = new TH1F("g0overg1_isInnerEdge","",100,-50,0);
TH1F *g0overg1_isDouble = new TH1F("g0overg1_isDouble","",100,-50,0);
TH1F *g0overg1_isNextToDouble = new TH1F("g0overg1_isNextToDouble","",100,-50,0);
TH1F *g0overg1_isQuad = new TH1F("g0overg1_isQuad","",100,-50,0);
TH1F *g0overg1_isBulk = new TH1F("g0overg1_isBulk","",100,-50,0);
TH1F *g1overg2_isEdge = new TH1F("g1overg2_isEdge","",100,11,15);
TH1F *g1overg2_isInnerEdge = new TH1F("g1overg2_isInnerEdge","",100,11,15);
@@ -689,7 +701,12 @@ int main(int argc, char* argv[]) {
}
}
mapcanvas->cd();
mapcanvas->SetLeftMargin(0.13);
mapcanvas->SetRightMargin(0.05);
for (int i = 0; i < NCH; i++) {
if (pixel_mask[i] == 1) {
vector<double> r0_adc;
@@ -702,10 +719,10 @@ int main(int argc, char* argv[]) {
vector<double> r1_adcerr;
vector<double> r1_ferr;
vector<double> r3_adc;
vector<double> r3_filter;
vector<double> r3_adcerr;
vector<double> r3_ferr;
vector<double> r2_adc;
vector<double> r2_filter;
vector<double> r2_adcerr;
vector<double> r2_ferr;
// filter out points at zero and points with 0 error (mean taken from one entry in hist)
int m_max = 0;
@@ -734,104 +751,46 @@ int main(int argc, char* argv[]) {
r1_ferr.push_back(0.);
}
if (adcmap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1) != 0 && adcermap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1) > 0) {
r3_adc.push_back(adcmap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1));
r3_filter.push_back(filter[m]);
r3_adcerr.push_back(adcermap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1));
r3_ferr.push_back(0.);
r2_adc.push_back(adcmap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1));
r2_filter.push_back(filter[m]);
r2_adcerr.push_back(adcermap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1));
r2_ferr.push_back(0.);
}
}
if (r1_adc.size() > 1 && r3_adc.size() > 1) {
TGraphErrors *grap_g0 = 0;
TGraphErrors *grap_g1 = 0;
TGraphErrors *grap_g2 = 0;
TGraphErrors *grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0]));
TGraphErrors *grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0]));
TGraphErrors *grap_g2 = new TGraphErrors(r3_adc.size(),&(r3_filter[0]),&(r3_adc[0]),&(r3_ferr[0]),&(r3_adcerr[0]));
TF1 *fit_g0 = 0;
TF1 *fit_g1 = 0;
TF1 *fit_g2 = 0;
double rangemin2 = 0;
if (module_str == "032") {
rangemin2 = 0.75;
} else if (module_str == "008" || module_str == "040" || module_str == "044") {
rangemin2 = *min_element(r1_filter.begin(),r1_filter.end());
} else if (module_str == "006" || module_str == "021" || module_str == "022" || module_str == "035" || module_str == "039" || module_str == "045" || module_str == "065" || module_str == "069" || module_str == "079" || module_str == "068" || module_str == "088" || module_str == "055" || module_str == "059" || module_str == "094" || module_str == "066" || module_str == "048" || module_str == "050" || module_str == "057" || module_str == "062" || module_str == "064" || module_str == "067" || module_str == "080" || module_str == "086" || module_str == "100" || module_str == "102" || module_str == "103" || module_str == "104" || module_str == "108" || module_str == "109" || module_str == "110" || module_str == "113" || module_str == "119" || module_str == "124" || module_str == "126") {
rangemin2 = 2.;
}
double rangemax2 = *max_element(r1_filter.begin(),r1_filter.end());
TF1 *fit2 = new TF1("fit2","[0]+[1]*x",rangemin2,rangemax2);
fit2->SetParameter(0, 10000.);
fit2->SetParameter(1, -0.1);
fit2->SetLineColor(kGreen+2);
fit2->SetParName(0,"G1 const");
fit2->SetParName(1,"G1 grad");
grap_g1->Fit(fit2,"QR","");
double rangemin_g0;
double rangemax_g0;
double rangemin_g1;
double rangemax_g1;
double rangemin_g2;
double rangemax_g2;
g1hist->Fill(fit2->GetParameter(1));
g1map->Fill(i%NC,i/NC,fit2->GetParameter(1));
g1erhist->Fill(fit2->GetParError(1));
g1ermap->Fill(i%NC,i/NC,fit2->GetParError(1));
if (r0_adc.size() > 1) {
double g1residsum = 0.;
double g1residn = 0.;
for (size_t it = 0; it < r1_adc.size(); it++) {
if (r1_filter[it] >= rangemin2) {
diffFromLinG1hist->Fill((r1_adc[it] - fit2->Eval(r1_filter[it])) / r1_adc[it]);
g1residsum = g1residsum + ((r1_adc[it] - fit2->Eval(r1_filter[it])) / r1_adc[it]);
g1residn = g1residn + 1.;
}
}
diffFromLinG1map->Fill(i%NC,i/NC,g1residsum/g1residn);
double rangemin3 = 0;
if (module_str == "032") {
rangemin3 = 5;
} else {
rangemin3 = *min_element(r3_filter.begin(),r3_filter.end());
}
double rangemax3 = *max_element(r3_filter.begin(),r3_filter.end());
TF1 *fit3 = new TF1("fit3","[0]+[1]*x",rangemin3, rangemax3);
fit3->SetParameter(0, 10000.);
fit3->SetParameter(1, -0.01);
fit3->SetLineColor(kRed);
fit3->SetParName(0,"G2 const");
fit3->SetParName(1,"G2 grad");
grap_g2->Fit(fit3,"QR+","");
grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0]));
g2hist->Fill(fit3->GetParameter(1));
g2map->Fill(i%NC,i/NC,fit3->GetParameter(1));
g2erhist->Fill(fit3->GetParError(1));
g2ermap->Fill(i%NC,i/NC,fit3->GetParError(1));
rangemin_g0 = 0.15;
rangemax_g0 = *max_element(r0_filter.begin(),r0_filter.end());
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+","");
double g2residsum = 0.;
double g2residn = 0.;
for (size_t it = 0; it < r3_adc.size(); it++) {
diffFromLinG2hist->Fill((r3_adc[it] - fit3->Eval(r3_filter[it])) / r3_adc[it]);
g2residsum = g2residsum + ((r3_adc[it] - fit3->Eval(r3_filter[it])) / r3_adc[it]);
g2residn = g2residn + 1.;
}
diffFromLinG2map->Fill(i%NC,i/NC,g2residsum/g2residn);
g1overg2hist->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
g1overg2erhist->Fill(abs(fit2->GetParameter(1)/fit3->GetParameter(1))*sqrt(pow((fit2->GetParError(1)/fit2->GetParameter(1)),2) + pow((fit3->GetParError(1)/fit3->GetParameter(1)),2)));
g1overg2map->Fill(i%NC,i/NC,fit2->GetParameter(1) / fit3->GetParameter(1));
g1overg2ermap->Fill(i%NC,i/NC,abs(fit2->GetParameter(1)/fit3->GetParameter(1))*sqrt(pow((fit2->GetParError(1)/fit2->GetParameter(1)),2) + pow((fit3->GetParError(1)/fit3->GetParameter(1)),2)));
if (isEdge(i)) {
g1overg2_isEdge->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
}
if (isInnerEdge(i)) {
g1overg2_isInnerEdge->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
}
if (isDouble(i)) {
g1overg2_isDouble->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
}
if (isNextToDouble(i)) {
g1overg2_isNextToDouble->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
}
if (isQuad(i)) {
g1overg2_isQuad->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
}
if (isBulk(i)) {
g1overg2_isBulk->Fill(fit2->GetParameter(1) / fit3->GetParameter(1));
}
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
@@ -856,127 +815,406 @@ int main(int argc, char* argv[]) {
pixel_type = "q";
}
mapcanvas->cd();
mapcanvas->SetLeftMargin(0.13);
mapcanvas->SetRightMargin(0.05);
grap_g0->SetMarkerStyle(20);
grap_g1->SetMarkerStyle(20);
grap_g2->SetMarkerStyle(20);
grap_g0->SetMarkerColor(kBlue);
grap_g1->SetMarkerColor(kGreen+2);
grap_g2->SetMarkerColor(kRed);
grap_g0->SetLineColor(kBlue);
grap_g1->SetLineColor(kGreen+2);
grap_g2->SetLineColor(kRed);
TF1 *fit2_e = new TF1("fit2_e","[0]+[1]*x",0.009,1.1E3);
TF1 *fit3_e = new TF1("fit3_e","[0]+[1]*x",0.009,1.1E3);
fit2_e->SetParameters(fit2->GetParameter(0),fit2->GetParameter(1));
fit2_e->SetLineColor(kGreen+2);
fit2_e->SetLineStyle(2);
fit3_e->SetParameters(fit3->GetParameter(0),fit3->GetParameter(1));
fit3_e->SetLineColor(kRed);
fit3_e->SetLineStyle(2);
if (module_str == "021" || module_str == "035" || module_str == "039" || module_str == "045" || module_str == "048" || module_str == "050" || module_str == "057" || module_str == "062" || module_str == "064" || module_str == "067" || module_str == "080" || module_str == "086" || module_str == "100" || module_str == "102" || module_str == "103" || module_str == "104" || module_str == "108" || module_str == "109" || module_str == "110" || module_str == "113" || module_str == "119" || module_str == "124" || module_str == "126") {
grap_g1->GetXaxis()->SetLimits(0.009,5E2);
} else {
grap_g1->GetXaxis()->SetLimits(0.009,1.1E2);
}
grap_g1->SetMinimum(0);
grap_g1->SetMaximum(20000);
grap_g1->GetXaxis()->SetTitle("Integration time [#mus]");
grap_g1->GetYaxis()->SetTitle("ADC [ADU]");
grap_g1->GetYaxis()->SetTitleOffset(0.9);
grap_g1->Draw("AP");
fit2->Draw("same");
TF1 *extended_g0 = new TF1("extended_g0","[0]+[1]*x",0.009,1.1E3);
extended_g0->SetParameters(fit_g0->GetParameter(0),fit_g0->GetParameter(1));
extended_g0->SetLineColor(kBlue);
extended_g0->SetLineStyle(2);
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_g1->FindObject("stats");
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(kGreen+2);
grap_g2->Draw("P");
fit3->Draw("same");
mapcanvas->Update();
TPaveStats *st1 = (TPaveStats*)grap_g2->FindObject("stats");
st1->SetX1NDC(0.6);
st1->SetX2NDC(0.94);
st1->SetY1NDC(0.71);
st1->SetY2NDC(0.90);
st1->SetBorderSize(0);
st1->SetTextColor(kRed);
grap_g0->Draw("P");
fit2_e->Draw("same");
fit3_e->Draw("same");
st0->SetTextColor(kBlue);
extended_g0->Draw("same");
mapcanvas->SetLogx();
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
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->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 extended_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 = 0;
if (module_str == "032") {
rangemin_g1 = 0.75;
} else if (module_str == "008" || module_str == "040" || module_str == "044") {
rangemin_g1 = *min_element(r1_filter.begin(),r1_filter.end());
} else if (module_str == "006" || module_str == "021" || module_str == "022" || module_str == "035" || module_str == "039" || module_str == "045" || module_str == "065" || module_str == "069" || module_str == "079" || module_str == "068" || module_str == "088" || module_str == "055" || module_str == "059" || module_str == "094" || module_str == "066" || module_str == "048" || module_str == "050" || module_str == "057" || module_str == "062" || module_str == "064" || module_str == "067" || module_str == "080" || module_str == "086" || module_str == "100" || module_str == "102" || module_str == "103" || module_str == "104" || module_str == "108" || module_str == "109" || module_str == "110" || module_str == "113" || module_str == "119" || module_str == "124" || module_str == "126") {
rangemin_g1 = 2.;
}
rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end());
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";
}
grap_g1->SetMarkerStyle(20);
grap_g1->SetMarkerColor(kGreen+2);
grap_g1->SetLineColor(kGreen+2);
TF1 *extended_g1 = new TF1("extended_g1","[0]+[1]*x",0.009,1.1E3);
extended_g1->SetParameters(fit_g1->GetParameter(0),fit_g1->GetParameter(1));
extended_g1->SetLineColor(kGreen+2);
extended_g1->SetLineStyle(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);
extended_g1->Draw("same");
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);
// normalise
vector<double> r1_adc_norm;
vector<double> r3_adc_norm;
for (size_t j = 0; j < r1_adc.size(); j++) {
r1_adc_norm.push_back(r1_adc[j] - fit2->Eval(r1_filter[j]));
r1_adc_norm.push_back(r1_adc[j] - fit_g1->Eval(r1_filter[j]));
}
for (size_t j = 0; j < r3_adc.size(); j++) {
r3_adc_norm.push_back(r3_adc[j] - fit3->Eval(r3_filter[j]));
}
TGraphErrors *grap1_norm = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc_norm[0]),&(r1_ferr[0]),&(r1_adcerr[0]));
TGraphErrors *grap2_norm = new TGraphErrors(r3_adc.size(),&(r3_filter[0]),&(r3_adc_norm[0]),&(r3_ferr[0]),&(r3_adcerr[0]));
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",rangemin2, rangemax2);
TF1* flat_g2 = new TF1("flat_g2","0",rangemin3, rangemax3);
grap1_norm->SetMarkerColor(kGreen+2);
grap1_norm->SetLineColor(kGreen+2);
TF1* flat_g1 = new TF1("flat_g1","0",rangemin_g1, rangemax_g1);
flat_g1->SetLineColor(kGreen+2);
grap1_norm->GetXaxis()->SetTitle("Integration time [#mus]");
grap1_norm->GetYaxis()->SetTitle("Normalised ADC [ADU]");
grap1_norm->GetYaxis()->SetTitleOffset(0.9);
grap1_norm->SetMinimum(-100);
grap1_norm->SetMaximum(100);
grap1_norm->Draw("AP");
norm_g1->GetXaxis()->SetTitle("Integration time [#mus]");
norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]");
norm_g1->GetYaxis()->SetTitleOffset(0.9);
norm_g1->SetMinimum(-100);
norm_g1->SetMaximum(100);
norm_g1->Draw("AP");
flat_g1->Draw("same");
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));
grap2_norm->SetMarkerColor(kRed);
grap2_norm->SetLineColor(kRed);
delete norm_g1;
delete extended_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") {
rangemin_g2 = 5;
} else {
rangemin_g2 = *min_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->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";
}
grap_g2->SetMarkerStyle(20);
grap_g2->SetMarkerColor(kRed);
grap_g2->SetLineColor(kRed);
TF1 *extended_g2 = new TF1("extended_g2","[0]+[1]*x",0.009,1.1E3);
extended_g2->SetParameters(fit_g2->GetParameter(0),fit_g2->GetParameter(1));
extended_g2->SetLineColor(kRed);
extended_g2->SetLineStyle(2);
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);
extended_g2->Draw("same");
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);
grap2_norm->GetXaxis()->SetTitle("Integration time [#mus]");
grap2_norm->GetYaxis()->SetTitle("Normalised ADC [ADU]");
grap2_norm->GetYaxis()->SetTitleOffset(0.9);
grap2_norm->SetMinimum(-100);
grap2_norm->SetMaximum(100);
grap2_norm->Draw("AP");
norm_g2->GetXaxis()->SetTitle("Integration time [#mus]");
norm_g2->GetYaxis()->SetTitle("Normalised ADC [ADU]");
norm_g2->GetYaxis()->SetTitleOffset(0.9);
norm_g2->SetMinimum(-100);
norm_g2->SetMaximum(100);
norm_g2->Draw("AP");
flat_g2->Draw("same");
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));
mapcanvas->SetLeftMargin(0.1);
mapcanvas->SetRightMargin(0.13);
delete fit2_e;
delete fit3_e;
delete grap1_norm;
delete grap2_norm;
delete norm_g2;
delete extended_g2;
delete flat_g2;
}
delete grap_g1;
delete grap_g2;
delete fit2;
delete fit3;
}
if (r0_adc.size() > 1 && r1_adc.size() > 1) {
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)));
g0overg1map->Fill(i%NC,i/NC,fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
g0overg1ermap->Fill(i%NC,i/NC,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)));
if (isEdge(i)) {
g0overg1_isEdge->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
}
if (isInnerEdge(i)) {
g0overg1_isInnerEdge->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
}
if (isDouble(i)) {
g0overg1_isDouble->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
}
if (isNextToDouble(i)) {
g0overg1_isNextToDouble->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
}
if (isQuad(i)) {
g0overg1_isQuad->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
}
if (isBulk(i)) {
g0overg1_isBulk->Fill(fit_g0->GetParameter(1) / fit_g1->GetParameter(1));
}
}
if (r1_adc.size() > 1 && r2_adc.size() > 1) {
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)));
g1overg2map->Fill(i%NC,i/NC,fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
g1overg2ermap->Fill(i%NC,i/NC,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)));
if (isEdge(i)) {
g1overg2_isEdge->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
}
if (isInnerEdge(i)) {
g1overg2_isInnerEdge->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
}
if (isDouble(i)) {
g1overg2_isDouble->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
}
if (isNextToDouble(i)) {
g1overg2_isNextToDouble->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
}
if (isQuad(i)) {
g1overg2_isQuad->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
}
if (isBulk(i)) {
g1overg2_isBulk->Fill(fit_g1->GetParameter(1) / fit_g2->GetParameter(1));
}
}
if (r0_adc.size() > 1 && r1_adc.size() > 1 && r2_adc.size() > 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";
}
grap_g0->SetMarkerStyle(20);
grap_g1->SetMarkerStyle(20);
grap_g2->SetMarkerStyle(20);
grap_g0->SetMarkerColor(kBlue);
grap_g1->SetMarkerColor(kGreen+2);
grap_g2->SetMarkerColor(kRed);
grap_g0->SetLineColor(kBlue);
grap_g1->SetLineColor(kGreen+2);
grap_g2->SetLineColor(kRed);
grap_g0->GetFunction("fit_g0")->Delete();
grap_g0->FindObject("stats")->Delete();
grap_g1->GetFunction("fit_g1")->Delete();
grap_g1->FindObject("stats")->Delete();
grap_g2->GetFunction("fit_g2")->Delete();
grap_g2->FindObject("stats")->Delete();
if (module_str == "021" || module_str == "035" || module_str == "039" || module_str == "045" || module_str == "048" || module_str == "050" || module_str == "057" || module_str == "062" || module_str == "064" || module_str == "067" || module_str == "080" || module_str == "086" || module_str == "100" || module_str == "102" || module_str == "103" || module_str == "104" || module_str == "108" || module_str == "109" || module_str == "110" || module_str == "113" || module_str == "119" || module_str == "124" || module_str == "126") {
grap_g1->GetXaxis()->SetLimits(0.009,5E2);
} else {
grap_g1->GetXaxis()->SetLimits(0.009,1.1E2);
}
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");
grap_g2->Draw("P");
grap_g0->Draw("P");
mapcanvas->SetLogx();
sprintf(savename,"plots/M%s/CurrentSource/pixel_%s_%d_M%s.png", module_str.c_str(), pixel_type.c_str(), i, module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
mapcanvas->SetLogx(0);
}
}
delete fit_g0;
delete fit_g1;
delete fit_g2;
delete grap_g0;
delete grap_g1;
delete grap_g2;
}
}
mapcanvas->SetLeftMargin(0.1);
mapcanvas->SetRightMargin(0.13);
c1->cd();
TPaveText *pave = new TPaveText(0.86,0.95,0.91,0.98,"blNDC");
@@ -985,6 +1223,13 @@ int main(int argc, char* argv[]) {
pave->SetTextSize(0.06);
pave->SetTextAlign(32);
g0hist->GetXaxis()->SetTitle("G0 gradient");
g0hist->GetXaxis()->SetTitleOffset(1.1);
g0hist->GetYaxis()->SetTitleOffset(1.5);
g0hist->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0hist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g1hist->GetXaxis()->SetTitle("G1 gradient");
g1hist->GetXaxis()->SetTitleOffset(1.1);
g1hist->GetYaxis()->SetTitleOffset(1.5);
@@ -999,6 +1244,38 @@ int main(int argc, char* argv[]) {
sprintf(savename,"plots/M%s/CurrentSource/g2hist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g0overg1hist->GetXaxis()->SetTitle("G0 / G1");
g0overg1hist->GetXaxis()->SetTitleOffset(1.1);
g0overg1hist->GetYaxis()->SetTitleOffset(1.5);
g0overg1hist->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0overg1hist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g0overg1hist->Fit("gaus");
g0overg1hist->Draw();
c1->Update();
TPaveText *pave2 = new TPaveText(0.6,0.8,0.94,0.94,"blNDC");
pave2->SetBorderSize(0);
pave2->SetFillStyle(0);
pave2->SetTextSize(0.04);
pave2->SetTextAlign(32);
TF1* g0overg1hist_gaus = g0overg1hist->GetFunction("gaus");
sprintf(savename,"Mean %0.4f #pm %0.4f", g0overg1hist_gaus->GetParameter(1), g0overg1hist_gaus->GetParError(1));
pave2->AddText((const char *)(savename));
sprintf(savename,"Sigma %0.4f #pm %0.4f", g0overg1hist_gaus->GetParameter(2), g0overg1hist_gaus->GetParError(2));
pave2->AddText((const char *)(savename));
pave2->Draw();
g0overg1hist->SetStats(kFALSE);
sprintf(savename,"plots/M%s/CurrentSource/g0overg1hist_fit_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g0overg1erhist->GetXaxis()->SetTitle("G0 / G1 uncert");
g0overg1erhist->GetXaxis()->SetTitleOffset(1.1);
g0overg1erhist->GetYaxis()->SetTitleOffset(1.5);
g0overg1erhist->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0overg1erhist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g1overg2hist->GetXaxis()->SetTitle("G1 / G2");
g1overg2hist->GetXaxis()->SetTitleOffset(1.1);
g1overg2hist->GetYaxis()->SetTitleOffset(1.5);
@@ -1009,11 +1286,7 @@ int main(int argc, char* argv[]) {
g1overg2hist->Fit("gaus");
g1overg2hist->Draw();
c1->Update();
TPaveText *pave2 = new TPaveText(0.6,0.8,0.94,0.94,"blNDC");
pave2->SetBorderSize(0);
pave2->SetFillStyle(0);
pave2->SetTextSize(0.04);
pave2->SetTextAlign(32);
pave2->Clear();
TF1* g1overg2hist_gaus = g1overg2hist->GetFunction("gaus");
sprintf(savename,"Mean %0.4f #pm %0.4f", g1overg2hist_gaus->GetParameter(1), g1overg2hist_gaus->GetParError(1));
pave2->AddText((const char *)(savename));
@@ -1031,6 +1304,13 @@ int main(int argc, char* argv[]) {
sprintf(savename,"plots/M%s/CurrentSource/g1overg2erhist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g0erhist->GetXaxis()->SetTitle("Fitted G0 uncert");
g0erhist->GetXaxis()->SetTitleOffset(1.1);
g0erhist->GetYaxis()->SetTitleOffset(1.5);
g0erhist->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0erhist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g1erhist->GetXaxis()->SetTitle("Fitted G1 uncert");
g1erhist->GetXaxis()->SetTitleOffset(1.1);
g1erhist->GetYaxis()->SetTitleOffset(1.5);
@@ -1045,26 +1325,39 @@ int main(int argc, char* argv[]) {
sprintf(savename,"plots/M%s/CurrentSource/g2erhist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
diffFromLinG1hist->GetXaxis()->SetTitle("Normalised residual G1");
diffFromLinG1hist->GetYaxis()->SetTitle("");
diffFromLinG1hist->GetXaxis()->SetTitleOffset(1.1);
diffFromLinG1hist->GetYaxis()->SetTitleOffset(1.5);
diffFromLinG1hist->Draw();
sprintf(savename,"plots/M%s/CurrentSource/diffFromLinG1hist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g0overg1_isEdge->SetLineColor(kBlue);
g0overg1_isInnerEdge->SetLineColor(kCyan);
g0overg1_isDouble->SetLineColor(kGreen+2);
g0overg1_isNextToDouble->SetLineColor(kRed);
g0overg1_isQuad->SetLineColor(kOrange);
diffFromLinG2hist->GetXaxis()->SetTitle("Normalised residual G2");
diffFromLinG2hist->GetYaxis()->SetTitle("");
diffFromLinG2hist->GetXaxis()->SetTitleOffset(1.1);
diffFromLinG2hist->GetYaxis()->SetTitleOffset(1.5);
diffFromLinG2hist->Draw();
sprintf(savename,"plots/M%s/CurrentSource/diffFromLinG2hist_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g0overg1_isEdge->Scale(1./g0overg1_isEdge->GetEntries());
g0overg1_isInnerEdge->Scale(1./g0overg1_isInnerEdge->GetEntries());
g0overg1_isDouble->Scale(1./g0overg1_isDouble->GetEntries());
g0overg1_isNextToDouble->Scale(1./g0overg1_isNextToDouble->GetEntries());
g0overg1_isQuad->Scale(1./g0overg1_isQuad->GetEntries());
g0overg1_isBulk->Scale(1./g0overg1_isBulk->GetEntries());
cout << "G1 underflow " << diffFromLinG1hist->GetBinContent(0) << endl;
cout << "G2 underflow " << diffFromLinG2hist->GetBinContent(0) << endl;
cout << "G1 overflow " << diffFromLinG1hist->GetBinContent(101) << endl;
cout << "G2 overflow " << diffFromLinG2hist->GetBinContent(101) << endl;
TLegend *leg1 = new TLegend(0.62,0.6,0.93,0.93);
leg1->AddEntry(g0overg1_isBulk, "Normal", "l");
leg1->AddEntry(g0overg1_isDouble, "Double", "l");
leg1->AddEntry(g0overg1_isNextToDouble, "Next to D", "l");
leg1->AddEntry(g0overg1_isEdge, "Edge", "l");
leg1->AddEntry(g0overg1_isInnerEdge, "Inner E", "l");
g0overg1_isDouble->GetXaxis()->SetTitle("G0 / G1");
g0overg1_isDouble->GetYaxis()->SetTitle("Normalised");
g0overg1_isDouble->GetYaxis()->SetTitleOffset(1.3);
g0overg1_isDouble->SetMinimum(0.0);
g0overg1_isDouble->SetMaximum(0.16);
g0overg1_isDouble->Draw();
g0overg1_isEdge->Draw("same");
g0overg1_isInnerEdge->Draw("same");
g0overg1_isNextToDouble->Draw("same");
g0overg1_isBulk->Draw("same");
leg1->Draw("same");
sprintf(savename,"plots/M%s/CurrentSource/g0overg1_perType_M%s.png", module_str.c_str(), module_str.c_str());
c1->SaveAs((const char *)(savename));
g1overg2_isEdge->SetLineColor(kBlue);
g1overg2_isInnerEdge->SetLineColor(kCyan);
@@ -1102,6 +1395,16 @@ int main(int argc, char* argv[]) {
mapcanvas->cd();
g0map->GetXaxis()->SetTitle("Column");
g0map->GetYaxis()->SetTitle("Row");
g0map->GetYaxis()->SetTitleOffset(0.7);
g0map->GetZaxis()->SetRangeUser(20000,40000);
g0map->Draw("colz");
pave->AddText("G0 [ADU/#mus]");
pave->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0map_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
g1map->GetXaxis()->SetTitle("Column");
g1map->GetYaxis()->SetTitle("Row");
g1map->GetYaxis()->SetTitleOffset(0.7);
@@ -1111,6 +1414,7 @@ int main(int argc, char* argv[]) {
g1map->GetZaxis()->SetRangeUser(-3000,0);
}
g1map->Draw("colz");
pave->Clear();
pave->AddText("G1 [ADU/#mus]");
pave->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g1map_M%s.png", module_str.c_str(), module_str.c_str());
@@ -1131,6 +1435,28 @@ int main(int argc, char* argv[]) {
sprintf(savename,"plots/M%s/CurrentSource/g2map_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
g0overg1map->GetXaxis()->SetTitle("Column");
g0overg1map->GetYaxis()->SetTitle("Row");
g0overg1map->GetYaxis()->SetTitleOffset(0.7);
g0overg1map->GetZaxis()->SetRangeUser(-50,0);
g0overg1map->Draw("colz");
pave->Clear();
pave->AddText("G0/G1");
pave->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0overg1map_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
g0overg1ermap->GetXaxis()->SetTitle("Column");
g0overg1ermap->GetYaxis()->SetTitle("Row");
g0overg1ermap->GetYaxis()->SetTitleOffset(0.7);
g0overg1ermap->GetZaxis()->SetRangeUser(0,0.5);
g0overg1ermap->Draw("colz");
pave->Clear();
pave->AddText("#sigma_{G0/G1}");
pave->Draw();
sprintf(savename,"plots/M%s/CurrentSource/g0overg1ermap_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
g1overg2map->GetXaxis()->SetTitle("Column");
g1overg2map->GetYaxis()->SetTitle("Row");
g1overg2map->GetYaxis()->SetTitleOffset(0.7);
@@ -1153,6 +1479,17 @@ int main(int argc, char* argv[]) {
sprintf(savename,"plots/M%s/CurrentSource/g1overg2ermap_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
g0ermap->GetXaxis()->SetTitle("Column");
g0ermap->GetYaxis()->SetTitle("Row");
g0ermap->GetYaxis()->SetTitleOffset(0.7);
g0ermap->Draw("colz");
pave->Clear();
pave->AddText("#sigma_{G0}");
pave->Draw();
g0ermap->GetZaxis()->SetRangeUser(0,200);
sprintf(savename,"plots/M%s/CurrentSource/g0ermap_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
g1ermap->GetXaxis()->SetTitle("Column");
g1ermap->GetYaxis()->SetTitle("Row");
g1ermap->GetYaxis()->SetTitleOffset(0.7);
@@ -1175,22 +1512,6 @@ int main(int argc, char* argv[]) {
sprintf(savename,"plots/M%s/CurrentSource/g2ermap_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
diffFromLinG1map->GetXaxis()->SetTitle("Column");
diffFromLinG1map->GetYaxis()->SetTitle("Row");
diffFromLinG1map->GetYaxis()->SetTitleOffset(0.7);
diffFromLinG1map->Draw("colz");
diffFromLinG1map->GetZaxis()->SetRangeUser(-0.04,0.04);
sprintf(savename,"plots/M%s/CurrentSource/diffFromLinG1map_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
diffFromLinG2map->GetXaxis()->SetTitle("Column");
diffFromLinG2map->GetYaxis()->SetTitle("Row");
diffFromLinG2map->GetYaxis()->SetTitleOffset(0.7);
diffFromLinG2map->Draw("colz");
diffFromLinG2map->GetZaxis()->SetRangeUser(-0.1,0.1);
sprintf(savename,"plots/M%s/CurrentSource/diffFromLinG2map_M%s.png", module_str.c_str(), module_str.c_str());
mapcanvas->SaveAs((const char *)(savename));
sprintf(savename,"data/M%s/CS_ratio_M%s.root", module_str.c_str(), module_str.c_str());
TFile* saved_file2 = new TFile((const char *)(savename),"RECREATE");
g1overg2map->Write();