// compile with: // g++ -o plotpedsubshapers.exe plotpedsubshapers.cpp `root-config --cflags --glibs` // #include "TH1F.h" #include "TProfile.h" #include "TMath.h" #include "TF1.h" #include "TLegend.h" #include "TCanvas.h" // #include "TROOT.h" //#include "TStyle.h" #include "TTree.h" #include "TFile.h" #include "TGraphErrors.h" #include "TStyle.h" #include "TLine.h" #include #include #include #include #include #include // #include #include #include using namespace std; int plotpedsubshapers(const char *filename = "") { TH1F* hPed0; TH1F* hPed1; TH1F* hPed2; TH1F* hPed3; TH1F* hPeak0; TH1F* hPeak1; TH1F* hPeak2; TH1F* hPeak3; TH1F* hShapers01; TH1F* hShapers02; TH1F* hShapers03; TH1F* hShapers12; TH1F* hShapers13; TH1F* hShapers23; TH1F* hShapersErr01; TH1F* hShapersErr02; TH1F* hShapersErr03; TH1F* hShapersErr12; TH1F* hShapersErr13; TH1F* hShapersErr23; FILE *fcsv; int item = 0; int entry; char buffer[1024]; int saltronb; int channel; int prevsaltronb = 0; int mysaltronb = 0; int chipnumbers[1000]; unsigned int errorcode,warning; int mcm,chipnb; int nbChannels,nbErrors; float Mean,RMS; int source; memset(chipnumbers,0,sizeof(chipnumbers)); sscanf(filename,"saltro-mcm%d-c%d-pedsub-g3-p1-s%d-sh.csv",&mcm,&chipnb,&source); printf("SOURCE %d\n",source); fcsv = fopen(filename,"r"); if (fcsv == NULL) { printf("File %s not found\n",filename); return 1; } TCanvas *c1 = new TCanvas("c1","Single cluster",600,600); char name[128]; float lowlim = -0.75; float hilim = 1.25; sprintf(name, "hPed_0"); hPed0 = new TH1F(name, "",200,0,200); hPed0->SetTitle("ped0"); hPed0->SetMinimum(0); sprintf(name, "hPed_1"); hPed1 = new TH1F(name, "",200,0,200); hPed1->SetTitle("ped1"); hPed1->SetMinimum(0); sprintf(name, "hPed_2"); hPed2 = new TH1F(name, "",200,0,200); hPed2->SetTitle("ped3"); hPed2->SetMinimum(0); sprintf(name, "hPed_3"); hPed3 = new TH1F(name, "",200,0,200); hPed3->SetTitle("ped7"); hPed3->SetMinimum(0); sprintf(name, "hPeak_0"); hPeak0 = new TH1F(name, "",600,200,800); hPeak0->SetTitle("peak0"); hPeak0->SetMinimum(0); sprintf(name, "hPeak_1"); hPeak1 = new TH1F(name, "",600,200,800); hPeak1->SetTitle("peak1"); hPeak1->SetMinimum(0); sprintf(name, "hPeak_2"); hPeak2 = new TH1F(name, "",600,200,800); hPeak2->SetTitle("peak3"); hPeak2->SetMinimum(0); sprintf(name, "hPeak_3"); hPeak3 = new TH1F(name, "",600,0,800); hPeak3->SetTitle("peak7"); hPeak3->SetMinimum(0); sprintf(name, "hShapers_01"); hShapers01 = new TH1F(name, "",200,lowlim,hilim); hShapers01->SetTitle("s0-s1"); hShapers01->SetMinimum(0); sprintf(name, "hShapers_02"); hShapers02 = new TH1F(name, "",200,lowlim,hilim); hShapers02->SetTitle("s0-s3"); hShapers02->SetMinimum(0); sprintf(name, "hShapers_03"); hShapers03 = new TH1F(name, "",200,lowlim,hilim); hShapers03->SetTitle("s0-s7"); hShapers03->SetMinimum(0); sprintf(name, "hShapers_12"); hShapers12 = new TH1F(name, "",200,lowlim,hilim); hShapers12->SetTitle("s1-s3"); hShapers12->SetMinimum(0); sprintf(name, "hShapers_13"); hShapers13 = new TH1F(name, "",200,lowlim,hilim); hShapers13->SetTitle("s1-s7"); hShapers13->SetMinimum(0); sprintf(name, "hShapers_23"); hShapers23 = new TH1F(name, "",200,lowlim,hilim); hShapers23->SetTitle("s3-s7"); hShapers23->SetMinimum(0); sprintf(name, "hShapersErr_01"); hShapersErr01 = new TH1F(name, "",200,lowlim,hilim); hShapersErr01->SetTitle("s0-s1 error"); hShapersErr01->SetMinimum(0); sprintf(name, "hShapersErr_02"); hShapersErr02 = new TH1F(name, "",200,lowlim,hilim); hShapersErr02->SetTitle("s0-s3 error"); hShapersErr02->SetMinimum(0); sprintf(name, "hShapersErr_03"); hShapersErr03 = new TH1F(name, "",200,lowlim,hilim); hShapersErr03->SetTitle("s0-s7 error"); hShapersErr03->SetMinimum(0); sprintf(name, "hShapersErr_12"); hShapersErr12 = new TH1F(name, "",200,lowlim,hilim); hShapersErr12->SetTitle("s1-s3 error"); hShapersErr12->SetMinimum(0); sprintf(name, "hShapersErr_13"); hShapersErr13 = new TH1F(name, "",200,lowlim,hilim); hShapersErr13->SetTitle("s1-s7 error"); hShapersErr13->SetMinimum(0); sprintf(name, "hShapersErr_23"); hShapersErr23 = new TH1F(name, "",200,lowlim,hilim); hShapersErr23->SetTitle("s3-s7 error"); hShapersErr23->SetMinimum(0); item = 0; float ped0,ped1,ped2,ped3; float peak0,peak1,peak2,peak3; float shaper0,shaper1,shaper2,shaper3; float rms0,rms1,rms3,rms7; float diff01,diff02,diff03,diff12,diff13,diff23; int itemnb = 0; while (fgets(buffer,sizeof(buffer),fcsv) != NULL) { if (itemnb != 0) { sscanf(buffer,"%d,%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%X,%X", &saltronb,&channel,&ped0,&ped1,&ped2,&ped3,&peak0,&peak1,&peak2,&peak3, &shaper0,&shaper1,&shaper2,&shaper3,&rms0,&rms1,&rms3,&rms7,&diff01,&diff02,&diff03,&diff12,&diff13,&diff23,&errorcode,&warning); /* diff01 = diff01/gain0; diff02 = diff02/gain0; diff03 = diff03/gain0; diff12 = diff12/gain1; diff13 = diff13/gain1; diff23 = diff23/gain2; */ if (((source == 1) && ((channel & 1) == 0)) || ((source == 2) && ((channel & 1) == 1))) { errorcode = 0; if (peak0 <= 550.0) errorcode=10; if (peak1 <= 550.0) errorcode=10; if (peak2 <= 550.0) errorcode=10; if (peak3 <= 500.0) errorcode=10; //if ((diff03 < 65.0) || (diff03 > 80.0)) errorcode=1; if (ped0 <= 5.0) errorcode=1; if (ped1 <= 5.0) errorcode=2; if (ped2 <= 5.0) errorcode=3; if (ped3 <= 5.0) errorcode=4; if (errorcode == 0) { hPeak0->Fill(peak0); hPeak1->Fill(peak1); hPeak2->Fill(peak2); hPeak3->Fill(peak3); if (ped0 > 5.0) hPed0->Fill(ped0); if (ped1 > 5.0) hPed1->Fill(ped1); if (ped2 > 5.0) hPed2->Fill(ped2); if (ped3 > 5.0) hPed3->Fill(ped3); // if ((abs(ped0 - ped3) < 10.0) && (abs(ped0 - ped1) < 10.0)){ hShapers01->Fill(diff01/shaper0); hShapers02->Fill(diff02/shaper0); hShapers03->Fill(diff03/shaper0); hShapers12->Fill(diff12/shaper1); hShapers13->Fill(diff13/shaper1); hShapers23->Fill(diff23/shaper2); // } } else { hShapersErr01->Fill(diff01/shaper0); hShapersErr02->Fill(diff02/shaper0); hShapersErr03->Fill(diff03/shaper0); hShapersErr12->Fill(diff12/shaper1); hShapersErr13->Fill(diff13/shaper1); hShapersErr23->Fill(diff23/shaper2); } } } itemnb++; } fclose(fcsv); gStyle->SetOptStat(1110); char number[16]; sprintf(name,"%s.pdf(",filename); hPed0->Draw(); c1->SaveAs(name,"pdf"); sprintf(name,"%s.pdf",filename); hPed1->Draw(); c1->SaveAs(name,"pdf"); hPed2->Draw(); c1->SaveAs(name,"pdf"); hPed3->Draw(); c1->SaveAs(name,"pdf"); hPeak0->Draw(); c1->SaveAs(name,"pdf"); hPeak1->Draw(); c1->SaveAs(name,"pdf"); hPeak2->Draw(); c1->SaveAs(name,"pdf"); hPeak3->Draw(); c1->SaveAs(name,"pdf"); hShapers01->Draw(); c1->SaveAs(name,"pdf"); hShapers02->Draw(); c1->SaveAs(name,"pdf"); hShapers03->Draw(); c1->SaveAs(name,"pdf"); hShapers12->Draw(); c1->SaveAs(name,"pdf"); hShapers13->Draw(); c1->SaveAs(name,"pdf"); hShapers23->Draw(); c1->SaveAs(name,"pdf"); hShapersErr01->Draw(); c1->SaveAs(name,"pdf"); hShapersErr02->Draw(); c1->SaveAs(name,"pdf"); hShapersErr03->Draw(); c1->SaveAs(name,"pdf"); hShapersErr12->Draw(); c1->SaveAs(name,"pdf"); hShapersErr13->Draw(); c1->SaveAs(name,"pdf"); sprintf(name,"%s.pdf)",filename); hShapersErr23->Draw(); c1->SaveAs(name,"pdf"); return 0; } int main (int argc, char *argv[]) { int iret = 0; if (argc != 2) { printf("Wrong number of arguments: argc = %d\nSyntax should be:\n./plotpedgains.exe filename \n",argc); return 1; } iret = plotpedsubshapers(argv[1]); return iret; }