| 1 |
// |
// |
| 2 |
// Check the calorimter calibrations - Emiliano Mocchiutti |
// Check the calorimter calibrations - Emiliano Mocchiutti |
| 3 |
// |
// |
| 4 |
// FCaloCHKCALIB.c version 1.01 (2006-03-02) |
// FCaloCHKCALIB.c version 1.11 (2006-07-17) |
| 5 |
// |
// |
| 6 |
// The only input needed is the path to the directory created by YODA for the data file you want to analyze. |
// The only input needed is the path to the directory created by YODA for the data file you want to analyze. |
| 7 |
// |
// |
| 8 |
// Changelog: |
// Changelog: |
| 9 |
// |
// |
| 10 |
|
// 1.07 - 1.11 (2006-07-17): Adapted to flight conditions. |
| 11 |
|
// |
| 12 |
|
// 1.06 - 1.07 (2006-05-29): Fixed bug in output filename when input is not in the form DW_YYMMDD_NNN. Changed threshold for bad strip warning (from 0.005 to 0.03). |
| 13 |
|
// |
| 14 |
|
// 1.05 - 1.06 (2006-03-22): Add optimize flag in compiling the script! |
| 15 |
|
// |
| 16 |
|
// 1.04 - 1.05 (2006-03-22): Corrected wrong .C files. |
| 17 |
|
// |
| 18 |
|
// 1.03 - 1.04 (2006-03-20): Documentation updated. |
| 19 |
|
// |
| 20 |
|
// 1.02 - 1.03 (2006-03-20): Changed name of shared libraries (for example from FCaloQLOOK_cxx.so to libFCaloQLOOK.so). |
| 21 |
|
// |
| 22 |
|
// 1.01 - 1.02 (2006-03-13): Include files from YODA without "event" directory. |
| 23 |
|
// |
| 24 |
// 1.00 - 1.01 (2006-03-02): Works on YODA v6 output (single file), does not require anymore calocommon package. |
// 1.00 - 1.01 (2006-03-02): Works on YODA v6 output (single file), does not require anymore calocommon package. |
| 25 |
// |
// |
| 26 |
// 0.00 - 1.00 (2006-03-02): Clone of CaloCHKCALIB.c |
// 0.00 - 1.00 (2006-03-02): Clone of CaloCHKCALIB.c |
| 41 |
#include <TPad.h> |
#include <TPad.h> |
| 42 |
#include <TPaveLabel.h> |
#include <TPaveLabel.h> |
| 43 |
#include <TStyle.h> |
#include <TStyle.h> |
| 44 |
|
#include <TSystem.h> |
| 45 |
// |
// |
| 46 |
#include <event/CalibCalPedEvent.h> |
#include <CalibCalPedEvent.h> |
| 47 |
// |
// |
| 48 |
using namespace std; |
using namespace std; |
| 49 |
// |
// |
| 65 |
} |
} |
| 66 |
|
|
| 67 |
TString getFilename(const TString filename){ |
TString getFilename(const TString filename){ |
| 68 |
const string fil = (const char*)filename; |
// |
| 69 |
Int_t posiz = fil.find("dw_"); |
const string fil = gSystem->BaseName(filename.Data()); |
| 70 |
if ( posiz == -1 ) posiz = fil.find("DW_"); |
Int_t posiz = fil.find(".root"); |
| 71 |
if ( posiz == -1 ) return 0; |
// |
| 72 |
Int_t posiz2 = posiz+13; |
TString file2; |
| 73 |
TString file2; |
if ( posiz == -1 ){ |
| 74 |
stringcopy(file2,filename,posiz,posiz2); |
file2 = gSystem->BaseName(filename.Data()); |
| 75 |
|
} else { |
| 76 |
|
Int_t posiz2 = 0; |
| 77 |
|
stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz); |
| 78 |
TString pdat(".dat"); |
TString pdat(".dat"); |
| 79 |
stringappend(file2,pdat); |
stringappend(file2,pdat); |
| 80 |
return file2; |
}; |
| 81 |
|
return file2; |
| 82 |
} |
} |
| 83 |
|
|
| 84 |
typedef struct Calib { |
typedef struct Calib { |
| 100 |
// |
// |
| 101 |
Float_t ccalrmsthr=0.99; |
Float_t ccalrmsthr=0.99; |
| 102 |
Float_t ccalpedthr=0.99; |
Float_t ccalpedthr=0.99; |
| 103 |
Float_t ccalbadthr=0.005; |
Float_t ccalbadthr=0.03;// 0.005 |
| 104 |
Float_t ccalthrthr=0.98; |
Float_t ccalthrthr=0.98; |
| 105 |
Float_t ccalvarthr=0.99; |
Float_t ccalvarthr=0.99; |
| 106 |
Float_t ccalbasthr=0.99; |
Float_t ccalbasthr=0.99; |
| 125 |
ifstream myfile; |
ifstream myfile; |
| 126 |
myfile.open(filename.Data()); |
myfile.open(filename.Data()); |
| 127 |
if ( !myfile ){ |
if ( !myfile ){ |
| 128 |
printf(" No such file, exiting...\n"); |
printf(" %s :no such file, exiting...\n\n",filename.Data()); |
| 129 |
return; |
return; |
| 130 |
}; |
}; |
| 131 |
myfile.close(); |
myfile.close(); |
| 132 |
// |
// |
| 133 |
TFile *File = new TFile(filename.Data()); |
TFile *File = new TFile(filename.Data()); |
| 134 |
// |
// |
| 135 |
TTree *tr = (TTree*)File->Get("CalibCalPed"); |
TTree *tr = (TTree*)File->Get("CalibCalPed"); |
| 136 |
|
if ( !tr ) { |
| 137 |
|
printf(" CalibCalPed : no such tree in %s \n",filename.Data()); |
| 138 |
|
printf(" Exiting, are you sure this is a LEVEL0 not corrupted file? \n\n"); |
| 139 |
|
return; |
| 140 |
|
}; |
| 141 |
pamela::CalibCalPedEvent *ce = 0; |
pamela::CalibCalPedEvent *ce = 0; |
| 142 |
// |
// |
| 143 |
UInt_t found; |
UInt_t found; |
| 187 |
}; |
}; |
| 188 |
// |
// |
| 189 |
// |
// |
| 190 |
const string fil = (const char*)filename; |
const string fil = gSystem->BaseName(filename.Data()); |
| 191 |
Int_t posiz = fil.find("dw_"); |
Int_t posiz = fil.find(".root"); |
|
if ( posiz == -1 ) posiz = fil.find("DW_"); |
|
|
Int_t posiz2 = posiz+13; |
|
|
TString file2; |
|
|
stringcopy(file2,filename,posiz,posiz2); |
|
| 192 |
// |
// |
| 193 |
|
TString file2; |
| 194 |
|
if ( posiz == -1 ){ |
| 195 |
|
file2 = gSystem->BaseName(filename.Data()); |
| 196 |
|
} else { |
| 197 |
|
Int_t posiz2 = 0; |
| 198 |
|
stringcopy(file2,gSystem->BaseName(filename.Data()),posiz2,posiz); |
| 199 |
|
}; |
| 200 |
const char *figrec = file2; |
const char *figrec = file2; |
| 201 |
|
// |
| 202 |
const char *outdir = outDir; |
const char *outdir = outDir; |
| 203 |
const char *format = saveas; |
const char *format = saveas; |
| 204 |
stringstream figsave; |
stringstream figsave; |
| 320 |
gDirectory->Delete("C14"); |
gDirectory->Delete("C14"); |
| 321 |
gDirectory->Delete("C15"); |
gDirectory->Delete("C15"); |
| 322 |
gDirectory->Delete("C16"); |
gDirectory->Delete("C16"); |
| 323 |
TH1F *calped = new TH1F("C14","calped",4230,-3.5,4227.5); |
//TH1F *calped = new TH1F("C14","calped",4230,-3.5,4227.5); |
| 324 |
TH1F *calrms = new TH1F("C15","calrms",4230,-3.5,4228.5); |
// TH1F *calrms = new TH1F("C15","calrms",4230,-3.5,4228.5); |
| 325 |
|
TH1F *calped = new TH1F("C14","calped",2112,-3.5,4227.5); |
| 326 |
|
// TH1F *calrms = new TH1F("C15","calrms",264,-2.,4226.); |
| 327 |
|
TH1F *calrms = new TH1F("C15","calrms",2112,-3.5,4228.5); |
| 328 |
TH1F *calbad = new TH1F("C16","calgood",4230,-3.5,4228.5); |
TH1F *calbad = new TH1F("C16","calgood",4230,-3.5,4228.5); |
| 329 |
// |
// |
| 330 |
gDirectory->Delete("C17"); |
gDirectory->Delete("C17"); |
| 444 |
incalped++; |
incalped++; |
| 445 |
}; |
}; |
| 446 |
calrms->Fill((float)j,(calib.calrms[l][m][n]/4.)); |
calrms->Fill((float)j,(calib.calrms[l][m][n]/4.)); |
| 447 |
if ( (calib.calrms[l][m][n]/4.) > 7. || (calib.calrms[l][m][n]/4.) < 1. ){ |
if ( (((calib.calrms[l][m][n]/4.) > 7. || (calib.calrms[l][m][n]/4.) < 1.) && (j < 3440 && j > 3550)) || ( (j > 3439 && j < 3551) && ((calib.calrms[l][m][n]/4.) > 150. || (calib.calrms[l][m][n]/4.) < 1.)) ){ |
| 448 |
outcalrms++; |
outcalrms++; |
| 449 |
} else { |
} else { |
| 450 |
incalrms++; |
incalrms++; |
| 454 |
// |
// |
| 455 |
if ( n < 6 ){ |
if ( n < 6 ){ |
| 456 |
calthr->Fill((float)g,(float)calib.calthr[l][m][n]); |
calthr->Fill((float)g,(float)calib.calthr[l][m][n]); |
| 457 |
if ( calib.calthr[l][m][n] > 21. || calib.calthr[l][m][n] < 12. ){ |
if ( (calib.calthr[l][m][n] > 21. || calib.calthr[l][m][n] < 12.) && (g < 215 && g > 221) ){ |
| 458 |
outcalthr++; |
outcalthr++; |
| 459 |
} else { |
} else { |
| 460 |
incalthr++; |
incalthr++; |
| 461 |
}; |
}; |
| 462 |
calvar->Fill((float)g,(float)calib.calvar[l][m][n]); |
calvar->Fill((float)g,(float)calib.calvar[l][m][n]); |
| 463 |
if ( calib.calvar[l][m][n] > 8. || calib.calvar[l][m][n] < 1. ){ |
if ( (calib.calvar[l][m][n] > 8. || calib.calvar[l][m][n] < 1. ) && (g < 215 && g > 221) ){ |
| 464 |
outcalvar++; |
outcalvar++; |
| 465 |
} else { |
} else { |
| 466 |
incalvar++; |
incalvar++; |
| 647 |
calped->GetXaxis()->SetNdivisions(322); |
calped->GetXaxis()->SetNdivisions(322); |
| 648 |
calped->SetXTitle("strip"); |
calped->SetXTitle("strip"); |
| 649 |
calped->SetYTitle("ADC channels"); |
calped->SetYTitle("ADC channels"); |
| 650 |
|
calped->SetMaximum(3000.); |
| 651 |
|
calped->SetMinimum(-3000.); |
| 652 |
calped->Draw(); |
calped->Draw(); |
| 653 |
TPolyLine *banda1; |
TPolyLine *banda1; |
| 654 |
Double_t xc[4] = {0.,4224.,4224.,0.}; |
Double_t xc[4] = {0.,4224.,4224.,0.}; |
| 660 |
banda1->Draw("fSAME"); |
banda1->Draw("fSAME"); |
| 661 |
TPolyLine *banda2; |
TPolyLine *banda2; |
| 662 |
Double_t xc2[4] = {4031.5,4047.5,4047.5,4031.5}; |
Double_t xc2[4] = {4031.5,4047.5,4047.5,4031.5}; |
| 663 |
Double_t yc2[4] = {-2500.,-2500.,28000.,28000.}; |
// Double_t yc2[4] = {-2500.,-2500.,28000.,28000.}; |
| 664 |
|
Double_t yc2[4] = {-3000.,-3000.,3000.,3000.}; |
| 665 |
banda2 = new TPolyLine(4,xc2,yc2); |
banda2 = new TPolyLine(4,xc2,yc2); |
| 666 |
banda2->SetLineColor(5); |
banda2->SetLineColor(5); |
| 667 |
banda2->SetFillColor(5); |
banda2->SetFillColor(5); |
| 679 |
banda1->SetFillColor(5); |
banda1->SetFillColor(5); |
| 680 |
banda1->SetLineWidth(1); |
banda1->SetLineWidth(1); |
| 681 |
banda1->Draw("fSAME"); |
banda1->Draw("fSAME"); |
| 682 |
|
Float_t minrm = calrms->GetMinimum(); |
| 683 |
|
Float_t maxrm = calrms->GetMaximum(); |
| 684 |
|
Double_t xrm2[4] = {3449.,3551.,3551.,3449.}; |
| 685 |
|
Double_t yrm2[4] = {minrm,minrm,maxrm,maxrm}; |
| 686 |
|
banda2 = new TPolyLine(4,xrm2,yrm2); |
| 687 |
|
banda2->SetLineColor(5); |
| 688 |
|
banda2->SetFillColor(5); |
| 689 |
|
banda2->SetLineWidth(1); |
| 690 |
|
banda2->Draw("fSAME"); |
| 691 |
calrms->SetXTitle("strip"); |
calrms->SetXTitle("strip"); |
| 692 |
calrms->SetYTitle("ADC channels"); |
calrms->SetYTitle("ADC channels"); |
| 693 |
calrms->Draw("SAME"); |
calrms->Draw("SAME"); |
| 729 |
banda1->SetFillColor(5); |
banda1->SetFillColor(5); |
| 730 |
banda1->SetLineWidth(1); |
banda1->SetLineWidth(1); |
| 731 |
banda1->Draw("fSAME"); |
banda1->Draw("fSAME"); |
| 732 |
|
// |
| 733 |
|
minrm = calthr->GetMinimum(); |
| 734 |
|
maxrm = 1.05*calthr->GetMaximum(); |
| 735 |
|
Double_t xth2[4] = {215.,221.,221.,215.}; |
| 736 |
|
Double_t yth2[4] = {minrm,minrm,maxrm,maxrm}; |
| 737 |
|
banda2 = new TPolyLine(4,xth2,yth2); |
| 738 |
|
banda2->SetLineColor(5); |
| 739 |
|
banda2->SetFillColor(5); |
| 740 |
|
banda2->SetLineWidth(1); |
| 741 |
|
banda2->Draw("fSAME"); |
| 742 |
|
// |
| 743 |
calthr->Draw("SAME"); |
calthr->Draw("SAME"); |
| 744 |
f3pd2->cd(); |
f3pd2->cd(); |
| 745 |
|
// gPad->SetLogy(); |
| 746 |
calvar->GetXaxis()->SetNdivisions(644); |
calvar->GetXaxis()->SetNdivisions(644); |
| 747 |
calvar->SetXTitle("pre-amplifier"); |
calvar->SetXTitle("pre-amplifier"); |
| 748 |
calvar->SetYTitle("ADC channels"); |
calvar->SetYTitle("ADC channels"); |
| 754 |
banda1->SetFillColor(5); |
banda1->SetFillColor(5); |
| 755 |
banda1->SetLineWidth(1); |
banda1->SetLineWidth(1); |
| 756 |
banda1->Draw("fSAME"); |
banda1->Draw("fSAME"); |
| 757 |
|
// |
| 758 |
|
minrm = calvar->GetMinimum(); |
| 759 |
|
maxrm = 1.05*calvar->GetMaximum(); |
| 760 |
|
Double_t xva2[4] = {215.,221.,221.,215.}; |
| 761 |
|
Double_t yva2[4] = {minrm,minrm,maxrm,maxrm}; |
| 762 |
|
banda2 = new TPolyLine(4,xva2,yva2); |
| 763 |
|
banda2->SetLineColor(5); |
| 764 |
|
banda2->SetFillColor(5); |
| 765 |
|
banda2->SetLineWidth(1); |
| 766 |
|
banda2->Draw("fSAME"); |
| 767 |
|
// |
| 768 |
calvar->Draw("SAME"); |
calvar->Draw("SAME"); |
| 769 |
f3pd3->cd(); |
f3pd3->cd(); |
| 770 |
calbase->GetXaxis()->SetNdivisions(644); |
calbase->GetXaxis()->SetNdivisions(644); |
| 985 |
if ( ci == minev ) { |
if ( ci == minev ) { |
| 986 |
figsave.str(""); |
figsave.str(""); |
| 987 |
figsave << outdir << "/" ; |
figsave << outdir << "/" ; |
| 988 |
figsave << figrec << "_chkcalib."; |
figsave << figrec << "_CaloCHKCALIB."; |
| 989 |
figsave << format; |
figsave << format; |
| 990 |
figsave << "("; |
figsave << "("; |
| 991 |
}; |
}; |
| 994 |
if ( ci == minev ) { |
if ( ci == minev ) { |
| 995 |
figsave.str(""); |
figsave.str(""); |
| 996 |
figsave << outdir << "/" ; |
figsave << outdir << "/" ; |
| 997 |
figsave << figrec << "_chkcalib."; |
figsave << figrec << "_CaloCHKCALIB."; |
| 998 |
figsave << format; |
figsave << format; |
| 999 |
}; |
}; |
| 1000 |
}; |
}; |
| 1003 |
if ( ci == minev ) { |
if ( ci == minev ) { |
| 1004 |
figsave.str(""); |
figsave.str(""); |
| 1005 |
figsave << outdir << "/" ; |
figsave << outdir << "/" ; |
| 1006 |
figsave << figrec << "_chkcalib."; |
figsave << figrec << "_CaloCHKCALIB."; |
| 1007 |
figsave << format; |
figsave << format; |
| 1008 |
}; |
}; |
| 1009 |
// |
// |
| 1012 |
if ( ci == maxev-4 ) { |
if ( ci == maxev-4 ) { |
| 1013 |
figsave.str(""); |
figsave.str(""); |
| 1014 |
figsave << outdir << "/" ; |
figsave << outdir << "/" ; |
| 1015 |
figsave << figrec << "_chkcalib."; |
figsave << figrec << "_CaloCHKCALIB."; |
| 1016 |
figsave << format; |
figsave << format; |
| 1017 |
figsave << ")"; |
figsave << ")"; |
| 1018 |
rapporto->Print(figsave.str().c_str(),"Portrait"); |
rapporto->Print(figsave.str().c_str(),"Portrait"); |
| 1021 |
if ( figmatra ) { |
if ( figmatra ) { |
| 1022 |
figsave.str(""); |
figsave.str(""); |
| 1023 |
figsave << outdir << "/" ; |
figsave << outdir << "/" ; |
| 1024 |
figsave << figrec << "_chkcalib1_"; |
figsave << figrec << "_CaloCHKCALIB1_"; |
| 1025 |
figsave << (i+1) << "."; |
figsave << (i+1) << "."; |
| 1026 |
figsave << format; |
figsave << format; |
| 1027 |
figura2->SaveAs(figsave.str().c_str()); |
figura2->SaveAs(figsave.str().c_str()); |
| 1029 |
// |
// |
| 1030 |
figsave1.str(""); |
figsave1.str(""); |
| 1031 |
figsave1 << outdir << "/" ; |
figsave1 << outdir << "/" ; |
| 1032 |
figsave1 << figrec << "_chkcalib2_"; |
figsave1 << figrec << "_CaloCHKCALIB2_"; |
| 1033 |
figsave1 << (i+1) << "."; |
figsave1 << (i+1) << "."; |
| 1034 |
figsave1 << format; |
figsave1 << format; |
| 1035 |
figura1->SaveAs(figsave1.str().c_str()); |
figura1->SaveAs(figsave1.str().c_str()); |
| 1036 |
// |
// |
| 1037 |
figsave2.str(""); |
figsave2.str(""); |
| 1038 |
figsave2 << outdir << "/" ; |
figsave2 << outdir << "/" ; |
| 1039 |
figsave2 << figrec << "_chkcalib3_"; |
figsave2 << figrec << "_CaloCHKCALIB3_"; |
| 1040 |
figsave2 << (i+1) << "."; |
figsave2 << (i+1) << "."; |
| 1041 |
figsave2 << format; |
figsave2 << format; |
| 1042 |
figura3->SaveAs(figsave2.str().c_str()); |
figura3->SaveAs(figsave2.str().c_str()); |
| 1044 |
if ( ci == maxev-4 ) { |
if ( ci == maxev-4 ) { |
| 1045 |
figsave.str(""); |
figsave.str(""); |
| 1046 |
figsave << outdir << "/" ; |
figsave << outdir << "/" ; |
| 1047 |
figsave << figrec << "_chkcalib_report."; |
figsave << figrec << "_CaloCHKCALIB_report."; |
| 1048 |
figsave << format; |
figsave << format; |
| 1049 |
rapporto->SaveAs(figsave.str().c_str()); |
rapporto->SaveAs(figsave.str().c_str()); |
| 1050 |
}; |
}; |