From 73938aad042adb28a706fcb91dec4bcb0939c1e1 Mon Sep 17 00:00:00 2001 From: hinger_v Date: Fri, 27 Jun 2025 11:16:26 +0200 Subject: [PATCH] new file: BP_analysis_M431.cpp new file: BP_analysis_thinSensors.cpp new file: BP_fit.cpp new file: BP_fit_M431.cpp new file: BP_fit_thin.cpp new file: BP_scan_both_speeds.sh new file: BP_scan_thinSensor.sh new file: CS_analysis_M431.cpp new file: CS_analysis_M439.cpp new file: CS_fit.cpp new file: CS_fit_M431 new file: CS_fit_M431.cpp new file: CS_scan_both_speeds.sh new file: CuFluo_exposure_both_speeds.sh new file: CuFluo_fit.cpp new file: Default_pixels_arrays.cpp --- BP_analysis_M431.cpp | 1119 ++++++++++++++++ BP_analysis_thinSensors.cpp | 1110 ++++++++++++++++ BP_fit.cpp | 520 ++++++++ BP_fit_M431.cpp | 550 ++++++++ BP_fit_thin.cpp | 520 ++++++++ BP_scan_both_speeds.sh | 236 ++++ BP_scan_thinSensor.sh | 175 +++ CS_analysis_M431.cpp | 2202 ++++++++++++++++++++++++++++++++ CS_analysis_M439.cpp | 2171 +++++++++++++++++++++++++++++++ CS_fit.cpp | 1240 ++++++++++++++++++ CS_fit_M431 | Bin 0 -> 11711464 bytes CS_fit_M431.cpp | 1187 +++++++++++++++++ CS_scan_both_speeds.sh | 347 +++++ CuFluo_exposure_both_speeds.sh | 238 ++++ CuFluo_fit.cpp | 322 +++++ Default_pixels_arrays.cpp | 239 ++++ 16 files changed, 12176 insertions(+) create mode 100644 BP_analysis_M431.cpp create mode 100644 BP_analysis_thinSensors.cpp create mode 100644 BP_fit.cpp create mode 100644 BP_fit_M431.cpp create mode 100644 BP_fit_thin.cpp create mode 100644 BP_scan_both_speeds.sh create mode 100644 BP_scan_thinSensor.sh create mode 100644 CS_analysis_M431.cpp create mode 100644 CS_analysis_M439.cpp create mode 100644 CS_fit.cpp create mode 100755 CS_fit_M431 create mode 100644 CS_fit_M431.cpp create mode 100644 CS_scan_both_speeds.sh create mode 100644 CuFluo_exposure_both_speeds.sh create mode 100755 CuFluo_fit.cpp create mode 100644 Default_pixels_arrays.cpp diff --git a/BP_analysis_M431.cpp b/BP_analysis_M431.cpp new file mode 100644 index 0000000..1e6b224 --- /dev/null +++ b/BP_analysis_M431.cpp @@ -0,0 +1,1119 @@ +// to analyse the backplane pulsing data per module +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) +// works for single chip only (chip 5) + +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" + +#include "TGraphErrors.h" +#include "TF1.h" +#include "TPaveStats.h" +#include "TFile.h" +#include "TLegend.h" +#include "TPaveText.h" + +#include + +double checkRangeMaxForAmplifierPlateau(double range_max) { + + // check that the range maximum is no more than 6.4 V + // to avoid non-linearity coming from amplifier plateau + if (range_max > 6400) { + return 6400; + } else { + return range_max; + } + +} +bool isHGX=false; +int main(int argc, char* argv[]) { + + jungfrauStyle(); + gROOT->SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 3) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location (folder + data file prefix)" << endl; + cout << "arg 3: specify location of analysis root files" << endl; + exit(1); + } //uncomment for VH 210906 + + string module_str = argv[1]; + + string str2 =("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + + string data_loc = argv[2]; + string anadata_loc = argv[3]; //uncomment for VH 210906 + string plotfolder_str; + + + if (data_loc.find(str2) != string::npos) isHGX=true; + if (data_loc.find(str3) != string::npos) isHGX=true; + + + // cout << data_loc.find(str2)<<" " << string::npos << " " << str2 << " " << data_loc <HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" <pedestalSetNFrames(100); // using 100 frames, rolling window + jungfrauPedestal *pedestalObjectG1 = new jungfrauPedestal(); + pedestalObjectG1->pedestalSetNFrames(100); // using 100 frames, rolling window + + TH2F* avg_adcG0_map [220]; + TH2F* avg_adcG0er_map [220]; + TH2F* avg_adcG1_map [220]; + TH2F* avg_adcG1er_map [220]; + + //char savename[128]; //uncomment for SR + //char filename[128]; //uncomment for SR + char savename[256]; //uncomment for VH 210902 + char filename[256]; //uncomment for VH 210902 + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + sprintf(savename,"data/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + sprintf(savename,"plots/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/BackplanePulsing + sprintf(savename,"plots/M%s/%s", module_str.c_str(), plotfolder_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + + double xs[220]; + for (int i = 0; i < 100; i++) { + xs[i] = (i+1)*10.; + } + for (int i = 0; i < 120; i++) { + xs[i+100] = 1000+((i+1)*50); + } + + TCanvas *mapcanvas = new TCanvas("mapcanvas","",150,10,800,400); + mapcanvas->SetLeftMargin(0.1); + mapcanvas->SetRightMargin(0.13); + mapcanvas->SetTopMargin(0.08); + mapcanvas->SetBottomMargin(0.15); + + TCanvas* c1 = new TCanvas("c1",""); + + mapcanvas->cd(); + + TH1F* g0_grad_hist = 0; + if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g0_grad_hist = new TH1F("g0_grad_hist","",100,3,8); + } else { + g0_grad_hist = new TH1F("g0_grad_hist","",100,5,10); + } + TH1F* g0_grader_hist = new TH1F("g0_grader_hist","",100,0,0.002); + + TH1F* g1_grad_hist = 0; + if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g1_grad_hist = new TH1F("g1_grad_hist","",100,-0.25,-0.1); + } else { + g1_grad_hist = new TH1F("g1_grad_hist","",100,-0.3,-0.15); + } + TH1F* g1_grader_hist = 0; + if (module_str == "006") { + g1_grader_hist = new TH1F("g1_grader_hist","",100,0,0.001); + } else { + g1_grader_hist = new TH1F("g1_grader_hist","",100,0,0.0001); + } + + TH2F* no_g0g1_calib_map = new TH2F("no_g0g1_calib_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* g0_grad_map = new TH2F("g0_grad_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g0_grader_map = new TH2F("g0_grader_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* g1_grad_map = new TH2F("g1_grad_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g1_grader_map = new TH2F("g1_grader_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH1F* g0_const_hist = new TH1F("g0_const_hist","",100,1000,4000); + TH1F* g0_conster_hist = new TH1F("g0_conster_hist","",100,0,0.5); + + TH1F* g1_const_hist = new TH1F("g1_const_hist","",100,10000,15000); + TH1F* g1_conster_hist = 0; + if (module_str == "006") { + g1_conster_hist = new TH1F("g1_conster_hist","",100,0,10); + } else { + g1_conster_hist = new TH1F("g1_conster_hist","",100,0,1); + } + + TH2F* g0_const_map = new TH2F("g0_const_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g0_conster_map = new TH2F("g0_conster_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* g1_const_map = new TH2F("g1_const_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g1_conster_map = new TH2F("g1_conster_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + //TH1F* g0overg1_hist = new TH1F("g0overg1_hist","",100,-34,-24); original range + TH1F* g0overg1_hist = new TH1F("g0overg1_hist","",200,-45,-25); + TH1F* g0overg1er_hist = 0; + if (module_str == "006") { + g0overg1er_hist = new TH1F("g0overg1er_hist","",100,0,0.01); + } else { + g0overg1er_hist = new TH1F("g0overg1er_hist","",100,0,0.001); + } + + TH1F* g0overg1_hist_isEdge = new TH1F("g0overg1_hist_isEdge","",100,-34,-24); + TH1F* g0overg1_hist_isInnerEdge = new TH1F("g0overg1_hist_isInnerEdge","",100,-34,-24); + TH1F* g0overg1_hist_isDouble = new TH1F("g0overg1_hist_isDouble","",100,-34,-24); + TH1F* g0overg1_hist_isNextToDouble = new TH1F("g0overg1_hist_isNextToDouble","",100,-34,-24); + TH1F* g0overg1_hist_isQuad = new TH1F("g0overg1_hist_isQuad","",100,-34,-24); + TH1F* g0overg1_hist_isBulk = new TH1F("g0overg1_hist_isBulk","",100,-34,-24); + + TH2F* g0overg1_map = new TH2F("g0overg1_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g0overg1er_map = new TH2F("g0overg1er_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + if (createHistos == 1) { + + for (int j = 0; j < 220; j++) { + sprintf(savename,"avg_adcG0_map_%d", j); + avg_adcG0_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + sprintf(savename,"avg_adcG0er_map_%d", j); + avg_adcG0er_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + sprintf(savename,"avg_adcG1_map_%d", j); + avg_adcG1_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + sprintf(savename,"avg_adcG1er_map_%d", j); + avg_adcG1er_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + } + + // data file + sprintf(filename,"%s_%%6.6d.dat", data_loc.c_str()); + + // total frame number check + int totalFrames = 0; + + for (int filei = 0; filei < 2; filei++) { + + thisfile->open((char*)filename, filei); + + while(thisfile->readNextFrame()) { + totalFrames++; + } + + thisfile->close(); + } + + if (totalFrames == 19999 || totalFrames == 20000) { + cout << "expected number of frames " << totalFrames << endl; + } else { + cout << "unexpected number of frames " << totalFrames << endl; + cout << "code expected 21999/22000 frames" << endl; + cout << "exiting to make sure you notice" << endl; + //exit(1); + } + + int framecounter = 0; + + for (int filei = 0; filei < 3; filei++) { // was 3 before + + thisfile->open((char*)filename, filei); + + while(thisfile->readNextFrame()) { + + pedestalObjectG0->addG0FrameToPedestalCalculation(thisfile->getFrameDataHandle()); + pedestalObjectG1->addG1FrameToPedestalCalculation(thisfile->getFrameDataHandle()); + + if (((framecounter+1)%100 == 0) || ((totalFrames == 21999) && (framecounter == 21998))) { + if ((totalFrames == 21999) && (framecounter == 21998)) { + framecounter++; + } + + for (int i = 0; i < NCH; i++) { + + if((i/NC<256 || i/NC>511) || (i%NC<256 || i%NC>511)){ + continue; + } + + avg_adcG0_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->pedestalOfChannel(i)); + avg_adcG0er_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->semOfChannel(i)); + + avg_adcG1_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->pedestalOfChannel(i)); + avg_adcG1er_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->semOfChannel(i)); + + } + + pedestalObjectG0->pedestalClear(); + pedestalObjectG1->pedestalClear(); + + if (createPerStepHistos == 1) { + avg_adcG0_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG0_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG0_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG0_map[framecounter/100]->GetZaxis()->SetRangeUser(0,17000); + avg_adcG0_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adc_g0_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + avg_adcG0er_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG0er_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG0er_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG0er_map[framecounter/100]->GetZaxis()->SetRangeUser(0,5); + avg_adcG0er_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adcer_g0_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + avg_adcG1_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG1_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG1_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG1_map[framecounter/100]->GetZaxis()->SetRangeUser(0,17000); + avg_adcG1_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adc_g1_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + avg_adcG1er_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG1er_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG1er_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG1er_map[framecounter/100]->GetZaxis()->SetRangeUser(0,20); + avg_adcG1er_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adcer_g1_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + } + + framecounter++; + } + thisfile->close(); + } // end of files + + // save histograms + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/BP_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/BP_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"RECREATE"); + + for (int i = 0; i < 220; i++) { + avg_adcG0_map[i]->Write(); + avg_adcG1_map[i]->Write(); + avg_adcG0er_map[i]->Write(); + avg_adcG1er_map[i]->Write(); + } + saved_file->Close(); + + } else { + // load histos + cout << "LOADING HISTOS" << endl; + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/BP_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/BP_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"READ"); + + for (int i = 0; i < 220; i++) { + sprintf(savename,"avg_adcG0_map_%d", i); + avg_adcG0_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"avg_adcG1_map_%d", i); + avg_adcG1_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + + sprintf(savename,"avg_adcG0er_map_%d", i); + avg_adcG0er_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"avg_adcG1er_map_%d", i); + avg_adcG1er_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + } + } + + mapcanvas->SetLeftMargin(0.13); + mapcanvas->SetRightMargin(0.05); + + for (int i = 0; i < NCH; i++) { + if((i/NC<256 || i/NC>511) || (i%NC<256 || i%NC>511)){ + continue; + } + + vector r0_adc; + vector r0_filter; + + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + for (int j = 0; j < 220; j++) { + + double this_g0avg = avg_adcG0_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avg = avg_adcG1_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g0avger = avg_adcG0er_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avger = avg_adcG1er_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + + if (this_g0avg != 0) { + r0_filter.push_back(xs[j]); + r0_ferr.push_back(0.); + r0_adc.push_back(this_g0avg); + r0_adcerr.push_back(this_g0avger); + } + if (this_g1avg != 0) { + r1_filter.push_back(xs[j]); + r1_ferr.push_back(0.); + r1_adc.push_back(this_g1avg); + r1_adcerr.push_back(this_g1avger); + } + } + + TGraphErrors *grap_g0 = 0; + TGraphErrors *grap_g1 = 0; + + TF1 *fit_g0 = 0; + TF1 *fit_g1 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + //debug + // cout << i <<" r0size= "<< r0_adc.size()<< " r1size= "<< r1_adc.size()<< endl; + // plot the datapoints + if (r1_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 + //|| (i >= (325*1024+902) && i < (325*1024+902)+10) // addon VH "high" G1 in Module 352 + //|| (i >= (331*1024+902) && i < (331*1024+902)+10) // addon VH "low" G1 in Module 352 + ) { + + 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->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(0,7200); + grap_g1->Draw("AP"); + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + } + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i,module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + } + } + + // define fit ranges and fit + if (r0_adc.size() > 1) { + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemax_g0 = highestPointBeforeSwitching(r0_filter,r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + grap_g0->Fit("pol1","QRC","",rangemin_g0,rangemax_g0); + fit_g0 = (TF1*) grap_g0->GetFunction("pol1"); + if (fit_g0) { + fit_g0->SetLineColor(kBlue); + fit_g0->SetParName(0,"G0 const"); + fit_g0->SetParName(1,"G0 grad"); + + g0_grad_hist->Fill(fit_g0->GetParameter(1)); + g0_grader_hist->Fill(fit_g0->GetParError(1)); + g0_grad_map->Fill(i%NC,i/NC,fit_g0->GetParameter(1)); + g0_grader_map->Fill(i%NC,i/NC,fit_g0->GetParError(1)); + g0_const_hist->Fill(fit_g0->GetParameter(0)); + g0_conster_hist->Fill(fit_g0->GetParError(0)); + g0_const_map->Fill(i%NC,i/NC,fit_g0->GetParameter(0)); + g0_conster_map->Fill(i%NC,i/NC,fit_g0->GetParError(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 + //|| (i >= (325*1024+902) && i < (325*1024+902)+10) // addon VH "high" G1 in Module 352 + //|| (i >= (331*1024+902) && i < (331*1024+902)+10) // addon VH "low" G1 in Module 352 + ) { + + 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->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g0->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g0->GetYaxis()->SetTitleOffset(0.9); + grap_g0->SetMinimum(1000); + grap_g0->SetMaximum(15000); + grap_g0->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + mapcanvas->Update(); + // Added by Vadym to save empty fits too as discussed with Mar + if(grap_g0->FindObject("stats")){ TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats"); + st0->SetX1NDC(0.2); + st0->SetX2NDC(0.54); + st0->SetY1NDC(0.18); + st0->SetY2NDC(0.37); + st0->SetBorderSize(0); + st0->SetTextColor(kBlue); + } + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i,module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + vector 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); + + TF1* lin_g0_p1pc = new TF1("lin_g0_p1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p1pc->SetParameter(0,fit_g0->GetParameter(0)/100.); + lin_g0_p1pc->SetParameter(1,fit_g0->GetParameter(1)/100.); + lin_g0_p1pc->SetLineColor(kRed); + + TF1* lin_g0_p05pc = new TF1("lin_g0_p05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p05pc->SetParameter(0,fit_g0->GetParameter(0)/200.); + lin_g0_p05pc->SetParameter(1,fit_g0->GetParameter(1)/200.); + lin_g0_p05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_p02pc = new TF1("lin_g0_p02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p02pc->SetParameter(0,fit_g0->GetParameter(0)/500.); + lin_g0_p02pc->SetParameter(1,fit_g0->GetParameter(1)/500.); + lin_g0_p02pc->SetLineColor(kOrange); + + TF1* lin_g0_m1pc = new TF1("lin_g0_m1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m1pc->SetParameter(0,fit_g0->GetParameter(0)/-100.); + lin_g0_m1pc->SetParameter(1,fit_g0->GetParameter(1)/-100.); + lin_g0_m1pc->SetLineColor(kRed); + + TF1* lin_g0_m05pc = new TF1("lin_g0_m05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m05pc->SetParameter(0,fit_g0->GetParameter(0)/-200.); + lin_g0_m05pc->SetParameter(1,fit_g0->GetParameter(1)/-200.); + lin_g0_m05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_m02pc = new TF1("lin_g0_m02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m02pc->SetParameter(0,fit_g0->GetParameter(0)/-500.); + lin_g0_m02pc->SetParameter(1,fit_g0->GetParameter(1)/-500.); + lin_g0_m02pc->SetLineColor(kOrange); + + norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + norm_g0->SetMinimum(1.5*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(1.5*lin_g0_p02pc->Eval(rangemax_g0)); + + if (isHGX) { + norm_g0->SetMinimum(3*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(3*lin_g0_p02pc->Eval(rangemax_g0)); + } + + norm_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g0->GetYaxis()->SetTitleOffset(0.9); + norm_g0->Draw("AP"); + flat_g0->Draw("same"); + lin_g0_p1pc->Draw("same"); + lin_g0_p05pc->Draw("same"); + lin_g0_p02pc->Draw("same"); + lin_g0_m1pc->Draw("same"); + lin_g0_m05pc->Draw("same"); + lin_g0_m02pc->Draw("same"); + norm_g0->Draw("P"); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + delete norm_g0; + } + } + } + } + + if (r1_adc.size() > 1) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter,r0_filter); + rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end()); + rangemax_g1 = checkRangeMaxForAmplifierPlateau(rangemax_g1); + + if (rangemax_g1 > rangemin_g1) { + + grap_g1->Fit("pol1","QRC","",rangemin_g1,rangemax_g1); + fit_g1 = (TF1*) grap_g1->GetFunction("pol1"); + if (fit_g1) { + fit_g1->SetLineColor(kGreen+2); + fit_g1->SetParName(0,"G1 const"); + fit_g1->SetParName(1,"G1 grad"); + + g1_grad_hist->Fill(fit_g1->GetParameter(1)); + g1_grader_hist->Fill(fit_g1->GetParError(1)); + g1_grad_map->Fill(i%NC,i/NC,fit_g1->GetParameter(1)); + g1_grader_map->Fill(i%NC,i/NC,fit_g1->GetParError(1)); + g1_const_hist->Fill(fit_g1->GetParameter(0)); + g1_conster_hist->Fill(fit_g1->GetParError(0)); + g1_const_map->Fill(i%NC,i/NC,fit_g1->GetParameter(0)); + g1_conster_map->Fill(i%NC,i/NC,fit_g1->GetParError(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 + //|| (i >= (325*1024+902) && i < (325*1024+902)+10) // addon VH "high" G1 in Module 352 + //|| (i >= (331*1024+902) && i < (331*1024+902)+10) // addon VH "low" G1 in Module 352 + ) { + + 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->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + grap_g1->Draw("AP"); + fit_g1->Draw("same"); + mapcanvas->Update(); + TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats"); + st0->SetX1NDC(0.6); + st0->SetX2NDC(0.94); + st0->SetY1NDC(0.18); + st0->SetY2NDC(0.37); + st0->SetBorderSize(0); + st0->SetTextColor(kGreen+2); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(), plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + vector 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_gi","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_p01pc = new TF1("lin_g1_p01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_p01pc->SetParameter(0,fit_g1->GetParameter(0)/1000.); + lin_g1_p01pc->SetParameter(1,fit_g1->GetParameter(1)/1000.); + lin_g1_p01pc->SetLineColor(kYellow); + + 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_m01pc = new TF1("lin_g1_m01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_m01pc->SetParameter(0,fit_g1->GetParameter(0)/-1000.); + lin_g1_m01pc->SetParameter(1,fit_g1->GetParameter(1)/-1000.); + lin_g1_m01pc->SetLineColor(kYellow); + + 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_m02pc->Eval(rangemin_g1)); + norm_g1->SetMaximum(1.5*lin_g1_p02pc->Eval(rangemin_g1)); + norm_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g1->GetYaxis()->SetTitleOffset(0.9); + norm_g1->Draw("AP"); + flat_g1->Draw("same"); + lin_g1_p02pc->Draw("same"); + lin_g1_p01pc->Draw("same"); + lin_g1_m02pc->Draw("same"); + lin_g1_m01pc->Draw("same"); + norm_g1->Draw("P"); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + delete norm_g1; + } + } + } + } + + // get ratio measurements + if (fit_g0 && fit_g1) { + + double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + double this_g0overg1er = sqrt(pow(fit_g0->GetParError(1)/fit_g0->GetParameter(1),2) + pow(fit_g1->GetParError(1)/fit_g1->GetParameter(1),2)); + + g0overg1_map->Fill(i%NC,i/NC,this_g0overg1); + g0overg1_hist->Fill(this_g0overg1); + g0overg1er_map->Fill(i%NC,i/NC,this_g0overg1er); + g0overg1er_hist->Fill(this_g0overg1er); + + if (isEdge(i)) { + g0overg1_hist_isEdge->Fill(this_g0overg1); + } + if (isInnerEdge(i)) { + g0overg1_hist_isInnerEdge->Fill(this_g0overg1); + } + if (isDouble(i)) { + g0overg1_hist_isDouble->Fill(this_g0overg1); + } + if (isNextToDouble(i)) { + g0overg1_hist_isNextToDouble->Fill(this_g0overg1); + } + if (isQuad(i)) { + g0overg1_hist_isQuad->Fill(this_g0overg1); + } + if (isBulk(i)) { + g0overg1_hist_isBulk->Fill(this_g0overg1); + } + } else { + no_g0g1_calib_map->Fill(i%NC,i/NC,1); + } + + delete grap_g0; + delete grap_g1; + } + + mapcanvas->SetLeftMargin(0.1); + mapcanvas->SetRightMargin(0.13); + + c1->cd(); + + g0_grad_hist->GetXaxis()->SetTitle("G0 gradient"); + g0_grad_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_grad_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0_grader_hist->GetXaxis()->SetTitle("#sigma_{G0 gradient}"); + g0_grader_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_grader_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_grad_hist->GetXaxis()->SetTitle("G1 gradient"); + g1_grad_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_grad_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_grader_hist->GetXaxis()->SetTitle("#sigma_{G1 gradient}"); + g1_grader_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_grader_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0_const_hist->GetXaxis()->SetTitle("G0 intercept"); + g0_const_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_const_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0_conster_hist->GetXaxis()->SetTitle("#sigma_{G0 intercept}"); + g0_conster_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_conster_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_const_hist->GetXaxis()->SetTitle("G1 intercept"); + g1_const_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_const_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_conster_hist->GetXaxis()->SetTitle("#sigma_{G1 intercept}"); + g1_conster_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_conster_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + mapcanvas->cd(); + + TPaveText *pave = new TPaveText(0.86,0.95,0.91,0.98,"blNDC"); + pave->SetBorderSize(0); + pave->SetFillStyle(0); + pave->SetTextSize(0.06); + pave->SetTextAlign(32); + + g0_grad_map->GetXaxis()->SetTitle("Column"); + g0_grad_map->GetYaxis()->SetTitle("Row"); + g0_grad_map->GetYaxis()->SetTitleOffset(0.7); + g0_grad_map->Draw("colz"); + pave->AddText("G0 [ADU/mV]"); + pave->Draw(); + if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g0_grad_map->GetZaxis()->SetRangeUser(3,4); + } else { + g0_grad_map->GetZaxis()->SetRangeUser(5,10); + } + if (isHGX) g0_grad_map->GetZaxis()->SetRangeUser(10,15); + + + sprintf(savename,"plots/M%s/%s/g0_grad_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0_grader_map->GetXaxis()->SetTitle("Column"); + g0_grader_map->GetYaxis()->SetTitle("Row"); + g0_grader_map->GetYaxis()->SetTitleOffset(0.7); + g0_grader_map->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G0}"); + pave->Draw(); + g0_grader_map->GetZaxis()->SetRangeUser(0.0,0.001); + sprintf(savename,"plots/M%s/%s/g0_grader_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_grad_map->GetXaxis()->SetTitle("Column"); + g1_grad_map->GetYaxis()->SetTitle("Row"); + g1_grad_map->GetYaxis()->SetTitleOffset(0.7); + g1_grad_map->Draw("colz"); + pave->Clear(); + pave->AddText("G1 [ADU/mV]"); + pave->Draw(); + if (module_str == "006") { + g1_grad_map->GetZaxis()->SetRangeUser(-0.3,-0.1); + } else if (module_str == "021" || module_str == "022" || module_str == "044") { + g1_grad_map->GetZaxis()->SetRangeUser(-0.3,-0.23); + } else if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g1_grad_map->GetZaxis()->SetRangeUser(-0.15,-0.1); + } else { + g1_grad_map->GetZaxis()->SetRangeUser(-0.25,-0.2); + } + + if (isHGX) g1_grad_map->GetZaxis()->SetRangeUser(-0.2,-0.1); + sprintf(savename,"plots/M%s/%s/g1_grad_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_grader_map->GetXaxis()->SetTitle("Column"); + g1_grader_map->GetYaxis()->SetTitle("Row"); + g1_grader_map->GetYaxis()->SetTitleOffset(0.7); + g1_grader_map->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G1}"); + pave->Draw(); + if (module_str == "006") { + g1_grader_map->GetZaxis()->SetRangeUser(0.0,0.002); + } else { + g1_grader_map->GetZaxis()->SetRangeUser(0.0,0.0002); + } + sprintf(savename,"plots/M%s/%s/g1_grader_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0_const_map->GetXaxis()->SetTitle("Column"); + g0_const_map->GetYaxis()->SetTitle("Row"); + g0_const_map->GetYaxis()->SetTitleOffset(0.7); + g0_const_map->Draw("colz"); + g0_const_map->GetZaxis()->SetRangeUser(1500,3500); + sprintf(savename,"plots/M%s/%s/g0_const_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0_conster_map->GetXaxis()->SetTitle("Column"); + g0_conster_map->GetYaxis()->SetTitle("Row"); + g0_conster_map->GetYaxis()->SetTitleOffset(0.7); + g0_conster_map->Draw("colz"); + g0_conster_map->GetZaxis()->SetRangeUser(0.0,0.5); + sprintf(savename,"plots/M%s/%s/g0_conster_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_const_map->GetXaxis()->SetTitle("Column"); + g1_const_map->GetYaxis()->SetTitle("Row"); + g1_const_map->GetYaxis()->SetTitleOffset(0.7); + g1_const_map->Draw("colz"); + if (module_str == "006") { + g1_const_map->GetZaxis()->SetRangeUser(10000,15000); + } else { + g1_const_map->GetZaxis()->SetRangeUser(13000,15000); + } + sprintf(savename,"plots/M%s/%s/g1_const_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_conster_map->GetXaxis()->SetTitle("Column"); + g1_conster_map->GetYaxis()->SetTitle("Row"); + g1_conster_map->GetYaxis()->SetTitleOffset(0.7); + g1_conster_map->Draw("colz"); + if (module_str == "006") { + g1_conster_map->GetZaxis()->SetRangeUser(0.0,10.); + } else { + g1_conster_map->GetZaxis()->SetRangeUser(0.0,1.); + } + sprintf(savename,"plots/M%s/%s/g1_conster_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + + g0overg1_hist->GetXaxis()->SetTitle("G0 / G1"); + g0overg1_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + 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); + g0overg1_hist->Fit("gaus"); + g0overg1_hist->Draw(); + c1->Update(); + TF1* g0overg1hist_gaus = g0overg1_hist->GetFunction("gaus"); + if (g0overg1hist_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(); + } + g0overg1_hist->SetStats(kFALSE); + sprintf(savename,"plots/M%s/%s/g0overg1_histfit_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0overg1er_hist->GetXaxis()->SetTitle("#sigma_{G0 / G1}"); + g0overg1er_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1er_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0overg1_hist_isEdge->SetLineColor(kBlue); + g0overg1_hist_isInnerEdge->SetLineColor(kCyan); + g0overg1_hist_isDouble->SetLineColor(kGreen+2); + g0overg1_hist_isNextToDouble->SetLineColor(kRed); + g0overg1_hist_isQuad->SetLineColor(kOrange); + + g0overg1_hist_isEdge->Scale(1./g0overg1_hist_isEdge->GetEntries()); + g0overg1_hist_isInnerEdge->Scale(1./g0overg1_hist_isInnerEdge->GetEntries()); + g0overg1_hist_isDouble->Scale(1./g0overg1_hist_isDouble->GetEntries()); + g0overg1_hist_isNextToDouble->Scale(1./g0overg1_hist_isNextToDouble->GetEntries()); + g0overg1_hist_isQuad->Scale(1./g0overg1_hist_isQuad->GetEntries()); + g0overg1_hist_isBulk->Scale(1./g0overg1_hist_isBulk->GetEntries()); + + TLegend *leg = new TLegend(0.62,0.6,0.93,0.93); + leg->AddEntry(g0overg1_hist_isBulk, "Normal", "l"); + leg->AddEntry(g0overg1_hist_isDouble, "Double", "l"); + leg->AddEntry(g0overg1_hist_isNextToDouble, "Next to D", "l"); + leg->AddEntry(g0overg1_hist_isEdge, "Edge", "l"); + leg->AddEntry(g0overg1_hist_isInnerEdge, "Inner E", "l"); + + if (module_str == "006") { + g0overg1_hist_isEdge->GetXaxis()->SetTitle("G0 / G1"); + g0overg1_hist_isEdge->GetYaxis()->SetTitle("Normalised"); + g0overg1_hist_isEdge->GetYaxis()->SetTitleOffset(1.3); + g0overg1_hist_isEdge->Draw(); + g0overg1_hist_isDouble->Draw("same"); + } else { + g0overg1_hist_isDouble->GetXaxis()->SetTitle("G0 / G1"); + g0overg1_hist_isDouble->GetYaxis()->SetTitle("Normalised"); + g0overg1_hist_isDouble->GetYaxis()->SetTitleOffset(1.3); + g0overg1_hist_isDouble->Draw(); + g0overg1_hist_isEdge->Draw("same"); + } + g0overg1_hist_isInnerEdge->Draw("same"); + g0overg1_hist_isNextToDouble->Draw("same"); + g0overg1_hist_isBulk->Draw("same"); + leg->Draw("same"); + sprintf(savename,"plots/M%s/%s/g0overg1_hist_perType_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + mapcanvas->cd(); + + g0overg1_map->GetXaxis()->SetTitle("Column"); + g0overg1_map->GetYaxis()->SetTitle("Row"); + g0overg1_map->GetYaxis()->SetTitleOffset(0.7); + g0overg1_map->Draw("colz"); + pave->Clear(); + pave->AddText("G0/G1"); + pave->Draw(); + + if (isHGX) { + g0overg1_map->GetZaxis()->SetRangeUser(-110,-70); + } + else { + //g0overg1_map->GetZaxis()->SetRangeUser(-31,-27); + g0overg1_map->GetZaxis()->SetRangeUser(-55,-25); + } + + sprintf(savename,"plots/M%s/%s/g0overg1_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0overg1er_map->GetXaxis()->SetTitle("Column"); + g0overg1er_map->GetYaxis()->SetTitle("Row"); + g0overg1er_map->GetYaxis()->SetTitleOffset(0.7); + g0overg1er_map->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G0/G1}"); + pave->Draw(); + if (module_str == "006") { + g0overg1er_map->GetZaxis()->SetRangeUser(0,0.01); + } else { + g0overg1er_map->GetZaxis()->SetRangeUser(0,0.001); + } + sprintf(savename,"plots/M%s/%s/g0overg1er_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + no_g0g1_calib_map->GetXaxis()->SetTitle("Column"); + no_g0g1_calib_map->GetYaxis()->SetTitle("Row"); + no_g0g1_calib_map->GetYaxis()->SetTitleOffset(0.7); + no_g0g1_calib_map->Draw("colz"); + sprintf(savename,"plots/M%s/%s/no_g0g1_calib_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + + if (isHGX) { + sprintf(savename,"data/M%s/BP_ratio_M%s_HG0G1G2.root", module_str.c_str(), module_str.c_str()); + } + else + { + sprintf(savename,"data/M%s/BP_ratio_M%s.root", module_str.c_str(), module_str.c_str()); + } + + + TFile* saved_file2 = new TFile((const char *)(savename),"RECREATE"); + g0overg1_map->Write(); + g0overg1er_map->Write(); + g0_grad_map->Write(); + g1_grad_map->Write(); + saved_file2->Close(); + +} diff --git a/BP_analysis_thinSensors.cpp b/BP_analysis_thinSensors.cpp new file mode 100644 index 0000000..d734b7d --- /dev/null +++ b/BP_analysis_thinSensors.cpp @@ -0,0 +1,1110 @@ +// to analyse the backplane pulsing data per module +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" + +#include "TGraphErrors.h" +#include "TF1.h" +#include "TPaveStats.h" +#include "TFile.h" +#include "TLegend.h" +#include "TPaveText.h" + +#include + +double checkRangeMaxForAmplifierPlateau(double range_max) { + + // check that the range maximum is no more than 6.4 V + // to avoid non-linearity coming from amplifier plateau + if (range_max > 6400) { + return 6400; + } else { + return range_max; + } + +} +bool isHGX=false; +int main(int argc, char* argv[]) { + + jungfrauStyle(); + gROOT->SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 3) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location (folder + data file prefix)" << endl; + cout << "arg 3: specify location of analysis root files" << endl; + exit(1); + } //uncomment for VH 210906 + + string module_str = argv[1]; + + string str2 =("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + + string data_loc = argv[2]; + string anadata_loc = argv[3]; //uncomment for VH 210906 + string plotfolder_str; + + + if (data_loc.find(str2) != string::npos) isHGX=true; + if (data_loc.find(str3) != string::npos) isHGX=true; + + + // cout << data_loc.find(str2)<<" " << string::npos << " " << str2 << " " << data_loc <HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" <pedestalSetNFrames(100); // using 100 frames, rolling window + jungfrauPedestal *pedestalObjectG1 = new jungfrauPedestal(); + pedestalObjectG1->pedestalSetNFrames(100); // using 100 frames, rolling window + + TH2F* avg_adcG0_map [245]; + TH2F* avg_adcG0er_map [245]; + TH2F* avg_adcG1_map [245]; + TH2F* avg_adcG1er_map [245]; + + //char savename[128]; //uncomment for SR + //char filename[128]; //uncomment for SR + char savename[256]; //uncomment for VH 210902 + char filename[256]; //uncomment for VH 210902 + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + sprintf(savename,"data/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + sprintf(savename,"plots/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/BackplanePulsing + sprintf(savename,"plots/M%s/%s", module_str.c_str(), plotfolder_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + + double xs[245]; + for (int i = 0; i < 139; i++) { + xs[i] = 10+i*5.; + } + for (int i = 0; i < 106; i++) { + xs[i+139] = 700+((i+1)*50); + } + + TCanvas *mapcanvas = new TCanvas("mapcanvas","",150,10,800,400); + mapcanvas->SetLeftMargin(0.1); + mapcanvas->SetRightMargin(0.13); + mapcanvas->SetTopMargin(0.08); + mapcanvas->SetBottomMargin(0.15); + + TCanvas* c1 = new TCanvas("c1",""); + + mapcanvas->cd(); + + TH1F* g0_grad_hist = 0; + if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g0_grad_hist = new TH1F("g0_grad_hist","",100,3,8); + } else { + g0_grad_hist = new TH1F("g0_grad_hist","",100,5,10); + } + TH1F* g0_grader_hist = new TH1F("g0_grader_hist","",100,0,0.002); + + TH1F* g1_grad_hist = 0; + if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g1_grad_hist = new TH1F("g1_grad_hist","",100,-0.25,-0.1); + } else { + g1_grad_hist = new TH1F("g1_grad_hist","",100,-0.3,-0.15); + } + TH1F* g1_grader_hist = 0; + if (module_str == "006") { + g1_grader_hist = new TH1F("g1_grader_hist","",100,0,0.001); + } else { + g1_grader_hist = new TH1F("g1_grader_hist","",100,0,0.0001); + } + + TH2F* no_g0g1_calib_map = new TH2F("no_g0g1_calib_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* g0_grad_map = new TH2F("g0_grad_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g0_grader_map = new TH2F("g0_grader_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* g1_grad_map = new TH2F("g1_grad_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g1_grader_map = new TH2F("g1_grader_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH1F* g0_const_hist = new TH1F("g0_const_hist","",100,1000,4000); + TH1F* g0_conster_hist = new TH1F("g0_conster_hist","",100,0,0.5); + + TH1F* g1_const_hist = new TH1F("g1_const_hist","",100,10000,15000); + TH1F* g1_conster_hist = 0; + if (module_str == "006") { + g1_conster_hist = new TH1F("g1_conster_hist","",100,0,10); + } else { + g1_conster_hist = new TH1F("g1_conster_hist","",100,0,1); + } + + TH2F* g0_const_map = new TH2F("g0_const_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g0_conster_map = new TH2F("g0_conster_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* g1_const_map = new TH2F("g1_const_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g1_conster_map = new TH2F("g1_conster_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH1F* g0overg1_hist = new TH1F("g0overg1_hist","",100,-34,-24); + TH1F* g0overg1er_hist = 0; + if (module_str == "006") { + g0overg1er_hist = new TH1F("g0overg1er_hist","",100,0,0.01); + } else { + g0overg1er_hist = new TH1F("g0overg1er_hist","",100,0,0.001); + } + + TH1F* g0overg1_hist_isEdge = new TH1F("g0overg1_hist_isEdge","",100,-34,-24); + TH1F* g0overg1_hist_isInnerEdge = new TH1F("g0overg1_hist_isInnerEdge","",100,-34,-24); + TH1F* g0overg1_hist_isDouble = new TH1F("g0overg1_hist_isDouble","",100,-34,-24); + TH1F* g0overg1_hist_isNextToDouble = new TH1F("g0overg1_hist_isNextToDouble","",100,-34,-24); + TH1F* g0overg1_hist_isQuad = new TH1F("g0overg1_hist_isQuad","",100,-34,-24); + TH1F* g0overg1_hist_isBulk = new TH1F("g0overg1_hist_isBulk","",100,-34,-24); + + TH2F* g0overg1_map = new TH2F("g0overg1_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* g0overg1er_map = new TH2F("g0overg1er_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + if (createHistos == 1) { + + for (int j = 0; j < 245; j++) { + sprintf(savename,"avg_adcG0_map_%d", j); + avg_adcG0_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + sprintf(savename,"avg_adcG0er_map_%d", j); + avg_adcG0er_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + sprintf(savename,"avg_adcG1_map_%d", j); + avg_adcG1_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + sprintf(savename,"avg_adcG1er_map_%d", j); + avg_adcG1er_map[j] = new TH2F(savename,"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + } + + // data file + sprintf(filename,"%s_%%6.6d.dat", data_loc.c_str()); + + // total frame number check + int totalFrames = 0; + + for (int filei = 0; filei < 2; filei++) { + + thisfile->open((char*)filename, filei); + + while(thisfile->readNextFrame()) { + totalFrames++; + } + + thisfile->close(); + } + + if (totalFrames == 19999 || totalFrames == 20000) { + cout << "expected number of frames " << totalFrames << endl; + } else { + cout << "unexpected number of frames " << totalFrames << endl; + cout << "code expected 21999/22000 frames" << endl; + cout << "exiting to make sure you notice" << endl; + exit(1); + } + + int framecounter = 0; + + for (int filei = 0; filei < 3; filei++) { + + thisfile->open((char*)filename, filei); + + while(thisfile->readNextFrame()) { + + pedestalObjectG0->addG0FrameToPedestalCalculation(thisfile->getFrameDataHandle()); + pedestalObjectG1->addG1FrameToPedestalCalculation(thisfile->getFrameDataHandle()); + + if (((framecounter+1)%100 == 0) || ((totalFrames == 21999) && (framecounter == 21998))) { + if ((totalFrames == 21999) && (framecounter == 21998)) { + framecounter++; + } + + for (int i = 0; i < NCH; i++) { + + avg_adcG0_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->pedestalOfChannel(i)); + avg_adcG0er_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG0->semOfChannel(i)); + + avg_adcG1_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->pedestalOfChannel(i)); + avg_adcG1er_map[framecounter/100]->SetBinContent((i%NC)+1,(i/NC)+1,pedestalObjectG1->semOfChannel(i)); + + } + + pedestalObjectG0->pedestalClear(); + pedestalObjectG1->pedestalClear(); + + if (createPerStepHistos == 1) { + avg_adcG0_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG0_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG0_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG0_map[framecounter/100]->GetZaxis()->SetRangeUser(0,17000); + avg_adcG0_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adc_g0_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + avg_adcG0er_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG0er_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG0er_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG0er_map[framecounter/100]->GetZaxis()->SetRangeUser(0,5); + avg_adcG0er_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adcer_g0_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + avg_adcG1_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG1_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG1_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG1_map[framecounter/100]->GetZaxis()->SetRangeUser(0,17000); + avg_adcG1_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adc_g1_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + avg_adcG1er_map[framecounter/100]->GetXaxis()->SetTitle("Column"); + avg_adcG1er_map[framecounter/100]->GetYaxis()->SetTitle("Row"); + avg_adcG1er_map[framecounter/100]->GetYaxis()->SetTitleOffset(0.7); + avg_adcG1er_map[framecounter/100]->GetZaxis()->SetRangeUser(0,20); + avg_adcG1er_map[framecounter/100]->Draw("colz"); + sprintf(savename,"plots/M%s/BackplanePulsing/perStep/adcer_g1_map_%d_M%s.png", module_str.c_str(), framecounter/100, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + } + + framecounter++; + } + thisfile->close(); + } // end of files + + // save histograms + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/BP_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/BP_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"RECREATE"); + + for (int i = 0; i < 245; i++) { + avg_adcG0_map[i]->Write(); + avg_adcG1_map[i]->Write(); + avg_adcG0er_map[i]->Write(); + avg_adcG1er_map[i]->Write(); + } + saved_file->Close(); + + } else { + // load histos + cout << "LOADING HISTOS" << endl; + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/BP_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/BP_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"READ"); + + for (int i = 0; i < 245; i++) { + sprintf(savename,"avg_adcG0_map_%d", i); + avg_adcG0_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"avg_adcG1_map_%d", i); + avg_adcG1_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + + sprintf(savename,"avg_adcG0er_map_%d", i); + avg_adcG0er_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"avg_adcG1er_map_%d", i); + avg_adcG1er_map[i] = (TH2F*)saved_file->Get((const char *)(savename)); + } + } + + mapcanvas->SetLeftMargin(0.13); + mapcanvas->SetRightMargin(0.05); + + for (int i = 0; i < NCH; i++) { + + vector r0_adc; + vector r0_filter; + + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + for (int j = 0; j < 245; j++) { + + double this_g0avg = avg_adcG0_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avg = avg_adcG1_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g0avger = avg_adcG0er_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avger = avg_adcG1er_map[j]->GetBinContent((i%NC)+1,(i/NC)+1); + + if (this_g0avg != 0) { + r0_filter.push_back(xs[j]); + r0_ferr.push_back(0.); + r0_adc.push_back(this_g0avg); + r0_adcerr.push_back(this_g0avger); + } + if (this_g1avg != 0) { + r1_filter.push_back(xs[j]); + r1_ferr.push_back(0.); + r1_adc.push_back(this_g1avg); + r1_adcerr.push_back(this_g1avger); + } + } + + TGraphErrors *grap_g0 = 0; + TGraphErrors *grap_g1 = 0; + + TF1 *fit_g0 = 0; + TF1 *fit_g1 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + //debug + // cout << i <<" r0size= "<< r0_adc.size()<< " r1size= "<< r1_adc.size()<< endl; + // plot the datapoints + if (r1_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 + //|| (i >= (325*1024+902) && i < (325*1024+902)+10) // addon VH "high" G1 in Module 352 + //|| (i >= (331*1024+902) && i < (331*1024+902)+10) // addon VH "low" G1 in Module 352 + ) { + + 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->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(0,7200); + grap_g1->Draw("AP"); + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + } + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i,module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + } + } + + // define fit ranges and fit + if (r0_adc.size() > 1) { + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemax_g0 = highestPointBeforeSwitching(r0_filter,r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + grap_g0->Fit("pol1","QRC","",rangemin_g0,rangemax_g0); + fit_g0 = (TF1*) grap_g0->GetFunction("pol1"); + if (fit_g0) { + fit_g0->SetLineColor(kBlue); + fit_g0->SetParName(0,"G0 const"); + fit_g0->SetParName(1,"G0 grad"); + + g0_grad_hist->Fill(fit_g0->GetParameter(1)); + g0_grader_hist->Fill(fit_g0->GetParError(1)); + g0_grad_map->Fill(i%NC,i/NC,fit_g0->GetParameter(1)); + g0_grader_map->Fill(i%NC,i/NC,fit_g0->GetParError(1)); + g0_const_hist->Fill(fit_g0->GetParameter(0)); + g0_conster_hist->Fill(fit_g0->GetParError(0)); + g0_const_map->Fill(i%NC,i/NC,fit_g0->GetParameter(0)); + g0_conster_map->Fill(i%NC,i/NC,fit_g0->GetParError(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 + //|| (i >= (325*1024+902) && i < (325*1024+902)+10) // addon VH "high" G1 in Module 352 + //|| (i >= (331*1024+902) && i < (331*1024+902)+10) // addon VH "low" G1 in Module 352 + ) { + + 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->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g0->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g0->GetYaxis()->SetTitleOffset(0.9); + grap_g0->SetMinimum(1000); + grap_g0->SetMaximum(15000); + grap_g0->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + mapcanvas->Update(); + // Added by Vadym to save empty fits too as discussed with Mar + if(grap_g0->FindObject("stats")){ TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats"); + st0->SetX1NDC(0.2); + st0->SetX2NDC(0.54); + st0->SetY1NDC(0.18); + st0->SetY2NDC(0.37); + st0->SetBorderSize(0); + st0->SetTextColor(kBlue); + } + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i,module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + vector 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); + + TF1* lin_g0_p1pc = new TF1("lin_g0_p1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p1pc->SetParameter(0,fit_g0->GetParameter(0)/100.); + lin_g0_p1pc->SetParameter(1,fit_g0->GetParameter(1)/100.); + lin_g0_p1pc->SetLineColor(kRed); + + TF1* lin_g0_p05pc = new TF1("lin_g0_p05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p05pc->SetParameter(0,fit_g0->GetParameter(0)/200.); + lin_g0_p05pc->SetParameter(1,fit_g0->GetParameter(1)/200.); + lin_g0_p05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_p02pc = new TF1("lin_g0_p02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p02pc->SetParameter(0,fit_g0->GetParameter(0)/500.); + lin_g0_p02pc->SetParameter(1,fit_g0->GetParameter(1)/500.); + lin_g0_p02pc->SetLineColor(kOrange); + + TF1* lin_g0_m1pc = new TF1("lin_g0_m1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m1pc->SetParameter(0,fit_g0->GetParameter(0)/-100.); + lin_g0_m1pc->SetParameter(1,fit_g0->GetParameter(1)/-100.); + lin_g0_m1pc->SetLineColor(kRed); + + TF1* lin_g0_m05pc = new TF1("lin_g0_m05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m05pc->SetParameter(0,fit_g0->GetParameter(0)/-200.); + lin_g0_m05pc->SetParameter(1,fit_g0->GetParameter(1)/-200.); + lin_g0_m05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_m02pc = new TF1("lin_g0_m02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m02pc->SetParameter(0,fit_g0->GetParameter(0)/-500.); + lin_g0_m02pc->SetParameter(1,fit_g0->GetParameter(1)/-500.); + lin_g0_m02pc->SetLineColor(kOrange); + + norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + norm_g0->SetMinimum(1.5*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(1.5*lin_g0_p02pc->Eval(rangemax_g0)); + + if (isHGX) { + norm_g0->SetMinimum(3*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(3*lin_g0_p02pc->Eval(rangemax_g0)); + } + + norm_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g0->GetYaxis()->SetTitleOffset(0.9); + norm_g0->Draw("AP"); + flat_g0->Draw("same"); + lin_g0_p1pc->Draw("same"); + lin_g0_p05pc->Draw("same"); + lin_g0_p02pc->Draw("same"); + lin_g0_m1pc->Draw("same"); + lin_g0_m05pc->Draw("same"); + lin_g0_m02pc->Draw("same"); + norm_g0->Draw("P"); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + delete norm_g0; + } + } + } + } + + if (r1_adc.size() > 1) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter,r0_filter); + rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end()); + rangemax_g1 = checkRangeMaxForAmplifierPlateau(rangemax_g1); + + if (rangemax_g1 > rangemin_g1) { + + grap_g1->Fit("pol1","QRC","",rangemin_g1,rangemax_g1); + fit_g1 = (TF1*) grap_g1->GetFunction("pol1"); + if (fit_g1) { + fit_g1->SetLineColor(kGreen+2); + fit_g1->SetParName(0,"G1 const"); + fit_g1->SetParName(1,"G1 grad"); + + g1_grad_hist->Fill(fit_g1->GetParameter(1)); + g1_grader_hist->Fill(fit_g1->GetParError(1)); + g1_grad_map->Fill(i%NC,i/NC,fit_g1->GetParameter(1)); + g1_grader_map->Fill(i%NC,i/NC,fit_g1->GetParError(1)); + g1_const_hist->Fill(fit_g1->GetParameter(0)); + g1_conster_hist->Fill(fit_g1->GetParError(0)); + g1_const_map->Fill(i%NC,i/NC,fit_g1->GetParameter(0)); + g1_conster_map->Fill(i%NC,i/NC,fit_g1->GetParError(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 + //|| (i >= (325*1024+902) && i < (325*1024+902)+10) // addon VH "high" G1 in Module 352 + //|| (i >= (331*1024+902) && i < (331*1024+902)+10) // addon VH "low" G1 in Module 352 + ) { + + 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->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + grap_g1->Draw("AP"); + fit_g1->Draw("same"); + mapcanvas->Update(); + TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats"); + st0->SetX1NDC(0.6); + st0->SetX2NDC(0.94); + st0->SetY1NDC(0.18); + st0->SetY2NDC(0.37); + st0->SetBorderSize(0); + st0->SetTextColor(kGreen+2); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(), plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + vector 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_gi","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_p01pc = new TF1("lin_g1_p01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_p01pc->SetParameter(0,fit_g1->GetParameter(0)/1000.); + lin_g1_p01pc->SetParameter(1,fit_g1->GetParameter(1)/1000.); + lin_g1_p01pc->SetLineColor(kYellow); + + 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_m01pc = new TF1("lin_g1_m01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_m01pc->SetParameter(0,fit_g1->GetParameter(0)/-1000.); + lin_g1_m01pc->SetParameter(1,fit_g1->GetParameter(1)/-1000.); + lin_g1_m01pc->SetLineColor(kYellow); + + 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_m02pc->Eval(rangemin_g1)); + norm_g1->SetMaximum(1.5*lin_g1_p02pc->Eval(rangemin_g1)); + norm_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g1->GetYaxis()->SetTitleOffset(0.9); + norm_g1->Draw("AP"); + flat_g1->Draw("same"); + lin_g1_p02pc->Draw("same"); + lin_g1_p01pc->Draw("same"); + lin_g1_m02pc->Draw("same"); + lin_g1_m01pc->Draw("same"); + norm_g1->Draw("P"); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + delete norm_g1; + } + } + } + } + + // get ratio measurements + if (fit_g0 && fit_g1) { + + double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + double this_g0overg1er = sqrt(pow(fit_g0->GetParError(1)/fit_g0->GetParameter(1),2) + pow(fit_g1->GetParError(1)/fit_g1->GetParameter(1),2)); + + g0overg1_map->Fill(i%NC,i/NC,this_g0overg1); + g0overg1_hist->Fill(this_g0overg1); + g0overg1er_map->Fill(i%NC,i/NC,this_g0overg1er); + g0overg1er_hist->Fill(this_g0overg1er); + + if (isEdge(i)) { + g0overg1_hist_isEdge->Fill(this_g0overg1); + } + if (isInnerEdge(i)) { + g0overg1_hist_isInnerEdge->Fill(this_g0overg1); + } + if (isDouble(i)) { + g0overg1_hist_isDouble->Fill(this_g0overg1); + } + if (isNextToDouble(i)) { + g0overg1_hist_isNextToDouble->Fill(this_g0overg1); + } + if (isQuad(i)) { + g0overg1_hist_isQuad->Fill(this_g0overg1); + } + if (isBulk(i)) { + g0overg1_hist_isBulk->Fill(this_g0overg1); + } + } else { + no_g0g1_calib_map->Fill(i%NC,i/NC,1); + } + + delete grap_g0; + delete grap_g1; + } + + mapcanvas->SetLeftMargin(0.1); + mapcanvas->SetRightMargin(0.13); + + c1->cd(); + + g0_grad_hist->GetXaxis()->SetTitle("G0 gradient"); + g0_grad_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_grad_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0_grader_hist->GetXaxis()->SetTitle("#sigma_{G0 gradient}"); + g0_grader_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_grader_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_grad_hist->GetXaxis()->SetTitle("G1 gradient"); + g1_grad_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_grad_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_grader_hist->GetXaxis()->SetTitle("#sigma_{G1 gradient}"); + g1_grader_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_grader_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0_const_hist->GetXaxis()->SetTitle("G0 intercept"); + g0_const_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_const_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0_conster_hist->GetXaxis()->SetTitle("#sigma_{G0 intercept}"); + g0_conster_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0_conster_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_const_hist->GetXaxis()->SetTitle("G1 intercept"); + g1_const_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_const_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1_conster_hist->GetXaxis()->SetTitle("#sigma_{G1 intercept}"); + g1_conster_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1_conster_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + mapcanvas->cd(); + + TPaveText *pave = new TPaveText(0.86,0.95,0.91,0.98,"blNDC"); + pave->SetBorderSize(0); + pave->SetFillStyle(0); + pave->SetTextSize(0.06); + pave->SetTextAlign(32); + + g0_grad_map->GetXaxis()->SetTitle("Column"); + g0_grad_map->GetYaxis()->SetTitle("Row"); + g0_grad_map->GetYaxis()->SetTitleOffset(0.7); + g0_grad_map->Draw("colz"); + pave->AddText("G0 [ADU/mV]"); + pave->Draw(); + if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g0_grad_map->GetZaxis()->SetRangeUser(3,4); + } else { + g0_grad_map->GetZaxis()->SetRangeUser(5,10); + } + if (isHGX) g0_grad_map->GetZaxis()->SetRangeUser(10,15); + + + sprintf(savename,"plots/M%s/%s/g0_grad_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0_grader_map->GetXaxis()->SetTitle("Column"); + g0_grader_map->GetYaxis()->SetTitle("Row"); + g0_grader_map->GetYaxis()->SetTitleOffset(0.7); + g0_grader_map->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G0}"); + pave->Draw(); + g0_grader_map->GetZaxis()->SetRangeUser(0.0,0.001); + sprintf(savename,"plots/M%s/%s/g0_grader_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_grad_map->GetXaxis()->SetTitle("Column"); + g1_grad_map->GetYaxis()->SetTitle("Row"); + g1_grad_map->GetYaxis()->SetTitleOffset(0.7); + g1_grad_map->Draw("colz"); + pave->Clear(); + pave->AddText("G1 [ADU/mV]"); + pave->Draw(); + if (module_str == "006") { + g1_grad_map->GetZaxis()->SetRangeUser(-0.3,-0.1); + } else if (module_str == "021" || module_str == "022" || module_str == "044") { + g1_grad_map->GetZaxis()->SetRangeUser(-0.3,-0.23); + } else if (module_str == "351" || + module_str == "351_fullspeed" || + module_str == "352" || + module_str == "352_fullspeed" || + module_str == "261" || + module_str == "261_fullspeed" || + module_str == "310" || + module_str == "310_fullspeed" || + module_str == "312" || + module_str == "312_fullspeed" || + module_str == "264" || + module_str == "264_fullspeed" || + module_str == "253" || + module_str == "253_fullspeed" || + module_str == "307" || + module_str == "307_fullspeed" || + module_str == "272_halfspeedtest" || + module_str == "272_fullspeedtest") { + g1_grad_map->GetZaxis()->SetRangeUser(-0.15,-0.1); + } else { + g1_grad_map->GetZaxis()->SetRangeUser(-0.25,-0.2); + } + + if (isHGX) g1_grad_map->GetZaxis()->SetRangeUser(-0.2,-0.1); + sprintf(savename,"plots/M%s/%s/g1_grad_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_grader_map->GetXaxis()->SetTitle("Column"); + g1_grader_map->GetYaxis()->SetTitle("Row"); + g1_grader_map->GetYaxis()->SetTitleOffset(0.7); + g1_grader_map->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G1}"); + pave->Draw(); + if (module_str == "006") { + g1_grader_map->GetZaxis()->SetRangeUser(0.0,0.002); + } else { + g1_grader_map->GetZaxis()->SetRangeUser(0.0,0.0002); + } + sprintf(savename,"plots/M%s/%s/g1_grader_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0_const_map->GetXaxis()->SetTitle("Column"); + g0_const_map->GetYaxis()->SetTitle("Row"); + g0_const_map->GetYaxis()->SetTitleOffset(0.7); + g0_const_map->Draw("colz"); + g0_const_map->GetZaxis()->SetRangeUser(1500,3500); + sprintf(savename,"plots/M%s/%s/g0_const_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0_conster_map->GetXaxis()->SetTitle("Column"); + g0_conster_map->GetYaxis()->SetTitle("Row"); + g0_conster_map->GetYaxis()->SetTitleOffset(0.7); + g0_conster_map->Draw("colz"); + g0_conster_map->GetZaxis()->SetRangeUser(0.0,0.5); + sprintf(savename,"plots/M%s/%s/g0_conster_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_const_map->GetXaxis()->SetTitle("Column"); + g1_const_map->GetYaxis()->SetTitle("Row"); + g1_const_map->GetYaxis()->SetTitleOffset(0.7); + g1_const_map->Draw("colz"); + if (module_str == "006") { + g1_const_map->GetZaxis()->SetRangeUser(10000,15000); + } else { + g1_const_map->GetZaxis()->SetRangeUser(13000,15000); + } + sprintf(savename,"plots/M%s/%s/g1_const_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1_conster_map->GetXaxis()->SetTitle("Column"); + g1_conster_map->GetYaxis()->SetTitle("Row"); + g1_conster_map->GetYaxis()->SetTitleOffset(0.7); + g1_conster_map->Draw("colz"); + if (module_str == "006") { + g1_conster_map->GetZaxis()->SetRangeUser(0.0,10.); + } else { + g1_conster_map->GetZaxis()->SetRangeUser(0.0,1.); + } + sprintf(savename,"plots/M%s/%s/g1_conster_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + + g0overg1_hist->GetXaxis()->SetTitle("G0 / G1"); + g0overg1_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + 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); + g0overg1_hist->Fit("gaus"); + g0overg1_hist->Draw(); + c1->Update(); + TF1* g0overg1hist_gaus = g0overg1_hist->GetFunction("gaus"); + if (g0overg1hist_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(); + } + g0overg1_hist->SetStats(kFALSE); + sprintf(savename,"plots/M%s/%s/g0overg1_histfit_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0overg1er_hist->GetXaxis()->SetTitle("#sigma_{G0 / G1}"); + g0overg1er_hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1er_hist_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g0overg1_hist_isEdge->SetLineColor(kBlue); + g0overg1_hist_isInnerEdge->SetLineColor(kCyan); + g0overg1_hist_isDouble->SetLineColor(kGreen+2); + g0overg1_hist_isNextToDouble->SetLineColor(kRed); + g0overg1_hist_isQuad->SetLineColor(kOrange); + + g0overg1_hist_isEdge->Scale(1./g0overg1_hist_isEdge->GetEntries()); + g0overg1_hist_isInnerEdge->Scale(1./g0overg1_hist_isInnerEdge->GetEntries()); + g0overg1_hist_isDouble->Scale(1./g0overg1_hist_isDouble->GetEntries()); + g0overg1_hist_isNextToDouble->Scale(1./g0overg1_hist_isNextToDouble->GetEntries()); + g0overg1_hist_isQuad->Scale(1./g0overg1_hist_isQuad->GetEntries()); + g0overg1_hist_isBulk->Scale(1./g0overg1_hist_isBulk->GetEntries()); + + TLegend *leg = new TLegend(0.62,0.6,0.93,0.93); + leg->AddEntry(g0overg1_hist_isBulk, "Normal", "l"); + leg->AddEntry(g0overg1_hist_isDouble, "Double", "l"); + leg->AddEntry(g0overg1_hist_isNextToDouble, "Next to D", "l"); + leg->AddEntry(g0overg1_hist_isEdge, "Edge", "l"); + leg->AddEntry(g0overg1_hist_isInnerEdge, "Inner E", "l"); + + if (module_str == "006") { + g0overg1_hist_isEdge->GetXaxis()->SetTitle("G0 / G1"); + g0overg1_hist_isEdge->GetYaxis()->SetTitle("Normalised"); + g0overg1_hist_isEdge->GetYaxis()->SetTitleOffset(1.3); + g0overg1_hist_isEdge->Draw(); + g0overg1_hist_isDouble->Draw("same"); + } else { + g0overg1_hist_isDouble->GetXaxis()->SetTitle("G0 / G1"); + g0overg1_hist_isDouble->GetYaxis()->SetTitle("Normalised"); + g0overg1_hist_isDouble->GetYaxis()->SetTitleOffset(1.3); + g0overg1_hist_isDouble->Draw(); + g0overg1_hist_isEdge->Draw("same"); + } + g0overg1_hist_isInnerEdge->Draw("same"); + g0overg1_hist_isNextToDouble->Draw("same"); + g0overg1_hist_isBulk->Draw("same"); + leg->Draw("same"); + sprintf(savename,"plots/M%s/%s/g0overg1_hist_perType_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + mapcanvas->cd(); + + g0overg1_map->GetXaxis()->SetTitle("Column"); + g0overg1_map->GetYaxis()->SetTitle("Row"); + g0overg1_map->GetYaxis()->SetTitleOffset(0.7); + g0overg1_map->Draw("colz"); + pave->Clear(); + pave->AddText("G0/G1"); + pave->Draw(); + + if (isHGX) { + g0overg1_map->GetZaxis()->SetRangeUser(-110,-70); + } + else { + //g0overg1_map->GetZaxis()->SetRangeUser(-31,-27); + g0overg1_map->GetZaxis()->SetRangeUser(-32,-28); + } + + sprintf(savename,"plots/M%s/%s/g0overg1_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g0overg1er_map->GetXaxis()->SetTitle("Column"); + g0overg1er_map->GetYaxis()->SetTitle("Row"); + g0overg1er_map->GetYaxis()->SetTitleOffset(0.7); + g0overg1er_map->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G0/G1}"); + pave->Draw(); + if (module_str == "006") { + g0overg1er_map->GetZaxis()->SetRangeUser(0,0.01); + } else { + g0overg1er_map->GetZaxis()->SetRangeUser(0,0.001); + } + sprintf(savename,"plots/M%s/%s/g0overg1er_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + no_g0g1_calib_map->GetXaxis()->SetTitle("Column"); + no_g0g1_calib_map->GetYaxis()->SetTitle("Row"); + no_g0g1_calib_map->GetYaxis()->SetTitleOffset(0.7); + no_g0g1_calib_map->Draw("colz"); + sprintf(savename,"plots/M%s/%s/no_g0g1_calib_map_M%s.png", module_str.c_str(), plotfolder_str.c_str(),module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + + if (isHGX) { + sprintf(savename,"data/M%s/BP_ratio_M%s_HG0G1G2.root", module_str.c_str(), module_str.c_str()); + } + else + { + sprintf(savename,"data/M%s/BP_ratio_M%s.root", module_str.c_str(), module_str.c_str()); + } + + + TFile* saved_file2 = new TFile((const char *)(savename),"RECREATE"); + g0overg1_map->Write(); + g0overg1er_map->Write(); + g0_grad_map->Write(); + g1_grad_map->Write(); + saved_file2->Close(); + +} diff --git a/BP_fit.cpp b/BP_fit.cpp new file mode 100644 index 0000000..e90e334 --- /dev/null +++ b/BP_fit.cpp @@ -0,0 +1,520 @@ +// to analyse the backplane pulsing data per module +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + +#include "TApplication.h" +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" + +#include "TGraphErrors.h" +#include "TF1.h" +#include "TStyle.h" +#include "TPaveStats.h" +#include "TFile.h" +#include "TLegend.h" +#include "TPaveText.h" +#include "TCanvas.h" +#include "TRootCanvas.h" +#include "TSystem.h" +#include "TF2.h" + +#include +#include + +//#define NB_ENABLE 1 +//void nonblock(int state); +//#define NB_DISABLE 0 + +//TApplication* rootapp; +//TCanvas *A2; +//TCanvas *A3; +//TCanvas *A4; +//TCanvas *A5; +//TCanvas *A6; + +TGraphErrors *grap_g0; +TGraphErrors *grap_g1; + + +TF1 *fit_g0=0; +TF1 *fit_g1=0; + +TGraphErrors *norm_g0=0; +TGraphErrors *norm_g1=0; + +TF1 *flat_g0; +TF1 *flat_g1; + +TF1 *lin_g0_p1pc; +TF1 *lin_g0_p05pc; +TF1 *lin_g0_p02pc; +TF1 *lin_g0_m1pc; +TF1 *lin_g0_m05pc; +TF1 *lin_g0_m02pc; + +TF1 *lin_g1_p02pc; +TF1 *lin_g1_p01pc; +TF1 *lin_g1_m02pc; +TF1 *lin_g1_m01pc; + +//TPaveStats *st0; + + +//void PlotCanvas(void); + +double checkRangeMaxForAmplifierPlateau(double range_max) { + + // check that the range maximum is no more than 6.4 V + // to avoid non-linearity coming from amplifier plateau + if (range_max > 6400) { + return 6400; + } else { + return range_max; + } +} + + + + +bool isHGX=false; +int main(int argc, char* argv[]) { + + //nonblock(NB_ENABLE); + cout <<"opening the rootapp" <SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 3) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + cout << "arg 3: specify column (x)" << endl; + cout << "arg 4: specify row (y)" << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify pixel x position" << endl; + cout << "arg 3: specify pixel y position" << endl; + exit(1); + } //uncomment for VH 210906 + + string module_str = argv[1]; + + string str2 =("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + + string C = argv[2]; + string R = argv[3]; + + + int column; + int row; + + + std::stringstream(C) >> column; + std::stringstream(R) >> row; + + int pixel = column+row*1024; + + char data_loc[256]; + sprintf(data_loc,"/mnt/sls_det_storage/jungfrau_calib/jungfrau_ana_sophie/M%s_CalibAna/", module_str.c_str()); + cout << data_loc << endl; + + std::string folder_path(data_loc); + if (folder_path.find(str2) != string::npos) isHGX=true; + if (folder_path.find(str3) != string::npos) isHGX=true; + + + // cout << data_loc.find(str2)<<" " << string::npos << " " << str2 << " " << data_loc <HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" < G0_pixel(220, 0); + std::vector G0_err_pixel(220, 0); + std::vector G1_pixel(220, 0); + std::vector G1_err_pixel(220, 0); + + + //char savename[128]; //uncomment for SR + //char filename[128]; //uncomment for SR + char filename[256]; //uncomment for VH 210902 + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + //sprintf(savename,"data/M%s", module_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + //sprintf(savename,"plots/M%s", module_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/BackplanePulsing + //sprintf(savename,"plots/M%s/%s", module_str.c_str(), plotfolder_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + //sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + double xs[220]; + for (int i = 0; i < 100; i++) { + xs[i] = (i+1)*10.; + } + for (int i = 0; i < 120; i++) { + xs[i+100] = 1000+((i+1)*50); + } + +TCanvas *A2 = new TCanvas("A2","Plot scan",150,10,800,400); +TCanvas *A3 = new TCanvas("A3","Plot G0 fit",150,10,800,400); +TCanvas *A4 = new TCanvas("A4","Plot G0 residuals",150,10,800,400); +TCanvas *A5 = new TCanvas("A5","Plot G1 fit",150,10,800,400); +TCanvas *A6 = new TCanvas("A6","Plot G1 residuals",150,10,800,400); + + + + + //file name + sprintf(filename,"%sBP_histos_M%s.root",folder_path.c_str(), module_str.c_str()); + cout << "Loading file " << filename << endl; + TFile* f = new TFile((const char *)(filename),"READ"); + + + for (int j = 0; j < 220; j++) { + TH2F* hist0=(TH2F*)f->Get(Form("avg_adcG0_map_%d",j)); + G0_pixel[j]=hist0->GetBinContent((column+1),(row+1)); + TH2F* hist0er=(TH2F*)f->Get(Form("avg_adcG0er_map_%d",j)); + G0_err_pixel[j]=hist0er->GetBinContent((column+1),(row+1)); + TH2F* hist1=(TH2F*)f->Get(Form("avg_adcG1_map_%d",j)); + G1_pixel[j]=hist1->GetBinContent((column+1),(row+1)); + TH2F* hist1er=(TH2F*)f->Get(Form("avg_adcG1er_map_%d",j)); + G1_err_pixel[j]=hist1er->GetBinContent((column+1),(row+1)); + //cout << "Data for pixel "<< pixel << "is loaded" << endl; + } + + + A2->SetLeftMargin(0.13); + A2->SetRightMargin(0.05); + + vector r0_adc; + vector r0_filter; + + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + for (int j = 0; j < 220; j++) { + + if (G0_pixel[j] != 0) { + r0_filter.push_back(xs[j]); + r0_ferr.push_back(0.); + r0_adc.push_back(G0_pixel[j]); + r0_adcerr.push_back(G0_err_pixel[j]); + } + if (G1_pixel[j] != 0) { + r1_filter.push_back(xs[j]); + r1_ferr.push_back(0.); + r1_adc.push_back(G1_pixel[j]); + r1_adcerr.push_back(G1_err_pixel[j]); + } + cout << "Filter array is loaded" << endl; + } + + //TGraphErrors *grap_g0 = 0; + //TGraphErrors *grap_g1 = 0; + + //TF1 *fit_g0 = 0; + //TF1 *fit_g1 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + + A2->cd(); + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + //debug + // cout << i <<" r0size= "<< r0_adc.size()<< " r1size= "<< r1_adc.size()<< endl; + // plot the datapoints + if (r1_adc.size() > 1) { + + grap_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(0,7200); + grap_g1->Draw("AP"); + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + A2->Update(); + } + + //cout << "Number of point in g1 =" << r1_adc.size() << endl; + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i,module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + } + + + + // define fit ranges and fit + if (r0_adc.size() > 1) { + A3->cd(); + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemax_g0 = highestPointBeforeSwitching(r0_filter,r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + grap_g0->Fit("pol1","QRC","",rangemin_g0,rangemax_g0); + + fit_g0 = (TF1*) grap_g0->GetFunction("pol1"); + + if (fit_g0) { + + fit_g0->SetLineColor(kBlue); + + fit_g0->SetParName(0,"G0 const"); + fit_g0->SetParName(1,"G0 grad"); + grap_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g0->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g0->GetYaxis()->SetTitleOffset(0.9); + grap_g0->SetMinimum(1000); + grap_g0->SetMaximum(15000); + grap_g0->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + + // TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats"); + // st0->SetX1NDC(0.2); + // st0->SetX2NDC(0.54); + // st0->SetY1NDC(0.18); + // st0->SetY2NDC(0.37); + // st0->SetBorderSize(0); + // st0->SetTextColor(kBlue); + + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + A3->Update(); + + //PlotCanvas(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i,module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + A4->cd(); + + vector 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); + + TF1* lin_g0_p1pc = new TF1("lin_g0_p1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p1pc->SetParameter(0,fit_g0->GetParameter(0)/100.); + lin_g0_p1pc->SetParameter(1,fit_g0->GetParameter(1)/100.); + lin_g0_p1pc->SetLineColor(kRed); + + TF1* lin_g0_p05pc = new TF1("lin_g0_p05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p05pc->SetParameter(0,fit_g0->GetParameter(0)/200.); + lin_g0_p05pc->SetParameter(1,fit_g0->GetParameter(1)/200.); + lin_g0_p05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_p02pc = new TF1("lin_g0_p02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p02pc->SetParameter(0,fit_g0->GetParameter(0)/500.); + lin_g0_p02pc->SetParameter(1,fit_g0->GetParameter(1)/500.); + lin_g0_p02pc->SetLineColor(kOrange); + + TF1* lin_g0_m1pc = new TF1("lin_g0_m1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m1pc->SetParameter(0,fit_g0->GetParameter(0)/-100.); + lin_g0_m1pc->SetParameter(1,fit_g0->GetParameter(1)/-100.); + lin_g0_m1pc->SetLineColor(kRed); + + TF1* lin_g0_m05pc = new TF1("lin_g0_m05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m05pc->SetParameter(0,fit_g0->GetParameter(0)/-200.); + lin_g0_m05pc->SetParameter(1,fit_g0->GetParameter(1)/-200.); + lin_g0_m05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_m02pc = new TF1("lin_g0_m02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m02pc->SetParameter(0,fit_g0->GetParameter(0)/-500.); + lin_g0_m02pc->SetParameter(1,fit_g0->GetParameter(1)/-500.); + lin_g0_m02pc->SetLineColor(kOrange); + + norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + norm_g0->SetMinimum(1.5*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(1.5*lin_g0_p02pc->Eval(rangemax_g0)); + + if (isHGX) { + norm_g0->SetMinimum(3*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(3*lin_g0_p02pc->Eval(rangemax_g0)); + } + + norm_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g0->GetYaxis()->SetTitleOffset(0.9); + norm_g0->Draw("AP"); + flat_g0->Draw("same"); + lin_g0_p1pc->Draw("same"); + lin_g0_p05pc->Draw("same"); + lin_g0_p02pc->Draw("same"); + lin_g0_m1pc->Draw("same"); + lin_g0_m05pc->Draw("same"); + lin_g0_m02pc->Draw("same"); + norm_g0->Draw("P"); + A4->Update(); + + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g0; + + } + } + } + A5->cd(); + if (r1_adc.size() > 1) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter,r0_filter); + rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end()); + rangemax_g1 = checkRangeMaxForAmplifierPlateau(rangemax_g1); + + if (rangemax_g1 > rangemin_g1) { + + grap_g1->Fit("pol1","QRC","",rangemin_g1,rangemax_g1); + fit_g1 = (TF1*) grap_g1->GetFunction("pol1"); + if (fit_g1) { + fit_g1->SetLineColor(kGreen+2); + fit_g1->SetParName(0,"G1 const"); + fit_g1->SetParName(1,"G1 grad"); + + grap_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + + + // TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats"); + // st0->SetX1NDC(0.6); + // st0->SetX2NDC(0.94); + // st0->SetY1NDC(0.18); + // st0->SetY2NDC(0.37); + // st0->SetBorderSize(0); + // st0->SetTextColor(kGreen+2); + grap_g1->Draw("AP"); + fit_g1->Draw("same"); + A5->Update(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(), plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + vector 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])); + } + A6->cd(); + 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_gi","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_p01pc = new TF1("lin_g1_p01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_p01pc->SetParameter(0,fit_g1->GetParameter(0)/1000.); + lin_g1_p01pc->SetParameter(1,fit_g1->GetParameter(1)/1000.); + lin_g1_p01pc->SetLineColor(kYellow); + + 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_m01pc = new TF1("lin_g1_m01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_m01pc->SetParameter(0,fit_g1->GetParameter(0)/-1000.); + lin_g1_m01pc->SetParameter(1,fit_g1->GetParameter(1)/-1000.); + lin_g1_m01pc->SetLineColor(kYellow); + + 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_m02pc->Eval(rangemin_g1)); + norm_g1->SetMaximum(1.5*lin_g1_p02pc->Eval(rangemin_g1)); + norm_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g1->GetYaxis()->SetTitleOffset(0.9); + norm_g1->Draw("AP"); + flat_g1->Draw("same"); + lin_g1_p02pc->Draw("same"); + lin_g1_p01pc->Draw("same"); + lin_g1_m02pc->Draw("same"); + lin_g1_m01pc->Draw("same"); + + norm_g1->Draw("P"); + + + A6->Update(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g1; + } + } +} + + // get ratio measurements + // if (fit_g0 && fit_g1) { + + // double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + // double this_g0overg1er = sqrt(pow(fit_g0->GetParError(1)/fit_g0->GetParameter(1),2) + pow(fit_g1->GetParError(1)/fit_g1->GetParameter(1),2)); + // cout << "G0overG1 =" << this_g0overg1 << "+/-" << this_g0overg1er << endl; + // } + + rootapp.Run(); + return 0; + +} + diff --git a/BP_fit_M431.cpp b/BP_fit_M431.cpp new file mode 100644 index 0000000..a7cc864 --- /dev/null +++ b/BP_fit_M431.cpp @@ -0,0 +1,550 @@ +// to analyse the backplane pulsing data per module +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + +#include "TApplication.h" +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" + +#include "TGraphErrors.h" +#include "TF1.h" +#include "TStyle.h" +#include "TPaveStats.h" +#include "TFile.h" +#include "TLegend.h" +#include "TPaveText.h" +#include "TCanvas.h" +#include "TRootCanvas.h" +#include "TSystem.h" +#include "TF2.h" +#include "TGaxis.h" + +#include +#include +#include + +//#define NB_ENABLE 1 +//void nonblock(int state); +//#define NB_DISABLE 0 + +//TApplication* rootapp; +//TCanvas *A2; +//TCanvas *A3; +//TCanvas *A4; +//TCanvas *A5; +//TCanvas *A6; + +TGraphErrors *grap_g0; +TGraphErrors *grap_g1; + + +TF1 *fit_g0=0; +TF1 *fit_g1=0; + +TGraphErrors *norm_g0=0; +TGraphErrors *norm_g1=0; + +TF1 *flat_g0; +TF1 *flat_g1; + +TF1 *lin_g0_p1pc; +TF1 *lin_g0_p05pc; +TF1 *lin_g0_p02pc; +TF1 *lin_g0_m1pc; +TF1 *lin_g0_m05pc; +TF1 *lin_g0_m02pc; + +TF1 *lin_g1_p02pc; +TF1 *lin_g1_p01pc; +TF1 *lin_g1_m02pc; +TF1 *lin_g1_m01pc; + +//TPaveStats *st0; + + +//void PlotCanvas(void); + +double checkRangeMaxForAmplifierPlateau(double range_max) { + + // check that the range maximum is no more than 6.4 V + // to avoid non-linearity coming from amplifier plateau + if (range_max > 6400) { + return 6400; + } else { + return range_max; + } +} + + + + +bool isHGX=false; +int main(int argc, char* argv[]) { + + //nonblock(NB_ENABLE); + cout <<"opening the rootapp" <SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 3) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + cout << "arg 3: specify column (x)" << endl; + cout << "arg 4: specify row (y)" << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify pixel x position" << endl; + cout << "arg 3: specify pixel y position" << endl; + exit(1); + } //uncomment for VH 210906 + + string module_str = argv[1]; + + string str2 =("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + + string C = argv[2]; + string R = argv[3]; + + + int column; + int row; + + + std::stringstream(C) >> column; + std::stringstream(R) >> row; + + int pixel = column+row*1024; + + char data_loc[256]; + sprintf(data_loc,"/mnt/sls_det_storage/jungfrau_calib/jungfrau_ana_sophie/M%s_CalibAna/", module_str.c_str()); + cout << data_loc << endl; + + std::string folder_path(data_loc); + if (folder_path.find(str2) != string::npos) isHGX=true; + if (folder_path.find(str3) != string::npos) isHGX=true; + + + // cout << data_loc.find(str2)<<" " << string::npos << " " << str2 << " " << data_loc <HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" < G0_pixel(220, 0); + std::vector G0_err_pixel(220, 0); + std::vector G1_pixel(220, 0); + std::vector G1_err_pixel(220, 0); + + + //char savename[128]; //uncomment for SR + //char filename[128]; //uncomment for SR + char filename[256]; //uncomment for VH 210902 + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + //sprintf(savename,"data/M%s", module_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + //sprintf(savename,"plots/M%s", module_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/BackplanePulsing + //sprintf(savename,"plots/M%s/%s", module_str.c_str(), plotfolder_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + //sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + double xs[220]; + for (int i = 0; i < 100; i++) { + //for (int i = 0; i < 220; i++) { + xs[i] = (i+1)*10.; + } + for (int i = 0; i < 120; i++) { + xs[i+100] = 1000+((i+1)*50); + } + +TCanvas *A2 = new TCanvas("A2","Plot scan",150,10,800,400); +TCanvas *A3 = new TCanvas("A3","Plot G0 fit",150,10,800,400); +TCanvas *A4 = new TCanvas("A4","Plot G0 residuals",150,10,800,400); +TCanvas *A5 = new TCanvas("A5","Plot G1 fit",150,10,800,400); +TCanvas *A6 = new TCanvas("A6","Plot G1 residuals",150,10,800,400); +TCanvas *A7 = new TCanvas("A7","G0 linearity",150,10,800,400); + + + + + //file name + sprintf(filename,"%sBP_histos_M%s.root",folder_path.c_str(), module_str.c_str()); + cout << "Loading file " << filename << endl; + TFile* f = new TFile((const char *)(filename),"READ"); + + + for (int j = 0; j < 220; j++) { + TH2F* hist0=(TH2F*)f->Get(Form("avg_adcG0_map_%d",j)); + G0_pixel[j]=hist0->GetBinContent((column+1),(row+1)); + TH2F* hist0er=(TH2F*)f->Get(Form("avg_adcG0er_map_%d",j)); + G0_err_pixel[j]=hist0er->GetBinContent((column+1),(row+1)); + TH2F* hist1=(TH2F*)f->Get(Form("avg_adcG1_map_%d",j)); + G1_pixel[j]=hist1->GetBinContent((column+1),(row+1)); + TH2F* hist1er=(TH2F*)f->Get(Form("avg_adcG1er_map_%d",j)); + G1_err_pixel[j]=hist1er->GetBinContent((column+1),(row+1)); + //cout << "Data for pixel "<< pixel << "is loaded" << endl; + } + + + A2->SetLeftMargin(0.13); + A2->SetRightMargin(0.05); + + vector r0_adc; + vector r0_filter; + + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + for (int j = 0; j < 220; j++) { + //cout << "Pixel G0: " << G0_pixel[j] << ", pixel G1: " << G1_pixel[j] << endl; + + if (G0_pixel[j] != 0) { + r0_filter.push_back(xs[j]); + r0_ferr.push_back(0.); + r0_adc.push_back(G0_pixel[j]); + r0_adcerr.push_back(G0_err_pixel[j]); + } + if (G1_pixel[j] != 0) { + r1_filter.push_back(xs[j]); + r1_ferr.push_back(0.); + r1_adc.push_back(G1_pixel[j]); + r1_adcerr.push_back(G1_err_pixel[j]); + } + //cout << "Filter array is loaded" << endl; + } + + //TGraphErrors *grap_g0 = 0; + //TGraphErrors *grap_g1 = 0; + + //TF1 *fit_g0 = 0; + //TF1 *fit_g1 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + + A2->cd(); + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + //debug + cout <<" r0size= "<< r0_adc.size()<< " r1size= "<< r1_adc.size()<< endl; + // plot the datapoints + if (r1_adc.size() > 1) { + + grap_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(20000); + grap_g1->GetXaxis()->SetLimits(0,7200); + grap_g1->Draw("AP"); + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + A2->Update(); + } + + //cout << "Number of point in g1 =" << r1_adc.size() << endl; + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i,module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + } + + + + // define fit ranges and fit + if (r0_adc.size() > 1) { + A3->cd(); + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemax_g0 = highestPointBeforeSwitching(r0_filter,r1_filter); + cout << "Switch point: " << rangemax_g0 << endl; + + if (rangemax_g0 > rangemin_g0) { + + grap_g0->Fit("pol1","QRC","",rangemin_g0,rangemax_g0); + + fit_g0 = (TF1*) grap_g0->GetFunction("pol1"); + + if (fit_g0) { + + fit_g0->SetLineColor(kBlue); + + fit_g0->SetParName(0,"G0 const"); + fit_g0->SetParName(1,"G0 grad"); + grap_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g0->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g0->GetYaxis()->SetTitleOffset(0.9); + grap_g0->SetMinimum(1000); + grap_g0->SetMaximum(15000); + grap_g0->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + + // TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats"); + // st0->SetX1NDC(0.2); + // st0->SetX2NDC(0.54); + // st0->SetY1NDC(0.18); + // st0->SetY2NDC(0.37); + // st0->SetBorderSize(0); + // st0->SetTextColor(kBlue); + + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + A3->Update(); + + //PlotCanvas(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i,module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + A4->cd(); + + vector 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); + + TF1* lin_g0_p1pc = new TF1("lin_g0_p1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p1pc->SetParameter(0,fit_g0->GetParameter(0)/100.); + lin_g0_p1pc->SetParameter(1,fit_g0->GetParameter(1)/100.); + lin_g0_p1pc->SetLineColor(kRed); + + TF1* lin_g0_p05pc = new TF1("lin_g0_p05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p05pc->SetParameter(0,fit_g0->GetParameter(0)/200.); + lin_g0_p05pc->SetParameter(1,fit_g0->GetParameter(1)/200.); + lin_g0_p05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_p02pc = new TF1("lin_g0_p02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p02pc->SetParameter(0,fit_g0->GetParameter(0)/500.); + lin_g0_p02pc->SetParameter(1,fit_g0->GetParameter(1)/500.); + lin_g0_p02pc->SetLineColor(kOrange); + + TF1* lin_g0_m1pc = new TF1("lin_g0_m1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m1pc->SetParameter(0,fit_g0->GetParameter(0)/-100.); + lin_g0_m1pc->SetParameter(1,fit_g0->GetParameter(1)/-100.); + lin_g0_m1pc->SetLineColor(kRed); + + TF1* lin_g0_m05pc = new TF1("lin_g0_m05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m05pc->SetParameter(0,fit_g0->GetParameter(0)/-200.); + lin_g0_m05pc->SetParameter(1,fit_g0->GetParameter(1)/-200.); + lin_g0_m05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_m02pc = new TF1("lin_g0_m02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m02pc->SetParameter(0,fit_g0->GetParameter(0)/-500.); + lin_g0_m02pc->SetParameter(1,fit_g0->GetParameter(1)/-500.); + lin_g0_m02pc->SetLineColor(kOrange); + + norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + norm_g0->SetMinimum(1.5*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(1.5*lin_g0_p02pc->Eval(rangemax_g0)); + + if (isHGX) { + norm_g0->SetMinimum(3*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(3*lin_g0_p02pc->Eval(rangemax_g0)); + } + + norm_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g0->GetYaxis()->SetTitleOffset(0.9); + norm_g0->Draw("AP"); + flat_g0->Draw("same"); + lin_g0_p1pc->Draw("same"); + lin_g0_p05pc->Draw("same"); + lin_g0_p02pc->Draw("same"); + lin_g0_m1pc->Draw("same"); + lin_g0_m05pc->Draw("same"); + lin_g0_m02pc->Draw("same"); + norm_g0->Draw("P"); + A4->Update(); + + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g0; + + } + } + } + A5->cd(); + if (r1_adc.size() > 1) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter,r0_filter); + rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end()); + // Added to fit first linear range, JF1.2 + //rangemax_g1 = std::min(rangemax_g1, 2200.); + rangemax_g1 = checkRangeMaxForAmplifierPlateau(rangemax_g1); + + if (rangemax_g1 > rangemin_g1) { + + grap_g1->Fit("pol1","QRC","",rangemin_g1,rangemax_g1); + fit_g1 = (TF1*) grap_g1->GetFunction("pol1"); + if (fit_g1) { + fit_g1->SetLineColor(kGreen+2); + fit_g1->SetParName(0,"G1 const"); + fit_g1->SetParName(1,"G1 grad"); + + grap_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + + + // TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats"); + // st0->SetX1NDC(0.6); + // st0->SetX2NDC(0.94); + // st0->SetY1NDC(0.18); + // st0->SetY2NDC(0.37); + // st0->SetBorderSize(0); + // st0->SetTextColor(kGreen+2); + grap_g1->Draw("AP"); + fit_g1->Draw("same"); + A5->Update(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(), plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + vector 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])); + } + A6->cd(); + 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_gi","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_p01pc = new TF1("lin_g1_p01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_p01pc->SetParameter(0,fit_g1->GetParameter(0)/1000.); + lin_g1_p01pc->SetParameter(1,fit_g1->GetParameter(1)/1000.); + lin_g1_p01pc->SetLineColor(kYellow); + + 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_m01pc = new TF1("lin_g1_m01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_m01pc->SetParameter(0,fit_g1->GetParameter(0)/-1000.); + lin_g1_m01pc->SetParameter(1,fit_g1->GetParameter(1)/-1000.); + lin_g1_m01pc->SetLineColor(kYellow); + + 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_m02pc->Eval(rangemin_g1)); + norm_g1->SetMaximum(1.5*lin_g1_p02pc->Eval(rangemin_g1)); + norm_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g1->GetYaxis()->SetTitleOffset(0.9); + norm_g1->Draw("AP"); + flat_g1->Draw("same"); + lin_g1_p02pc->Draw("same"); + lin_g1_p01pc->Draw("same"); + lin_g1_m02pc->Draw("same"); + lin_g1_m01pc->Draw("same"); + + norm_g1->Draw("P"); + + + A6->Update(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g1; + // + } + } +} + + if(fit_g1){ + A7->cd(); + TGraph* linearityGraph = new TGraph(); + double x, y; + for(size_t i = 0; i < grap_g1->GetN(); i++){ + grap_g1->GetPoint(i, x, y); + auto ADU = y; + auto fitADU = fit_g1->Eval(x); + + linearityGraph->SetPoint(i, ADU, fitADU - ADU); + } + + //linearityGraph->GetXaxis()->SetTitle("Injected signal [mV]"); + linearityGraph->GetXaxis()->SetTitle("Injected signal [ADU]"); + linearityGraph->GetYaxis()->SetTitle("fit - signal [ADU]"); + linearityGraph->SetMarkerStyle(20); + linearityGraph->SetMarkerColor(kGreen+2); + linearityGraph->SetLineColor(kGreen+2); + linearityGraph->Draw("AP"); + A7->Update(); + } + // get ratio measurements + // if (fit_g0 && fit_g1) { + + // double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + // double this_g0overg1er = sqrt(pow(fit_g0->GetParError(1)/fit_g0->GetParameter(1),2) + pow(fit_g1->GetParError(1)/fit_g1->GetParameter(1),2)); + // cout << "G0overG1 =" << this_g0overg1 << "+/-" << this_g0overg1er << endl; + // } + + rootapp.Run(); + return 0; + +} + diff --git a/BP_fit_thin.cpp b/BP_fit_thin.cpp new file mode 100644 index 0000000..76474a6 --- /dev/null +++ b/BP_fit_thin.cpp @@ -0,0 +1,520 @@ +// to analyse the backplane pulsing data per module +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + +#include "TApplication.h" +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" + +#include "TGraphErrors.h" +#include "TF1.h" +#include "TStyle.h" +#include "TPaveStats.h" +#include "TFile.h" +#include "TLegend.h" +#include "TPaveText.h" +#include "TCanvas.h" +#include "TRootCanvas.h" +#include "TSystem.h" +#include "TF2.h" + +#include +#include + +//#define NB_ENABLE 1 +//void nonblock(int state); +//#define NB_DISABLE 0 + +//TApplication* rootapp; +//TCanvas *A2; +//TCanvas *A3; +//TCanvas *A4; +//TCanvas *A5; +//TCanvas *A6; + +TGraphErrors *grap_g0; +TGraphErrors *grap_g1; + + +TF1 *fit_g0=0; +TF1 *fit_g1=0; + +TGraphErrors *norm_g0=0; +TGraphErrors *norm_g1=0; + +TF1 *flat_g0; +TF1 *flat_g1; + +TF1 *lin_g0_p1pc; +TF1 *lin_g0_p05pc; +TF1 *lin_g0_p02pc; +TF1 *lin_g0_m1pc; +TF1 *lin_g0_m05pc; +TF1 *lin_g0_m02pc; + +TF1 *lin_g1_p02pc; +TF1 *lin_g1_p01pc; +TF1 *lin_g1_m02pc; +TF1 *lin_g1_m01pc; + +//TPaveStats *st0; + + +//void PlotCanvas(void); + +double checkRangeMaxForAmplifierPlateau(double range_max) { + + // check that the range maximum is no more than 6.4 V + // to avoid non-linearity coming from amplifier plateau + if (range_max > 6400) { + return 6400; + } else { + return range_max; + } +} + + + + +bool isHGX=false; +int main(int argc, char* argv[]) { + + //nonblock(NB_ENABLE); + cout <<"opening the rootapp" <SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 3) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + cout << "arg 3: specify column (x)" << endl; + cout << "arg 4: specify row (y)" << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify pixel x position" << endl; + cout << "arg 3: specify pixel y position" << endl; + exit(1); + } //uncomment for VH 210906 + + string module_str = argv[1]; + + string str2 =("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + + string C = argv[2]; + string R = argv[3]; + + + int column; + int row; + + + std::stringstream(C) >> column; + std::stringstream(R) >> row; + + int pixel = column+row*1024; + + char data_loc[256]; + sprintf(data_loc,"/mnt/sls_det_storage/jungfrau_calib/jungfrau_ana_sophie/M%s_CalibAna/", module_str.c_str()); + cout << data_loc << endl; + + std::string folder_path(data_loc); + if (folder_path.find(str2) != string::npos) isHGX=true; + if (folder_path.find(str3) != string::npos) isHGX=true; + + + // cout << data_loc.find(str2)<<" " << string::npos << " " << str2 << " " << data_loc <HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" < G0_pixel(245, 0); + std::vector G0_err_pixel(245, 0); + std::vector G1_pixel(245, 0); + std::vector G1_err_pixel(245, 0); + + + //char savename[128]; //uncomment for SR + //char filename[128]; //uncomment for SR + char filename[256]; //uncomment for VH 210902 + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + //sprintf(savename,"data/M%s", module_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + //sprintf(savename,"plots/M%s", module_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/BackplanePulsing + //sprintf(savename,"plots/M%s/%s", module_str.c_str(), plotfolder_str.c_str()); + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + //sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + //mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + double xs[245]; + for (int i = 0; i < 139; i++) { + xs[i] = 10+i*5.; + } + for (int i = 0; i < 106; i++) { + xs[i+139] = 700+((i+1)*50); + } + +TCanvas *A2 = new TCanvas("A2","Plot scan",150,10,800,400); +TCanvas *A3 = new TCanvas("A3","Plot G0 fit",150,10,800,400); +TCanvas *A4 = new TCanvas("A4","Plot G0 residuals",150,10,800,400); +TCanvas *A5 = new TCanvas("A5","Plot G1 fit",150,10,800,400); +TCanvas *A6 = new TCanvas("A6","Plot G1 residuals",150,10,800,400); + + + + + //file name + sprintf(filename,"%sBP_histos_M%s.root",folder_path.c_str(), module_str.c_str()); + cout << "Loading file " << filename << endl; + TFile* f = new TFile((const char *)(filename),"READ"); + + + for (int j = 0; j < 245; j++) { + TH2F* hist0=(TH2F*)f->Get(Form("avg_adcG0_map_%d",j)); + G0_pixel[j]=hist0->GetBinContent((column+1),(row+1)); + TH2F* hist0er=(TH2F*)f->Get(Form("avg_adcG0er_map_%d",j)); + G0_err_pixel[j]=hist0er->GetBinContent((column+1),(row+1)); + TH2F* hist1=(TH2F*)f->Get(Form("avg_adcG1_map_%d",j)); + G1_pixel[j]=hist1->GetBinContent((column+1),(row+1)); + TH2F* hist1er=(TH2F*)f->Get(Form("avg_adcG1er_map_%d",j)); + G1_err_pixel[j]=hist1er->GetBinContent((column+1),(row+1)); + //cout << "Data for pixel "<< pixel << "is loaded" << endl; + } + + + A2->SetLeftMargin(0.13); + A2->SetRightMargin(0.05); + + vector r0_adc; + vector r0_filter; + + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + for (int j = 0; j < 245; j++) { + + if (G0_pixel[j] != 0) { + r0_filter.push_back(xs[j]); + r0_ferr.push_back(0.); + r0_adc.push_back(G0_pixel[j]); + r0_adcerr.push_back(G0_err_pixel[j]); + } + if (G1_pixel[j] != 0) { + r1_filter.push_back(xs[j]); + r1_ferr.push_back(0.); + r1_adc.push_back(G1_pixel[j]); + r1_adcerr.push_back(G1_err_pixel[j]); + } + cout << "Filter array is loaded" << endl; + } + + //TGraphErrors *grap_g0 = 0; + //TGraphErrors *grap_g1 = 0; + + //TF1 *fit_g0 = 0; + //TF1 *fit_g1 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + + A2->cd(); + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + //debug + // cout << i <<" r0size= "<< r0_adc.size()<< " r1size= "<< r1_adc.size()<< endl; + // plot the datapoints + if (r1_adc.size() > 1) { + + grap_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(0,7200); + grap_g1->Draw("AP"); + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + A2->Update(); + } + + //cout << "Number of point in g1 =" << r1_adc.size() << endl; + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i,module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + } + + + + // define fit ranges and fit + if (r0_adc.size() > 1) { + A3->cd(); + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemax_g0 = highestPointBeforeSwitching(r0_filter,r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + grap_g0->Fit("pol1","QRC","",rangemin_g0,rangemax_g0); + + fit_g0 = (TF1*) grap_g0->GetFunction("pol1"); + + if (fit_g0) { + + fit_g0->SetLineColor(kBlue); + + fit_g0->SetParName(0,"G0 const"); + fit_g0->SetParName(1,"G0 grad"); + grap_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g0->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g0->GetYaxis()->SetTitleOffset(0.9); + grap_g0->SetMinimum(1000); + grap_g0->SetMaximum(15000); + grap_g0->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + + // TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats"); + // st0->SetX1NDC(0.2); + // st0->SetX2NDC(0.54); + // st0->SetY1NDC(0.18); + // st0->SetY2NDC(0.37); + // st0->SetBorderSize(0); + // st0->SetTextColor(kBlue); + + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + A3->Update(); + + //PlotCanvas(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i,module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + A4->cd(); + + vector 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); + + TF1* lin_g0_p1pc = new TF1("lin_g0_p1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p1pc->SetParameter(0,fit_g0->GetParameter(0)/100.); + lin_g0_p1pc->SetParameter(1,fit_g0->GetParameter(1)/100.); + lin_g0_p1pc->SetLineColor(kRed); + + TF1* lin_g0_p05pc = new TF1("lin_g0_p05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p05pc->SetParameter(0,fit_g0->GetParameter(0)/200.); + lin_g0_p05pc->SetParameter(1,fit_g0->GetParameter(1)/200.); + lin_g0_p05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_p02pc = new TF1("lin_g0_p02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_p02pc->SetParameter(0,fit_g0->GetParameter(0)/500.); + lin_g0_p02pc->SetParameter(1,fit_g0->GetParameter(1)/500.); + lin_g0_p02pc->SetLineColor(kOrange); + + TF1* lin_g0_m1pc = new TF1("lin_g0_m1pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m1pc->SetParameter(0,fit_g0->GetParameter(0)/-100.); + lin_g0_m1pc->SetParameter(1,fit_g0->GetParameter(1)/-100.); + lin_g0_m1pc->SetLineColor(kRed); + + TF1* lin_g0_m05pc = new TF1("lin_g0_m05pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m05pc->SetParameter(0,fit_g0->GetParameter(0)/-200.); + lin_g0_m05pc->SetParameter(1,fit_g0->GetParameter(1)/-200.); + lin_g0_m05pc->SetLineColor(kOrange+1); + + TF1* lin_g0_m02pc = new TF1("lin_g0_m02pc","[0]+[1]*x",rangemin_g0,rangemax_g0); + lin_g0_m02pc->SetParameter(0,fit_g0->GetParameter(0)/-500.); + lin_g0_m02pc->SetParameter(1,fit_g0->GetParameter(1)/-500.); + lin_g0_m02pc->SetLineColor(kOrange); + + norm_g0->GetXaxis()->SetRangeUser(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + + norm_g0->SetMinimum(1.5*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(1.5*lin_g0_p02pc->Eval(rangemax_g0)); + + if (isHGX) { + norm_g0->SetMinimum(3*lin_g0_m02pc->Eval(rangemax_g0)); + norm_g0->SetMaximum(3*lin_g0_p02pc->Eval(rangemax_g0)); + } + + norm_g0->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g0->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g0->GetYaxis()->SetTitleOffset(0.9); + norm_g0->Draw("AP"); + flat_g0->Draw("same"); + lin_g0_p1pc->Draw("same"); + lin_g0_p05pc->Draw("same"); + lin_g0_p02pc->Draw("same"); + lin_g0_m1pc->Draw("same"); + lin_g0_m05pc->Draw("same"); + lin_g0_m02pc->Draw("same"); + norm_g0->Draw("P"); + A4->Update(); + + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g0; + + } + } + } + A5->cd(); + if (r1_adc.size() > 1) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter,r0_filter); + rangemax_g1 = *max_element(r1_filter.begin(),r1_filter.end()); + rangemax_g1 = checkRangeMaxForAmplifierPlateau(rangemax_g1); + + if (rangemax_g1 > rangemin_g1) { + + grap_g1->Fit("pol1","QRC","",rangemin_g1,rangemax_g1); + fit_g1 = (TF1*) grap_g1->GetFunction("pol1"); + if (fit_g1) { + fit_g1->SetLineColor(kGreen+2); + fit_g1->SetParName(0,"G1 const"); + fit_g1->SetParName(1,"G1 grad"); + + grap_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(1000); + grap_g1->SetMaximum(15000); + grap_g1->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + + + // TPaveStats *st0 = (TPaveStats*)grap_g1->FindObject("stats"); + // st0->SetX1NDC(0.6); + // st0->SetX2NDC(0.94); + // st0->SetY1NDC(0.18); + // st0->SetY2NDC(0.37); + // st0->SetBorderSize(0); + // st0->SetTextColor(kGreen+2); + grap_g1->Draw("AP"); + fit_g1->Draw("same"); + A5->Update(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(), plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + vector 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])); + } + A6->cd(); + 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_gi","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_p01pc = new TF1("lin_g1_p01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_p01pc->SetParameter(0,fit_g1->GetParameter(0)/1000.); + lin_g1_p01pc->SetParameter(1,fit_g1->GetParameter(1)/1000.); + lin_g1_p01pc->SetLineColor(kYellow); + + 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_m01pc = new TF1("lin_g1_m01pc","[0]+[1]*x",rangemin_g1,rangemax_g1); + lin_g1_m01pc->SetParameter(0,fit_g1->GetParameter(0)/-1000.); + lin_g1_m01pc->SetParameter(1,fit_g1->GetParameter(1)/-1000.); + lin_g1_m01pc->SetLineColor(kYellow); + + 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_m02pc->Eval(rangemin_g1)); + norm_g1->SetMaximum(1.5*lin_g1_p02pc->Eval(rangemin_g1)); + norm_g1->GetXaxis()->SetTitle("Signal generator voltage [mV]"); + norm_g1->GetYaxis()->SetTitle("Normalised ADC [ADU]"); + norm_g1->GetYaxis()->SetTitleOffset(0.9); + norm_g1->Draw("AP"); + flat_g1->Draw("same"); + lin_g1_p02pc->Draw("same"); + lin_g1_p01pc->Draw("same"); + lin_g1_m02pc->Draw("same"); + lin_g1_m01pc->Draw("same"); + + norm_g1->Draw("P"); + + + A6->Update(); + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g1; + } + } +} + + // get ratio measurements + // if (fit_g0 && fit_g1) { + + // double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + // double this_g0overg1er = sqrt(pow(fit_g0->GetParError(1)/fit_g0->GetParameter(1),2) + pow(fit_g1->GetParError(1)/fit_g1->GetParameter(1),2)); + // cout << "G0overG1 =" << this_g0overg1 << "+/-" << this_g0overg1er << endl; + // } + + rootapp.Run(); + return 0; + +} + diff --git a/BP_scan_both_speeds.sh b/BP_scan_both_speeds.sh new file mode 100644 index 0000000..f55eeb2 --- /dev/null +++ b/BP_scan_both_speeds.sh @@ -0,0 +1,236 @@ +#!/bin/bash + +# to run do: bash BP_scan.sh + +# prerequisites: +# - setup_env.sh souced +# - the hostname is set +# - detector is on +# - source pccalib.sh with pc (pc-jungfrau-01/pc-jungfrau-test/pc-jungfrau-02) +# - waveform generator is on +# - amplifier board is powered and unconnected. +# - last file should be 2097184000 bytes big. +# connect to pc10773 (RH7 machine connected to the pulser and, after klog, run the command +# nc -k -n -v -l -p 5555 -e /bin/bash + +# last data file (000002.dat) should be 2097184000 bytes + + + +KILLRCV="killall ju_udp_receiver_3threads_2_0" +$KILLRCV + +if [[ "$0" == *"BP_scan_both_speeds.sh"* ]]; then + echo "script changes env. variables: should be invoked with source, not sh " + exit +fi + +if [ ! -v $1 ]; then + echo $0 + echo "printing filenames for module " $1 + source filename_creator.sh $1 Y + + sls_detector_put stop #just in case + + sls_detector_put powerchip 1 + + sls_detector_put delay 0 + sls_detector_put triggers 1 + sls_detector_put frames 100 + sls_detector_put period 0.005 + sls_detector_put exptime 0.00004 + sls_detector_put highvoltage 0 + + + # configure for receiver on pc-jungfrau-01/pc-jungfrau-test/pc-jungfrau-02 + # source pccalib.sh with pc (pc-jungfrau-01/pc-jungfrau-test/pc-jungfrau-02) + + sls_detector_put udp_dstport 32410 + sls_detector_put udp_dstip $DSTIP #10.1.4.105 + sls_detector_put udp_dstmac $DSTMAC #3C:FD:FE:A2:14:D8 + sls_detector_put udp_srcip $SRCIP #10.1.4.9 + sls_detector_put udp_srcmac 00:ab:be:cc:dd:e2 + + #sls_detector_put configuremac 0 + sls_detector_put readoutspeed half_speed + #sls_detector_put readoutspeed full_speed + + sls_detector_put gainmode dynamic + + CLI=/afs/psi.ch/project/sls_det_software/serial_control_software/minidelay/minidelay + + # prepare the AGILENT 33250A + echo $CLI" OUTP OFF " | nc pc10773 5555 + sleep 0.2 + + #remember to put High-Z load! + #Change load to Infinity + echo $CLI" OUTP:LOAD INF " | nc pc10773 5555 + + # Polarity normal + echo $CLI" OUTP:POL NORM" | nc pc10773 5555 + + # pulse + echo $CLI" FUNC PULS" | nc pc10773 5555 + sleep 0.2 + + # frequency 1kHz + echo $CLI" FREQ 1000" | nc pc10773 5555 + sleep 0.2 + + # width 40 us + echo $CLI" PULS:WIDT 0.000040" | nc pc10773 5555 + sleep 0.2 + + # amplitude 0.1 V" | nc pc10773 5555 + echo $CLI" VOLT 0.1" | nc pc10773 5555 + + # offset 0 V echo $CLI" VOLT:OFFS 0" | nc pc8830 5555 + sleep 0.2 + + # VLOW 0 V + echo $CLI" VOLT:LOW 0" | nc pc10773 5555 + sleep 0.2 + + # edge 50 ns + echo $CLI" PULS:TRAN 0.000000050" | nc pc10773 5555 + sleep 0.2 + + # triggered burst + echo $CLI" BURS:MODE TRIG" | nc pc10773 5555 + sleep 0.2 + + # cycles 1 + echo $CLI" BURS:NCYC 1" | nc pc10773 5555 + sleep 0.2 + + # external trigger source + echo $CLI" TRIG:SOUR EXT" | nc pc10773 5555 + sleep 0.2 + + # delay 1 us + echo $CLI" TRIG:DEL 0.000001" | nc pc10773 5555 + + # delay 40 us + #echo $CLI" TRIG:DEL 0.000040" | nc pc10773 5555 + sleep 0.2 + + # slope positive + echo $CLI" TRIG:SLOP POS" | nc pc10773 5555 + sleep 0.2 + + # turn on burst mode + echo $CLI" BURS:STAT ON" | nc pc10773 5555 + sleep 0.2 + + if [ "$1" == 'Y' ]; then + echo "started with Y argument, skipping manual checks" + else + echo "It is now safe to connect the cable between the amplifier board and the readout board" + echo "Please do so and press any key to continue, or press q to exit this script" + read -n 1 -s input + + if [[ $input = "q" ]]; then + echo "Exiting script" + exit 1 + fi + fi + + + # high voltage + # sls_detector_put highvoltage 200 #because it seemed more stable, we are using external HV 230V + # output on + echo $CLI" OUTP ON" | nc pc10773 5555 + sleep 0.2 + + if [ "$1" == 'Y' ]; then + echo "started with Y argument, skipping manual checks" + else + echo "The current on the amplifier board should be ~0.035 A" + echo "Please check and press any key to continue, or press q to exit this script" + read -n 1 -s input + if [[ $input = "q" ]]; then + echo "Exiting script" + exit 1 + fi + fi + + $TKBPG0 & + sleep 1 + + # the scan + for ivpulse in {10..1000..10} + do + vpulse=$(printf %.3f $(echo "$ivpulse/1000" | bc -l)) + echo $CLI" VOLT:HIGH "$vpulse | nc pc10773 5555 + sleep 1 + sls_detector_put start + sleep 1 + done + + + for ivpulse in {1050..6000..50} + do + vpulse=$(printf %.3f $(echo "$ivpulse/1000" | bc -l)) + echo $CLI" VOLT:HIGH "$vpulse | nc pc10773 5555 + sleep 1 + sls_detector_put start + sleep 1 + done + + # Kill receiver + sls_detector_put stop + echo $CLI" VOLT:HIGH 0.010" | nc pc10773 5555 + sleep 20 + $KILLRCV + + + + # source filename creator to save data in fullspeed folder + + source filename_creator.sh $1"_fullspeed" N + + # set detector for full speed + sls_detector_put readoutspeed full_speed + + $TKBPG0 & + sleep 1 + + # the scan + for ivpulse in {10..1000..10} + do + + vpulse=$(printf %.3f $(echo "$ivpulse/1000" | bc -l)) + echo $CLI" VOLT:HIGH "$vpulse | nc pc10773 5555 + sleep 1 + sls_detector_put start + sleep 1 + done + + for ivpulse in {1050..6000..50} + do + vpulse=$(printf %.3f $(echo "$ivpulse/1000" | bc -l)) + echo $CLI" VOLT:HIGH "$vpulse | nc pc10773 5555 + sleep 1 + sls_detector_put start + sleep 1 + done + + + + # high voltage + # sls_detector_put highvoltage 0 + # output off + echo $CLI" OUTP OFF " | nc pc10773 5555 + + $KILLRCV + + echo "Finished scan, please wait for capacitor to discharge" + sleep 20 + echo "It is now safe to disconnect the cable between the amplifier board and the readout board" + echo "Script finished" + +else + echo "Specify module number as a first argument" + echo "Script finished" +fi diff --git a/BP_scan_thinSensor.sh b/BP_scan_thinSensor.sh new file mode 100644 index 0000000..947470f --- /dev/null +++ b/BP_scan_thinSensor.sh @@ -0,0 +1,175 @@ +#!/bin/bash + +# to run do: bash BP_scan.sh + +# prerequisites: +# - setup_env.sh souced +# - the hostname is set +# - detector is on +# - Filename_creator has been run (with correct module #) +# - source pccalib.sh with pc (pc-jungfrau-01/pc-jungfrau-test/pc-jungfrau-02) +# - waveform generator is on +# - amplifier board is powered and unconnected. +# - last file should be 2097184000 bytes big. +# connect to pc10773 (RH7 machine connected to the pulser and, after klog, run the command +# nc -k -n -v -l -p 5555 -e /bin/bash + +# last data file (000002.dat) should be 2097184000 bytes + + + +KILLRCV="killall ju_udp_receiver_3threads_2_0" +$KILLRCV + + +sls_detector_put stop #just in case + + +sls_detector_put powerchip 1 + + +sls_detector_put delay 0 +sls_detector_put triggers 1 +sls_detector_put frames 100 +sls_detector_put period 0.005 +sls_detector_put exptime 0.00004 +#sls_detector_put highvoltage 0 + +# configure for receiver on pc-jungfrau-01/pc-jungfrau-test/pc-jungfrau-02 +# source pccalib.sh with pc (pc-jungfrau-01/pc-jungfrau-test/pc-jungfrau-02) + +sls_detector_put udp_dstport 32410 +sls_detector_put udp_dstip $DSTIP #10.1.4.105 +sls_detector_put udp_dstmac $DSTMAC #3C:FD:FE:A2:14:D8 +sls_detector_put udp_srcip $SRCIP #10.1.4.9 +sls_detector_put udp_srcmac 00:ab:be:cc:dd:e2 + +#sls_detector_put configuremac 0 +#sls_detector_put readoutspeed half_speed +sls_detector_put readoutspeed full_speed + +sls_detector_put gainmode dynamic + +CLI=/afs/psi.ch/project/sls_det_software/serial_control_software/minidelay/minidelay + +# prepare the AGILENT 33250A +echo $CLI" OUTP OFF " | nc pc10773 5555 + +sleep 0.2 + +#remember to put High-Z load! +#Change load to Infinity +echo $CLI" OUTP:LOAD INF " | nc pc10773 5555 + +# Polarity normal +echo $CLI" OUTP:POL NORM" | nc pc10773 5555 + +# pulse +echo $CLI" FUNC PULS" | nc pc10773 5555 +sleep 0.2 +# frequency 1kHz +echo $CLI" FREQ 1000" | nc pc10773 5555 +sleep 0.2 +# width 40 us +echo $CLI" PULS:WIDT 0.000040" | nc pc10773 5555 +sleep 0.2 +# amplitude 0.1 V" | nc pc10773 5555 +echo $CLI" VOLT 0.1" | nc pc10773 5555 +# offset 0 V echo $CLI" VOLT:OFFS 0" | nc pc8830 5555 +sleep 0.2 +# VLOW 0 V +echo $CLI" VOLT:LOW 0" | nc pc10773 5555 +sleep 0.2 +# edge 50 ns +echo $CLI" PULS:TRAN 0.000000050" | nc pc10773 5555 +sleep 0.2 +# triggered burst +echo $CLI" BURS:MODE TRIG" | nc pc10773 5555 +sleep 0.2 +# cycles 1 +echo $CLI" BURS:NCYC 1" | nc pc10773 5555 +sleep 0.2 +# external trigger source +echo $CLI" TRIG:SOUR EXT" | nc pc10773 5555 +sleep 0.2 +# delay 1 us +echo $CLI" TRIG:DEL 0.000001" | nc pc10773 5555 +# delay 40 us +#echo $CLI" TRIG:DEL 0.000040" | nc pc10773 5555 +sleep 0.2 +# slope positive +echo $CLI" TRIG:SLOP POS" | nc pc10773 5555 +sleep 0.2 +# turn on burst mode +echo $CLI" BURS:STAT ON" | nc pc10773 5555 +sleep 0.2 + + +if [ "$1" == 'Y' ]; then +echo "started with Y argument, skipping manual checks" +else +echo "It is now safe to connect the cable between the amplifier board and the readout board" +echo "Please do so and press any key to continue, or press q to exit this script" +read -n 1 -s input +if [[ $input = "q" ]]; then + echo "Exiting script" + exit 1 +fi +fi + + +# high voltage +# sls_detector_put highvoltage 200 #because it seemed more stable, we are using external HV 230V +# output on +echo $CLI" OUTP ON" | nc pc10773 5555 +sleep 0.2 + + +if [ "$1" == 'Y' ]; then +echo "started with Y argument, skipping manual checks" +else + +echo "The current on the amplifier board should be ~0.035 A" +echo "Please check and press any key to continue, or press q to exit this script" +read -n 1 -s input +if [[ $input = "q" ]]; then + echo "Exiting script" + exit 1 +fi +fi + +$TKBPG0 & + + +# the scan +for ivpulse in {10..700..5} +do + +vpulse=$(printf %.3f $(echo "$ivpulse/1000" | bc -l)) +echo $CLI" VOLT:HIGH "$vpulse | nc pc10773 5555 +sleep 1 +sls_detector_put start +sleep 1 +done + +for ivpulse in {750..6000..50} +do +vpulse=$(printf %.3f $(echo "$ivpulse/1000" | bc -l)) +echo $CLI" VOLT:HIGH "$vpulse | nc pc10773 5555 +sleep 1 +sls_detector_put start +sleep 1 +done + + +# high voltage +# sls_detector_put highvoltage 0 +# output off +echo $CLI" OUTP OFF " | nc pc10773 5555 + +$KILLRCV + +echo "Finished scan, please wait for capacitor to discharge" +sleep 20 +echo "It is now safe to disconnect the cable between the amplifier board and the readout board" +echo "Script finished" diff --git a/CS_analysis_M431.cpp b/CS_analysis_M431.cpp new file mode 100644 index 0000000..c09e4a5 --- /dev/null +++ b/CS_analysis_M431.cpp @@ -0,0 +1,2202 @@ +// file to take current source scan files, analyse and plot them. +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + + +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" +#include "sls_detector_calibration/jungfrauPixelMask.C" + +#include "TGraph.h" +#include "TGraphErrors.h" +#include "TF1.h" +#include "TFile.h" +#include "TPaveStats.h" +#include "TLegend.h" +#include "TPaveText.h" + +#include +#include +#include +#include + +double checkRangeMinForRCEffect(double range_min) { + + // check that the range minimum is at least 2 us, to avoid non-linearity of RC effect + if (range_min < 2.0) { + return 2.0; + } else { + return range_min; + } + +} + + +bool isHGX=false; +int main(int argc, char* argv[]) { + + jungfrauStyle(); + gROOT->SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + cout << "arg 3: specify data file" << endl; + cout << " " << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 5) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location folder" << endl; + cout << "arg 3: specify data file prefix" << endl; + cout << "arg 4: specify location of analysis root files" << endl; + cout << " " << endl; + exit(1); + } //uncomment for VH 210906 + + + + string plotfolder_str; + string str2 ("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + string module_str = argv[1]; + string data_loc = argv[2]; + string data_file = argv[3]; + string anadata_loc = argv[4]; //uncomment for VH 210906 + + +if (data_file.find(str2) != string::npos) isHGX=true; +if (data_file.find(str3) != string::npos) isHGX=true; + +if (isHGX) { + cout << " HG0->HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" < scan_v1; + scan_v1.push_back("002"); + scan_v1.push_back("003"); + + vector scan_v2; + scan_v2.push_back("032"); + + vector scan_v3; + + vector scan_v4; + scan_v4.push_back("040"); + scan_v4.push_back("044"); + + vector scan_v5; + scan_v5.push_back("006"); + scan_v5.push_back("022"); + scan_v5.push_back("055"); + scan_v5.push_back("065"); + scan_v5.push_back("066"); + scan_v5.push_back("068"); + scan_v5.push_back("069"); + scan_v5.push_back("088"); + scan_v5.push_back("094"); + + vector scan_v6; + scan_v6.push_back("008"); + scan_v6.push_back("011"); + scan_v6.push_back("021"); + scan_v6.push_back("023"); + scan_v6.push_back("025"); + scan_v6.push_back("029"); + scan_v6.push_back("035"); + scan_v6.push_back("039"); + scan_v6.push_back("043"); + scan_v6.push_back("045"); + scan_v6.push_back("046"); + scan_v6.push_back("048"); + scan_v6.push_back("049"); + scan_v6.push_back("050"); + scan_v6.push_back("051"); + scan_v6.push_back("053"); + scan_v6.push_back("054"); + scan_v6.push_back("057"); + scan_v6.push_back("058"); + scan_v6.push_back("059"); + scan_v6.push_back("060"); + scan_v6.push_back("061"); + scan_v6.push_back("062"); + scan_v6.push_back("063"); + scan_v6.push_back("064"); + scan_v6.push_back("067"); + scan_v6.push_back("070"); + scan_v6.push_back("071"); + scan_v6.push_back("072"); + scan_v6.push_back("073"); + scan_v6.push_back("074"); + scan_v6.push_back("075"); + scan_v6.push_back("076"); + scan_v6.push_back("079"); + scan_v6.push_back("080"); + scan_v6.push_back("086"); + scan_v6.push_back("089"); + scan_v6.push_back("090"); + scan_v6.push_back("091"); + scan_v6.push_back("092"); + scan_v6.push_back("093"); + scan_v6.push_back("095"); + scan_v6.push_back("097"); + scan_v6.push_back("098"); + scan_v6.push_back("099"); + scan_v6.push_back("100"); + scan_v6.push_back("102"); + scan_v6.push_back("103"); + scan_v6.push_back("104"); + scan_v6.push_back("106"); + scan_v6.push_back("107"); + scan_v6.push_back("108"); + scan_v6.push_back("109"); + scan_v6.push_back("110"); + scan_v6.push_back("111"); + scan_v6.push_back("112"); + scan_v6.push_back("113"); + scan_v6.push_back("114"); + scan_v6.push_back("115"); + scan_v6.push_back("116"); + scan_v6.push_back("117"); + scan_v6.push_back("118"); + scan_v6.push_back("119"); + scan_v6.push_back("120"); + scan_v6.push_back("121"); + scan_v6.push_back("122"); + scan_v6.push_back("123"); + scan_v6.push_back("124"); + scan_v6.push_back("125"); + scan_v6.push_back("126"); + scan_v6.push_back("129"); + scan_v6.push_back("130"); + scan_v6.push_back("131"); + scan_v6.push_back("132"); + scan_v6.push_back("133"); + scan_v6.push_back("134"); + scan_v6.push_back("135"); + scan_v6.push_back("200"); + scan_v6.push_back("201"); + scan_v6.push_back("202"); + scan_v6.push_back("203"); + scan_v6.push_back("204"); + scan_v6.push_back("205"); + scan_v6.push_back("206"); + scan_v6.push_back("208"); + scan_v6.push_back("209"); + scan_v6.push_back("210"); + scan_v6.push_back("212"); + scan_v6.push_back("214"); + scan_v6.push_back("215"); + scan_v6.push_back("216"); + scan_v6.push_back("217"); + scan_v6.push_back("218"); + scan_v6.push_back("219"); + scan_v6.push_back("221"); + scan_v6.push_back("222"); + scan_v6.push_back("223"); + scan_v6.push_back("224"); + scan_v6.push_back("225"); + scan_v6.push_back("226"); + scan_v6.push_back("227"); + scan_v6.push_back("228"); + scan_v6.push_back("229"); + scan_v6.push_back("232"); + scan_v6.push_back("233"); + scan_v6.push_back("234"); + scan_v6.push_back("235"); + scan_v6.push_back("236"); + scan_v6.push_back("242"); + scan_v6.push_back("244"); + scan_v6.push_back("245"); + scan_v6.push_back("246"); + scan_v6.push_back("248"); + scan_v6.push_back("249"); + scan_v6.push_back("250"); + scan_v6.push_back("251"); + scan_v6.push_back("252"); + scan_v6.push_back("253"); + scan_v6.push_back("254"); + scan_v6.push_back("255"); + scan_v6.push_back("260"); + scan_v6.push_back("261"); + scan_v6.push_back("263"); + scan_v6.push_back("264"); + scan_v6.push_back("265"); + scan_v6.push_back("266"); + scan_v6.push_back("267"); + scan_v6.push_back("269"); + scan_v6.push_back("270"); + scan_v6.push_back("272"); + scan_v6.push_back("273"); + scan_v6.push_back("274"); + scan_v6.push_back("275"); + scan_v6.push_back("276"); + scan_v6.push_back("277"); + scan_v6.push_back("278"); + scan_v6.push_back("279"); + scan_v6.push_back("281"); + scan_v6.push_back("282"); + scan_v6.push_back("283"); + scan_v6.push_back("285"); + scan_v6.push_back("286"); + scan_v6.push_back("287"); + scan_v6.push_back("288"); + scan_v6.push_back("289"); + scan_v6.push_back("290"); + scan_v6.push_back("291"); + scan_v6.push_back("292"); + scan_v6.push_back("294"); + scan_v6.push_back("296"); + scan_v6.push_back("298"); + scan_v6.push_back("299"); + scan_v6.push_back("301"); + scan_v6.push_back("307"); + scan_v6.push_back("312"); + scan_v6.push_back("351"); + scan_v6.push_back("352"); + scan_v6.push_back("354"); + scan_v6.push_back("360"); + scan_v6.push_back("373"); + scan_v6.push_back("380"); + scan_v6.push_back("304"); + scan_v6.push_back("321"); + scan_v6.push_back("346"); + scan_v6.push_back("375"); + scan_v6.push_back("381"); + scan_v6.push_back("383"); + scan_v6.push_back("310"); + scan_v6.push_back("313"); + scan_v6.push_back("314"); + scan_v6.push_back("334"); + scan_v6.push_back("337"); + scan_v6.push_back("347"); + scan_v6.push_back("361"); + scan_v6.push_back("362"); + scan_v6.push_back("355"); + scan_v6.push_back("364"); + scan_v6.push_back("366"); + scan_v6.push_back("243"); + scan_v6.push_back("339"); + scan_v6.push_back("341"); + scan_v6.push_back("368"); + scan_v6.push_back("376"); + scan_v6.push_back("379"); + + scan_v6.push_back("359"); + scan_v6.push_back("363"); + scan_v6.push_back("365"); + scan_v6.push_back("347"); + scan_v6.push_back("366"); + + + scan_v6.push_back("268"); + scan_v6.push_back("300"); + scan_v6.push_back("302"); + scan_v6.push_back("303"); + scan_v6.push_back("309"); + scan_v6.push_back("326"); + + scan_v6.push_back("308"); + scan_v6.push_back("322"); + scan_v6.push_back("328"); + scan_v6.push_back("332"); + scan_v6.push_back("335"); + scan_v6.push_back("353"); + scan_v6.push_back("335_FW2_2"); + scan_v6.push_back("353_FW2_2"); + + scan_v6.push_back("262_FWcheck_1_1_1"); + scan_v6.push_back("262_FWcheck_1_1_1_test"); + scan_v6.push_back("262_FWcheck_1_2_rc210831"); + scan_v6.push_back("262_FWcheck_1_2_defdacs"); + + scan_v6.push_back("311"); + scan_v6.push_back("316"); + scan_v6.push_back("318"); + scan_v6.push_back("319"); + scan_v6.push_back("320"); + scan_v6.push_back("324"); + + scan_v6.push_back("272_fullspeedtest"); + scan_v6.push_back("272_halfspeedtest"); + + scan_v6.push_back("352_fullspeed"); //jf4mb2-00 (SLS) + scan_v6.push_back("307_fullspeed"); //jf4mb2-01 (SLS) + scan_v6.push_back("264_fullspeed"); //jf4mb2-02 (SLS) + scan_v6.push_back("253_fullspeed"); //jf4mb2-03 (SLS) + scan_v6.push_back("351_fullspeed"); //jf4mb2-04 (SLS) + scan_v6.push_back("312_fullspeed"); //jf4mb2-05 (SLS) + scan_v6.push_back("261_fullspeed"); //jf4mb2-06 (SLS) + scan_v6.push_back("310_fullspeed"); //jf4mb2-07 (SLS) + + scan_v6.push_back("384"); //jfcalib-5 + scan_v6.push_back("510"); //jfcalib-0 + scan_v6.push_back("511"); //jfcalib-1 + scan_v6.push_back("512"); //jfcalib-2 + scan_v6.push_back("556"); //jfcalib-3 + scan_v6.push_back("572"); //jfcalib-4 + + scan_v6.push_back("329"); //jfcalib-0 + scan_v6.push_back("331"); //jfcalib-1 + scan_v6.push_back("333"); //jfcalib-2 + scan_v6.push_back("336"); //jfcalib-3 + scan_v6.push_back("356"); //jfcalib-4 + scan_v6.push_back("377"); //jfcalib-5 + + scan_v6.push_back("387"); //jfcalib-0 + scan_v6.push_back("388"); //jfcalib-1 + scan_v6.push_back("389"); //jfcalib-2 + scan_v6.push_back("396"); //jfcalib-3 + scan_v6.push_back("397"); //jfcalib-4 + scan_v6.push_back("398"); //jfcalib-5 + + scan_v6.push_back("390"); //jfcalib-0 + scan_v6.push_back("391"); //jfcalib-1 + scan_v6.push_back("393"); //jfcalib-2 + scan_v6.push_back("399"); //jfcalib-3 + scan_v6.push_back("516"); //jfcalib-4 + scan_v6.push_back("517"); //jfcalib-5 + + scan_v6.push_back("519"); //jfcalib-0 + scan_v6.push_back("520"); //jfcalib-1 + scan_v6.push_back("532"); //jfcalib-2 + scan_v6.push_back("539"); //jfcalib-3 + scan_v6.push_back("555"); //jfcalib-4 + + //Calib for VELA beamtime in March 2022 + scan_v6.push_back("262"); //jfcalib-0 + scan_v6.push_back("231"); //jfcalib-1 + scan_v6.push_back("305"); //jfcalib-2 + + scan_v6.push_back("392"); //jfcalib-1 + scan_v6.push_back("394"); //jfcalib-2 + scan_v6.push_back("513"); //jfcalib-3 + scan_v6.push_back("514"); //jfcalib-4 + scan_v6.push_back("515"); //jfcalib-5 + + scan_v6.push_back("239"); //jfcalib-0 //bad + //scan_v6.push_back("064"); //jfcalib-1 //bad //already added above + //scan_v6.push_back("023"); //jfcalib-2 //bad //already added above + scan_v6.push_back("349"); //jfcalib-3 //bad + scan_v6.push_back("518"); //jfcalib-4 + scan_v6.push_back("521"); //jfcalib-5 + + scan_v6.push_back("523"); //jfcalib-0 + scan_v6.push_back("526"); //jfcalib-1 + scan_v6.push_back("529"); //jfcalib-2 + scan_v6.push_back("530"); //jfcalib-3 + scan_v6.push_back("531"); //jfcalib-4 + scan_v6.push_back("533"); //jfcalib-5 + + scan_v6.push_back("524"); //1M for ESRF + scan_v6.push_back("525"); //1M for ESRF + + scan_v6.push_back("306"); //jfcalib-0 (strixel) + scan_v6.push_back("350"); //jfcalib-1 (strixel) + + scan_v6.push_back("534"); //jfcalib-0 + scan_v6.push_back("537"); //jfcalib-1 + scan_v6.push_back("538"); //jfcalib-2 + scan_v6.push_back("542"); //jfcalib-3 + scan_v6.push_back("543"); //jfcalib-4 + scan_v6.push_back("544"); //jfcalib-5 + + scan_v6.push_back("402"); //jfcalib-0 + scan_v6.push_back("404"); //jfcalib-1 + scan_v6.push_back("407"); //jfcalib-2 + scan_v6.push_back("409"); //jfcalib-3 + scan_v6.push_back("410"); //jfcalib-4 + scan_v6.push_back("411"); //jfcalib-5 + + //scan_v6.push_back("008"); //jfcalib-0 //already in the list from previous calibration + scan_v6.push_back("433"); //jfcalib-1 + scan_v6.push_back("550"); //jfcalib-2 + scan_v6.push_back("545"); //jfcalib-3 + scan_v6.push_back("546"); //jfcalib-4 + scan_v6.push_back("547"); //jfcalib-5 + + //scan_v6.push_back("416"); //jfcalib-0 //destroyed, machanical sample + scan_v6.push_back("417"); //jfcalib-1 + scan_v6.push_back("418"); //jfcalib-2 + scan_v6.push_back("420"); //jfcalib-3 + scan_v6.push_back("421"); //jfcalib-4 + scan_v6.push_back("430"); //jfcalib-5 + + scan_v6.push_back("417_fullspeed"); //jfcalib-1 + scan_v6.push_back("418_fullspeed"); //jfcalib-2 + scan_v6.push_back("420_fullspeed"); //jfcalib-3 + scan_v6.push_back("421_fullspeed"); //jfcalib-4 + scan_v6.push_back("430_fullspeed"); //jfcalib-5 + + scan_v6.push_back("434"); //jfcalib-0 + scan_v6.push_back("437"); //jfcalib-1 + scan_v6.push_back("480"); //jfcalib-2 + scan_v6.push_back("464"); //jfcalib-3 + scan_v6.push_back("473"); //jfcalib-4 + scan_v6.push_back("474"); //jfcalib-5 + + scan_v6.push_back("076"); //jfcalib-0 + scan_v6.push_back("089"); //jfcalib-3 + scan_v6.push_back("207"); //jfcalib-5 + + scan_v6.push_back("244"); //jfcalib-3 + + scan_v6.push_back("474_fullspeed"); //jfcalib-0 + scan_v6.push_back("437_fullspeed"); //jfcalib-1 + scan_v6.push_back("480_fullspeed"); //jfcalib-2 + scan_v6.push_back("482_fullspeed"); //jfcalib-3 + scan_v6.push_back("487_fullspeed"); //jfcalib-5 + + scan_v6.push_back("482"); //jfcalib-3 + scan_v6.push_back("487"); //jfcalib-5 + + scan_v6.push_back("499_fullspeed"); //jfcalib-0 + scan_v6.push_back("548_fullspeed"); //jfcalib-1 + scan_v6.push_back("549_fullspeed"); //jfcalib-2 + scan_v6.push_back("427_fullspeed"); //jfcalib-3 + + scan_v6.push_back("499"); //jfcalib-0 + scan_v6.push_back("548"); //jfcalib-1 + scan_v6.push_back("549"); //jfcalib-2 + scan_v6.push_back("427"); //jfcalib-3 + scan_v6.push_back("435"); //jfcalib-5 + + scan_v6.push_back("403"); //jfcalib-0 + scan_v6.push_back("406"); //jfcalib-1 + scan_v6.push_back("423"); //jfcalib-2 + scan_v6.push_back("436"); //jfcalib-3 + scan_v6.push_back("479"); //jfcalib-5 + + // Calibration 450 um sensor for ESRF + + scan_v6.push_back("583"); //jfcalib-0 + scan_v6.push_back("593"); //jfcalib-1 + scan_v6.push_back("601"); //jfcalib-2 + scan_v6.push_back("604"); //jfcalib-3 + scan_v6.push_back("605"); //jfcalib-5 + + // Calibration 320 um sensors + + scan_v6.push_back("441"); //jfcalib-0 + scan_v6.push_back("460"); //jfcalib-1 + scan_v6.push_back("463"); //jfcalib-2 + scan_v6.push_back("476"); //jfcalib-3 + scan_v6.push_back("371"); //jfcalib-4 + + scan_v6.push_back("429"); //jfcalib-0 + scan_v6.push_back("442"); //jfcalib-1 + scan_v6.push_back("444"); //jfcalib-2 + scan_v6.push_back("446"); //jfcalib-3 + scan_v6.push_back("447"); //jfcalib-4 + + scan_v6.push_back("428"); //jfcalib-0 + scan_v6.push_back("439"); //jfcalib-1 + scan_v6.push_back("443"); //jfcalib-2 + scan_v6.push_back("445"); //jfcalib-3 + + scan_v6.push_back("448"); //jfcalib-0 + scan_v6.push_back("454"); //jfcalib-1 + scan_v6.push_back("455"); //jfcalib-2 + scan_v6.push_back("456"); //jfcalib-3 + scan_v6.push_back("466"); //jfcalib-4 + scan_v6.push_back("471"); //jfcalib-5 + + scan_v6.push_back("481"); //jfcalib-0 + scan_v6.push_back("488"); //jfcalib-1 + scan_v6.push_back("490"); //jfcalib-2 + scan_v6.push_back("491"); //jfcalib-3 + scan_v6.push_back("492"); //jfcalib-4 + scan_v6.push_back("493"); //jfcalib-5 + + scan_v6.push_back("494"); //jfcalib-0 + scan_v6.push_back("495"); //jfcalib-1 + scan_v6.push_back("497"); //jfcalib-2 + scan_v6.push_back("498"); //jfcalib-3 + scan_v6.push_back("501"); //jfcalib-4 + scan_v6.push_back("502"); //jfcalib-5 + + scan_v6.push_back("036"); //jfcalib-0 + scan_v6.push_back("560"); //jfcalib-1 + scan_v6.push_back("536"); //jfcalib-2 + scan_v6.push_back("535"); //jfcalib-3 + scan_v6.push_back("527"); //jfcalib-4 + scan_v6.push_back("522"); //jfcalib-5 + + scan_v6.push_back("037"); //jfcalib-1 + + scan_v6.push_back("571"); //jfcalib-0 + scan_v6.push_back("571_fullspeed"); //jfcalib-0 + scan_v6.push_back("573"); //jfcalib-1 + scan_v6.push_back("573_fullspeed"); //jfcalib-1 + scan_v6.push_back("574"); //jfcalib-2 + scan_v6.push_back("574_fullspeed"); //jfcalib-2 + scan_v6.push_back("575"); //jfcalib-3 + scan_v6.push_back("575_fullspeed"); //jfcalib-3 + scan_v6.push_back("576"); //jfcalib-4 + scan_v6.push_back("576_fullspeed"); //jfcalib-4 + scan_v6.push_back("577"); //jfcalib-5 + scan_v6.push_back("577_fullspeed"); //jfcalib-5 + + scan_v6.push_back("431_JF12"); + + + jungfrauFile *thisfile = new jungfrauFile(); + + jungfrauPixelMask *pixelMaskObject = new jungfrauPixelMask(); + bool pixel_mask [NCH]; + + bool saturation_mask [NCH]; + std::fill_n(saturation_mask, NCH, true); + + jungfrauPedestal *pedestalObject = new jungfrauPedestal(); + pedestalObject->pedestalSetNFrames(640); + + TH2F* pedestalsG0 = new TH2F("pedestalsG0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* pedestalsG1 = new TH2F("pedestalsG1","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* pedestalsG2 = new TH2F("pedestalsG2","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* pedeRMSG0 = new TH2F("pedeRMSG0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* no_g0g1_calib_map = new TH2F("no_g0g1_calib_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* no_g1g2_calib_map = new TH2F("no_g1g2_calib_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + //char savename[128]; + char savename[256]; // VH 210902 + int createHistoFile = 1; //set 0 for a fit-only run + int createPerStepHistos = 0; //debug + +#ifdef JF11 + cout << "COMPILED for JF11 !!!" << endl; +#endif + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + sprintf(savename,"data/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + sprintf(savename,"plots/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/CurrentSource + sprintf(savename,"plots/M%s/%s", module_str.c_str() ,plotfolder_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + + // open first file + sprintf(savename,"%s/%s_%%6.6d.dat", data_loc.c_str(), data_file.c_str()); //VH: note, this adds a double slash in the filepath + thisfile->open((char*)savename, 0); + + // calculate pixel mask + pixelMaskObject->initialisePixelMask(pixel_mask); + + for (int i = 0; i < 640; i++) { + thisfile->readNextFrame(); + pixelMaskObject->maskIfGainNot(0, thisfile->getFrameDataHandle(), pixel_mask); + } + cout << "after G0, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + for (int i = 0; i < 640; i++) { + thisfile->readNextFrame(); + pixelMaskObject->maskIfGainNot(1, thisfile->getFrameDataHandle(), pixel_mask); // change to Not(2 to fix FW error during JF11 FW develop. needed for modules 243-379 + } + cout << "after G1, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + for (int i = 0; i < 640; i++) { + thisfile->readNextFrame(); + pixelMaskObject->maskIfGainNot(3, thisfile->getFrameDataHandle(), pixel_mask); + } + cout << "after G2, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + thisfile->rewind(); + + sprintf(savename,"plots/M%s/%s/pixelmask_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + pixelMaskObject->plotPixelMask(pixel_mask,savename); + cout << "after chip mask, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + // calculate pedestals + for (int j = 0; j < 640; j++) { + thisfile->readNextFrame(); + pedestalObject->addFrameToPedestalCalculation(thisfile->getFrameDataHandle()); + } + for (int i = 0; i < NCH; i++) { + if (pixel_mask[i] == true) { + pedestalsG0->Fill(i%NC,i/NC,pedestalObject->pedestalOfChannel(i)); + pedeRMSG0->Fill(i%NC,i/NC,pedestalObject->rmsOfChannel(i)); + } + } + pedestalObject->pedestalClear(); + + for (int j = 0; j < 640; j++) { + thisfile->readNextFrame(); + pedestalObject->addFrameToPedestalCalculation(thisfile->getFrameDataHandle()); + } + for (int i = 0; i < NCH; i++) { + if (pixel_mask[i] == true) { + pedestalsG1->Fill(i%NC,i/NC,pedestalObject->pedestalOfChannel(i)); + } + } + pedestalObject->pedestalClear(); + + for (int j = 0; j < 640; j++) { + thisfile->readNextFrame(); + pedestalObject->addFrameToPedestalCalculation(thisfile->getFrameDataHandle()); + } + for (int i = 0; i < NCH; i++) { + if (pixel_mask[i] == true) { + pedestalsG2->Fill(i%NC,i/NC,pedestalObject->pedestalOfChannel(i)); + } + } + pedestalObject->pedestalClear(); + + thisfile->close(); + + TCanvas *mapcanvas = new TCanvas("mapcanvas","",150,10,800,400); + mapcanvas->SetLeftMargin(0.1); + mapcanvas->SetRightMargin(0.13); + mapcanvas->SetTopMargin(0.08); + mapcanvas->SetBottomMargin(0.15); + + TCanvas *c1 = new TCanvas("c1",""); + + mapcanvas->cd(); + + pedestalsG0->GetXaxis()->SetTitle("Column"); + pedestalsG0->GetYaxis()->SetTitle("Row"); + pedestalsG0->GetYaxis()->SetTitleOffset(0.7); + pedestalsG0->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeG0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + pedestalsG1->GetXaxis()->SetTitle("Column"); + pedestalsG1->GetYaxis()->SetTitle("Row"); + pedestalsG1->GetYaxis()->SetTitleOffset(0.7); + pedestalsG1->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeG1_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + pedestalsG2->GetXaxis()->SetTitle("Column"); + pedestalsG2->GetYaxis()->SetTitle("Row"); + pedestalsG2->GetYaxis()->SetTitleOffset(0.7); + pedestalsG2->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeG2_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + pedeRMSG0->GetXaxis()->SetTitle("Column"); + pedeRMSG0->GetYaxis()->SetTitle("Row"); + pedeRMSG0->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "006") { + pedeRMSG0->GetZaxis()->SetRangeUser(0,50); + } else { + pedeRMSG0->GetZaxis()->SetRangeUser(0,25); + } + pedeRMSG0->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeRMSG0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + TH2F *adcmap_avg_g0 [97]; + TH2F *adcmap_avg_g1 [97]; + TH2F *adcmap_avg_g2 [97]; + TH2F *adcermap_avg_g0 [97]; + TH2F *adcermap_avg_g1 [97]; + TH2F *adcermap_avg_g2 [97]; + + // creating the histograms + if (createHistoFile) { + + for(int i = 0; i < 97; i++) { + ostringstream histogramNameStreamg0; + histogramNameStreamg0 << "adcmap_avg_g0_" << i; + adcmap_avg_g0[i] = new TH2F(histogramNameStreamg0.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg1; + histogramNameStreamg1 << "adcmap_avg_g1_" << i; + adcmap_avg_g1[i] = new TH2F(histogramNameStreamg1.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg2; + histogramNameStreamg2 << "adcmap_avg_g2_" << i; + adcmap_avg_g2[i] = new TH2F(histogramNameStreamg2.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg5; + histogramNameStreamg5 << "adcermap_avg_g0_" << i; + adcermap_avg_g0[i] = new TH2F(histogramNameStreamg5.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg3; + histogramNameStreamg3 << "adcermap_avg_g1_" << i; + adcermap_avg_g1[i] = new TH2F(histogramNameStreamg3.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg4; + histogramNameStreamg4 << "adcermap_avg_g2_" << i; + adcermap_avg_g2[i] = new TH2F(histogramNameStreamg4.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + } + + TH2F *gainmap_all = new TH2F("gainmap_all","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F *adcmap_all = new TH2F("adcmap_all","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F *gainmap_sel = new TH2F("gainmap_sel","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F *adcmap_sel = new TH2F("adcmap_sel","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH1F *gain_avg = new TH1F("gain_avg","",100,-1,4); + TH2F *gainmap_avg = new TH2F("gainmap_avg","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH1F *adc_avg_g0 = new TH1F("adc_avg_g0","",100,0,17000); + TH1F *adc_avg_g1 = new TH1F("adc_avg_g1","",100,0,17000); + TH1F *adc_avg_g2 = new TH1F("adc_avg_g2","",100,0,17000); + + static TH1I *adc_histos_g0 [NCH]; + static TH1I *adc_histos_g1 [NCH]; + static TH1I *adc_histos_g2 [NCH]; + static TH1I *gain_histos [NCH]; + + for(int i = 0; i < NCH; i++) { + ostringstream histogramNameStreamg0; + histogramNameStreamg0 << "adc_histos_g0_" << i; + adc_histos_g0[i] = new TH1I(histogramNameStreamg0.str().c_str(),"",100,0,17000); + ostringstream histogramNameStreamg1; + histogramNameStreamg1 << "adc_histos_g1_" << i; + adc_histos_g1[i] = new TH1I(histogramNameStreamg1.str().c_str(),"",100,0,17000); + ostringstream histogramNameStreamg2; + histogramNameStreamg2 << "adc_histos_g2_" << i; + adc_histos_g2[i] = new TH1I(histogramNameStreamg2.str().c_str(),"",100,0,17000); + ostringstream histogramNameStream2; + histogramNameStream2 << "gain_histos_" << i; + gain_histos[i] = new TH1I(histogramNameStream2.str().c_str(),"",4,-0.5,3.5); + } + + int j = 0; + int nfiles = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + nfiles = 2; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end() || find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + nfiles = 3; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + nfiles = 4; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + nfiles = 7; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + nfiles = 6; + } + + // total frame number check + int expected_totalFrames = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + expected_totalFrames = 19199; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + expected_totalFrames = 24319; + } else if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + expected_totalFrames = 21759; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + expected_totalFrames = 34560; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + expected_totalFrames = 64000; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + expected_totalFrames = 59519; + } + + int totalFrames = 0; + + for (int filei = 0; filei < nfiles; filei++) { + + sprintf(savename,"%s/%s_%%6.6d.dat", data_loc.c_str(), data_file.c_str()); //VH: note, this adds a double slash in the filepath + thisfile->open((char*)savename, filei); + + while(thisfile->readNextFrame()) { + totalFrames++; + } + + thisfile->close(); + } + + if (totalFrames == expected_totalFrames) { + cout << "got expected number of frames " << totalFrames << endl; + } else { + cout << "got unexpected number of frames " << totalFrames << endl; + cout << "code expected frames " << expected_totalFrames << endl; + cout << "exiting to make sure you notice" << endl; + //exit(1); + } + + for (int filei = 0; filei < nfiles; filei++) { + + sprintf(savename,"%s/%s_%%6.6d.dat", data_loc.c_str(), data_file.c_str()); //VH: note, this adds a double slash in the filepath + thisfile->open((char*)savename, filei); + + if (filei == 0) { + for (int k = 0; k < (640*3); k++) { + thisfile->readNextFrame(); + } + } + + while (thisfile->readNextFrame()) { + j++; + + uint16_t* imagedptr = thisfile->getFrameDataHandle(); + for (int i = 0; i < NCH; i++) { + if ((j-1) < 10 || (j > 8075 && j < 8085)) { + uint16_t adc = imagedptr[i]&0x3fff; + uint16_t gain = (imagedptr[i]&0xc000) >> 14; + adcmap_all->Fill(i%NC,i/NC,adc); + gainmap_all->Fill(i%NC,i/NC,gain); + } +#ifdef NONSERVE //in reality it is shift in the right direction 0x5b=80000000 and 0x5a=00000000 + if (((i/NC <= 255) && (((i%64)) == 63-(j-1)%64)) || + ((i/NC >= 256) &&( ((-1*(i-524287))%64) == 63-(j-1)%64))) { //scanning on "+-i") +#else + if (((i/NC <= 255) && (i%64 == (j-1)%64)) || + ((i/NC >= 256) &&((-1*(i-524287))%64 == (j-1)%64))) { // j - 1 +#endif + + uint16_t adc = imagedptr[i]&0x3fff; + uint16_t gain = (imagedptr[i]&0xc000) >> 14; + + gain_histos[i]->Fill(gain); + if (gain == 0) { + adc_histos_g0[i]->Fill(adc); + } else if ((gain == 1)||(gain == 2)) { //(gain == 2) to fix FW error during JF11 FW develop. needed for modules 243-379 + adc_histos_g1[i]->Fill(adc); + } else if (gain == 3) { + adc_histos_g2[i]->Fill(adc); + if (adc == 0) { + saturation_mask[i] = false; + } + } + + if ((j-1) < 10 || (j > 8075 && j < 8085)) { + adcmap_sel->Fill(i%NC,i/NC,adc); + gainmap_sel->Fill(i%NC,i/NC,gain); + } + + } + } + if (createPerStepHistos && ((j-1) < 10 || (j > 8075 && j < 8085))) { + mapcanvas->cd(); + adcmap_sel->GetXaxis()->SetTitle("Column"); + adcmap_sel->GetYaxis()->SetTitle("Row"); + adcmap_sel->GetYaxis()->SetTitleOffset(0.7); + adcmap_sel->Draw("colz"); + sprintf(savename,"plots/M%s/%s/adcmap_%i_sel_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcmap_all->GetXaxis()->SetTitle("Column"); + adcmap_all->GetYaxis()->SetTitle("Row"); + adcmap_all->GetYaxis()->SetTitleOffset(0.7); + adcmap_all->Draw("colz"); + sprintf(savename,"plots/M%s/%s/adcmap_%i_all_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + gainmap_sel->GetXaxis()->SetTitle("Column"); + gainmap_sel->GetYaxis()->SetTitle("Row"); + gainmap_sel->GetYaxis()->SetTitleOffset(0.7); + gainmap_sel->Draw("colz"); + sprintf(savename,"plots/M%s/%s/gainmap_%i_sel_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + gainmap_all->GetXaxis()->SetTitle("Column"); + gainmap_all->GetYaxis()->SetTitle("Row"); + gainmap_all->GetYaxis()->SetTitleOffset(0.7); + gainmap_all->Draw("colz"); + sprintf(savename,"plots/M%s/%s/gainmap_%i_all_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + adcmap_sel->Reset(); + adcmap_all->Reset(); + gainmap_sel->Reset(); + gainmap_all->Reset(); + } + + // catch the last frame (bad ctrl-c exit) + // new receiver doesn't have this problem + int last_frame = 0; + if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end() || + find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end() || + find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end() || + find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + last_frame = expected_totalFrames - 1920; + } + + if (j%640 == 0 || j == last_frame) { + if (j == last_frame) { + j = last_frame+1; + cout << "catching on last_frame" << endl; + } + + for (int i = 0; i < NCH; i++) { + + gainmap_avg->Fill(i%NC,i/NC,gain_histos[i]->GetMean()); + adcmap_avg_g0[j/640-1]->Fill(i%NC,i/NC,adc_histos_g0[i]->GetMean()); + adcermap_avg_g0[j/640-1]->Fill(i%NC,i/NC,adc_histos_g0[i]->GetMeanError()); + adcmap_avg_g1[j/640-1]->Fill(i%NC,i/NC,adc_histos_g1[i]->GetMean()); + adcermap_avg_g1[j/640-1]->Fill(i%NC,i/NC,adc_histos_g1[i]->GetMeanError()); + if (saturation_mask[i] == true) { + adcmap_avg_g2[j/640-1]->Fill(i%NC,i/NC,adc_histos_g2[i]->GetMean()); + adcermap_avg_g2[j/640-1]->Fill(i%NC,i/NC,adc_histos_g2[i]->GetMeanError()); + } + + if (gain_histos[i]->GetEntries() > 0) { + gain_avg->Fill(gain_histos[i]->GetMean()); + } + if (adc_histos_g0[i]->GetEntries() > 0) { + adc_avg_g0->Fill(adc_histos_g0[i]->GetMean()); + } + if (adc_histos_g1[i]->GetEntries() > 0) { + adc_avg_g1->Fill(adc_histos_g1[i]->GetMean()); + } + if (adc_histos_g2[i]->GetEntries() > 0) { + if (saturation_mask[i] == true) { + adc_avg_g2->Fill(adc_histos_g2[i]->GetMean()); + } + } + + gain_histos[i]->Reset(); + adc_histos_g0[i]->Reset(); + adc_histos_g1[i]->Reset(); + adc_histos_g2[i]->Reset(); + } + + if (createPerStepHistos == 1) { + c1->cd(); + gain_avg->GetXaxis()->SetTitle("Average gain"); + gain_avg->GetXaxis()->SetTitleOffset(1.1); + gain_avg->GetYaxis()->SetTitleOffset(1.5); + gain_avg->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/gain_avg_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + gainmap_avg->GetXaxis()->SetTitle("Column"); + gainmap_avg->GetYaxis()->SetTitle("Row"); + gainmap_avg->GetYaxis()->SetTitleOffset(0.7); + gainmap_avg->Draw("colz"); + sprintf(savename,"plots/M%s/%s/perStep/gainmap_avg_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + adc_avg_g0->GetXaxis()->SetTitle("Average G0 ADC"); + adc_avg_g0->GetXaxis()->SetTitleOffset(1.1); + adc_avg_g0->GetYaxis()->SetTitleOffset(1.5); + adc_avg_g0->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/adc_avg_g0_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + adcmap_avg_g0[j/640-1]->GetXaxis()->SetTitle("Column"); + adcmap_avg_g0[j/640-1]->GetYaxis()->SetTitle("Row"); + adcmap_avg_g0[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcmap_avg_g0[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcmap_avg_g0_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcermap_avg_g0[j/640-1]->GetXaxis()->SetTitle("Column"); + adcermap_avg_g0[j/640-1]->GetYaxis()->SetTitle("Row"); + adcermap_avg_g0[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcermap_avg_g0[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcermap_avg_g0_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + adc_avg_g1->GetXaxis()->SetTitle("Average G1 ADC"); + adc_avg_g1->GetXaxis()->SetTitleOffset(1.1); + adc_avg_g1->GetYaxis()->SetTitleOffset(1.5); + adc_avg_g1->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/adc_avg_g1_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + adcmap_avg_g1[j/640-1]->GetXaxis()->SetTitle("Column"); + adcmap_avg_g1[j/640-1]->GetYaxis()->SetTitle("Row"); + adcmap_avg_g1[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcmap_avg_g1[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcmap_avg_g1_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcermap_avg_g1[j/640-1]->GetXaxis()->SetTitle("Column"); + adcermap_avg_g1[j/640-1]->GetYaxis()->SetTitle("Row"); + adcermap_avg_g1[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcermap_avg_g1[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcermap_avg_g1_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + adc_avg_g2->GetXaxis()->SetTitle("Average G2 ADC"); + adc_avg_g2->GetXaxis()->SetTitleOffset(1.1); + adc_avg_g2->GetYaxis()->SetTitleOffset(1.5); + adc_avg_g2->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/adc_avg_g2_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + adcmap_avg_g2[j/640-1]->GetXaxis()->SetTitle("Column"); + adcmap_avg_g2[j/640-1]->GetYaxis()->SetTitle("Row"); + adcmap_avg_g2[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcmap_avg_g2[j/640-1]->Draw("colz"); + sprintf(savename,"plots/M%s/%s/perStep/adcmap_avg_g2_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcermap_avg_g2[j/640-1]->GetXaxis()->SetTitle("Column"); + adcermap_avg_g2[j/640-1]->GetYaxis()->SetTitle("Row"); + adcermap_avg_g2[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcermap_avg_g2[j/640-1]->Draw("colz"); + sprintf(savename,"plots/M%s/%s/perStep/adcermap_avg_g2_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + gain_avg->Reset(); + gainmap_avg->Reset(); + adc_avg_g0->Reset(); + adc_avg_g1->Reset(); + adc_avg_g2->Reset(); + std::fill_n(saturation_mask, NCH, true); + } + } // end of while + + thisfile->close(); + + } // end of files + + for (int i = 0; i < NCH; i++) { + delete gain_histos[i]; + delete adc_histos_g0[i]; + delete adc_histos_g1[i]; + delete adc_histos_g2[i]; + } + + // save histograms + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/CS_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/CS_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"RECREATE"); + + for (int i = 0; i < 97; i++) { + adcmap_avg_g0[i]->Write(); + adcmap_avg_g1[i]->Write(); + adcmap_avg_g2[i]->Write(); + adcermap_avg_g0[i]->Write(); + adcermap_avg_g1[i]->Write(); + adcermap_avg_g2[i]->Write(); + } + saved_file->Close(); + } else { + // load histos + cout << "LOADING HISTOS" << endl; + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/CS_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/CS_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"READ"); + + for (int i = 0; i < 97; i++) { + sprintf(savename,"adcmap_avg_g0_%d", i); + adcmap_avg_g0[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcmap_avg_g1_%d", i); + adcmap_avg_g1[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcmap_avg_g2_%d", i); + adcmap_avg_g2[i] = (TH2F*)saved_file->Get((const char *)(savename)); + + sprintf(savename,"adcermap_avg_g0_%d", i); + adcermap_avg_g0[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcermap_avg_g1_%d", i); + adcermap_avg_g1[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcermap_avg_g2_%d", i); + adcermap_avg_g2[i] = (TH2F*)saved_file->Get((const char *)(savename)); + } + } + + 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); + + TH1F *g0hist = new TH1F("g0hist","",100,10000,50000); + TH1F *g0erhist = new TH1F("g0erhist","",100,0,200); + + TH1F *g1hist = new TH1F("g1hist","",100,-3000,0); + TH1F *g1erhist = new TH1F("g1erhist","",100,0,50); + + TH1F *g2hist = 0; + if (module_str == "032") { + g2hist = new TH1F("g2hist","",100,-1000,-200); + } else { + g2hist = new TH1F("g2hist","",100,-300,0); + } + 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 *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); + TH1F *g1overg2_isDouble = new TH1F("g1overg2_isDouble","",100,11,15); + TH1F *g1overg2_isNextToDouble = new TH1F("g1overg2_isNextToDouble","",100,11,15); + TH1F *g1overg2_isQuad = new TH1F("g1overg2_isQuad","",100,11,15); + TH1F *g1overg2_isBulk = new TH1F("g1overg2_isBulk","",100,11,15); + + double filter[97]; + if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + for (int i = 0; i < 5; i++) { + filter[i] = 0.05+(i*0.05); + } + for (int i = 0; i < 9; i++) { + filter[i+5] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+5+9] = 5.+(i*2.5); + } + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.05); + } + for (int i = 0; i < 17; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+9+17] = 5.+(i*2.5); + } + for (int i = 0; i < 8; i++) { + filter[i+9+17+17] = 50.+(i*10.); + } + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + // loop 1 + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.05); + } + // loop 2a + for (int i = 0; i < 11; i++) { + filter[i+9] = 0.5+(i*0.05); + } + // loop 2b + for (int i = 0; i < 10; i++) { + filter[i+9+11] = 1.10+(i*0.10); + } + // loop 2c + for (int i = 0; i < 10; i++) { + filter[i+9+11+10] = 2.25+(i*0.25); + } + // loop 3a + for (int i = 0; i < 11; i++) { + filter[i+9+11+10+10] = 5.+(i*0.5); + } + // loop 3b + for (int i = 0; i < 10; i++) { + filter[i+9+11+10+10+11] = 11.+(i*1.0); + } + // loop 3c + for (int i = 0; i < 10; i++) { + filter[i+9+11+10+10+11+10] = 22.5+(i*2.5); + } + // loop 4a + for (int i = 0; i < 11; i++) { + filter[i+9+11+10+10+11+10+10] = 50.+(i*5.); + } + // loop 4b + for (int i = 0; i < 15; i++) { + filter[i+9+11+10+10+11+10+10+11] = 110.+(i*10.); + } + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + for (int i = 0; i < 10; i++) { + filter[i] = 0.2+(i*0.2); + } + for (int i = 0; i < 8; i++) { + filter[i+10] = 3+(i*1); + } + for (int i = 0; i < 25; i++) { + filter[i+10+8] = 12+(i*2); + } + for (int i = 0; i < 47; i++) { + filter[i+10+8+25] = 80+(i*20); + } + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.025); + } + for (int i = 0; i < 9; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+9+9] = 5.+(i*2.5); + } + } else if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.025); + } + for (int i = 0; i < 9; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 9; i++) { + filter[i+9+9] = 5.+(i*2.5); + } + } + + mapcanvas->cd(); + mapcanvas->SetLeftMargin(0.13); + mapcanvas->SetRightMargin(0.05); + + for (int i = 0; i < NCH; i++) { + //if(i/NC < 256 || (i%NC > 256 && i%NC < 512)) + //continue; + + vector r0_adc; + vector r0_filter; + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + vector r2_adc; + vector r2_filter; + vector r2_adcerr; + vector r2_ferr; + + // filter out points at zero and points with 0 error (mean taken from one entry in hist) + int m_max = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + m_max = 27; + } else if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + m_max = 31; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + m_max = 35; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + m_max = 51; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + m_max = 97; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + m_max = 90; + } + + for (int m = 0; m < m_max; m++) { + + double this_g0avg = adcmap_avg_g0[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avg = adcmap_avg_g1[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g2avg = adcmap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g0avger = adcermap_avg_g0[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avger = adcermap_avg_g1[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g2avger = adcermap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1); + + if (this_g0avg != 0) { + r0_filter.push_back(filter[m]); + r0_ferr.push_back(0.); + r0_adc.push_back(this_g0avg); + r0_adcerr.push_back(this_g0avger); + } + if (this_g1avg != 0) { + r1_filter.push_back(filter[m]); + r1_ferr.push_back(0.); + r1_adc.push_back(this_g1avg); + r1_adcerr.push_back(this_g1avger); + } + if (this_g2avg != 0) { + r2_filter.push_back(filter[m]); + r2_ferr.push_back(0.); + r2_adc.push_back(this_g2avg); + r2_adcerr.push_back(this_g2avger); + } + } + + TGraphErrors *grap_g0 = 0; + TGraphErrors *grap_g1 = 0; + TGraphErrors *grap_g2 = 0; + + TF1 *fit_g0 = 0; + TF1 *fit_g1 = 0; + TF1 *fit_g2 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + double rangemin_g2 = 0; + double rangemax_g2 = 0; + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + if (r2_adc.size() > 1) { + grap_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc[0]),&(r2_ferr[0]),&(r2_adcerr[0])); + grap_g2->SetMarkerStyle(20); + grap_g2->SetMarkerColor(kRed); + grap_g2->SetLineColor(kRed); + } + + // plot the datapoints + if (r1_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"; + } + + if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + grap_g1->GetXaxis()->SetLimits(0.009,5E2); + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + grap_g1->GetXaxis()->SetLimits(0.09,1.1E3); + } 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"); + if (r2_adc.size() > 1) { + grap_g2->Draw("P"); + } + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + } + mapcanvas->SetLogx(); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + } + } + + + // define fit ranges and fit + if (r0_adc.size() > 1) { + + + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemin_g0 = checkRangeMinForRCEffect(rangemin_g0); + + rangemax_g0 = highestPointBeforeSwitching(r0_filter, r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + 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"; + } + + 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->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + mapcanvas->Update(); + if (grap_g0->FindObject("stats")) {TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats"); + cout<<"here8"<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/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + vector 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])); + } + cout<<"here85"<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()->SetLimits(*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/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(),plotfolder_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) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter, r0_filter); + rangemin_g1 = checkRangeMinForRCEffect(rangemin_g1); + + rangemax_g1 = highestPointBeforeSwitching(r1_filter, r2_filter); + + if (rangemax_g1 > rangemin_g1) { + + 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->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->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + 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/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + vector 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()->SetLimits(*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/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_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) { + + rangemin_g2 = lowestPointAfterSwitching(r2_filter, r1_filter); + rangemin_g2 = checkRangeMinForRCEffect(rangemin_g2); + + rangemax_g2 = *max_element(r2_filter.begin(),r2_filter.end()); + + if (rangemax_g2 > rangemin_g2) { + + 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->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->GetXaxis()->SetLimits(*min_element(r2_filter.begin(),r2_filter.end()),*max_element(r2_filter.begin(),r2_filter.end())); + 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/%s/pixel_%s_%d_g2_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + vector 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()->SetLimits(*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/%s/pixel_%s_%d_g2norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + delete norm_g2; + delete flat_g2; + } + } + } + + + + // get ratio measurements + if (rangemax_g0 > rangemin_g0 && rangemax_g1 > rangemin_g1) { + + double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + double this_g0overg1er = 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,this_g0overg1); + g0overg1hist->Fill(this_g0overg1); + g0overg1ermap->Fill(i%NC,i/NC,this_g0overg1er); + g0overg1erhist->Fill(this_g0overg1er); + + if (isEdge(i)) { + g0overg1_isEdge->Fill(this_g0overg1); + } + if (isInnerEdge(i)) { + g0overg1_isInnerEdge->Fill(this_g0overg1); + } + if (isDouble(i)) { + g0overg1_isDouble->Fill(this_g0overg1); + } + if (isNextToDouble(i)) { + g0overg1_isNextToDouble->Fill(this_g0overg1); + } + if (isQuad(i)) { + g0overg1_isQuad->Fill(this_g0overg1); + } + if (isBulk(i)) { + g0overg1_isBulk->Fill(this_g0overg1); + } + } else { + no_g0g1_calib_map->Fill(i%NC,i/NC,1); + } + + if (rangemax_g1 > rangemin_g1 && rangemax_g2 > rangemin_g2) { + + double this_g1overg2 = fit_g1->GetParameter(1)/fit_g2->GetParameter(1); + double this_g1overg2er = 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,this_g1overg2); + g1overg2hist->Fill(this_g1overg2); + g1overg2ermap->Fill(i%NC,i/NC,this_g1overg2er); + g1overg2erhist->Fill(this_g1overg2er); + + if (isEdge(i)) { + g1overg2_isEdge->Fill(this_g1overg2); + } + if (isInnerEdge(i)) { + g1overg2_isInnerEdge->Fill(this_g1overg2); + } + if (isDouble(i)) { + g1overg2_isDouble->Fill(this_g1overg2); + } + if (isNextToDouble(i)) { + g1overg2_isNextToDouble->Fill(this_g1overg2); + } + if (isQuad(i)) { + g1overg2_isQuad->Fill(this_g1overg2); + } + if (isBulk(i)) { + g1overg2_isBulk->Fill(this_g1overg2); + } + } else { + no_g1g2_calib_map->Fill(i%NC,i/NC,1); + } + + 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"); + pave->SetBorderSize(0); + pave->SetFillStyle(0); + pave->SetTextSize(0.06); + pave->SetTextAlign(32); + + if (g0hist->GetEntries() > 0) { + g0hist->GetXaxis()->SetTitle("G0 gradient"); + g0hist->GetXaxis()->SetTitleOffset(1.1); + g0hist->GetYaxis()->SetTitleOffset(1.5); + g0hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0hist_M%s.png", module_str.c_str(),plotfolder_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/%s/g0erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g1hist->GetEntries() > 0) { + g1hist->GetXaxis()->SetTitle("G1 gradient"); + g1hist->GetXaxis()->SetTitleOffset(1.1); + g1hist->GetYaxis()->SetTitleOffset(1.5); + g1hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1hist_M%s.png", module_str.c_str(),plotfolder_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); + g1erhist->Draw(); + sprintf(savename,"plots/M%s/%s/g1erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g2hist->GetEntries() > 0) { + g2hist->GetXaxis()->SetTitle("G2 gradient"); + g2hist->GetXaxis()->SetTitleOffset(1.1); + g2hist->GetYaxis()->SetTitleOffset(1.5); + g2hist->Draw(); + sprintf(savename,"plots/M%s/%s/g2hist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g2erhist->GetXaxis()->SetTitle("Fitted G2 uncert"); + g2erhist->GetXaxis()->SetTitleOffset(1.1); + g2erhist->GetYaxis()->SetTitleOffset(1.5); + g2erhist->Draw(); + sprintf(savename,"plots/M%s/%s/g2erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g0overg1hist->GetEntries() > 0) { + g0overg1hist->GetXaxis()->SetTitle("G0 / G1"); + g0overg1hist->GetXaxis()->SetTitleOffset(1.1); + g0overg1hist->GetYaxis()->SetTitleOffset(1.5); + g0overg1hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1hist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + 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); + g0overg1hist->Fit("gaus"); + g0overg1hist->Draw(); + c1->Update(); + TF1* g0overg1hist_gaus = g0overg1hist->GetFunction("gaus"); + if (g0overg1hist_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/%s/g0overg1hist_fit_M%s.png", module_str.c_str(),plotfolder_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/%s/g0overg1erhist_M%s.png", module_str.c_str(),plotfolder_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); + + 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()); + + 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/%s/g0overg1_perType_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g1overg2hist->GetEntries() > 0) { + g1overg2hist->GetXaxis()->SetTitle("G1 / G2"); + g1overg2hist->GetXaxis()->SetTitleOffset(1.1); + g1overg2hist->GetYaxis()->SetTitleOffset(1.5); + g1overg2hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2hist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + 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); + g1overg2hist->Fit("gaus"); + g1overg2hist->Draw(); + c1->Update(); + TF1* g1overg2hist_gaus = g1overg2hist->GetFunction("gaus"); + if (g1overg2hist_gaus) { + sprintf(savename,"Mean %0.4f #pm %0.4f", g1overg2hist_gaus->GetParameter(1), g1overg2hist_gaus->GetParError(1)); + pave2->AddText((const char *)(savename)); + sprintf(savename,"Sigma %0.4f #pm %0.4f", g1overg2hist_gaus->GetParameter(2), g1overg2hist_gaus->GetParError(2)); + pave2->AddText((const char *)(savename)); + pave2->Draw(); + g1overg2hist->SetStats(kFALSE); + sprintf(savename,"plots/M%s/%s/g1overg2hist_fit_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + g1overg2erhist->GetXaxis()->SetTitle("G1 / G2 uncert"); + g1overg2erhist->GetXaxis()->SetTitleOffset(1.1); + g1overg2erhist->GetYaxis()->SetTitleOffset(1.5); + g1overg2erhist->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1overg2_isEdge->SetLineColor(kBlue); + g1overg2_isInnerEdge->SetLineColor(kCyan); + g1overg2_isDouble->SetLineColor(kGreen+2); + g1overg2_isNextToDouble->SetLineColor(kRed); + g1overg2_isQuad->SetLineColor(kOrange); + + g1overg2_isEdge->Scale(1./g1overg2_isEdge->GetEntries()); + g1overg2_isInnerEdge->Scale(1./g1overg2_isInnerEdge->GetEntries()); + g1overg2_isDouble->Scale(1./g1overg2_isDouble->GetEntries()); + g1overg2_isNextToDouble->Scale(1./g1overg2_isNextToDouble->GetEntries()); + g1overg2_isQuad->Scale(1./g1overg2_isQuad->GetEntries()); + g1overg2_isBulk->Scale(1./g1overg2_isBulk->GetEntries()); + + TLegend *leg = new TLegend(0.62,0.6,0.93,0.93); + leg->AddEntry(g1overg2_isBulk, "Normal", "l"); + leg->AddEntry(g1overg2_isDouble, "Double", "l"); + leg->AddEntry(g1overg2_isNextToDouble, "Next to D", "l"); + leg->AddEntry(g1overg2_isEdge, "Edge", "l"); + leg->AddEntry(g1overg2_isInnerEdge, "Inner E", "l"); + + g1overg2_isDouble->GetXaxis()->SetTitle("G1 / G2"); + g1overg2_isDouble->GetYaxis()->SetTitle("Normalised"); + g1overg2_isDouble->GetYaxis()->SetTitleOffset(1.3); + g1overg2_isDouble->SetMinimum(0.0); + g1overg2_isDouble->SetMaximum(0.16); + g1overg2_isDouble->Draw(); + g1overg2_isEdge->Draw("same"); + g1overg2_isInnerEdge->Draw("same"); + g1overg2_isNextToDouble->Draw("same"); + g1overg2_isBulk->Draw("same"); + leg->Draw("same"); + sprintf(savename,"plots/M%s/%s/g1overg2_perType_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + mapcanvas->cd(); + + if (g0map->GetEntries() > 0) { + 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/%s/g0map_M%s.png", module_str.c_str(),plotfolder_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/%s/g0ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g1map->GetEntries() > 0) { + g1map->GetXaxis()->SetTitle("Column"); + g1map->GetYaxis()->SetTitle("Row"); + g1map->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "002") { + g1map->GetZaxis()->SetRangeUser(-400,-100); + } else { + g1map->GetZaxis()->SetRangeUser(-3000,0); + } + g1map->Draw("colz"); + pave->Clear(); + pave->AddText("G1 [ADU/#mus]"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g1map_M%s.png", module_str.c_str(),plotfolder_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); + g1ermap->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G1}"); + pave->Draw(); + g1ermap->GetZaxis()->SetRangeUser(0,50); + sprintf(savename,"plots/M%s/%s/g1ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g1map->GetEntries() > 0) { + g2map->GetXaxis()->SetTitle("Column"); + g2map->GetYaxis()->SetTitle("Row"); + g2map->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "032") { + g2map->GetZaxis()->SetRangeUser(-800,-400); + } else if (module_str == "002") { + g2map->GetZaxis()->SetRangeUser(-35,-10); + } else { + g2map->GetZaxis()->SetRangeUser(-200,-50); + } + g2map->Draw("colz"); + pave->Clear(); + pave->AddText("G2 [ADU/#mus]"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g2map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g2ermap->GetXaxis()->SetTitle("Column"); + g2ermap->GetYaxis()->SetTitle("Row"); + g2ermap->GetYaxis()->SetTitleOffset(0.7); + g2ermap->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G2}"); + pave->Draw(); + g2ermap->GetZaxis()->SetRangeUser(0,5); + sprintf(savename,"plots/M%s/%s/g2ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g0overg1map->GetEntries()) { + g0overg1map->GetXaxis()->SetTitle("Column"); + g0overg1map->GetYaxis()->SetTitle("Row"); + g0overg1map->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "003") { + g0overg1map->GetZaxis()->SetRangeUser(-35,-30); + } else { + g0overg1map->GetZaxis()->SetRangeUser(-50,0); + } + g0overg1map->Draw("colz"); + pave->Clear(); + pave->AddText("G0/G1"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1map_M%s.png", module_str.c_str(),plotfolder_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/%s/g0overg1ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g1overg2map->GetEntries()) { + g1overg2map->GetXaxis()->SetTitle("Column"); + g1overg2map->GetYaxis()->SetTitle("Row"); + g1overg2map->GetYaxis()->SetTitleOffset(0.7); + +#ifdef JF11 + //g1overg2map->GetZaxis()->SetRangeUser(11,12.5); +#else + g1overg2map->GetZaxis()->SetRangeUser(12,13.2); +#endif + + g1overg2map->Draw("colz"); + pave->Clear(); + pave->AddText("G1/G2"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1overg2ermap->GetXaxis()->SetTitle("Column"); + g1overg2ermap->GetYaxis()->SetTitle("Row"); + g1overg2ermap->GetYaxis()->SetTitleOffset(0.7); + g1overg2ermap->GetZaxis()->SetRangeUser(0,0.5); + g1overg2ermap->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G1/G2}"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + no_g0g1_calib_map->GetXaxis()->SetTitle("Column"); + no_g0g1_calib_map->GetYaxis()->SetTitle("Row"); + no_g0g1_calib_map->GetYaxis()->SetTitleOffset(0.7); + no_g0g1_calib_map->Draw("colz"); + sprintf(savename,"plots/M%s/%s/no_g0g1_calib_map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + no_g1g2_calib_map->GetXaxis()->SetTitle("Column"); + no_g1g2_calib_map->GetYaxis()->SetTitle("Row"); + no_g1g2_calib_map->GetYaxis()->SetTitleOffset(0.7); + no_g1g2_calib_map->Draw("colz"); + sprintf(savename,"plots/M%s/%s/no_g1g2_calib_map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + +if (isHGX) { + sprintf(savename,"data/M%s/CS_ratio_M%s_HG0G1G2.root", module_str.c_str(), module_str.c_str()); + + } + else + { + 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(); + g1overg2ermap->Write(); + saved_file2->Close(); + +} diff --git a/CS_analysis_M439.cpp b/CS_analysis_M439.cpp new file mode 100644 index 0000000..a75e3da --- /dev/null +++ b/CS_analysis_M439.cpp @@ -0,0 +1,2171 @@ +// file to take current source scan files, analyse and plot them. +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + + +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" +#include "sls_detector_calibration/jungfrauPixelMask.C" + +#include "TGraph.h" +#include "TGraphErrors.h" +#include "TF1.h" +#include "TFile.h" +#include "TPaveStats.h" +#include "TLegend.h" +#include "TPaveText.h" + +#include +#include +#include + +double checkRangeMinForRCEffect(double range_min) { + + // check that the range minimum is at least 2 us, to avoid non-linearity of RC effect + if (range_min < 2.0) { + return 2.0; + } else { + return range_min; + } + +} + + +bool isHGX=false; +int main(int argc, char* argv[]) { + + jungfrauStyle(); + gROOT->SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + cout << "arg 3: specify data file" << endl; + cout << " " << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 5) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location folder" << endl; + cout << "arg 3: specify data file prefix" << endl; + cout << "arg 4: specify location of analysis root files" << endl; + cout << " " << endl; + exit(1); + } //uncomment for VH 210906 + + + + string plotfolder_str; + string str2 ("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + string module_str = argv[1]; + string data_loc = argv[2]; + string data_file = argv[3]; + string anadata_loc = argv[4]; //uncomment for VH 210906 + + +if (data_file.find(str2) != string::npos) isHGX=true; +if (data_file.find(str3) != string::npos) isHGX=true; + +if (isHGX) { + cout << " HG0->HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" < scan_v1; + scan_v1.push_back("002"); + scan_v1.push_back("003"); + + vector scan_v2; + scan_v2.push_back("032"); + + vector scan_v3; + + vector scan_v4; + scan_v4.push_back("040"); + scan_v4.push_back("044"); + + vector scan_v5; + scan_v5.push_back("006"); + scan_v5.push_back("022"); + scan_v5.push_back("055"); + scan_v5.push_back("065"); + scan_v5.push_back("066"); + scan_v5.push_back("068"); + scan_v5.push_back("069"); + scan_v5.push_back("088"); + scan_v5.push_back("094"); + + vector scan_v6; + scan_v6.push_back("008"); + scan_v6.push_back("011"); + scan_v6.push_back("021"); + scan_v6.push_back("023"); + scan_v6.push_back("025"); + scan_v6.push_back("029"); + scan_v6.push_back("035"); + scan_v6.push_back("039"); + scan_v6.push_back("043"); + scan_v6.push_back("045"); + scan_v6.push_back("046"); + scan_v6.push_back("048"); + scan_v6.push_back("049"); + scan_v6.push_back("050"); + scan_v6.push_back("051"); + scan_v6.push_back("053"); + scan_v6.push_back("054"); + scan_v6.push_back("057"); + scan_v6.push_back("058"); + scan_v6.push_back("059"); + scan_v6.push_back("060"); + scan_v6.push_back("061"); + scan_v6.push_back("062"); + scan_v6.push_back("063"); + scan_v6.push_back("064"); + scan_v6.push_back("067"); + scan_v6.push_back("070"); + scan_v6.push_back("071"); + scan_v6.push_back("072"); + scan_v6.push_back("073"); + scan_v6.push_back("074"); + scan_v6.push_back("075"); + scan_v6.push_back("076"); + scan_v6.push_back("079"); + scan_v6.push_back("080"); + scan_v6.push_back("086"); + scan_v6.push_back("089"); + scan_v6.push_back("090"); + scan_v6.push_back("091"); + scan_v6.push_back("092"); + scan_v6.push_back("093"); + scan_v6.push_back("095"); + scan_v6.push_back("097"); + scan_v6.push_back("098"); + scan_v6.push_back("099"); + scan_v6.push_back("100"); + scan_v6.push_back("102"); + scan_v6.push_back("103"); + scan_v6.push_back("104"); + scan_v6.push_back("106"); + scan_v6.push_back("107"); + scan_v6.push_back("108"); + scan_v6.push_back("109"); + scan_v6.push_back("110"); + scan_v6.push_back("111"); + scan_v6.push_back("112"); + scan_v6.push_back("113"); + scan_v6.push_back("114"); + scan_v6.push_back("115"); + scan_v6.push_back("116"); + scan_v6.push_back("117"); + scan_v6.push_back("118"); + scan_v6.push_back("119"); + scan_v6.push_back("120"); + scan_v6.push_back("121"); + scan_v6.push_back("122"); + scan_v6.push_back("123"); + scan_v6.push_back("124"); + scan_v6.push_back("125"); + scan_v6.push_back("126"); + scan_v6.push_back("129"); + scan_v6.push_back("130"); + scan_v6.push_back("131"); + scan_v6.push_back("132"); + scan_v6.push_back("133"); + scan_v6.push_back("134"); + scan_v6.push_back("135"); + scan_v6.push_back("200"); + scan_v6.push_back("201"); + scan_v6.push_back("202"); + scan_v6.push_back("203"); + scan_v6.push_back("204"); + scan_v6.push_back("205"); + scan_v6.push_back("206"); + scan_v6.push_back("208"); + scan_v6.push_back("209"); + scan_v6.push_back("210"); + scan_v6.push_back("212"); + scan_v6.push_back("214"); + scan_v6.push_back("215"); + scan_v6.push_back("216"); + scan_v6.push_back("217"); + scan_v6.push_back("218"); + scan_v6.push_back("219"); + scan_v6.push_back("221"); + scan_v6.push_back("222"); + scan_v6.push_back("223"); + scan_v6.push_back("224"); + scan_v6.push_back("225"); + scan_v6.push_back("226"); + scan_v6.push_back("227"); + scan_v6.push_back("228"); + scan_v6.push_back("229"); + scan_v6.push_back("232"); + scan_v6.push_back("233"); + scan_v6.push_back("234"); + scan_v6.push_back("235"); + scan_v6.push_back("236"); + scan_v6.push_back("242"); + scan_v6.push_back("244"); + scan_v6.push_back("245"); + scan_v6.push_back("246"); + scan_v6.push_back("248"); + scan_v6.push_back("249"); + scan_v6.push_back("250"); + scan_v6.push_back("251"); + scan_v6.push_back("252"); + scan_v6.push_back("253"); + scan_v6.push_back("254"); + scan_v6.push_back("255"); + scan_v6.push_back("260"); + scan_v6.push_back("261"); + scan_v6.push_back("263"); + scan_v6.push_back("264"); + scan_v6.push_back("265"); + scan_v6.push_back("266"); + scan_v6.push_back("267"); + scan_v6.push_back("269"); + scan_v6.push_back("270"); + scan_v6.push_back("272"); + scan_v6.push_back("273"); + scan_v6.push_back("274"); + scan_v6.push_back("275"); + scan_v6.push_back("276"); + scan_v6.push_back("277"); + scan_v6.push_back("278"); + scan_v6.push_back("279"); + scan_v6.push_back("281"); + scan_v6.push_back("282"); + scan_v6.push_back("283"); + scan_v6.push_back("285"); + scan_v6.push_back("286"); + scan_v6.push_back("287"); + scan_v6.push_back("288"); + scan_v6.push_back("289"); + scan_v6.push_back("290"); + scan_v6.push_back("291"); + scan_v6.push_back("292"); + scan_v6.push_back("294"); + scan_v6.push_back("296"); + scan_v6.push_back("298"); + scan_v6.push_back("299"); + scan_v6.push_back("301"); + scan_v6.push_back("307"); + scan_v6.push_back("312"); + scan_v6.push_back("351"); + scan_v6.push_back("352"); + scan_v6.push_back("354"); + scan_v6.push_back("360"); + scan_v6.push_back("373"); + scan_v6.push_back("380"); + scan_v6.push_back("304"); + scan_v6.push_back("321"); + scan_v6.push_back("346"); + scan_v6.push_back("375"); + scan_v6.push_back("381"); + scan_v6.push_back("383"); + scan_v6.push_back("310"); + scan_v6.push_back("313"); + scan_v6.push_back("314"); + scan_v6.push_back("334"); + scan_v6.push_back("337"); + scan_v6.push_back("347"); + scan_v6.push_back("361"); + scan_v6.push_back("362"); + scan_v6.push_back("355"); + scan_v6.push_back("364"); + scan_v6.push_back("366"); + scan_v6.push_back("243"); + scan_v6.push_back("339"); + scan_v6.push_back("341"); + scan_v6.push_back("368"); + scan_v6.push_back("376"); + scan_v6.push_back("379"); + + scan_v6.push_back("359"); + scan_v6.push_back("363"); + scan_v6.push_back("365"); + scan_v6.push_back("347"); + scan_v6.push_back("366"); + + + scan_v6.push_back("268"); + scan_v6.push_back("300"); + scan_v6.push_back("302"); + scan_v6.push_back("303"); + scan_v6.push_back("309"); + scan_v6.push_back("326"); + + scan_v6.push_back("308"); + scan_v6.push_back("322"); + scan_v6.push_back("328"); + scan_v6.push_back("332"); + scan_v6.push_back("335"); + scan_v6.push_back("353"); + scan_v6.push_back("335_FW2_2"); + scan_v6.push_back("353_FW2_2"); + + scan_v6.push_back("262_FWcheck_1_1_1"); + scan_v6.push_back("262_FWcheck_1_1_1_test"); + scan_v6.push_back("262_FWcheck_1_2_rc210831"); + scan_v6.push_back("262_FWcheck_1_2_defdacs"); + + scan_v6.push_back("311"); + scan_v6.push_back("316"); + scan_v6.push_back("318"); + scan_v6.push_back("319"); + scan_v6.push_back("320"); + scan_v6.push_back("324"); + + scan_v6.push_back("272_fullspeedtest"); + scan_v6.push_back("272_halfspeedtest"); + + scan_v6.push_back("352_fullspeed"); //jf4mb2-00 (SLS) + scan_v6.push_back("307_fullspeed"); //jf4mb2-01 (SLS) + scan_v6.push_back("264_fullspeed"); //jf4mb2-02 (SLS) + scan_v6.push_back("253_fullspeed"); //jf4mb2-03 (SLS) + scan_v6.push_back("351_fullspeed"); //jf4mb2-04 (SLS) + scan_v6.push_back("312_fullspeed"); //jf4mb2-05 (SLS) + scan_v6.push_back("261_fullspeed"); //jf4mb2-06 (SLS) + scan_v6.push_back("310_fullspeed"); //jf4mb2-07 (SLS) + + scan_v6.push_back("384"); //jfcalib-5 + scan_v6.push_back("510"); //jfcalib-0 + scan_v6.push_back("511"); //jfcalib-1 + scan_v6.push_back("512"); //jfcalib-2 + scan_v6.push_back("556"); //jfcalib-3 + scan_v6.push_back("572"); //jfcalib-4 + + scan_v6.push_back("329"); //jfcalib-0 + scan_v6.push_back("331"); //jfcalib-1 + scan_v6.push_back("333"); //jfcalib-2 + scan_v6.push_back("336"); //jfcalib-3 + scan_v6.push_back("356"); //jfcalib-4 + scan_v6.push_back("377"); //jfcalib-5 + + scan_v6.push_back("387"); //jfcalib-0 + scan_v6.push_back("388"); //jfcalib-1 + scan_v6.push_back("389"); //jfcalib-2 + scan_v6.push_back("396"); //jfcalib-3 + scan_v6.push_back("397"); //jfcalib-4 + scan_v6.push_back("398"); //jfcalib-5 + + scan_v6.push_back("390"); //jfcalib-0 + scan_v6.push_back("391"); //jfcalib-1 + scan_v6.push_back("393"); //jfcalib-2 + scan_v6.push_back("399"); //jfcalib-3 + scan_v6.push_back("516"); //jfcalib-4 + scan_v6.push_back("517"); //jfcalib-5 + + scan_v6.push_back("519"); //jfcalib-0 + scan_v6.push_back("520"); //jfcalib-1 + scan_v6.push_back("532"); //jfcalib-2 + scan_v6.push_back("539"); //jfcalib-3 + scan_v6.push_back("555"); //jfcalib-4 + + //Calib for VELA beamtime in March 2022 + scan_v6.push_back("262"); //jfcalib-0 + scan_v6.push_back("231"); //jfcalib-1 + scan_v6.push_back("305"); //jfcalib-2 + + scan_v6.push_back("392"); //jfcalib-1 + scan_v6.push_back("394"); //jfcalib-2 + scan_v6.push_back("513"); //jfcalib-3 + scan_v6.push_back("514"); //jfcalib-4 + scan_v6.push_back("515"); //jfcalib-5 + + scan_v6.push_back("239"); //jfcalib-0 //bad + //scan_v6.push_back("064"); //jfcalib-1 //bad //already added above + //scan_v6.push_back("023"); //jfcalib-2 //bad //already added above + scan_v6.push_back("349"); //jfcalib-3 //bad + scan_v6.push_back("518"); //jfcalib-4 + scan_v6.push_back("521"); //jfcalib-5 + + scan_v6.push_back("523"); //jfcalib-0 + scan_v6.push_back("526"); //jfcalib-1 + scan_v6.push_back("529"); //jfcalib-2 + scan_v6.push_back("530"); //jfcalib-3 + scan_v6.push_back("531"); //jfcalib-4 + scan_v6.push_back("533"); //jfcalib-5 + + scan_v6.push_back("524"); //1M for ESRF + scan_v6.push_back("525"); //1M for ESRF + + scan_v6.push_back("306"); //jfcalib-0 (strixel) + scan_v6.push_back("350"); //jfcalib-1 (strixel) + + scan_v6.push_back("534"); //jfcalib-0 + scan_v6.push_back("537"); //jfcalib-1 + scan_v6.push_back("538"); //jfcalib-2 + scan_v6.push_back("542"); //jfcalib-3 + scan_v6.push_back("543"); //jfcalib-4 + scan_v6.push_back("544"); //jfcalib-5 + + scan_v6.push_back("402"); //jfcalib-0 + scan_v6.push_back("404"); //jfcalib-1 + scan_v6.push_back("407"); //jfcalib-2 + scan_v6.push_back("409"); //jfcalib-3 + scan_v6.push_back("410"); //jfcalib-4 + scan_v6.push_back("411"); //jfcalib-5 + + //scan_v6.push_back("008"); //jfcalib-0 //already in the list from previous calibration + scan_v6.push_back("433"); //jfcalib-1 + scan_v6.push_back("550"); //jfcalib-2 + scan_v6.push_back("545"); //jfcalib-3 + scan_v6.push_back("546"); //jfcalib-4 + scan_v6.push_back("547"); //jfcalib-5 + + //scan_v6.push_back("416"); //jfcalib-0 //destroyed, machanical sample + scan_v6.push_back("417"); //jfcalib-1 + scan_v6.push_back("418"); //jfcalib-2 + scan_v6.push_back("420"); //jfcalib-3 + scan_v6.push_back("421"); //jfcalib-4 + scan_v6.push_back("430"); //jfcalib-5 + + scan_v6.push_back("417_fullspeed"); //jfcalib-1 + scan_v6.push_back("418_fullspeed"); //jfcalib-2 + scan_v6.push_back("420_fullspeed"); //jfcalib-3 + scan_v6.push_back("421_fullspeed"); //jfcalib-4 + scan_v6.push_back("430_fullspeed"); //jfcalib-5 + + scan_v6.push_back("434"); //jfcalib-0 + scan_v6.push_back("437"); //jfcalib-1 + scan_v6.push_back("480"); //jfcalib-2 + scan_v6.push_back("464"); //jfcalib-3 + scan_v6.push_back("473"); //jfcalib-4 + scan_v6.push_back("474"); //jfcalib-5 + + scan_v6.push_back("076"); //jfcalib-0 + scan_v6.push_back("089"); //jfcalib-3 + scan_v6.push_back("207"); //jfcalib-5 + + scan_v6.push_back("244"); //jfcalib-3 + + scan_v6.push_back("474_fullspeed"); //jfcalib-0 + scan_v6.push_back("437_fullspeed"); //jfcalib-1 + scan_v6.push_back("480_fullspeed"); //jfcalib-2 + scan_v6.push_back("482_fullspeed"); //jfcalib-3 + scan_v6.push_back("487_fullspeed"); //jfcalib-5 + + scan_v6.push_back("482"); //jfcalib-3 + scan_v6.push_back("487"); //jfcalib-5 + + scan_v6.push_back("499_fullspeed"); //jfcalib-0 + scan_v6.push_back("548_fullspeed"); //jfcalib-1 + scan_v6.push_back("549_fullspeed"); //jfcalib-2 + scan_v6.push_back("427_fullspeed"); //jfcalib-3 + + scan_v6.push_back("499"); //jfcalib-0 + scan_v6.push_back("548"); //jfcalib-1 + scan_v6.push_back("549"); //jfcalib-2 + scan_v6.push_back("427"); //jfcalib-3 + scan_v6.push_back("435"); //jfcalib-5 + + scan_v6.push_back("403"); //jfcalib-0 + scan_v6.push_back("406"); //jfcalib-1 + scan_v6.push_back("423"); //jfcalib-2 + scan_v6.push_back("436"); //jfcalib-3 + scan_v6.push_back("479"); //jfcalib-5 + + // Calibration 450 um sensor for ESRF + + scan_v6.push_back("583"); //jfcalib-0 + scan_v6.push_back("593"); //jfcalib-1 + scan_v6.push_back("601"); //jfcalib-2 + scan_v6.push_back("604"); //jfcalib-3 + scan_v6.push_back("605"); //jfcalib-5 + + // Calibration 320 um sensors + + scan_v6.push_back("441"); //jfcalib-0 + scan_v6.push_back("460"); //jfcalib-1 + scan_v6.push_back("463"); //jfcalib-2 + scan_v6.push_back("476"); //jfcalib-3 + scan_v6.push_back("371"); //jfcalib-4 + + scan_v6.push_back("429"); //jfcalib-0 + scan_v6.push_back("442"); //jfcalib-1 + scan_v6.push_back("444"); //jfcalib-2 + scan_v6.push_back("446"); //jfcalib-3 + scan_v6.push_back("447"); //jfcalib-4 + + scan_v6.push_back("428"); //jfcalib-0 + scan_v6.push_back("439"); //jfcalib-1 + scan_v6.push_back("443"); //jfcalib-2 + scan_v6.push_back("445"); //jfcalib-3 + + scan_v6.push_back("448"); //jfcalib-0 + scan_v6.push_back("454"); //jfcalib-1 + scan_v6.push_back("455"); //jfcalib-2 + scan_v6.push_back("456"); //jfcalib-3 + scan_v6.push_back("466"); //jfcalib-4 + scan_v6.push_back("471"); //jfcalib-5 + + scan_v6.push_back("481"); //jfcalib-0 + scan_v6.push_back("488"); //jfcalib-1 + scan_v6.push_back("490"); //jfcalib-2 + scan_v6.push_back("491"); //jfcalib-3 + scan_v6.push_back("492"); //jfcalib-4 + scan_v6.push_back("493"); //jfcalib-5 + + scan_v6.push_back("494"); //jfcalib-0 + scan_v6.push_back("495"); //jfcalib-1 + scan_v6.push_back("497"); //jfcalib-2 + scan_v6.push_back("498"); //jfcalib-3 + scan_v6.push_back("501"); //jfcalib-4 + scan_v6.push_back("502"); //jfcalib-5 + + scan_v6.push_back("036"); //jfcalib-0 + scan_v6.push_back("560"); //jfcalib-1 + scan_v6.push_back("536"); //jfcalib-2 + scan_v6.push_back("535"); //jfcalib-3 + scan_v6.push_back("527"); //jfcalib-4 + scan_v6.push_back("522"); //jfcalib-5 + + + jungfrauFile *thisfile = new jungfrauFile(); + + jungfrauPixelMask *pixelMaskObject = new jungfrauPixelMask(); + bool pixel_mask [NCH]; + + bool saturation_mask [NCH]; + std::fill_n(saturation_mask, NCH, true); + + jungfrauPedestal *pedestalObject = new jungfrauPedestal(); + pedestalObject->pedestalSetNFrames(640); + + TH2F* pedestalsG0 = new TH2F("pedestalsG0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* pedestalsG1 = new TH2F("pedestalsG1","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* pedestalsG2 = new TH2F("pedestalsG2","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* pedeRMSG0 = new TH2F("pedeRMSG0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* no_g0g1_calib_map = new TH2F("no_g0g1_calib_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* no_g1g2_calib_map = new TH2F("no_g1g2_calib_map","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + //char savename[128]; + char savename[256]; // VH 210902 + int createHistoFile = 1; //set 0 for a fit-only run + int createPerStepHistos = 0; //debug + +#ifdef JF11 + cout << "COMPILED for JF11 !!!" << endl; +#endif + + // create necessary directories with permissions drwxrwxr-x + // data/Mxxx + sprintf(savename,"data/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx + sprintf(savename,"plots/M%s", module_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // plots/Mxxx/CurrentSource + sprintf(savename,"plots/M%s/%s", module_str.c_str() ,plotfolder_str.c_str()); + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + // /mnt/pcmoench_jungfrau_data/jungfrau_ana_sophie/Mxxx_CalibAna + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna", module_str.c_str()); //uncomment for SR + sprintf(savename,"%s", anadata_loc.c_str()); //uncomment for VH 210906 + mkdir(savename, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + + // open first file + sprintf(savename,"%s/%s_%%6.6d.dat", data_loc.c_str(), data_file.c_str()); //VH: note, this adds a double slash in the filepath + thisfile->open((char*)savename, 0); + + // calculate pixel mask + pixelMaskObject->initialisePixelMask(pixel_mask); + + for (int i = 0; i < 640; i++) { + thisfile->readNextFrame(); + pixelMaskObject->maskIfGainNot(0, thisfile->getFrameDataHandle(), pixel_mask); + } + cout << "after G0, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + for (int i = 0; i < 640; i++) { + thisfile->readNextFrame(); + pixelMaskObject->maskIfGainNot(1, thisfile->getFrameDataHandle(), pixel_mask); // change to Not(2 to fix FW error during JF11 FW develop. needed for modules 243-379 + } + cout << "after G1, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + for (int i = 0; i < 640; i++) { + thisfile->readNextFrame(); + pixelMaskObject->maskIfGainNot(3, thisfile->getFrameDataHandle(), pixel_mask); + } + cout << "after G2, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + thisfile->rewind(); + + sprintf(savename,"plots/M%s/%s/pixelmask_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + pixelMaskObject->plotPixelMask(pixel_mask,savename); + cout << "after chip mask, n masked pixels is " << pixelMaskObject->getNMasked(pixel_mask) << endl; + + // calculate pedestals + for (int j = 0; j < 640; j++) { + thisfile->readNextFrame(); + pedestalObject->addFrameToPedestalCalculation(thisfile->getFrameDataHandle()); + } + for (int i = 0; i < NCH; i++) { + if (pixel_mask[i] == true) { + pedestalsG0->Fill(i%NC,i/NC,pedestalObject->pedestalOfChannel(i)); + pedeRMSG0->Fill(i%NC,i/NC,pedestalObject->rmsOfChannel(i)); + } + } + pedestalObject->pedestalClear(); + + for (int j = 0; j < 640; j++) { + thisfile->readNextFrame(); + pedestalObject->addFrameToPedestalCalculation(thisfile->getFrameDataHandle()); + } + for (int i = 0; i < NCH; i++) { + if (pixel_mask[i] == true) { + pedestalsG1->Fill(i%NC,i/NC,pedestalObject->pedestalOfChannel(i)); + } + } + pedestalObject->pedestalClear(); + + for (int j = 0; j < 640; j++) { + thisfile->readNextFrame(); + pedestalObject->addFrameToPedestalCalculation(thisfile->getFrameDataHandle()); + } + for (int i = 0; i < NCH; i++) { + if (pixel_mask[i] == true) { + pedestalsG2->Fill(i%NC,i/NC,pedestalObject->pedestalOfChannel(i)); + } + } + pedestalObject->pedestalClear(); + + thisfile->close(); + + TCanvas *mapcanvas = new TCanvas("mapcanvas","",150,10,800,400); + mapcanvas->SetLeftMargin(0.1); + mapcanvas->SetRightMargin(0.13); + mapcanvas->SetTopMargin(0.08); + mapcanvas->SetBottomMargin(0.15); + + TCanvas *c1 = new TCanvas("c1",""); + + mapcanvas->cd(); + + pedestalsG0->GetXaxis()->SetTitle("Column"); + pedestalsG0->GetYaxis()->SetTitle("Row"); + pedestalsG0->GetYaxis()->SetTitleOffset(0.7); + pedestalsG0->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeG0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + pedestalsG1->GetXaxis()->SetTitle("Column"); + pedestalsG1->GetYaxis()->SetTitle("Row"); + pedestalsG1->GetYaxis()->SetTitleOffset(0.7); + pedestalsG1->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeG1_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + pedestalsG2->GetXaxis()->SetTitle("Column"); + pedestalsG2->GetYaxis()->SetTitle("Row"); + pedestalsG2->GetYaxis()->SetTitleOffset(0.7); + pedestalsG2->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeG2_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + pedeRMSG0->GetXaxis()->SetTitle("Column"); + pedeRMSG0->GetYaxis()->SetTitle("Row"); + pedeRMSG0->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "006") { + pedeRMSG0->GetZaxis()->SetRangeUser(0,50); + } else { + pedeRMSG0->GetZaxis()->SetRangeUser(0,25); + } + pedeRMSG0->Draw("colz"); + sprintf(savename,"plots/M%s/%s/pedeRMSG0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + TH2F *adcmap_avg_g0 [97]; + TH2F *adcmap_avg_g1 [97]; + TH2F *adcmap_avg_g2 [97]; + TH2F *adcermap_avg_g0 [97]; + TH2F *adcermap_avg_g1 [97]; + TH2F *adcermap_avg_g2 [97]; + + // creating the histograms + if (createHistoFile) { + + for(int i = 0; i < 97; i++) { + ostringstream histogramNameStreamg0; + histogramNameStreamg0 << "adcmap_avg_g0_" << i; + adcmap_avg_g0[i] = new TH2F(histogramNameStreamg0.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg1; + histogramNameStreamg1 << "adcmap_avg_g1_" << i; + adcmap_avg_g1[i] = new TH2F(histogramNameStreamg1.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg2; + histogramNameStreamg2 << "adcmap_avg_g2_" << i; + adcmap_avg_g2[i] = new TH2F(histogramNameStreamg2.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg5; + histogramNameStreamg5 << "adcermap_avg_g0_" << i; + adcermap_avg_g0[i] = new TH2F(histogramNameStreamg5.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg3; + histogramNameStreamg3 << "adcermap_avg_g1_" << i; + adcermap_avg_g1[i] = new TH2F(histogramNameStreamg3.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + ostringstream histogramNameStreamg4; + histogramNameStreamg4 << "adcermap_avg_g2_" << i; + adcermap_avg_g2[i] = new TH2F(histogramNameStreamg4.str().c_str(),"",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + } + + TH2F *gainmap_all = new TH2F("gainmap_all","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F *adcmap_all = new TH2F("adcmap_all","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F *gainmap_sel = new TH2F("gainmap_sel","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F *adcmap_sel = new TH2F("adcmap_sel","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH1F *gain_avg = new TH1F("gain_avg","",100,-1,4); + TH2F *gainmap_avg = new TH2F("gainmap_avg","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH1F *adc_avg_g0 = new TH1F("adc_avg_g0","",100,0,17000); + TH1F *adc_avg_g1 = new TH1F("adc_avg_g1","",100,0,17000); + TH1F *adc_avg_g2 = new TH1F("adc_avg_g2","",100,0,17000); + + static TH1I *adc_histos_g0 [NCH]; + static TH1I *adc_histos_g1 [NCH]; + static TH1I *adc_histos_g2 [NCH]; + static TH1I *gain_histos [NCH]; + + for(int i = 0; i < NCH; i++) { + ostringstream histogramNameStreamg0; + histogramNameStreamg0 << "adc_histos_g0_" << i; + adc_histos_g0[i] = new TH1I(histogramNameStreamg0.str().c_str(),"",100,0,17000); + ostringstream histogramNameStreamg1; + histogramNameStreamg1 << "adc_histos_g1_" << i; + adc_histos_g1[i] = new TH1I(histogramNameStreamg1.str().c_str(),"",100,0,17000); + ostringstream histogramNameStreamg2; + histogramNameStreamg2 << "adc_histos_g2_" << i; + adc_histos_g2[i] = new TH1I(histogramNameStreamg2.str().c_str(),"",100,0,17000); + ostringstream histogramNameStream2; + histogramNameStream2 << "gain_histos_" << i; + gain_histos[i] = new TH1I(histogramNameStream2.str().c_str(),"",4,-0.5,3.5); + } + + int j = 0; + int nfiles = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + nfiles = 2; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end() || find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + nfiles = 3; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + nfiles = 4; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + nfiles = 7; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + nfiles = 6; + } + + // total frame number check + int expected_totalFrames = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + expected_totalFrames = 19199; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + expected_totalFrames = 24319; + } else if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + expected_totalFrames = 21759; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + expected_totalFrames = 34560; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + expected_totalFrames = 64000; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + expected_totalFrames = 59519; + } + + int totalFrames = 0; + + for (int filei = 0; filei < nfiles; filei++) { + + sprintf(savename,"%s/%s_%%6.6d.dat", data_loc.c_str(), data_file.c_str()); //VH: note, this adds a double slash in the filepath + thisfile->open((char*)savename, filei); + + while(thisfile->readNextFrame()) { + totalFrames++; + } + + thisfile->close(); + } + + if (totalFrames == expected_totalFrames) { + cout << "got expected number of frames " << totalFrames << endl; + } else { + cout << "got unexpected number of frames " << totalFrames << endl; + cout << "code expected frames " << expected_totalFrames << endl; + cout << "exiting to make sure you notice" << endl; + exit(1); + } + + for (int filei = 0; filei < nfiles; filei++) { + + sprintf(savename,"%s/%s_%%6.6d.dat", data_loc.c_str(), data_file.c_str()); //VH: note, this adds a double slash in the filepath + thisfile->open((char*)savename, filei); + + if (filei == 0) { + for (int k = 0; k < (640*3); k++) { + thisfile->readNextFrame(); + } + } + + while (thisfile->readNextFrame()) { + j++; + + uint16_t* imagedptr = thisfile->getFrameDataHandle(); + for (int i = 0; i < NCH; i++) { + + if ((j-1) < 10 || (j > 8075 && j < 8085)) { + uint16_t adc = imagedptr[i]&0x3fff; + uint16_t gain = (imagedptr[i]&0xc000) >> 14; + adcmap_all->Fill(i%NC,i/NC,adc); + gainmap_all->Fill(i%NC,i/NC,gain); + } +#ifdef NONSERVE //in reality it is shift in the right direction 0x5b=80000000 and 0x5a=00000000 + if (((i/NC <= 255) && (((i%64)) == 63-(j-1)%64)) || + ((i/NC >= 256) &&( ((-1*(i-524287))%64) == 63-(j-1)%64))) { //scanning on "+-i") +#else + if (((i/NC <= 255) && (i%64 == (j-1)%64)) || + ((i/NC >= 256) &&((-1*(i-524287))%64 == (j-1)%64))) { +#endif + + uint16_t adc = imagedptr[i]&0x3fff; + uint16_t gain = (imagedptr[i]&0xc000) >> 14; + + gain_histos[i]->Fill(gain); + if (gain == 0) { + adc_histos_g0[i]->Fill(adc); + } else if ((gain == 1)||(gain == 2)) { //(gain == 2) to fix FW error during JF11 FW develop. needed for modules 243-379 + adc_histos_g1[i]->Fill(adc); + } else if (gain == 3) { + adc_histos_g2[i]->Fill(adc); + if (adc == 0) { + saturation_mask[i] = false; + } + } + + if ((j-1) < 10 || (j > 8075 && j < 8085)) { + adcmap_sel->Fill(i%NC,i/NC,adc); + gainmap_sel->Fill(i%NC,i/NC,gain); + } + + } + } + if (createPerStepHistos && ((j-1) < 10 || (j > 8075 && j < 8085))) { + mapcanvas->cd(); + adcmap_sel->GetXaxis()->SetTitle("Column"); + adcmap_sel->GetYaxis()->SetTitle("Row"); + adcmap_sel->GetYaxis()->SetTitleOffset(0.7); + adcmap_sel->Draw("colz"); + sprintf(savename,"plots/M%s/%s/adcmap_%i_sel_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcmap_all->GetXaxis()->SetTitle("Column"); + adcmap_all->GetYaxis()->SetTitle("Row"); + adcmap_all->GetYaxis()->SetTitleOffset(0.7); + adcmap_all->Draw("colz"); + sprintf(savename,"plots/M%s/%s/adcmap_%i_all_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + gainmap_sel->GetXaxis()->SetTitle("Column"); + gainmap_sel->GetYaxis()->SetTitle("Row"); + gainmap_sel->GetYaxis()->SetTitleOffset(0.7); + gainmap_sel->Draw("colz"); + sprintf(savename,"plots/M%s/%s/gainmap_%i_sel_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + gainmap_all->GetXaxis()->SetTitle("Column"); + gainmap_all->GetYaxis()->SetTitle("Row"); + gainmap_all->GetYaxis()->SetTitleOffset(0.7); + gainmap_all->Draw("colz"); + sprintf(savename,"plots/M%s/%s/gainmap_%i_all_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j-1, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + adcmap_sel->Reset(); + adcmap_all->Reset(); + gainmap_sel->Reset(); + gainmap_all->Reset(); + } + + // catch the last frame (bad ctrl-c exit) + // new receiver doesn't have this problem + int last_frame = 0; + if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end() || + find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end() || + find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end() || + find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + last_frame = expected_totalFrames - 1920; + } + + if (j%640 == 0 || j == last_frame) { + if (j == last_frame) { + j = last_frame+1; + cout << "catching on last_frame" << endl; + } + + for (int i = 0; i < NCH; i++) { + + gainmap_avg->Fill(i%NC,i/NC,gain_histos[i]->GetMean()); + adcmap_avg_g0[j/640-1]->Fill(i%NC,i/NC,adc_histos_g0[i]->GetMean()); + adcermap_avg_g0[j/640-1]->Fill(i%NC,i/NC,adc_histos_g0[i]->GetMeanError()); + adcmap_avg_g1[j/640-1]->Fill(i%NC,i/NC,adc_histos_g1[i]->GetMean()); + adcermap_avg_g1[j/640-1]->Fill(i%NC,i/NC,adc_histos_g1[i]->GetMeanError()); + if (saturation_mask[i] == true) { + adcmap_avg_g2[j/640-1]->Fill(i%NC,i/NC,adc_histos_g2[i]->GetMean()); + adcermap_avg_g2[j/640-1]->Fill(i%NC,i/NC,adc_histos_g2[i]->GetMeanError()); + } + + if (gain_histos[i]->GetEntries() > 0) { + gain_avg->Fill(gain_histos[i]->GetMean()); + } + if (adc_histos_g0[i]->GetEntries() > 0) { + adc_avg_g0->Fill(adc_histos_g0[i]->GetMean()); + } + if (adc_histos_g1[i]->GetEntries() > 0) { + adc_avg_g1->Fill(adc_histos_g1[i]->GetMean()); + } + if (adc_histos_g2[i]->GetEntries() > 0) { + if (saturation_mask[i] == true) { + adc_avg_g2->Fill(adc_histos_g2[i]->GetMean()); + } + } + + gain_histos[i]->Reset(); + adc_histos_g0[i]->Reset(); + adc_histos_g1[i]->Reset(); + adc_histos_g2[i]->Reset(); + } + + if (createPerStepHistos == 1) { + c1->cd(); + gain_avg->GetXaxis()->SetTitle("Average gain"); + gain_avg->GetXaxis()->SetTitleOffset(1.1); + gain_avg->GetYaxis()->SetTitleOffset(1.5); + gain_avg->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/gain_avg_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + gainmap_avg->GetXaxis()->SetTitle("Column"); + gainmap_avg->GetYaxis()->SetTitle("Row"); + gainmap_avg->GetYaxis()->SetTitleOffset(0.7); + gainmap_avg->Draw("colz"); + sprintf(savename,"plots/M%s/%s/perStep/gainmap_avg_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + adc_avg_g0->GetXaxis()->SetTitle("Average G0 ADC"); + adc_avg_g0->GetXaxis()->SetTitleOffset(1.1); + adc_avg_g0->GetYaxis()->SetTitleOffset(1.5); + adc_avg_g0->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/adc_avg_g0_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + adcmap_avg_g0[j/640-1]->GetXaxis()->SetTitle("Column"); + adcmap_avg_g0[j/640-1]->GetYaxis()->SetTitle("Row"); + adcmap_avg_g0[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcmap_avg_g0[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcmap_avg_g0_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcermap_avg_g0[j/640-1]->GetXaxis()->SetTitle("Column"); + adcermap_avg_g0[j/640-1]->GetYaxis()->SetTitle("Row"); + adcermap_avg_g0[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcermap_avg_g0[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcermap_avg_g0_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + adc_avg_g1->GetXaxis()->SetTitle("Average G1 ADC"); + adc_avg_g1->GetXaxis()->SetTitleOffset(1.1); + adc_avg_g1->GetYaxis()->SetTitleOffset(1.5); + adc_avg_g1->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/adc_avg_g1_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + adcmap_avg_g1[j/640-1]->GetXaxis()->SetTitle("Column"); + adcmap_avg_g1[j/640-1]->GetYaxis()->SetTitle("Row"); + adcmap_avg_g1[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcmap_avg_g1[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcmap_avg_g1_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcermap_avg_g1[j/640-1]->GetXaxis()->SetTitle("Column"); + adcermap_avg_g1[j/640-1]->GetYaxis()->SetTitle("Row"); + adcermap_avg_g1[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcermap_avg_g1[j/640-1]->Draw("colz"); + mapcanvas->Update(); + sprintf(savename,"plots/M%s/%s/perStep/adcermap_avg_g1_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + c1->cd(); + adc_avg_g2->GetXaxis()->SetTitle("Average G2 ADC"); + adc_avg_g2->GetXaxis()->SetTitleOffset(1.1); + adc_avg_g2->GetYaxis()->SetTitleOffset(1.5); + adc_avg_g2->Draw(); + sprintf(savename,"plots/M%s/%s/perStep/adc_avg_g2_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + c1->SaveAs((const char *)(savename)); + mapcanvas->cd(); + adcmap_avg_g2[j/640-1]->GetXaxis()->SetTitle("Column"); + adcmap_avg_g2[j/640-1]->GetYaxis()->SetTitle("Row"); + adcmap_avg_g2[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcmap_avg_g2[j/640-1]->Draw("colz"); + sprintf(savename,"plots/M%s/%s/perStep/adcmap_avg_g2_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + adcermap_avg_g2[j/640-1]->GetXaxis()->SetTitle("Column"); + adcermap_avg_g2[j/640-1]->GetYaxis()->SetTitle("Row"); + adcermap_avg_g2[j/640-1]->GetYaxis()->SetTitleOffset(0.7); + adcermap_avg_g2[j/640-1]->Draw("colz"); + sprintf(savename,"plots/M%s/%s/perStep/adcermap_avg_g2_%i_M%s.png", module_str.c_str(),plotfolder_str.c_str(), j/640, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + gain_avg->Reset(); + gainmap_avg->Reset(); + adc_avg_g0->Reset(); + adc_avg_g1->Reset(); + adc_avg_g2->Reset(); + std::fill_n(saturation_mask, NCH, true); + } + } // end of while + + thisfile->close(); + + } // end of files + + for (int i = 0; i < NCH; i++) { + delete gain_histos[i]; + delete adc_histos_g0[i]; + delete adc_histos_g1[i]; + delete adc_histos_g2[i]; + } + + // save histograms + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/CS_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/CS_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"RECREATE"); + + for (int i = 0; i < 97; i++) { + adcmap_avg_g0[i]->Write(); + adcmap_avg_g1[i]->Write(); + adcmap_avg_g2[i]->Write(); + adcermap_avg_g0[i]->Write(); + adcermap_avg_g1[i]->Write(); + adcermap_avg_g2[i]->Write(); + } + saved_file->Close(); + } else { + // load histos + cout << "LOADING HISTOS" << endl; + //sprintf(savename,"/mnt/sls_det_storage/jungfrau_data1/jungfrau_ana_sophie/M%s_CalibAna/CS_histos_M%s.root", module_str.c_str(), module_str.c_str()); //uncomment for SR + sprintf(savename,"%s/CS_histos_M%s.root", anadata_loc.c_str(), module_str.c_str()); //uncomment for VH 210906 + TFile* saved_file = new TFile((const char *)(savename),"READ"); + + for (int i = 0; i < 97; i++) { + sprintf(savename,"adcmap_avg_g0_%d", i); + adcmap_avg_g0[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcmap_avg_g1_%d", i); + adcmap_avg_g1[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcmap_avg_g2_%d", i); + adcmap_avg_g2[i] = (TH2F*)saved_file->Get((const char *)(savename)); + + sprintf(savename,"adcermap_avg_g0_%d", i); + adcermap_avg_g0[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcermap_avg_g1_%d", i); + adcermap_avg_g1[i] = (TH2F*)saved_file->Get((const char *)(savename)); + sprintf(savename,"adcermap_avg_g2_%d", i); + adcermap_avg_g2[i] = (TH2F*)saved_file->Get((const char *)(savename)); + } + } + + 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); + + TH1F *g0hist = new TH1F("g0hist","",100,10000,50000); + TH1F *g0erhist = new TH1F("g0erhist","",100,0,200); + + TH1F *g1hist = new TH1F("g1hist","",100,-3000,0); + TH1F *g1erhist = new TH1F("g1erhist","",100,0,50); + + TH1F *g2hist = 0; + if (module_str == "032") { + g2hist = new TH1F("g2hist","",100,-1000,-200); + } else { + g2hist = new TH1F("g2hist","",100,-300,0); + } + 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 *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); + TH1F *g1overg2_isDouble = new TH1F("g1overg2_isDouble","",100,11,15); + TH1F *g1overg2_isNextToDouble = new TH1F("g1overg2_isNextToDouble","",100,11,15); + TH1F *g1overg2_isQuad = new TH1F("g1overg2_isQuad","",100,11,15); + TH1F *g1overg2_isBulk = new TH1F("g1overg2_isBulk","",100,11,15); + + double filter[97]; + if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + for (int i = 0; i < 5; i++) { + filter[i] = 0.05+(i*0.05); + } + for (int i = 0; i < 9; i++) { + filter[i+5] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+5+9] = 5.+(i*2.5); + } + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.05); + } + for (int i = 0; i < 17; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+9+17] = 5.+(i*2.5); + } + for (int i = 0; i < 8; i++) { + filter[i+9+17+17] = 50.+(i*10.); + } + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + // loop 1 + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.05); + } + // loop 2a + for (int i = 0; i < 11; i++) { + filter[i+9] = 0.5+(i*0.05); + } + // loop 2b + for (int i = 0; i < 10; i++) { + filter[i+9+11] = 1.10+(i*0.10); + } + // loop 2c + for (int i = 0; i < 10; i++) { + filter[i+9+11+10] = 2.25+(i*0.25); + } + // loop 3a + for (int i = 0; i < 11; i++) { + filter[i+9+11+10+10] = 5.+(i*0.5); + } + // loop 3b + for (int i = 0; i < 10; i++) { + filter[i+9+11+10+10+11] = 11.+(i*1.0); + } + // loop 3c + for (int i = 0; i < 10; i++) { + filter[i+9+11+10+10+11+10] = 22.5+(i*2.5); + } + // loop 4a + for (int i = 0; i < 11; i++) { + filter[i+9+11+10+10+11+10+10] = 50.+(i*5.); + } + // loop 4b + for (int i = 0; i < 15; i++) { + filter[i+9+11+10+10+11+10+10+11] = 110.+(i*10.); + } + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + for (int i = 0; i < 10; i++) { + filter[i] = 0.2+(i*0.2); + } + for (int i = 0; i < 8; i++) { + filter[i+10] = 3+(i*1); + } + for (int i = 0; i < 25; i++) { + filter[i+10+8] = 12+(i*2); + } + for (int i = 0; i < 47; i++) { + filter[i+10+8+25] = 80+(i*20); + } + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.025); + } + for (int i = 0; i < 9; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+9+9] = 5.+(i*2.5); + } + } else if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.025); + } + for (int i = 0; i < 9; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 9; i++) { + filter[i+9+9] = 5.+(i*2.5); + } + } + + mapcanvas->cd(); + mapcanvas->SetLeftMargin(0.13); + mapcanvas->SetRightMargin(0.05); + + for (int i = 0; i < NCH; i++) { + cout << i << endl; + vector r0_adc; + vector r0_filter; + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + vector r2_adc; + vector r2_filter; + vector r2_adcerr; + vector r2_ferr; + + // filter out points at zero and points with 0 error (mean taken from one entry in hist) + int m_max = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + m_max = 27; + } else if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + m_max = 31; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + m_max = 35; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + m_max = 51; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + m_max = 97; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + m_max = 90; + } + + for (int m = 0; m < m_max; m++) { + + double this_g0avg = adcmap_avg_g0[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avg = adcmap_avg_g1[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g2avg = adcmap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g0avger = adcermap_avg_g0[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g1avger = adcermap_avg_g1[m]->GetBinContent((i%NC)+1,(i/NC)+1); + double this_g2avger = adcermap_avg_g2[m]->GetBinContent((i%NC)+1,(i/NC)+1); + + if (this_g0avg != 0) { + r0_filter.push_back(filter[m]); + r0_ferr.push_back(0.); + r0_adc.push_back(this_g0avg); + r0_adcerr.push_back(this_g0avger); + } + if (this_g1avg != 0) { + r1_filter.push_back(filter[m]); + r1_ferr.push_back(0.); + r1_adc.push_back(this_g1avg); + r1_adcerr.push_back(this_g1avger); + } + if (this_g2avg != 0) { + r2_filter.push_back(filter[m]); + r2_ferr.push_back(0.); + r2_adc.push_back(this_g2avg); + r2_adcerr.push_back(this_g2avger); + } + } + + TGraphErrors *grap_g0 = 0; + TGraphErrors *grap_g1 = 0; + TGraphErrors *grap_g2 = 0; + + TF1 *fit_g0 = 0; + TF1 *fit_g1 = 0; + TF1 *fit_g2 = 0; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + double rangemin_g2 = 0; + double rangemax_g2 = 0; + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + if (r2_adc.size() > 1) { + grap_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc[0]),&(r2_ferr[0]),&(r2_adcerr[0])); + grap_g2->SetMarkerStyle(20); + grap_g2->SetMarkerColor(kRed); + grap_g2->SetLineColor(kRed); + } + + // plot the datapoints + if (r1_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"; + } + + if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + grap_g1->GetXaxis()->SetLimits(0.009,5E2); + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + grap_g1->GetXaxis()->SetLimits(0.09,1.1E3); + } 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"); + if (r2_adc.size() > 1) { + grap_g2->Draw("P"); + } + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + } + mapcanvas->SetLogx(); + sprintf(savename,"plots/M%s/%s/pixel_%s_%d_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + } + } + + // define fit ranges and fit + if (r0_adc.size() > 1) { + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + //rangemin_g0 = checkRangeMinForRCEffect(rangemin_g0); + + rangemax_g0 = highestPointBeforeSwitching(r0_filter, r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + 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"; + } + + 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->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + 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/%s/pixel_%s_%d_g0_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + vector 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()->SetLimits(*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/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(),plotfolder_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) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter, r0_filter); + rangemin_g1 = checkRangeMinForRCEffect(rangemin_g1); + + rangemax_g1 = highestPointBeforeSwitching(r1_filter, r2_filter); + + if (rangemax_g1 > rangemin_g1) { + + 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->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->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + 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/%s/pixel_%s_%d_g1_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + vector 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()->SetLimits(*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/%s/pixel_%s_%d_g1norm_M%s.png", module_str.c_str(),plotfolder_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) { + + rangemin_g2 = lowestPointAfterSwitching(r2_filter, r1_filter); + rangemin_g2 = checkRangeMinForRCEffect(rangemin_g2); + + rangemax_g2 = *max_element(r2_filter.begin(),r2_filter.end()); + + if (rangemax_g2 > rangemin_g2) { + + 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->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->GetXaxis()->SetLimits(*min_element(r2_filter.begin(),r2_filter.end()),*max_element(r2_filter.begin(),r2_filter.end())); + 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/%s/pixel_%s_%d_g2_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + mapcanvas->SetLogx(0); + + vector 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()->SetLimits(*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/%s/pixel_%s_%d_g2norm_M%s.png", module_str.c_str(),plotfolder_str.c_str(), pixel_type.c_str(), i, module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + delete norm_g2; + delete flat_g2; + } + } + } + + // get ratio measurements + if (rangemax_g0 > rangemin_g0 && rangemax_g1 > rangemin_g1) { + + double this_g0overg1 = fit_g0->GetParameter(1)/fit_g1->GetParameter(1); + double this_g0overg1er = 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,this_g0overg1); + g0overg1hist->Fill(this_g0overg1); + g0overg1ermap->Fill(i%NC,i/NC,this_g0overg1er); + g0overg1erhist->Fill(this_g0overg1er); + + if (isEdge(i)) { + g0overg1_isEdge->Fill(this_g0overg1); + } + if (isInnerEdge(i)) { + g0overg1_isInnerEdge->Fill(this_g0overg1); + } + if (isDouble(i)) { + g0overg1_isDouble->Fill(this_g0overg1); + } + if (isNextToDouble(i)) { + g0overg1_isNextToDouble->Fill(this_g0overg1); + } + if (isQuad(i)) { + g0overg1_isQuad->Fill(this_g0overg1); + } + if (isBulk(i)) { + g0overg1_isBulk->Fill(this_g0overg1); + } + } else { + no_g0g1_calib_map->Fill(i%NC,i/NC,1); + } + + if (rangemax_g1 > rangemin_g1 && rangemax_g2 > rangemin_g2) { + + double this_g1overg2 = fit_g1->GetParameter(1)/fit_g2->GetParameter(1); + double this_g1overg2er = 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,this_g1overg2); + g1overg2hist->Fill(this_g1overg2); + g1overg2ermap->Fill(i%NC,i/NC,this_g1overg2er); + g1overg2erhist->Fill(this_g1overg2er); + + if (isEdge(i)) { + g1overg2_isEdge->Fill(this_g1overg2); + } + if (isInnerEdge(i)) { + g1overg2_isInnerEdge->Fill(this_g1overg2); + } + if (isDouble(i)) { + g1overg2_isDouble->Fill(this_g1overg2); + } + if (isNextToDouble(i)) { + g1overg2_isNextToDouble->Fill(this_g1overg2); + } + if (isQuad(i)) { + g1overg2_isQuad->Fill(this_g1overg2); + } + if (isBulk(i)) { + g1overg2_isBulk->Fill(this_g1overg2); + } + } else { + no_g1g2_calib_map->Fill(i%NC,i/NC,1); + } + + 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"); + pave->SetBorderSize(0); + pave->SetFillStyle(0); + pave->SetTextSize(0.06); + pave->SetTextAlign(32); + + if (g0hist->GetEntries() > 0) { + g0hist->GetXaxis()->SetTitle("G0 gradient"); + g0hist->GetXaxis()->SetTitleOffset(1.1); + g0hist->GetYaxis()->SetTitleOffset(1.5); + g0hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0hist_M%s.png", module_str.c_str(),plotfolder_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/%s/g0erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g1hist->GetEntries() > 0) { + g1hist->GetXaxis()->SetTitle("G1 gradient"); + g1hist->GetXaxis()->SetTitleOffset(1.1); + g1hist->GetYaxis()->SetTitleOffset(1.5); + g1hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1hist_M%s.png", module_str.c_str(),plotfolder_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); + g1erhist->Draw(); + sprintf(savename,"plots/M%s/%s/g1erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g2hist->GetEntries() > 0) { + g2hist->GetXaxis()->SetTitle("G2 gradient"); + g2hist->GetXaxis()->SetTitleOffset(1.1); + g2hist->GetYaxis()->SetTitleOffset(1.5); + g2hist->Draw(); + sprintf(savename,"plots/M%s/%s/g2hist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g2erhist->GetXaxis()->SetTitle("Fitted G2 uncert"); + g2erhist->GetXaxis()->SetTitleOffset(1.1); + g2erhist->GetYaxis()->SetTitleOffset(1.5); + g2erhist->Draw(); + sprintf(savename,"plots/M%s/%s/g2erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g0overg1hist->GetEntries() > 0) { + g0overg1hist->GetXaxis()->SetTitle("G0 / G1"); + g0overg1hist->GetXaxis()->SetTitleOffset(1.1); + g0overg1hist->GetYaxis()->SetTitleOffset(1.5); + g0overg1hist->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1hist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + 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); + g0overg1hist->Fit("gaus"); + g0overg1hist->Draw(); + c1->Update(); + TF1* g0overg1hist_gaus = g0overg1hist->GetFunction("gaus"); + if (g0overg1hist_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/%s/g0overg1hist_fit_M%s.png", module_str.c_str(),plotfolder_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/%s/g0overg1erhist_M%s.png", module_str.c_str(),plotfolder_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); + + 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()); + + 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/%s/g0overg1_perType_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + if (g1overg2hist->GetEntries() > 0) { + g1overg2hist->GetXaxis()->SetTitle("G1 / G2"); + g1overg2hist->GetXaxis()->SetTitleOffset(1.1); + g1overg2hist->GetYaxis()->SetTitleOffset(1.5); + g1overg2hist->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2hist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + 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); + g1overg2hist->Fit("gaus"); + g1overg2hist->Draw(); + c1->Update(); + TF1* g1overg2hist_gaus = g1overg2hist->GetFunction("gaus"); + if (g1overg2hist_gaus) { + sprintf(savename,"Mean %0.4f #pm %0.4f", g1overg2hist_gaus->GetParameter(1), g1overg2hist_gaus->GetParError(1)); + pave2->AddText((const char *)(savename)); + sprintf(savename,"Sigma %0.4f #pm %0.4f", g1overg2hist_gaus->GetParameter(2), g1overg2hist_gaus->GetParError(2)); + pave2->AddText((const char *)(savename)); + pave2->Draw(); + g1overg2hist->SetStats(kFALSE); + sprintf(savename,"plots/M%s/%s/g1overg2hist_fit_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + g1overg2erhist->GetXaxis()->SetTitle("G1 / G2 uncert"); + g1overg2erhist->GetXaxis()->SetTitleOffset(1.1); + g1overg2erhist->GetYaxis()->SetTitleOffset(1.5); + g1overg2erhist->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2erhist_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + + g1overg2_isEdge->SetLineColor(kBlue); + g1overg2_isInnerEdge->SetLineColor(kCyan); + g1overg2_isDouble->SetLineColor(kGreen+2); + g1overg2_isNextToDouble->SetLineColor(kRed); + g1overg2_isQuad->SetLineColor(kOrange); + + g1overg2_isEdge->Scale(1./g1overg2_isEdge->GetEntries()); + g1overg2_isInnerEdge->Scale(1./g1overg2_isInnerEdge->GetEntries()); + g1overg2_isDouble->Scale(1./g1overg2_isDouble->GetEntries()); + g1overg2_isNextToDouble->Scale(1./g1overg2_isNextToDouble->GetEntries()); + g1overg2_isQuad->Scale(1./g1overg2_isQuad->GetEntries()); + g1overg2_isBulk->Scale(1./g1overg2_isBulk->GetEntries()); + + TLegend *leg = new TLegend(0.62,0.6,0.93,0.93); + leg->AddEntry(g1overg2_isBulk, "Normal", "l"); + leg->AddEntry(g1overg2_isDouble, "Double", "l"); + leg->AddEntry(g1overg2_isNextToDouble, "Next to D", "l"); + leg->AddEntry(g1overg2_isEdge, "Edge", "l"); + leg->AddEntry(g1overg2_isInnerEdge, "Inner E", "l"); + + g1overg2_isDouble->GetXaxis()->SetTitle("G1 / G2"); + g1overg2_isDouble->GetYaxis()->SetTitle("Normalised"); + g1overg2_isDouble->GetYaxis()->SetTitleOffset(1.3); + g1overg2_isDouble->SetMinimum(0.0); + g1overg2_isDouble->SetMaximum(0.16); + g1overg2_isDouble->Draw(); + g1overg2_isEdge->Draw("same"); + g1overg2_isInnerEdge->Draw("same"); + g1overg2_isNextToDouble->Draw("same"); + g1overg2_isBulk->Draw("same"); + leg->Draw("same"); + sprintf(savename,"plots/M%s/%s/g1overg2_perType_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + c1->SaveAs((const char *)(savename)); + } + + mapcanvas->cd(); + + if (g0map->GetEntries() > 0) { + 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/%s/g0map_M%s.png", module_str.c_str(),plotfolder_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/%s/g0ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g1map->GetEntries() > 0) { + g1map->GetXaxis()->SetTitle("Column"); + g1map->GetYaxis()->SetTitle("Row"); + g1map->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "002") { + g1map->GetZaxis()->SetRangeUser(-400,-100); + } else { + g1map->GetZaxis()->SetRangeUser(-3000,0); + } + g1map->Draw("colz"); + pave->Clear(); + pave->AddText("G1 [ADU/#mus]"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g1map_M%s.png", module_str.c_str(),plotfolder_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); + g1ermap->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G1}"); + pave->Draw(); + g1ermap->GetZaxis()->SetRangeUser(0,50); + sprintf(savename,"plots/M%s/%s/g1ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g1map->GetEntries() > 0) { + g2map->GetXaxis()->SetTitle("Column"); + g2map->GetYaxis()->SetTitle("Row"); + g2map->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "032") { + g2map->GetZaxis()->SetRangeUser(-800,-400); + } else if (module_str == "002") { + g2map->GetZaxis()->SetRangeUser(-35,-10); + } else { + g2map->GetZaxis()->SetRangeUser(-200,-50); + } + g2map->Draw("colz"); + pave->Clear(); + pave->AddText("G2 [ADU/#mus]"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g2map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g2ermap->GetXaxis()->SetTitle("Column"); + g2ermap->GetYaxis()->SetTitle("Row"); + g2ermap->GetYaxis()->SetTitleOffset(0.7); + g2ermap->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G2}"); + pave->Draw(); + g2ermap->GetZaxis()->SetRangeUser(0,5); + sprintf(savename,"plots/M%s/%s/g2ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g0overg1map->GetEntries()) { + g0overg1map->GetXaxis()->SetTitle("Column"); + g0overg1map->GetYaxis()->SetTitle("Row"); + g0overg1map->GetYaxis()->SetTitleOffset(0.7); + if (module_str == "003") { + g0overg1map->GetZaxis()->SetRangeUser(-35,-30); + } else { + g0overg1map->GetZaxis()->SetRangeUser(-50,0); + } + g0overg1map->Draw("colz"); + pave->Clear(); + pave->AddText("G0/G1"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g0overg1map_M%s.png", module_str.c_str(),plotfolder_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/%s/g0overg1ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + if (g1overg2map->GetEntries()) { + g1overg2map->GetXaxis()->SetTitle("Column"); + g1overg2map->GetYaxis()->SetTitle("Row"); + g1overg2map->GetYaxis()->SetTitleOffset(0.7); + +#ifdef JF11 + g1overg2map->GetZaxis()->SetRangeUser(11,12.5); +#else + g1overg2map->GetZaxis()->SetRangeUser(12,13.2); +#endif + + g1overg2map->Draw("colz"); + pave->Clear(); + pave->AddText("G1/G2"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + g1overg2ermap->GetXaxis()->SetTitle("Column"); + g1overg2ermap->GetYaxis()->SetTitle("Row"); + g1overg2ermap->GetYaxis()->SetTitleOffset(0.7); + g1overg2ermap->GetZaxis()->SetRangeUser(0,0.5); + g1overg2ermap->Draw("colz"); + pave->Clear(); + pave->AddText("#sigma_{G1/G2}"); + pave->Draw(); + sprintf(savename,"plots/M%s/%s/g1overg2ermap_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + } + + no_g0g1_calib_map->GetXaxis()->SetTitle("Column"); + no_g0g1_calib_map->GetYaxis()->SetTitle("Row"); + no_g0g1_calib_map->GetYaxis()->SetTitleOffset(0.7); + no_g0g1_calib_map->Draw("colz"); + sprintf(savename,"plots/M%s/%s/no_g0g1_calib_map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + no_g1g2_calib_map->GetXaxis()->SetTitle("Column"); + no_g1g2_calib_map->GetYaxis()->SetTitle("Row"); + no_g1g2_calib_map->GetYaxis()->SetTitleOffset(0.7); + no_g1g2_calib_map->Draw("colz"); + sprintf(savename,"plots/M%s/%s/no_g1g2_calib_map_M%s.png", module_str.c_str(),plotfolder_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + +if (isHGX) { + sprintf(savename,"data/M%s/CS_ratio_M%s_HG0G1G2.root", module_str.c_str(), module_str.c_str()); + + } + else + { + 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(); + g1overg2ermap->Write(); + saved_file2->Close(); + +} diff --git a/CS_fit.cpp b/CS_fit.cpp new file mode 100644 index 0000000..be69fee --- /dev/null +++ b/CS_fit.cpp @@ -0,0 +1,1240 @@ +// to analyse the backplane pulsing data per module +// changes by VH 210906: to eliminate hardcoded absolute paths, uses location of the analysis root files as additional input argument (accordingly changed in filename_creator.sh) + +#include "TApplication.h" +#include "sls_detector_calibration/jungfrauCommonHeader.h" +#include "sls_detector_calibration/jungfrauCommonFunctions.h" + +#include "sls_detector_calibration/jungfrauFile.C" +#include "sls_detector_calibration/jungfrauPedestal.C" + +#include "TGraph.h" +#include "TGraphErrors.h" +#include "TF1.h" +#include "TFile.h" +#include "TPaveStats.h" +#include "TLegend.h" +#include "TPaveText.h" +#include "TCanvas.h" +#include "TFitResultPtr.h" +#include "TFitResult.h" + +#include +#include +#include + + +TGraphErrors *grap_g0; +TGraphErrors *grap_g1; +TGraphErrors *grap_g2; + +TF1 *fit_g0=0; +TF1 *fit_g1=0; +TF1 *fit_g2=0; + +TGraphErrors *norm_g0; +TGraphErrors *norm_g1; +TGraphErrors *norm_g2; + +TF1 *flat_g0; +TF1 *flat_g2; + +TF1 *lin_g1_p02pc; +TF1 *lin_g1_p05pc; +TF1 *lin_g1_m02pc; +TF1 *lin_g1_m05pc; + +TF1 *lin_g2_p02pc; +TF1 *lin_g2_p05pc; +TF1 *lin_g2_m02pc; +TF1 *lin_g2_m05pc; + +Double_t par1; +Double_t par2; + +double checkRangeMinForRCEffect(double range_min) { + + // check that the range minimum is at least 2 us, to avoid non-linearity of RC effect + if (range_min < 2.0) { + return 2.0; + } else { + return range_min; + } + +} + + + +bool isHGX=false; +int main(int argc, char* argv[]) { + + //nonblock(NB_ENABLE); + cout <<"opening the rootapp" <SetBatch(1); + gStyle->SetOptFit(11); + + /* + if (argc != 3) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify data location" << endl; + cout << "arg 3: specify column (x)" << endl; + cout << "arg 4: specify row (y)" << endl; + exit(1); + } + */ //uncomment for SR + + if (argc != 4) { + cout << "Correct usage:" << endl; + cout << "arg 1: specify module number" << endl; + cout << "arg 2: specify pixel x position from 0 to 1023" << endl; + cout << "arg 3: specify pixel y position from 0 to 511" << endl; + exit(1); + } //uncomment for VH 210906 + + string module_str = argv[1]; + + string str2 =("HG0G1G2"); + string str3 =("HGOG1G2"); //filename creator had this bug + + int column = atoi(argv[2]); + int row = atoi(argv[3]); + + int pixel = column+row*1024; + + char data_loc[256]; + sprintf(data_loc,"/mnt/sls_det_storage/jungfrau_calib/jungfrau_ana_sophie/M%s_CalibAna/", module_str.c_str()); + cout << data_loc << endl; + + std::string folder_path(data_loc); + if (folder_path.find(str2) != string::npos) isHGX=true; + if (folder_path.find(str3) != string::npos) isHGX=true; + + + // cout << data_loc.find(str2)<<" " << string::npos << " " << str2 << " " << data_loc <HG1->HG2 sequence - dynamicHG0" <G1->G2 sequence - dynamicG0" < scan_v1; + scan_v1.push_back("002"); + scan_v1.push_back("003"); + + vector scan_v2; + scan_v2.push_back("032"); + + vector scan_v3; + + vector scan_v4; + scan_v4.push_back("040"); + scan_v4.push_back("044"); + + vector scan_v5; + scan_v5.push_back("006"); + scan_v5.push_back("022"); + scan_v5.push_back("055"); + scan_v5.push_back("065"); + scan_v5.push_back("066"); + scan_v5.push_back("068"); + scan_v5.push_back("069"); + scan_v5.push_back("088"); + scan_v5.push_back("094"); + + vector scan_v6; + scan_v6.push_back("008"); + scan_v6.push_back("011"); + scan_v6.push_back("021"); + scan_v6.push_back("023"); + scan_v6.push_back("025"); + scan_v6.push_back("029"); + scan_v6.push_back("035"); + scan_v6.push_back("039"); + scan_v6.push_back("043"); + scan_v6.push_back("045"); + scan_v6.push_back("046"); + scan_v6.push_back("048"); + scan_v6.push_back("049"); + scan_v6.push_back("050"); + scan_v6.push_back("051"); + scan_v6.push_back("053"); + scan_v6.push_back("054"); + scan_v6.push_back("057"); + scan_v6.push_back("058"); + scan_v6.push_back("059"); + scan_v6.push_back("060"); + scan_v6.push_back("061"); + scan_v6.push_back("062"); + scan_v6.push_back("063"); + scan_v6.push_back("064"); + scan_v6.push_back("067"); + scan_v6.push_back("070"); + scan_v6.push_back("071"); + scan_v6.push_back("072"); + scan_v6.push_back("073"); + scan_v6.push_back("074"); + scan_v6.push_back("075"); + scan_v6.push_back("076"); + scan_v6.push_back("079"); + scan_v6.push_back("080"); + scan_v6.push_back("086"); + scan_v6.push_back("089"); + scan_v6.push_back("090"); + scan_v6.push_back("091"); + scan_v6.push_back("092"); + scan_v6.push_back("093"); + scan_v6.push_back("095"); + scan_v6.push_back("097"); + scan_v6.push_back("098"); + scan_v6.push_back("099"); + scan_v6.push_back("100"); + scan_v6.push_back("102"); + scan_v6.push_back("103"); + scan_v6.push_back("104"); + scan_v6.push_back("106"); + scan_v6.push_back("107"); + scan_v6.push_back("108"); + scan_v6.push_back("109"); + scan_v6.push_back("110"); + scan_v6.push_back("111"); + scan_v6.push_back("112"); + scan_v6.push_back("113"); + scan_v6.push_back("114"); + scan_v6.push_back("115"); + scan_v6.push_back("116"); + scan_v6.push_back("117"); + scan_v6.push_back("118"); + scan_v6.push_back("119"); + scan_v6.push_back("120"); + scan_v6.push_back("121"); + scan_v6.push_back("122"); + scan_v6.push_back("123"); + scan_v6.push_back("124"); + scan_v6.push_back("125"); + scan_v6.push_back("126"); + scan_v6.push_back("129"); + scan_v6.push_back("130"); + scan_v6.push_back("131"); + scan_v6.push_back("132"); + scan_v6.push_back("133"); + scan_v6.push_back("134"); + scan_v6.push_back("135"); + scan_v6.push_back("200"); + scan_v6.push_back("201"); + scan_v6.push_back("202"); + scan_v6.push_back("203"); + scan_v6.push_back("204"); + scan_v6.push_back("205"); + scan_v6.push_back("206"); + scan_v6.push_back("208"); + scan_v6.push_back("209"); + scan_v6.push_back("210"); + scan_v6.push_back("212"); + scan_v6.push_back("214"); + scan_v6.push_back("215"); + scan_v6.push_back("216"); + scan_v6.push_back("217"); + scan_v6.push_back("218"); + scan_v6.push_back("219"); + scan_v6.push_back("221"); + scan_v6.push_back("222"); + scan_v6.push_back("223"); + scan_v6.push_back("224"); + scan_v6.push_back("225"); + scan_v6.push_back("226"); + scan_v6.push_back("227"); + scan_v6.push_back("228"); + scan_v6.push_back("229"); + scan_v6.push_back("232"); + scan_v6.push_back("233"); + scan_v6.push_back("234"); + scan_v6.push_back("235"); + scan_v6.push_back("236"); + scan_v6.push_back("242"); + scan_v6.push_back("244"); + scan_v6.push_back("245"); + scan_v6.push_back("246"); + scan_v6.push_back("248"); + scan_v6.push_back("249"); + scan_v6.push_back("250"); + scan_v6.push_back("251"); + scan_v6.push_back("252"); + scan_v6.push_back("253"); + scan_v6.push_back("254"); + scan_v6.push_back("255"); + scan_v6.push_back("260"); + scan_v6.push_back("261"); + scan_v6.push_back("263"); + scan_v6.push_back("264"); + scan_v6.push_back("265"); + scan_v6.push_back("266"); + scan_v6.push_back("267"); + scan_v6.push_back("269"); + scan_v6.push_back("270"); + scan_v6.push_back("272"); + scan_v6.push_back("273"); + scan_v6.push_back("274"); + scan_v6.push_back("275"); + scan_v6.push_back("276"); + scan_v6.push_back("277"); + scan_v6.push_back("278"); + scan_v6.push_back("279"); + scan_v6.push_back("281"); + scan_v6.push_back("282"); + scan_v6.push_back("283"); + scan_v6.push_back("285"); + scan_v6.push_back("286"); + scan_v6.push_back("287"); + scan_v6.push_back("288"); + scan_v6.push_back("289"); + scan_v6.push_back("290"); + scan_v6.push_back("291"); + scan_v6.push_back("292"); + scan_v6.push_back("294"); + scan_v6.push_back("296"); + scan_v6.push_back("298"); + scan_v6.push_back("299"); + scan_v6.push_back("301"); + scan_v6.push_back("307"); + scan_v6.push_back("312"); + scan_v6.push_back("351"); + scan_v6.push_back("352"); + scan_v6.push_back("354"); + scan_v6.push_back("360"); + scan_v6.push_back("373"); + scan_v6.push_back("380"); + scan_v6.push_back("304"); + scan_v6.push_back("321"); + scan_v6.push_back("346"); + scan_v6.push_back("375"); + scan_v6.push_back("381"); + scan_v6.push_back("383"); + scan_v6.push_back("310"); + scan_v6.push_back("313"); + scan_v6.push_back("314"); + scan_v6.push_back("334"); + scan_v6.push_back("337"); + scan_v6.push_back("347"); + scan_v6.push_back("361"); + scan_v6.push_back("362"); + scan_v6.push_back("355"); + scan_v6.push_back("364"); + scan_v6.push_back("366"); + scan_v6.push_back("243"); + scan_v6.push_back("339"); + scan_v6.push_back("341"); + scan_v6.push_back("368"); + scan_v6.push_back("376"); + scan_v6.push_back("379"); + + scan_v6.push_back("359"); + scan_v6.push_back("363"); + scan_v6.push_back("365"); + scan_v6.push_back("347"); + scan_v6.push_back("366"); + + scan_v6.push_back("268"); + scan_v6.push_back("300"); + scan_v6.push_back("302"); + scan_v6.push_back("303"); + scan_v6.push_back("309"); + scan_v6.push_back("326"); + + scan_v6.push_back("308"); + scan_v6.push_back("322"); + scan_v6.push_back("328"); + scan_v6.push_back("332"); + scan_v6.push_back("335"); + scan_v6.push_back("353"); + scan_v6.push_back("335_FW2_2"); + scan_v6.push_back("353_FW2_2"); + + scan_v6.push_back("262_FWcheck_1_1_1"); + scan_v6.push_back("262_FWcheck_1_1_1_test"); + scan_v6.push_back("262_FWcheck_1_2_rc210831"); + scan_v6.push_back("262_FWcheck_1_2_defdacs"); + + scan_v6.push_back("311"); + scan_v6.push_back("316"); + scan_v6.push_back("318"); + scan_v6.push_back("319"); + scan_v6.push_back("320"); + scan_v6.push_back("324"); + + scan_v6.push_back("272_fullspeedtest"); + scan_v6.push_back("272_halfspeedtest"); + + scan_v6.push_back("352_fullspeed"); //jf4mb2-00 (SLS) + scan_v6.push_back("307_fullspeed"); //jf4mb2-01 (SLS) + scan_v6.push_back("264_fullspeed"); //jf4mb2-02 (SLS) + scan_v6.push_back("253_fullspeed"); //jf4mb2-03 (SLS) + scan_v6.push_back("351_fullspeed"); //jf4mb2-04 (SLS) + scan_v6.push_back("312_fullspeed"); //jf4mb2-05 (SLS) + scan_v6.push_back("261_fullspeed"); //jf4mb2-06 (SLS) + scan_v6.push_back("310_fullspeed"); //jf4mb2-07 (SLS) + + scan_v6.push_back("384"); //jfcalib-5 + scan_v6.push_back("510"); //jfcalib-0 + scan_v6.push_back("511"); //jfcalib-1 + scan_v6.push_back("512"); //jfcalib-2 + scan_v6.push_back("556"); //jfcalib-3 + scan_v6.push_back("572"); //jfcalib-4 + + scan_v6.push_back("329"); //jfcalib-0 + scan_v6.push_back("331"); //jfcalib-1 + scan_v6.push_back("333"); //jfcalib-2 + scan_v6.push_back("336"); //jfcalib-3 + scan_v6.push_back("356"); //jfcalib-4 + scan_v6.push_back("377"); //jfcalib-5 + + scan_v6.push_back("387"); //jfcalib-0 + scan_v6.push_back("388"); //jfcalib-1 + scan_v6.push_back("389"); //jfcalib-2 + scan_v6.push_back("396"); //jfcalib-3 + scan_v6.push_back("397"); //jfcalib-4 + scan_v6.push_back("398"); //jfcalib-5 + + scan_v6.push_back("390"); //jfcalib-0 + scan_v6.push_back("391"); //jfcalib-1 + scan_v6.push_back("393"); //jfcalib-2 + scan_v6.push_back("399"); //jfcalib-3 + scan_v6.push_back("516"); //jfcalib-4 + scan_v6.push_back("517"); //jfcalib-5 + + scan_v6.push_back("519"); //jfcalib-0 + scan_v6.push_back("520"); //jfcalib-1 + scan_v6.push_back("532"); //jfcalib-2 + scan_v6.push_back("539"); //jfcalib-3 + scan_v6.push_back("555"); //jfcalib-4 + + //Calib for VELA beamtime in March 2022 + scan_v6.push_back("262"); //jfcalib-0 + scan_v6.push_back("231"); //jfcalib-1 + scan_v6.push_back("305"); //jfcalib-2 + + scan_v6.push_back("392"); //jfcalib-1 + scan_v6.push_back("394"); //jfcalib-2 + scan_v6.push_back("513"); //jfcalib-3 + scan_v6.push_back("514"); //jfcalib-4 + scan_v6.push_back("515"); //jfcalib-5 + + scan_v6.push_back("239"); //jfcalib-0 //bad + scan_v6.push_back("064"); //jfcalib-1 //bad //already added above + scan_v6.push_back("023"); //jfcalib-2 //bad //already added above + scan_v6.push_back("349"); //jfcalib-3 //bad + scan_v6.push_back("518"); //jfcalib-4 + scan_v6.push_back("521"); //jfcalib-5 + + scan_v6.push_back("523"); //jfcalib-0 + scan_v6.push_back("526"); //jfcalib-1 + scan_v6.push_back("529"); //jfcalib-2 + scan_v6.push_back("530"); //jfcalib-3 + scan_v6.push_back("531"); //jfcalib-4 + scan_v6.push_back("533"); //jfcalib-5 + + scan_v6.push_back("524"); //1M for ESRF + scan_v6.push_back("525"); //1M for ESRF + + scan_v6.push_back("306"); //jfcalib-0 (strixel) + scan_v6.push_back("350"); //jfcalib-1 (strixel) + + scan_v6.push_back("534"); //jfcalib-0 + scan_v6.push_back("537"); //jfcalib-1 + scan_v6.push_back("538"); //jfcalib-2 + scan_v6.push_back("542"); //jfcalib-3 + scan_v6.push_back("543"); //jfcalib-4 + scan_v6.push_back("544"); //jfcalib-5 + + scan_v6.push_back("402"); //jfcalib-0 + scan_v6.push_back("404"); //jfcalib-1 + scan_v6.push_back("407"); //jfcalib-2 + scan_v6.push_back("409"); //jfcalib-3 + scan_v6.push_back("410"); //jfcalib-4 + scan_v6.push_back("411"); //jfcalib-5 + + //scan_v6.push_back("008"); //jfcalib-0 //already in the list from previous calibration + scan_v6.push_back("433"); //jfcalib-1 + scan_v6.push_back("550"); //jfcalib-2 + scan_v6.push_back("545"); //jfcalib-3 + scan_v6.push_back("546"); //jfcalib-4 + scan_v6.push_back("547"); //jfcalib-5 + + //scan_v6.push_back("416"); //jfcalib-0 //destroyed, machanical sample + scan_v6.push_back("417"); //jfcalib-1 + scan_v6.push_back("418"); //jfcalib-2 + scan_v6.push_back("420"); //jfcalib-3 + scan_v6.push_back("421"); //jfcalib-4 + scan_v6.push_back("430"); //jfcalib-5 + + scan_v6.push_back("417_fullspeed"); //jfcalib-1 + scan_v6.push_back("418_fullspeed"); //jfcalib-2 + scan_v6.push_back("420_fullspeed"); //jfcalib-3 + scan_v6.push_back("421_fullspeed"); //jfcalib-4 + scan_v6.push_back("430_fullspeed"); //jfcalib-5 + + scan_v6.push_back("434"); //jfcalib-0 + scan_v6.push_back("437"); //jfcalib-1 + scan_v6.push_back("480"); //jfcalib-2 + scan_v6.push_back("464"); //jfcalib-3 + scan_v6.push_back("473"); //jfcalib-4 + scan_v6.push_back("474"); //jfcalib-5 + + scan_v6.push_back("076"); //jfcalib-0 + scan_v6.push_back("089"); //jfcalib-3 + scan_v6.push_back("207"); //jfcalib-5 + + scan_v6.push_back("244"); //jfcalib-3 + + scan_v6.push_back("474_fullspeed"); //jfcalib-0 + scan_v6.push_back("437_fullspeed"); //jfcalib-1 + scan_v6.push_back("480_fullspeed"); //jfcalib-2 + scan_v6.push_back("482_fullspeed"); //jfcalib-3 + scan_v6.push_back("487_fullspeed"); //jfcalib-5 + + scan_v6.push_back("482"); //jfcalib-3 + scan_v6.push_back("487"); //jfcalib-5 + + scan_v6.push_back("499_fullspeed"); //jfcalib-0 + scan_v6.push_back("548_fullspeed"); //jfcalib-1 + scan_v6.push_back("549_fullspeed"); //jfcalib-2 + scan_v6.push_back("427_fullspeed"); //jfcalib-3 + + scan_v6.push_back("499"); //jfcalib-0 + scan_v6.push_back("548"); //jfcalib-1 + scan_v6.push_back("549"); //jfcalib-2 + scan_v6.push_back("427"); //jfcalib-3 + scan_v6.push_back("435"); //jfcalib-5 + + scan_v6.push_back("403"); //jfcalib-0 + scan_v6.push_back("406"); //jfcalib-1 + scan_v6.push_back("423"); //jfcalib-2 + scan_v6.push_back("436"); //jfcalib-3 + scan_v6.push_back("479"); //jfcalib-5 + + // Calibration 450 um sensor for ESRF + + scan_v6.push_back("583"); //jfcalib-0 + scan_v6.push_back("593"); //jfcalib-1 + scan_v6.push_back("601"); //jfcalib-2 + scan_v6.push_back("604"); //jfcalib-3 + scan_v6.push_back("605"); //jfcalib-5 + + // Calibration 320 um sensors + + scan_v6.push_back("441"); //jfcalib-0 + scan_v6.push_back("460"); //jfcalib-1 + scan_v6.push_back("463"); //jfcalib-2 + scan_v6.push_back("476"); //jfcalib-3 + scan_v6.push_back("371"); //jfcalib-4 + + scan_v6.push_back("429"); //jfcalib-0 + scan_v6.push_back("442"); //jfcalib-1 + scan_v6.push_back("444"); //jfcalib-2 + scan_v6.push_back("446"); //jfcalib-3 + scan_v6.push_back("447"); //jfcalib-4 + + scan_v6.push_back("428"); //jfcalib-0 + scan_v6.push_back("439"); //jfcalib-1 + scan_v6.push_back("443"); //jfcalib-2 + scan_v6.push_back("445"); //jfcalib-3 + + scan_v6.push_back("448"); //jfcalib-0 + scan_v6.push_back("454"); //jfcalib-1 + scan_v6.push_back("455"); //jfcalib-2 + scan_v6.push_back("456"); //jfcalib-3 + scan_v6.push_back("466"); //jfcalib-4 + scan_v6.push_back("471"); //jfcalib-5 + + scan_v6.push_back("481"); //jfcalib-0 + scan_v6.push_back("488"); //jfcalib-1 + scan_v6.push_back("490"); //jfcalib-2 + scan_v6.push_back("491"); //jfcalib-3 + scan_v6.push_back("492"); //jfcalib-4 + scan_v6.push_back("493"); //jfcalib-5 + + scan_v6.push_back("494"); //jfcalib-0 + scan_v6.push_back("495"); //jfcalib-1 + scan_v6.push_back("497"); //jfcalib-2 + scan_v6.push_back("498"); //jfcalib-3 + scan_v6.push_back("501"); //jfcalib-4 + scan_v6.push_back("502"); //jfcalib-5 + + scan_v6.push_back("036"); //jfcalib-0 + scan_v6.push_back("036_fullspeed"); //jfcalib-0 + scan_v6.push_back("560"); //jfcalib-1 + scan_v6.push_back("536"); //jfcalib-2 + scan_v6.push_back("535"); //jfcalib-3 + scan_v6.push_back("527"); //jfcalib-4 + scan_v6.push_back("522"); //jfcalib-5 + + scan_v6.push_back("571"); //jfcalib-0 + scan_v6.push_back("571_fullspeed"); //jfcalib-0 + scan_v6.push_back("573"); //jfcalib-1 + scan_v6.push_back("573_fullspeed"); //jfcalib-1 + scan_v6.push_back("574"); //jfcalib-2 + scan_v6.push_back("574_fullspeed"); //jfcalib-2 + scan_v6.push_back("575"); //jfcalib-3 + scan_v6.push_back("575_fullspeed"); //jfcalib-3 + scan_v6.push_back("576"); //jfcalib-4 + scan_v6.push_back("576_fullspeed"); //jfcalib-4 + scan_v6.push_back("577"); //jfcalib-5 + scan_v6.push_back("577_fullspeed"); //jfcalib-5 + + scan_v6.push_back("563"); //jfcalib-0 + scan_v6.push_back("563_fullspeed"); //jfcalib-0 + scan_v6.push_back("564"); //jfcalib-1 + scan_v6.push_back("564_fullspeed"); //jfcalib-1 + scan_v6.push_back("566"); //jfcalib-2 + scan_v6.push_back("566_fullspeed"); //jfcalib-2 + scan_v6.push_back("567"); //jfcalib-3 + scan_v6.push_back("567_fullspeed"); //jfcalib-3 + scan_v6.push_back("568"); //jfcalib-4 + scan_v6.push_back("568_fullspeed"); //jfcalib-4 + scan_v6.push_back("569"); //jfcalib-5 + scan_v6.push_back("569_fullspeed"); //jfcalib-5 + + scan_v6.push_back("579"); //QUAD thin + scan_v6.push_back("579_fullspeed"); //QUAD thin + + scan_v6.push_back("454_fullspeed"); //jfcalib-0 + scan_v6.push_back("466_fullspeed"); //jfcalib-1 + scan_v6.push_back("536_fullspeed"); //jfcalib-2 + scan_v6.push_back("561"); //jfcalib-4 + scan_v6.push_back("561_fullspeed"); //jfcalib-3 + scan_v6.push_back("562"); //jfcalib-4 + scan_v6.push_back("562_fullspeed"); //jfcalib-4 + scan_v6.push_back("038"); //jfcalib-5 + scan_v6.push_back("038_fullspeed"); //jfcalib-5 + + scan_v6.push_back("431_JF12"); + + + scan_v6.push_back("428_fullspeed"); //jfcalib-0 + scan_v6.push_back("443_fullspeed"); //jfcalib-1 + scan_v6.push_back("444_fullspeed"); //jfcalib-2 + scan_v6.push_back("455_fullspeed"); //jfcalib-3 + scan_v6.push_back("471_fullspeed"); //jfcalib-4 + scan_v6.push_back("493_fullspeed"); //jfcalib-5 + + scan_v6.push_back("448_fullspeed"); //jfcalib-0 + scan_v6.push_back("497_fullspeed"); //jfcalib-1 + scan_v6.push_back("498_fullspeed"); //jfcalib-2 + scan_v6.push_back("501_fullspeed"); //jfcalib-3 + scan_v6.push_back("502_fullspeed"); //jfcalib-4 + scan_v6.push_back("527_fullspeed"); //jfcalib-5 + + scan_v6.push_back("580_fullspeed"); //jfcalib-5 + scan_v6.push_back("580"); //jfcalib-5 + + scan_v6.push_back("596"); //jfcalib-0 + scan_v6.push_back("596_fullspeed"); //jfcalib-0 + scan_v6.push_back("597"); //jfcalib-1 + scan_v6.push_back("597_fullspeed"); //jfcalib-1 + scan_v6.push_back("598"); //jfcalib-2 + scan_v6.push_back("598_fullspeed"); //jfcalib-2 + scan_v6.push_back("599"); //jfcalib-3 + scan_v6.push_back("599_fullspeed"); //jfcalib-3 + scan_v6.push_back("602"); //jfcalib-4 + scan_v6.push_back("602_fullspeed"); //jfcalib-4 + scan_v6.push_back("603"); //jfcalib-5 + scan_v6.push_back("603_fullspeed"); //jfcalib-5 + + scan_v6.push_back("578"); //jfcalib-0 + scan_v6.push_back("578_fullspeed"); //jfcalib-0 + scan_v6.push_back("588"); //jfcalib-2 + scan_v6.push_back("588_fullspeed"); //jfcalib-2 + scan_v6.push_back("592"); //jfcalib-3 + scan_v6.push_back("592_fullspeed"); //jfcalib-3 + scan_v6.push_back("590"); //jfcalib-4 + scan_v6.push_back("590_fullspeed"); //jfcalib-4 + scan_v6.push_back("591"); //jfcalib-5 + scan_v6.push_back("591_fullspeed"); //jfcalib-5 + + scan_v6.push_back("594"); //jfcalib-0 + scan_v6.push_back("594_fullspeed"); //jfcalib-0 + scan_v6.push_back("595"); //jfcalib-1 + scan_v6.push_back("595_fullspeed"); //jfcalib-1 + scan_v6.push_back("606"); //jfcalib-3 + scan_v6.push_back("606_fullspeed"); //jfcalib-3 + scan_v6.push_back("608"); //jfcalib-4 + scan_v6.push_back("608_fullspeed"); //jfcalib-4 + scan_v6.push_back("589"); //jfcalib-5 + scan_v6.push_back("589_fullspeed"); //jfcalib-5 + + scan_v6.push_back("586"); //jfcalib-0 + scan_v6.push_back("586_fullspeed"); //jfcalib-0 + scan_v6.push_back("607"); //jfcalib-1 + scan_v6.push_back("607_fullspeed"); //jfcalib-1 + scan_v6.push_back("609"); //jfcalib-2 + scan_v6.push_back("609_fullspeed"); //jfcalib-2 + scan_v6.push_back("625"); //jfcalib-3 + scan_v6.push_back("625_fullspeed"); //jfcalib-3 + scan_v6.push_back("626"); //jfcalib-4 + scan_v6.push_back("626_fullspeed"); //jfcalib-4 + + scan_v6.push_back("607"); //jfcalib-1 + scan_v6.push_back("607_fullspeed"); //jfcalib-1 + scan_v6.push_back("609"); //jfcalib-2 + scan_v6.push_back("609_fullspeed"); //jfcalib-2 + scan_v6.push_back("367"); //jfcalib-4 + scan_v6.push_back("367_fullspeed"); //jfcalib-4 + scan_v6.push_back("604"); //jfcalib-5 + scan_v6.push_back("604_fullspeed"); //jfcalib-5 + + + scan_v6.push_back("367_Kirsty"); //jfcalib-4 + scan_v6.push_back("367_Kirsty_fullspeed"); //jfcalib-4 + scan_v6.push_back("604_Kirsty"); //jfcalib-5 + scan_v6.push_back("604_Kirsty_fullspeed"); //jfcalib-5 + + + scan_v6.push_back("628"); //jfcalib-0 + scan_v6.push_back("628_fullspeed"); //jfcalib-0 + scan_v6.push_back("627"); //jfcalib-1 + scan_v6.push_back("627_fullspeed"); //jfcalib-1 + scan_v6.push_back("629"); //jfcalib-5 + scan_v6.push_back("629_fullspeed"); //jfcalib-5 + scan_v6.push_back("642"); //jfcalib-3 + scan_v6.push_back("642_fullspeed"); //jfcalib-3 + scan_v6.push_back("604"); //jfcalib-4 + scan_v6.push_back("604_fullspeed"); //jfcalib-4 + scan_v6.push_back("701_Vadym"); + + + + // filter out points at zero and points with 0 error (mean taken from one entry in hist) + int m_max = 0; + if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + m_max = 27; + } else if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + m_max = 31; + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + m_max = 35; + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + m_max = 51; + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + m_max = 97; + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + m_max = 90; + } + + std::vector G0_pixel(97, 0); + std::vector G0_err_pixel(97, 0); + std::vector G1_pixel(97, 0); + std::vector G1_err_pixel(97, 0); + std::vector G2_pixel(97, 0); + std::vector G2_err_pixel(97, 0); + + + char filename[256]; //uncomment for VH 210902 + + +double filter[97]; + if (find(scan_v4.begin(), scan_v4.end(), module_str) != scan_v4.end()) { + for (int i = 0; i < 5; i++) { + filter[i] = 0.05+(i*0.05); + } + for (int i = 0; i < 9; i++) { + filter[i+5] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+5+9] = 5.+(i*2.5); + } + } else if (find(scan_v5.begin(), scan_v5.end(), module_str) != scan_v5.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.05); + } + for (int i = 0; i < 17; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+9+17] = 5.+(i*2.5); + } + for (int i = 0; i < 8; i++) { + filter[i+9+17+17] = 50.+(i*10.); + } + } else if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + // loop 1 + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.05); + } + // loop 2a + for (int i = 0; i < 11; i++) { + filter[i+9] = 0.5+(i*0.05); + } + // loop 2b + for (int i = 0; i < 10; i++) { + filter[i+9+11] = 1.10+(i*0.10); + } + // loop 2c + for (int i = 0; i < 10; i++) { + filter[i+9+11+10] = 2.25+(i*0.25); + } + // loop 3a + for (int i = 0; i < 11; i++) { + filter[i+9+11+10+10] = 5.+(i*0.5); + } + // loop 3b + for (int i = 0; i < 10; i++) { + filter[i+9+11+10+10+11] = 11.+(i*1.0); + } + // loop 3c + for (int i = 0; i < 10; i++) { + filter[i+9+11+10+10+11+10] = 22.5+(i*2.5); + } + // loop 4a + for (int i = 0; i < 11; i++) { + filter[i+9+11+10+10+11+10+10] = 50.+(i*5.); + } + // loop 4b + for (int i = 0; i < 15; i++) { + filter[i+9+11+10+10+11+10+10+11] = 110.+(i*10.); + } + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + for (int i = 0; i < 10; i++) { + filter[i] = 0.2+(i*0.2); + } + for (int i = 0; i < 8; i++) { + filter[i+10] = 3+(i*1); + } + for (int i = 0; i < 25; i++) { + filter[i+10+8] = 12+(i*2); + } + for (int i = 0; i < 47; i++) { + filter[i+10+8+25] = 80+(i*20); + } + } else if (find(scan_v3.begin(), scan_v3.end(), module_str) != scan_v3.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.025); + } + for (int i = 0; i < 9; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 17; i++) { + filter[i+9+9] = 5.+(i*2.5); + } + } else if (find(scan_v2.begin(), scan_v2.end(), module_str) != scan_v2.end()) { + for (int i = 0; i < 9; i++) { + filter[i] = 0.05+(i*0.025); + } + for (int i = 0; i < 9; i++) { + filter[i+9] = 0.5+(i*0.25); + } + for (int i = 0; i < 9; i++) { + filter[i+9+9] = 5.+(i*2.5); + } + } + + +TCanvas *A2 = new TCanvas("A2","Plot scan",150,10,800,400); +TCanvas *A3 = new TCanvas("A3","Plot G1 fit",150,10,800,400); +TCanvas *A4 = new TCanvas("A4","Plot G1 residuals",150,10,800,400); +TCanvas *A5 = new TCanvas("A5","Plot G2 fit",150,10,800,400); +TCanvas *A6 = new TCanvas("A6","Plot G2 residuals",150,10,800,400); +TCanvas *A7 = new TCanvas("A7","Plot G0 fit",150,10,800,400); +TCanvas *A8 = new TCanvas("A8","Plot G0 residuals",150,10,800,400); + + + + //file name + sprintf(filename,"%sCS_histos_M%s.root",folder_path.c_str(), module_str.c_str()); + cout << "Loading file " << filename << endl; + TFile* f = new TFile((const char *)(filename),"READ"); + + + for (int j = 0; j < m_max; j++) { + TH2F* hist0=(TH2F*)f->Get(Form("adcmap_avg_g0_%d",j)); + G0_pixel[j]=hist0->GetBinContent((column+1),(row+1)); + TH2F* hist0er=(TH2F*)f->Get(Form("adcermap_avg_g0_%d",j)); + G0_err_pixel[j]=hist0er->GetBinContent((column+1),(row+1)); + TH2F* hist1=(TH2F*)f->Get(Form("adcmap_avg_g1_%d",j)); + G1_pixel[j]=hist1->GetBinContent((column+1),(row+1)); + TH2F* hist1er=(TH2F*)f->Get(Form("adcermap_avg_g1_%d",j)); + G1_err_pixel[j]=hist1er->GetBinContent((column+1),(row+1)); + TH2F* hist2=(TH2F*)f->Get(Form("adcmap_avg_g2_%d",j)); + G2_pixel[j]=hist2->GetBinContent((column+1),(row+1)); + TH2F* hist2er=(TH2F*)f->Get(Form("adcermap_avg_g2_%d",j)); + G2_err_pixel[j]=hist2er->GetBinContent((column+1),(row+1)); + //cout << "Data for pixel "<< pixel << "is loaded" << endl; + } + + + A2->SetLeftMargin(0.13); + A2->SetRightMargin(0.05); + + vector r0_adc; + vector r0_filter; + + vector r0_adcerr; + vector r0_ferr; + + vector r1_adc; + vector r1_filter; + vector r1_adcerr; + vector r1_ferr; + + vector r2_adc; + vector r2_filter; + vector r2_adcerr; + vector r2_ferr; + + for (int j = 0; j < m_max; j++) { + + if (G0_pixel[j] != 0) { + r0_filter.push_back(filter[j]); + r0_ferr.push_back(0.); + r0_adc.push_back(G0_pixel[j]); + r0_adcerr.push_back(G0_err_pixel[j]); + } + if (G1_pixel[j] != 0) { + r1_filter.push_back(filter[j]); + r1_ferr.push_back(0.); + r1_adc.push_back(G1_pixel[j]); + r1_adcerr.push_back(G1_err_pixel[j]); + } + if (G2_pixel[j] != 0) { + r2_filter.push_back(filter[j]); + r2_ferr.push_back(0.); + r2_adc.push_back(G2_pixel[j]); + r2_adcerr.push_back(G2_err_pixel[j]); + } + } + cout << "Filter array is created" << endl; + + double rangemin_g0 = 0; + double rangemax_g0 = 0; + double rangemin_g1 = 0; + double rangemax_g1 = 0; + double rangemin_g2 = 0; + double rangemax_g2 = 0; + + A2->cd(); + + // define graphs + if (r0_adc.size() > 1) { + grap_g0 = new TGraphErrors(r0_adc.size(),&(r0_filter[0]),&(r0_adc[0]),&(r0_ferr[0]),&(r0_adcerr[0])); + grap_g0->SetMarkerStyle(20); + grap_g0->SetMarkerColor(kBlue); + grap_g0->SetLineColor(kBlue); + + } + + if (r1_adc.size() > 1) { + grap_g1 = new TGraphErrors(r1_adc.size(),&(r1_filter[0]),&(r1_adc[0]),&(r1_ferr[0]),&(r1_adcerr[0])); + grap_g1->SetMarkerStyle(20); + grap_g1->SetMarkerColor(kGreen+2); + grap_g1->SetLineColor(kGreen+2); + } + + if (r2_adc.size() > 1) { + grap_g2 = new TGraphErrors(r2_adc.size(),&(r2_filter[0]),&(r2_adc[0]),&(r2_ferr[0]),&(r2_adcerr[0])); + grap_g2->SetMarkerStyle(20); + grap_g2->SetMarkerColor(kRed); + grap_g2->SetLineColor(kRed); + } + + // plot the datapoints + if (r1_adc.size() > 1) { + + if (find(scan_v6.begin(), scan_v6.end(), module_str) != scan_v6.end()) { + grap_g1->GetXaxis()->SetLimits(0.009,5E2); + } else if (find(scan_v1.begin(), scan_v1.end(), module_str) != scan_v1.end()) { + grap_g1->GetXaxis()->SetLimits(0.09,1.1E3); + } else { + grap_g1->GetXaxis()->SetLimits(0.009,1.1E2); + } + + grap_g1->GetXaxis()->SetTitle("Integration time [#mus]"); + grap_g1->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g1->GetYaxis()->SetTitleOffset(0.9); + grap_g1->SetMinimum(0); + grap_g1->SetMaximum(16000); + grap_g1->Draw("AP"); + if (r2_adc.size() > 1) { + grap_g2->Draw("P"); + } + if (r0_adc.size() > 1) { + grap_g0->Draw("P"); + } + A2->SetLogx(); + A2->Modified(); + A2->Update(); + + } + + // define fit ranges and fit + if (r0_adc.size() > 1) { + A7->cd(); + + rangemin_g0 = *min_element(r0_filter.begin(),r0_filter.end()); + rangemin_g0 = checkRangeMinForRCEffect(rangemin_g0); + rangemax_g0 = highestPointBeforeSwitching(r0_filter, r1_filter); + + if (rangemax_g0 > rangemin_g0) { + + 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+",""); + + grap_g0->SetMinimum(0); + grap_g0->SetMaximum(18000); + grap_g0->GetXaxis()->SetTitle("Integration time [#mus]"); + grap_g0->GetYaxis()->SetTitle("ADC [ADU]"); + grap_g0->GetYaxis()->SetTitleOffset(0.9); + grap_g0->GetXaxis()->SetLimits(*min_element(r0_filter.begin(),r0_filter.end()),*max_element(r0_filter.begin(),r0_filter.end())); + grap_g0->Draw("AP"); + fit_g0->Draw("same"); + A7->Update(); + if (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); + A7->SetLogx(); + A7->Modified(); + A7->Update(); + + //A7->cd(); + } + vector 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])); + } + + A8->cd(); + + 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()->SetLimits(*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"); + + A8->Update(); + + //sprintf(savename,"plots/M%s/%s/pixel_%s_%d_g0norm_M%s.png", module_str.c_str(), plotfolder_str.c_str(),pixel_type.c_str(), i, module_str.c_str()); + //mapcanvas->SaveAs((const char *)(savename)); + + //delete norm_g0; + + } + } + A3->cd(); + if (r1_adc.size() > 1) { + + rangemin_g1 = lowestPointAfterSwitching(r1_filter, r0_filter); + //cout << rangemin_g1 << endl; + rangemin_g1 = checkRangeMinForRCEffect(rangemin_g1); + rangemax_g1 = highestPointBeforeSwitching(r1_filter, r2_filter); + + //cout << rangemin_g1 << endl; + //cout << rangemax_g1 << endl; + + if (rangemax_g1 > rangemin_g1) { + + 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",""); + TFitResultPtr r1 = grap_g1->Fit(fit_g1,"S"); + par1 = r1->Parameter(1); + 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->GetXaxis()->SetLimits(*min_element(r1_filter.begin(),r1_filter.end()),*max_element(r1_filter.begin(),r1_filter.end())); + grap_g1->Draw("AP"); + fit_g1->Draw("same"); + A3->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); + A3->SetLogx(); + A3->Modified(); + A3->Update(); + + + vector 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])); + } + + A4->cd(); + 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()->SetLimits(*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"); + A4->Modified(); + A4->Update(); + + } +} + +A5->cd(); + + if (r2_adc.size() > 1) { + + rangemin_g2 = lowestPointAfterSwitching(r2_filter, r1_filter); + rangemin_g2 = checkRangeMinForRCEffect(rangemin_g2); + + rangemax_g2 = *max_element(r2_filter.begin(),r2_filter.end()); + + if (rangemax_g2 > rangemin_g2) { + + 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+",""); + TFitResultPtr r = grap_g2->Fit(fit_g2,"S"); + par2 = r->Parameter(1); + 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->GetXaxis()->SetLimits(*min_element(r2_filter.begin(),r2_filter.end()),*max_element(r2_filter.begin(),r2_filter.end())); + grap_g2->Draw("AP"); + fit_g2->Draw("same"); + A5->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); + A5->SetLogx(); + A5->Modified(); + A5->Update(); + + vector 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])); + } + + A6->cd(); + + 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()->SetLimits(*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"); + A6->Modified(); + A6->Update(); + } + } + // cout << par1/par2 << endl; + rootapp.Run(); + return 0; + +} + diff --git a/CS_fit_M431 b/CS_fit_M431 new file mode 100755 index 0000000000000000000000000000000000000000..02f96709af09d54db94922dc3ac6f887655a9553 GIT binary patch literal 11711464 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%0A6d;QfqKM4# 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