// compile with: // g++ -o plotcsv.exe plotcsv.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 plotcsv(const char *filename = "") { TH1F* hPeak0Mean; TH1F* hPeak0Rms; TH1F* hPeak1Mean; TH1F* hPeak1Rms; TH1F* hPeak2Mean; TH1F* hPeak2Rms; TH1F* hPed0Mean; TH1F* hPed0Rms; TH1F* hPed1Mean; TH1F* hPed1Rms; TH1F* hPed2Mean; TH1F* hPed2Rms; FILE *fcsv; int filetype = 0; if (strstr(filename,"pedsub") != NULL ) filetype = 1; else if (strstr(filename,"zerosup") != NULL ) filetype = 2; else if (strstr(filename,"pedestal") != NULL ) filetype = 3; else { printf("%s not legal\n",filename); return 1; } printf("FILETYPE %d\n",filetype); fcsv = fopen(filename,"r"); TCanvas *c1 = new TCanvas("c1","Single cluster",600,600); char name[128]; if ((filetype == 1) || (filetype == 2)) { sprintf(name, "hPeak0Mean"); hPeak0Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPeak0Mean) delete hPeak0Mean; hPeak0Mean = new TH1F(name, "",170,0.5,170.5); hPeak0Mean->SetMinimum(0); sprintf(name, "hPeak0Rms"); hPeak0Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPeak0Rms) delete hPeak0Rms; hPeak0Rms = new TH1F(name, "",170,0.5,170.5); hPeak0Rms->SetMinimum(0); sprintf(name, "hPeak1Mean"); hPeak1Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPeak1Mean) delete hPeak1Mean; hPeak1Mean = new TH1F(name, "",170,0.5,170.5); hPeak1Mean->SetMinimum(0); sprintf(name, "hPeak1Rms"); hPeak1Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPeak1Rms) delete hPeak1Rms; hPeak1Rms = new TH1F(name, "",170,0.5,170.5); hPeak1Rms->SetMinimum(0); sprintf(name, "hPeak2Mean"); hPeak2Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPeak2Mean) delete hPeak2Mean; hPeak2Mean = new TH1F(name, "",170,0.5,170.5); hPeak2Mean->SetMinimum(0); sprintf(name, "hPeak2Rms"); hPeak2Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPeak2Rms) delete hPeak2Rms; hPeak2Rms = new TH1F(name, "",170,0.5,170.5); hPeak2Rms->SetMinimum(0); } if (filetype == 1) { sprintf(name, "hPed0Mean"); hPed0Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPed0Mean) delete hPed0Mean; hPed0Mean = new TH1F(name, "",170,0.5,170.5); hPed0Mean->SetMinimum(0); sprintf(name, "hPed0Rms"); hPed0Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPed0Rms) delete hPed0Rms; hPed0Rms = new TH1F(name, "",170,0.5,170.5); hPed0Rms->SetMinimum(0); sprintf(name, "hPed1Mean"); hPed1Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPed1Mean) delete hPed1Mean; hPed1Mean = new TH1F(name, "",170,0.5,170.5); hPed1Mean->SetMinimum(0); sprintf(name, "hPed1Rms"); hPed1Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPed1Rms) delete hPed1Rms; hPed1Rms = new TH1F(name, "",170,0.5,170.5); hPed1Rms->SetMinimum(0); sprintf(name, "hPed2Mean"); hPed2Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPed2Mean) delete hPed2Mean; hPed2Mean = new TH1F(name, "",170,0.5,170.5); hPed2Mean->SetMinimum(0); sprintf(name, "hPed2Rms"); hPed2Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPed2Rms) delete hPed2Rms; hPed2Rms = new TH1F(name, "",170,0.5,170.5); hPed2Rms->SetMinimum(0); } if (filetype == 3) { sprintf(name, "hPed0Mean"); hPed0Mean = ((TH1F *)(gROOT->FindObject(name))); if (hPed0Mean) delete hPed0Mean; hPed0Mean = new TH1F(name, "",170,0.5,170.5); hPed0Mean->SetMinimum(0); sprintf(name, "hPed0Rms"); hPed0Rms = ((TH1F *)(gROOT->FindObject(name))); if (hPed0Rms) delete hPed0Rms; hPed0Rms = new TH1F(name, "",170,0.5,170.5); hPed0Rms->SetMinimum(0); } if (fcsv == NULL) { printf("File %s not found\n",filename); } int item = 0; char buffer[1024]; int saltronb; int channel; float peak0mean; float peak0rms; float peak0entries; float peak1mean; float peak1rms; float peak1entries; float peak2mean; float peak2rms; float peak2entries; float ped0mean; float ped0rms; float ped0entries; float ped1mean; float ped1rms; float ped1entries; float ped2mean; float ped2rms; float ped2entries; char therest[512]; while (fgets(buffer,sizeof(buffer),fcsv) != NULL) { if (item != 0) { // printf("%s",buffer); if (filetype == 1) { sscanf(buffer,"%d,%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%s", &saltronb,&channel, &peak0mean,&peak0rms,&peak0entries, &peak1mean,&peak1rms,&peak1entries, &peak2mean,&peak2rms,&peak2entries, &ped0mean,&ped0rms,&ped0entries, &ped1mean,&ped1rms,&ped1entries, &ped2mean,&ped2rms,&ped2entries, therest); } else if (filetype == 2) { sscanf(buffer,"%d,%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%s", &saltronb,&channel, &peak0mean,&peak0rms,&peak0entries, &peak1mean,&peak1rms,&peak1entries, &peak2mean,&peak2rms,&peak2entries, therest); } else if (filetype == 3) { sscanf(buffer,"%d,%d,%f,%f,%f,%s", &saltronb,&channel, &ped0mean,&ped0rms,&ped0entries, therest); } if ((filetype == 1) || (filetype == 2)) { hPeak0Mean->SetBinContent(item,peak0mean); hPeak0Rms->SetBinContent(item,peak0rms); hPeak1Mean->SetBinContent(item,peak1mean); hPeak1Rms->SetBinContent(item,peak1rms); hPeak2Mean->SetBinContent(item,peak2mean); hPeak2Rms->SetBinContent(item,peak2rms); printf("%d %d %f %f %f %f %f %f\n",item,channel,peak0mean,peak0rms,peak1mean,peak1rms,peak2mean,peak2rms); } if (filetype == 1) { hPed0Mean->SetBinContent(item,ped0mean); hPed0Rms->SetBinContent(item,ped0rms); hPed1Mean->SetBinContent(item,ped1mean); hPed1Rms->SetBinContent(item,ped1rms); hPed2Mean->SetBinContent(item,ped2mean); hPed2Rms->SetBinContent(item,ped2rms); } if (filetype == 3) { hPed0Mean->SetBinContent(item,ped0mean); hPed0Rms->SetBinContent(item,ped0rms); } } item++; } fclose(fcsv); gStyle->SetOptStat(0); if ((filetype == 1) || (filetype == 2)) { sprintf(name, "Peaktype 0 mean"); hPeak0Mean->SetTitle(name); sprintf(name,"%s.pdf(",filename); hPeak0Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Peaktype 0 rms"); hPeak0Rms->SetTitle(name); sprintf(name,"%s.pdf",filename); hPeak0Rms->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Peaktype 1 mean"); hPeak1Mean->SetTitle(name); sprintf(name,"%s.pdf",filename); hPeak1Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Peaktype 1 rms"); hPeak1Rms->SetTitle(name); sprintf(name,"%s.pdf",filename); hPeak1Rms->Draw(); c1->SaveAs(name,"pdf"); } if (filetype == 1) { sprintf(name, "Peaktype 2 mean"); hPeak2Mean->SetTitle(name); sprintf(name,"%s.pdf",filename); hPeak2Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Peaktype 2 rms"); hPeak2Rms->SetTitle(name); sprintf(name,"%s.pdf",filename); hPeak2Rms->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 0 mean"); hPed0Mean->SetTitle(name); sprintf(name,"%s.pdf",filename); hPed0Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 0 rms"); hPed0Rms->SetTitle(name); sprintf(name,"%s.pdf",filename); hPed0Rms->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 1 mean"); hPed1Mean->SetTitle(name); sprintf(name,"%s.pdf",filename); hPed1Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 1 rms"); hPed1Rms->SetTitle(name); sprintf(name,"%s.pdf",filename); hPed1Rms->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 2 mean"); hPed2Mean->SetTitle(name); sprintf(name,"%s.pdf",filename); hPed2Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 2 rms"); hPed2Rms->SetTitle(name); sprintf(name,"%s.pdf)",filename); hPed2Rms->Draw(); c1->SaveAs(name,"pdf"); } else if (filetype == 2) { sprintf(name, "Peaktype 2 mean"); hPeak2Mean->SetTitle(name); sprintf(name,"%s.pdf",filename); hPeak2Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Peaktype 2 rms"); hPeak2Rms->SetTitle(name); sprintf(name,"%s.pdf)",filename); hPeak2Rms->Draw(); c1->SaveAs(name,"pdf"); } else if (filetype == 3) { sprintf(name, "Pedtype 0 mean"); hPed0Mean->SetTitle(name); sprintf(name,"%s.pdf(",filename); hPed0Mean->Draw(); c1->SaveAs(name,"pdf"); sprintf(name, "Pedtype 0 rms"); hPed0Rms->SetTitle(name); sprintf(name,"%s.pdf)",filename); hPed0Rms->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./plotcsv.exe filename \n",argc); return 1; } iret = plotcsv(argv[1]); return iret; }