Changes in JFCalibration

1.New files:
a. Fits for a given module, column, and row:
i) BP_fit.cpp
ii) BP_fit_M431.cpp
iii) BP_fit_thin.cpp (use a different scan as the standard module)
iv) CS_fit.cpp
v) CuFluo_fit.cpp

b. Calibration bash files:
i) BP_scan_both_speed.sh
ii) CS_scan_both_speed.sh
iii) CuFluo_exposure_both_speed.sh
v) BP_scan_thinSensor.sh (use a different scan than the standard one)
c. Analysis:
i) CS_analysis_M431.cpp
ii) CS_analysis_M439.cpp
ii) BP_analysis_thinSensor.cpp

d) Default pixels map for JF systems
i) Default_pixels_array.cpp (gives 3 bin files with the default pixels of the JF system at G0, G1, G2, HG0, view from the front side)

2. Changes
a. Calibration bash files
- BP_scan_JF11.sh (changed pc of the wave generator)
- CuFluo_exposure.sh (increase frames)
- filename_creator.sh ( defined parameter DSTIP to source it from any receiver pc. The pccalib.sh has to be sourced before)
b. Analysis
- BP_analysis.cpp ( avoid abort of the analysis due to empty fits in the plotting of the ADU versus mV for the defined pixels )
- CS_analysis.cpp

c. Run_JFCalibration.txt
This commit is contained in:
2025-06-17 18:24:46 +02:00
parent b8f36b0cf3
commit 05d0c2d44b
21 changed files with 10397 additions and 47 deletions

View File

@ -532,6 +532,157 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
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("579"); //bchip596 150um sensors
scan_v6.push_back("579_fullspeed"); //bchip596 150um sensors
scan_v6.push_back("431_JF12"); // JF12 chip Vadym
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("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-3
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("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("481_fullspeed"); //jfcalib-0
scan_v6.push_back("488_fullspeed"); //jfcalib-1
scan_v6.push_back("490_fullspeed"); //jfcalib-2
scan_v6.push_back("491_fullspeed"); //jfcalib-3
scan_v6.push_back("492_fullspeed"); //jfcalib-4
scan_v6.push_back("560_fullspeed"); //jfcalib-5
scan_v6.push_back("036_fullspeed"); //jfcalib-0
scan_v6.push_back("441_fullspeed"); //jfcalib-1
scan_v6.push_back("535_fullspeed"); //jfcalib-2
scan_v6.push_back("454_fullspeed"); //jfcalib-3
scan_v6.push_back("466_fullspeed"); //jfcalib-4
scan_v6.push_back("536_fullspeed"); //jfcalib-5
scan_v6.push_back("580_fullspeed"); //jfcalib-4
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("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");
jungfrauFile *thisfile = new jungfrauFile();
jungfrauPixelMask *pixelMaskObject = new jungfrauPixelMask();
@ -1381,14 +1532,17 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
}
}
// 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);
@ -1399,6 +1553,8 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
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));
@ -1426,7 +1582,7 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
} else if (i == (255*1024)+255) {
pixel_type = "q";
}
grap_g0->SetMinimum(0);
grap_g0->SetMaximum(16000);
grap_g0->GetXaxis()->SetTitle("Integration time [#mus]");
@ -1435,31 +1591,34 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
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");
mapcanvas->Update();
if (grap_g0->FindObject("stats")) {TPaveStats *st0 = (TPaveStats*)grap_g0->FindObject("stats");
cout<<"here8"<<endl;
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<double> r0_adc_norm;
for (size_t j = 0; j < r0_adc.size(); j++) {
r0_adc_norm.push_back(r0_adc[j] - fit_g0->Eval(r0_filter[j]));
}
cout<<"here85"<<endl;
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);
@ -1493,6 +1652,8 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
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));
@ -1613,7 +1774,7 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
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));
@ -1717,6 +1878,8 @@ cout << " G0->G1->G2 sequence - dynamicG0" <<endl;
}
}
// get ratio measurements
if (rangemax_g0 > rangemin_g0 && rangemax_g1 > rangemin_g1) {