From 3689ed9207fe6fc1324fe82c72af60f9f77df78c Mon Sep 17 00:00:00 2001 From: redford_s Date: Wed, 8 Mar 2017 16:40:56 +0100 Subject: [PATCH] Simpler plotting and login in Direct Beam Scan. Results unchanged. --- JFMC_DirectBeamScan.cpp | 218 +++++++++++++++++----------------------- 1 file changed, 91 insertions(+), 127 deletions(-) diff --git a/JFMC_DirectBeamScan.cpp b/JFMC_DirectBeamScan.cpp index 7aecb4f..134f52b 100644 --- a/JFMC_DirectBeamScan.cpp +++ b/JFMC_DirectBeamScan.cpp @@ -66,12 +66,12 @@ int main(int argc, char* argv[]) { pixelMaskObject->maskSupercolumn(4,2, pixel_mask); } - int nevents = 0; + int framecounter = 0; while (thisfile->readNextFrame()) { - nevents++; + framecounter++; } thisfile->rewind(); - cout << "read " << nevents << " events" << endl; + cout << "read " << framecounter << " frames" << endl; for (int i = 0; i < 1000; i++) { thisfile->readNextFrame(); @@ -181,8 +181,6 @@ int main(int argc, char* argv[]) { sprintf(savename,"plots/M%s/DirectBeam/pedeRMSG2.png", module_str.c_str()); mapcanvas->SaveAs((const char *)(savename)); - int npoints = 40; // 2 to 80 in steps of 2 - jungfrauPedestal *pedestalObjectG0 = new jungfrauPedestal(); pedestalObjectG0->pedestalSetNFrames(1000); // using 1000 frames, rolling window @@ -192,15 +190,15 @@ int main(int argc, char* argv[]) { // 2D hist for every point, to save // mean, error and number of fills // can be loaded from a file - TH2F* avg_adc_g0_map [npoints]; - TH2F* avg_adc_g1_map [npoints]; - TH2F* avg_adcer_g0_map [npoints]; - TH2F* avg_adcer_g1_map [npoints]; + TH2F* avg_adc_g0_map [40]; + TH2F* avg_adc_g1_map [40]; + TH2F* avg_adcer_g0_map [40]; + TH2F* avg_adcer_g1_map [40]; // creating the histograms if (createHistoFile) { - for (int j = 0; j < npoints; j++) { + for (int j = 0; j < 40; j++) { sprintf(savename,"avg_adc_g0_map_%d", j); avg_adc_g0_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); sprintf(savename,"avg_adc_g1_map_%d", j); @@ -213,7 +211,7 @@ int main(int argc, char* argv[]) { } int nfiles = 4; - int nframes = 0; + int framecounter = 0; for (int filei = 0; filei < nfiles; filei++) { // open data file @@ -223,8 +221,8 @@ int main(int argc, char* argv[]) { while (thisfile->readNextFrame()) { if (module_str == "028") { - if (nframes%1000 < 100) { // shutter skip - nframes++; + if (framecounter%1000 < 100) { // shutter skip + framecounter++; continue; } } @@ -232,17 +230,17 @@ int main(int argc, char* argv[]) { pedestalObjectG0->addG0FrameToPedestalCalculation(thisfile->getFrameDataHandle()); pedestalObjectG1->addG1FrameToPedestalCalculation(thisfile->getFrameDataHandle()); - nframes++; + framecounter++; - if (nframes%1000 == 0) { + if (framecounter%1000 == 0) { for (int i = 0; i < NCH; i++) { if (pixel_mask[i] == 1) { - avg_adc_g0_map[nframes/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->pedestalOfChannel(i)); - avg_adcer_g0_map[nframes/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->semOfChannel(i)); - avg_adc_g1_map[nframes/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->pedestalOfChannel(i)); - avg_adcer_g1_map[nframes/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->semOfChannel(i)); + avg_adc_g0_map[framecounter/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->pedestalOfChannel(i)); + avg_adcer_g0_map[framecounter/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->semOfChannel(i)); + avg_adc_g1_map[framecounter/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->pedestalOfChannel(i)); + avg_adcer_g1_map[framecounter/1000 -1]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->semOfChannel(i)); } } @@ -250,36 +248,36 @@ int main(int argc, char* argv[]) { pedestalObjectG0->pedestalClear(); pedestalObjectG1->pedestalClear(); - avg_adc_g0_map[nframes/1000 -1]->GetXaxis()->SetTitle("Column"); - avg_adc_g0_map[nframes/1000 -1]->GetYaxis()->SetTitle("Row"); - avg_adc_g0_map[nframes/1000 -1]->GetYaxis()->SetTitleOffset(0.7); - avg_adc_g0_map[nframes/1000 -1]->Draw("colz"); - avg_adc_g0_map[nframes/1000 -1]->SetMinimum(0); - sprintf(savename,"plots/M%s/DirectBeam/avg_adc_g0_map_%d.png", module_str.c_str(), ((nframes/1000 -1)+1)*2); + avg_adc_g0_map[framecounter/1000 -1]->GetXaxis()->SetTitle("Column"); + avg_adc_g0_map[framecounter/1000 -1]->GetYaxis()->SetTitle("Row"); + avg_adc_g0_map[framecounter/1000 -1]->GetYaxis()->SetTitleOffset(0.7); + avg_adc_g0_map[framecounter/1000 -1]->Draw("colz"); + avg_adc_g0_map[framecounter/1000 -1]->SetMinimum(0); + sprintf(savename,"plots/M%s/DirectBeam/perStep/avg_adc_g0_map_%d.png", module_str.c_str(), ((framecounter/1000 -1)+1)*2); mapcanvas->SaveAs((const char *)(savename)); - avg_adc_g1_map[nframes/1000 -1]->GetXaxis()->SetTitle("Column"); - avg_adc_g1_map[nframes/1000 -1]->GetYaxis()->SetTitle("Row"); - avg_adc_g1_map[nframes/1000 -1]->GetYaxis()->SetTitleOffset(0.7); - avg_adc_g1_map[nframes/1000 -1]->Draw("colz"); - avg_adc_g1_map[nframes/1000 -1]->SetMinimum(0); - sprintf(savename,"plots/M%s/DirectBeam/avg_adc_g1_map_%d.png", module_str.c_str(), ((nframes/1000 -1)+1)*2); + avg_adc_g1_map[framecounter/1000 -1]->GetXaxis()->SetTitle("Column"); + avg_adc_g1_map[framecounter/1000 -1]->GetYaxis()->SetTitle("Row"); + avg_adc_g1_map[framecounter/1000 -1]->GetYaxis()->SetTitleOffset(0.7); + avg_adc_g1_map[framecounter/1000 -1]->Draw("colz"); + avg_adc_g1_map[framecounter/1000 -1]->SetMinimum(0); + sprintf(savename,"plots/M%s/DirectBeam/perStep/avg_adc_g1_map_%d.png", module_str.c_str(), ((framecounter/1000 -1)+1)*2); mapcanvas->SaveAs((const char *)(savename)); - avg_adcer_g0_map[nframes/1000 -1]->GetXaxis()->SetTitle("Column"); - avg_adcer_g0_map[nframes/1000 -1]->GetYaxis()->SetTitle("Row"); - avg_adcer_g0_map[nframes/1000 -1]->GetYaxis()->SetTitleOffset(0.7); - avg_adcer_g0_map[nframes/1000 -1]->Draw("colz"); - avg_adcer_g0_map[nframes/1000 -1]->SetMinimum(0); - sprintf(savename,"plots/M%s/DirectBeam/avg_adcer_g0_map_%d.png", module_str.c_str(), ((nframes/1000 -1)+1)*2); + avg_adcer_g0_map[framecounter/1000 -1]->GetXaxis()->SetTitle("Column"); + avg_adcer_g0_map[framecounter/1000 -1]->GetYaxis()->SetTitle("Row"); + avg_adcer_g0_map[framecounter/1000 -1]->GetYaxis()->SetTitleOffset(0.7); + avg_adcer_g0_map[framecounter/1000 -1]->Draw("colz"); + avg_adcer_g0_map[framecounter/1000 -1]->SetMinimum(0); + sprintf(savename,"plots/M%s/DirectBeam/perStep/avg_adcer_g0_map_%d.png", module_str.c_str(), ((framecounter/1000 -1)+1)*2); mapcanvas->SaveAs((const char *)(savename)); - avg_adcer_g1_map[nframes/1000 -1]->GetXaxis()->SetTitle("Column"); - avg_adcer_g1_map[nframes/1000 -1]->GetYaxis()->SetTitle("Row"); - avg_adcer_g1_map[nframes/1000 -1]->GetYaxis()->SetTitleOffset(0.7); - avg_adcer_g1_map[nframes/1000 -1]->Draw("colz"); - avg_adcer_g1_map[nframes/1000 -1]->SetMinimum(0); - sprintf(savename,"plots/M%s/DirectBeam/avg_adcer_g1_map_%d.png", module_str.c_str(), ((nframes/1000 -1)+1)*2); + avg_adcer_g1_map[framecounter/1000 -1]->GetXaxis()->SetTitle("Column"); + avg_adcer_g1_map[framecounter/1000 -1]->GetYaxis()->SetTitle("Row"); + avg_adcer_g1_map[framecounter/1000 -1]->GetYaxis()->SetTitleOffset(0.7); + avg_adcer_g1_map[framecounter/1000 -1]->Draw("colz"); + avg_adcer_g1_map[framecounter/1000 -1]->SetMinimum(0); + sprintf(savename,"plots/M%s/DirectBeam/perStep/avg_adcer_g1_map_%d.png", module_str.c_str(), ((framecounter/1000 -1)+1)*2); mapcanvas->SaveAs((const char *)(savename)); } @@ -294,7 +292,7 @@ int main(int argc, char* argv[]) { sprintf(savename,"/mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/M%s_CalibAna/DB_histos_M%s.root", module_str.c_str(), module_str.c_str()); TFile* saved_file = new TFile((const char *)(savename),"RECREATE"); - for (int i = 0; i < npoints; i++) { + for (int i = 0; i < 40; i++) { avg_adc_g0_map[i]->Write(); avg_adc_g1_map[i]->Write(); avg_adcer_g0_map[i]->Write(); @@ -307,7 +305,7 @@ int main(int argc, char* argv[]) { sprintf(savename,"/mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/M%s_CalibAna/DB_histos_M%s.root", module_str.c_str(), module_str.c_str()); TFile* saved_file = new TFile((const char *)(savename),"READ"); - for (int i = 0; i < npoints; i++) { + for (int i = 0; i < 40; i++) { sprintf(savename,"avg_adc_g0_map_%d", i); avg_adc_g0_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); sprintf(savename,"avg_adc_g1_map_%d", i); @@ -340,10 +338,6 @@ int main(int argc, char* argv[]) { vector r1_adcer; vector r1_filter; vector r1_filterer; - vector r2_adc; - vector r2_adcer; - vector r2_filter; - vector r2_filterer; r0_filter.push_back(0); r0_filterer.push_back(0); @@ -353,12 +347,8 @@ int main(int argc, char* argv[]) { r1_filterer.push_back(0); r1_adc.push_back(pedestalsG1->GetBinContent((i%NC)+1,(i/NC)+1)); r1_adcer.push_back(pedeRMSG1->GetBinContent((i%NC)+1,(i/NC)+1)); - r2_filter.push_back(0); - r2_filterer.push_back(0); - r2_adc.push_back(pedestalsG2->GetBinContent((i%NC)+1,(i/NC)+1)); - r2_adcer.push_back(pedeRMSG2->GetBinContent((i%NC)+1,(i/NC)+1)); - for (int j = 0; j < npoints; j++) { + for (int j = 0; j < 40; j++) { int current = (j+1)*2; double this_g0avg = avg_adc_g0_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); @@ -381,26 +371,16 @@ int main(int argc, char* argv[]) { } - TGraphErrors *grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_filterer[0]),&(r0_adcer[0])); - TGraphErrors *grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_filterer[0]),&(r1_adcer[0])); - TGraphErrors *grap_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc[0]),&(r2_filterer[0]),&(r2_adcer[0])); + if (r0_adc.size() > 1 && r1_adc.size() > 1) { - grap_g0->SetMarkerStyle(20); - grap_g1->SetMarkerStyle(20); - grap_g2->SetMarkerStyle(20); - grap_g0->SetMarkerColor(kBlue); - grap_g0->SetLineColor(kBlue); - grap_g1->SetMarkerColor(kGreen+2); - grap_g1->SetLineColor(kGreen+2); - grap_g2->SetMarkerColor(kRed); - grap_g2->SetLineColor(kRed); + TGraphErrors *grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_filterer[0]),&(r0_adcer[0])); + TGraphErrors *grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_filterer[0]),&(r1_adcer[0])); - TF1 *fit1; - TF1 *fit2; - TF1 *fit1_e; - TF1 *fit2_e; - - if (r0_adc.size() > 1) { + TF1 *fit1 = 0; + TF1 *fit2 = 0; + TF1 *fit1_e = 0; + TF1 *fit2_e = 0; + if (module_str == "028") { fit1 = new TF1("fit1","[0]+[1]*x",2,10); } else if (module_str == "021" || module_str == "022") { @@ -424,8 +404,8 @@ int main(int argc, char* argv[]) { fit1_e->SetParameters(fit1->GetParameter(0),fit1->GetParameter(1)); fit1_e->SetLineColor(kBlue); fit1_e->SetLineStyle(2); - } - if (r1_adc.size() > 1) { + + if (module_str == "028" || module_str == "021" || module_str == "022") { fit2 = new TF1("fit2","[0]+[1]*x",40,80); } else if (module_str == "006") { @@ -447,72 +427,56 @@ int main(int argc, char* argv[]) { fit2_e->SetParameters(fit2->GetParameter(0),fit2->GetParameter(1)); fit2_e->SetLineColor(kGreen+2); fit2_e->SetLineStyle(2); - } - if (r0_adc.size() > 1 && r1_adc.size() > 1) { + g0overg1map->Fill(i%NC,i/NC,fit1->GetParameter(1)/fit2->GetParameter(1)); g0overg1hist->Fill(fit1->GetParameter(1)/fit2->GetParameter(1)); g0overg1ermap->Fill(i%NC,i/NC,abs(fit1->GetParameter(1)/fit2->GetParameter(1))*sqrt(pow((fit1->GetParError(1)/fit1->GetParameter(1)),2) + pow((fit2->GetParError(1)/fit2->GetParameter(1)),2))); g0overg1erhist->Fill(abs(fit1->GetParameter(1)/fit2->GetParameter(1))*sqrt(pow((fit1->GetParError(1)/fit1->GetParameter(1)),2) + pow((fit2->GetParError(1)/fit2->GetParameter(1)),2))); - } - grap_g0->GetXaxis()->SetTitle("Current [mA]"); - grap_g0->GetYaxis()->SetTitle("Average ADC [ADU]"); - grap_g0->GetXaxis()->SetLimits(0,50); - grap_g0->Draw("AP"); - if (r0_adc.size() > 1) { - fit1->Draw("same"); - fit1_e->Draw("same"); - } - if ((i > 51900 && i < 51910) || (i > 52150 && i < 52160) || (i > 513000 && i < 513010)) { - sprintf(savename,"plots/M%s/DirectBeam/grap0_%d.png", module_str.c_str(), i); - mapcanvas->SaveAs((const char *)(savename)); - } - grap_g1->GetXaxis()->SetTitle("Current [mA]"); - grap_g1->GetYaxis()->SetTitle("Average ADC [ADU]"); - grap_g1->GetXaxis()->SetLimits(0,85); - grap_g1->Draw("AP"); - if (r1_adc.size() > 1) { - fit2->Draw("same"); - fit2_e->Draw("same"); - } - if ((i > 51900 && i < 51910) || (i > 52150 && i < 52160) || (i > 513000 && i < 513010)) { - sprintf(savename,"plots/M%s/DirectBeam/grap1_%d.png", module_str.c_str(), i); - mapcanvas->SaveAs((const char *)(savename)); - } - - grap_g1->SetMinimum(0); - grap_g1->SetMaximum(17000); - grap_g1->Draw("AP"); - if (r1_adc.size() > 1) { - fit2->Draw("same"); - fit2_e->Draw("same"); - } - if (r0_adc.size() > 0) { - grap_g0->Draw("P"); - if (r0_adc.size() > 1) { + if ((i > 51900 && i < 51910) || (i > 123880 && i < 123890) || (i > 513000 && i < 513010)) { + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + grap_g0->GetXaxis()->SetTitle("Current [mA]"); + grap_g0->GetYaxis()->SetTitle("Average ADC [ADU]"); + grap_g0->GetXaxis()->SetLimits(0,50); + grap_g0->Draw("AP"); fit1->Draw("same"); fit1_e->Draw("same"); - } - } - if (r2_adc.size() > 0) { - grap_g2->Draw("P"); - } - - if ((i > 51900 && i < 51910) || (i > 52150 && i < 52160) || (i > 123880 && i < 123890) || (i > 513000 && i < 513010)) { - sprintf(savename,"plots/M%s/DirectBeam/graps_%d.png", module_str.c_str(), i); - mapcanvas->SaveAs((const char *)(savename)); - } + sprintf(savename,"plots/M%s/DirectBeam/grap0_%d.png", module_str.c_str(), i); + mapcanvas->SaveAs((const char *)(savename)); - if (r0_adc.size() > 1) { + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + grap_g1->GetXaxis()->SetTitle("Current [mA]"); + grap_g1->GetYaxis()->SetTitle("Average ADC [ADU]"); + grap_g1->GetXaxis()->SetLimits(0,85); + grap_g1->Draw("AP"); + fit2->Draw("same"); + fit2_e->Draw("same"); + sprintf(savename,"plots/M%s/DirectBeam/grap1_%d.png", module_str.c_str(), i); + mapcanvas->SaveAs((const char *)(savename)); + + grap_g1->SetMinimum(0); + grap_g1->SetMaximum(17000); + grap_g1->Draw("AP"); + grap_g0->Draw("P"); + fit1->Draw("same"); + fit1_e->Draw("same"); + fit2->Draw("same"); + fit2_e->Draw("same"); + sprintf(savename,"plots/M%s/DirectBeam/graps_%d.png", module_str.c_str(), i); + mapcanvas->SaveAs((const char *)(savename)); + } + delete fit1; delete fit1_e; - } - if (r1_adc.size() > 1) { delete fit2; delete fit2_e; - } - + + } } }