From e724e2cbb8bde1f3f6883256e16cc593b28e6cde Mon Sep 17 00:00:00 2001 From: redford_s Date: Tue, 5 Dec 2017 09:08:09 +0100 Subject: [PATCH] Removed the idea of a mask. If one calib value is missing, it doesn't mean that the pixel should be masked in all gains. Pixels which were masked or have missing calibrations are now set to the default value. Missing and default values are tracked per gain stage. --- JFMC_CalibWriter.cpp | 136 ++++++++++++++++++++++++++++++------------- 1 file changed, 94 insertions(+), 42 deletions(-) diff --git a/JFMC_CalibWriter.cpp b/JFMC_CalibWriter.cpp index ce39380..b15f777 100644 --- a/JFMC_CalibWriter.cpp +++ b/JFMC_CalibWriter.cpp @@ -130,8 +130,15 @@ int main(int argc, char* argv[]) { TH2F* g1mapcut = new TH2F("g1mapcut","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); TH2F* g2mapcut = new TH2F("g2mapcut","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); - TH2F* defaultvalmap = new TH2F("defaultvalmap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); - TH2F* maskmap = new TH2F("maskmap","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* defaultvalmap_hg0 = new TH2F("defaultvalmap_hg0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* defaultvalmap_g0 = new TH2F("defaultvalmap_g0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* defaultvalmap_g1 = new TH2F("defaultvalmap_g1","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* defaultvalmap_g2 = new TH2F("defaultvalmap_g2","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + + TH2F* missingvalmap_hg0 = new TH2F("missingvalmap_hg0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* missingvalmap_g0 = new TH2F("missingvalmap_g0","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* missingvalmap_g1 = new TH2F("missingvalmap_g1","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); + TH2F* missingvalmap_g2 = new TH2F("missingvalmap_g2","",NC,-0.5,NC-0.5,NR,-0.5,NR-0.5); sprintf(savename,"data/M%s/gainMaps_M%s.bin", module_str.c_str(), module_str.c_str()); fstream outfile; @@ -140,47 +147,52 @@ int main(int argc, char* argv[]) { for (int i = 0; i < NCH; i++) { // load existing values into maps - // if the map exists but the calibration is missing, mask pixel // if the map doesn't exist, put the global default value if (FL_HG0_gain_map) { - if (FL_HG0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1) != 0) { - mapsObject->hg0VALs[i] = FL_HG0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1); - } else { - maskmap->SetBinContent((i%NC)+1,(i/NC)+1,1); + mapsObject->hg0VALs[i] = FL_HG0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1); + if (FL_HG0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1) == 0) { + missingvalmap_hg0->Fill(i%NC,i/NC,1); } } else { mapsObject->hg0VALs[i] = 100.; + defaultvalmap_hg0->Fill(i%NC,i/NC,1); + missingvalmap_hg0->Fill(i%NC,i/NC,1); } if (FL_G0_gain_map) { - if (FL_G0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1) != 0) { - mapsObject->g0VALs[i] = FL_G0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1); - } else { - maskmap->SetBinContent((i%NC)+1,(i/NC)+1,1); + mapsObject->g0VALs[i] = FL_G0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1); + if (FL_G0_gain_map->GetBinContent((i%NC)+1,(i/NC)+1) == 0) { + missingvalmap_g0->Fill(i%NC,i/NC,1); } } else { mapsObject->g0VALs[i] = 40; + defaultvalmap_g0->Fill(i%NC,i/NC,1); + missingvalmap_g0->Fill(i%NC,i/NC,1); } if (DB_ratio_map) { if (DB_ratio_map->GetBinContent((i%NC)+1,(i/NC)+1) != 0) { mapsObject->g1VALs[i] = mapsObject->g0VALs[i] / DB_ratio_map->GetBinContent((i%NC)+1,(i/NC)+1); } else { - maskmap->SetBinContent((i%NC)+1,(i/NC)+1,1); + missingvalmap_g1->Fill(i%NC,i/NC,1); } } else { mapsObject->g1VALs[i] = -1.4; + defaultvalmap_g1->Fill(i%NC,i/NC,1); + missingvalmap_g1->Fill(i%NC,i/NC,1); } if (CS_ratio_map) { if (CS_ratio_map->GetBinContent((i%NC)+1,(i/NC)+1) != 0) { mapsObject->g2VALs[i] = mapsObject->g1VALs[i] / CS_ratio_map->GetBinContent((i%NC)+1,(i/NC)+1); } else { - maskmap->SetBinContent((i%NC)+1,(i/NC)+1,1); + missingvalmap_g2->Fill(i%NC,i/NC,1); } } else { mapsObject->g2VALs[i] = -0.1; + defaultvalmap_g2->Fill(i%NC,i/NC,1); + missingvalmap_g2->Fill(i%NC,i/NC,1); } @@ -255,36 +267,27 @@ int main(int argc, char* argv[]) { for (int i = 0; i < NCH; i++) { - // crazy value check: replace with module default + // crazy and missing value check: replace with module default // think of a way to get the limits better - // do not give masked pixels the module default vals, keep them masked if (mapsObject->hg0VALs[i] < 80 || mapsObject->hg0VALs[i] > 120) { - if (mapsObject->hg0VALs[i] != 0) { - mapsObject->hg0VALs[i] = defaultHG0; - defaultvalmap->Fill(i%NC,i/NC,1); - } + mapsObject->hg0VALs[i] = defaultHG0; + defaultvalmap_hg0->Fill(i%NC,i/NC,1); } if (mapsObject->g0VALs[i] < 30 || mapsObject->g0VALs[i] > 48) { - if (mapsObject->g0VALs[i] != 0) { - mapsObject->g0VALs[i] = defaultG0; - defaultvalmap->Fill(i%NC,i/NC,1); - } + mapsObject->g0VALs[i] = defaultG0; + defaultvalmap_g0->Fill(i%NC,i/NC,1); } if (mapsObject->g1VALs[i] < -2.0 || mapsObject->g1VALs[i] > -0.5) { - if (mapsObject->g1VALs[i] != 0) { - mapsObject->g1VALs[i] = defaultG1; - defaultvalmap->Fill(i%NC,i/NC,1); - } + mapsObject->g1VALs[i] = defaultG1; + defaultvalmap_g1->Fill(i%NC,i/NC,1); } if (mapsObject->g2VALs[i] < -0.2 || mapsObject->g2VALs[i] > -0.02) { - if (mapsObject->g2VALs[i] != 0) { - mapsObject->g2VALs[i] = defaultG2; - defaultvalmap->Fill(i%NC,i/NC,1); - } + mapsObject->g2VALs[i] = defaultG2; + defaultvalmap_g2->Fill(i%NC,i/NC,1); } @@ -437,19 +440,68 @@ int main(int argc, char* argv[]) { sprintf(savename,"plots/M%s/gain2_cut_M%s.png", module_str.c_str(), module_str.c_str()); mapcanvas->SaveAs((const char *)(savename)); - defaultvalmap->GetXaxis()->SetTitle("Column"); - defaultvalmap->GetYaxis()->SetTitle("Row"); - defaultvalmap->GetYaxis()->SetTitleOffset(0.7); - defaultvalmap->Draw("colz"); - defaultvalmap->GetZaxis()->SetRangeUser(0,4); - sprintf(savename,"plots/M%s/defaultvalmap_M%s.png", module_str.c_str(), module_str.c_str()); + defaultvalmap_hg0->GetXaxis()->SetTitle("Column"); + defaultvalmap_hg0->GetYaxis()->SetTitle("Row"); + defaultvalmap_hg0->GetYaxis()->SetTitleOffset(0.7); + defaultvalmap_hg0->Draw("colz"); + defaultvalmap_hg0->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/defaultvalmap_hg0_M%s.png", module_str.c_str(), module_str.c_str()); mapcanvas->SaveAs((const char *)(savename)); - maskmap->GetXaxis()->SetTitle("Column"); - maskmap->GetYaxis()->SetTitle("Row"); - maskmap->GetYaxis()->SetTitleOffset(0.7); - maskmap->Draw("colz"); - sprintf(savename,"plots/M%s/maskmap_M%s.png", module_str.c_str(), module_str.c_str()); + defaultvalmap_g0->GetXaxis()->SetTitle("Column"); + defaultvalmap_g0->GetYaxis()->SetTitle("Row"); + defaultvalmap_g0->GetYaxis()->SetTitleOffset(0.7); + defaultvalmap_g0->Draw("colz"); + defaultvalmap_g0->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/defaultvalmap_g0_M%s.png", module_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + defaultvalmap_g1->GetXaxis()->SetTitle("Column"); + defaultvalmap_g1->GetYaxis()->SetTitle("Row"); + defaultvalmap_g1->GetYaxis()->SetTitleOffset(0.7); + defaultvalmap_g1->Draw("colz"); + defaultvalmap_g1->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/defaultvalmap_g1_M%s.png", module_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + defaultvalmap_g2->GetXaxis()->SetTitle("Column"); + defaultvalmap_g2->GetYaxis()->SetTitle("Row"); + defaultvalmap_g2->GetYaxis()->SetTitleOffset(0.7); + defaultvalmap_g2->Draw("colz"); + defaultvalmap_g2->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/defaultvalmap_g2_M%s.png", module_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + missingvalmap_hg0->GetXaxis()->SetTitle("Column"); + missingvalmap_hg0->GetYaxis()->SetTitle("Row"); + missingvalmap_hg0->GetYaxis()->SetTitleOffset(0.7); + missingvalmap_hg0->Draw("colz"); + missingvalmap_hg0->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/missingvalmap_hg0_M%s.png", module_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + missingvalmap_g0->GetXaxis()->SetTitle("Column"); + missingvalmap_g0->GetYaxis()->SetTitle("Row"); + missingvalmap_g0->GetYaxis()->SetTitleOffset(0.7); + missingvalmap_g0->Draw("colz"); + missingvalmap_g0->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/missingvalmap_g0_M%s.png", module_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + missingvalmap_g1->GetXaxis()->SetTitle("Column"); + missingvalmap_g1->GetYaxis()->SetTitle("Row"); + missingvalmap_g1->GetYaxis()->SetTitleOffset(0.7); + missingvalmap_g1->Draw("colz"); + missingvalmap_g1->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/missingvalmap_g1_M%s.png", module_str.c_str(), module_str.c_str()); + mapcanvas->SaveAs((const char *)(savename)); + + missingvalmap_g2->GetXaxis()->SetTitle("Column"); + missingvalmap_g2->GetYaxis()->SetTitle("Row"); + missingvalmap_g2->GetYaxis()->SetTitleOffset(0.7); + missingvalmap_g2->Draw("colz"); + missingvalmap_g2->GetZaxis()->SetRangeUser(0,1); + sprintf(savename,"plots/M%s/missingvalmap_g2_M%s.png", module_str.c_str(), module_str.c_str()); mapcanvas->SaveAs((const char *)(savename)); TCanvas* c1 = new TCanvas("c1","");