From efae6fec495f1f5ba556efdd4decb8010f977a2e Mon Sep 17 00:00:00 2001 From: Benjamin Linnik Date: Wed, 17 Jun 2015 13:55:48 +0200 Subject: [PATCH] Run analyzer: outsource functions from ChargeSpectrum.c to a newly created file ChargeSpektrumFunctions.c --- MABS_run_analyzer/ChargeSpektrumFunctions.c | 260 ++++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 MABS_run_analyzer/ChargeSpektrumFunctions.c diff --git a/MABS_run_analyzer/ChargeSpektrumFunctions.c b/MABS_run_analyzer/ChargeSpektrumFunctions.c new file mode 100644 index 0000000..52fe9a3 --- /dev/null +++ b/MABS_run_analyzer/ChargeSpektrumFunctions.c @@ -0,0 +1,260 @@ +/** + * @file ChargeSpektrumFunctions.c + * @brief Use brief, otherwise the index won't have a brief explanation. + * + * Detailed explanation. + * + */ +#include + +Int_t* ReadRunList(); +Int_t ReadRunList(std::vector*); +Bool_t plotAllRuns(); +Bool_t plotAllRuns(TString); +Bool_t writeObservableToFile(TString); +Bool_t writeObservableToFile(); +void writeObservableToFileHistSelect(TString); + +const TString colorwhite = "\033[1;29m"; +const TString colorred = "\033[1;31m"; +const TString coloryellow = "\033[1;33m"; +const TString colorreset = "\033[0m"; +const TString endlr = "\033[0m\n"; + +void ChargeSpektrum(Int_t runnumber) +{ + cout << endl << colorred << "Given parameters have wrong format, please enter integer run numbers devided by '" << colorreset << colorwhite << "," << colorreset << colorred << "' and surrounded by '" << colorreset << colorwhite << "\"" << colorreset << colorred << "'." << endlr; + cout << "For example run: root -l 'ChargeSpektrum.c+(\"342815,342816\")'" << endl; + exit(1); +} + +void ChargeSpektrum(Int_t runnumber, Int_t runnumber2) +{ + cout << endl << colorred << "Given parameters have wrong format, please enter integer run numbers devided by '" << colorreset << colorwhite << "," << colorreset << colorred << "' and surrounded by '" << colorreset << colorwhite << "\"" << colorreset << colorred << "'." << endlr; + cout << "For example run: " << colorwhite << "root -l 'ChargeSpektrum.c+(\"342815,342816\")'" << endl; + exit(1); +} + +Int_t ReadRunList(std::vector* runlist) +{ + std::ifstream file("runlist.txt"); + Int_t row; + while (file >> row) + { + try + { + if (row > 0) + { + runlist->push_back(row); + numberRuns++; + } + } + catch(...) + { + cout << "File ended"; + } + } + return numberRuns; +} + + +// void plotNoiseComparison() +// { +// +// } + +Bool_t writeObservableToFile(TString histogramtype) +{ + if (histogramtype.Contains("threshold")) + { + if (histogramtype.Contains("calibrated")) + { + for(Int_t runi=0;runihistogramthresholdCalibrated.calibrated) + runs[runi]->plothistogramstructpointer = &runs[runi]->histogramthresholdCalibrated; + else + return 1; + } + } + else + { + for(Int_t runi=0;runiplothistogramstructpointer = &runs[runi]->histogramthreshold; + } + + } + else if (histogramtype.Contains("calibrated") || histogramtype.Contains("electron")) { + for(Int_t runi=0;runihistogramCalibrated.calibrated) + runs[runi]->plothistogramstructpointer = &runs[runi]->histogramCalibrated; + else return 1; } } + else { + for(Int_t runi=0;runiplothistogramstructpointer = &runs[runi]->histogram; } } + writeObservableToFileHistSelect(histogramtype); + return 0; +} +void writeObservableToFileHistSelect(TString histogramtype) +{ + if (histogramtype.Contains("Seed") || histogramtype.Contains("seed")) { + for(Int_t runi=0;runiplothistogrampointer = &runs[runi]->plothistogramstructpointer->Seed; } } + else if (histogramtype.Contains("Sum") || histogramtype.Contains("sum")) { + for(Int_t runi=0;runiplothistogrampointer = &runs[runi]->plothistogramstructpointer->Sum; } } + else if (histogramtype.Contains("Veto") || histogramtype.Contains("veto")) { + for(Int_t runi=0;runiplothistogrampointer = &runs[runi]->plothistogramstructpointer->Veto; } } + else { + for(Int_t runi=0;runiplothistogrampointer = &runs[runi]->plothistogramstructpointer->Seed; } } + writeObservableToFile(); +} + +Bool_t writeObservableToFile() +{ + system("mkdir "+ runs[0]->savepathresults + " -p"); + TString headerInfo = ""; + for(Int_t runi=0;runiruncode+"\t\t\t"; + } + TH1F* plothistogrampointer = *runs[0]->plothistogrampointer; + TString runnumberListe=Form("%s_",plothistogrampointer->GetName()); + TString header=""; + for(Int_t runi=0;runierror) + { + plothistogrampointer = *runs[runi]->plothistogrampointer; + runnumberListe+=Form("%d_",runs[runi]->labbook.runnumber); + header+=Form("%d\t%s\t", runs[runi]->labbook.runnumber, plothistogrampointer->GetName()); + } + } + } + TString filename= runs[0]->savepathresults + "/" + runnumberListe + "histograms.dat"; + fstream* fout = new fstream(filename,ios::out); + *fout << headerInfo << endl; + *fout << header << endl; + for(Int_t bini=0;biniGetNbinsX();bini++) + { + for(Int_t runi=0;runierror) + { + plothistogrampointer = *runs[runi]->plothistogrampointer; + TString outline; + outline=Form("%.1f\t%.1f\t",plothistogrampointer->GetBinCenter(bini),plothistogrampointer->GetBinContent(bini)); + *fout<close(); + + return 0; +} + +Bool_t plotAllRuns(TString histogramtype) +{ + if (histogramtype.Contains("threshold")) + { + if (histogramtype.Contains("calibrated")) + { + for(Int_t runi=0;runihistogramthresholdCalibrated.calibrated) + runs[runi]->plothistogramstructpointer = &runs[runi]->histogramthresholdCalibrated; + else + return 1; + } + else + { + for(Int_t runi=0;runiplothistogramstructpointer = &runs[runi]->histogramthreshold; + } + + } + else if (histogramtype.Contains("calibrated") || histogramtype.Contains("electron")) { + for(Int_t runi=0;runihistogramCalibrated.calibrated) + runs[runi]->plothistogramstructpointer = &runs[runi]->histogramCalibrated; + else + return 1; } } + else { + for(Int_t runi=0;runiplothistogramstructpointer = &runs[runi]->histogram; } } + plotAllRuns(); + return 0; +} + +Bool_t plotAllRuns() +{ + if (numberRuns > 1) + { + Float_t lastbin; + TTimeStamp* time = new TTimeStamp(); + + TCanvas* canvas = new TCanvas(Form("%d",time->GetNanoSec()), "Summary", 1600, 1000); + if (isBatch) + canvas->SetCanvasSize(3200,2000); + + canvas->Divide(2,2); + Float_t height = numberRuns * 0.04; + TLegend* leg1 = new TLegend(0.3,0.89-height,0.89,0.89);//(0.6,0.7,0.89,0.89); + TLegend* leg2 = new TLegend(0.6,0.89-height,0.89,0.89);//(0.6,0.7,0.89,0.89); + leg1->SetTextSize(0.02); + leg2->SetTextSize(0.02); + leg1->SetFillColor(0); leg1->SetBorderSize(0); + leg2->SetFillColor(0); leg2->SetBorderSize(0); + TString legendEntry; + + for(Int_t runi=0;runierror) + { + canvas->cd(1); + runs[runi]->plothistogramstructpointer->Seed->Draw("SAME"); + lastbin = runs[runi]->plothistogramstructpointer->Seed->GetBinCenter(runs[runi]->plothistogramstructpointer->Seed->FindLastBinAbove(2,1)); + runs[runi]->plothistogramstructpointer->Seed->SetAxisRange(0,lastbin*1.1,"X"); + gPad->SetLogy(1); + legendEntry = Form("%s", runs[runi]->plothistogramstructpointer->Seed->GetTitle()); + leg1->AddEntry(runs[runi]->plothistogramstructpointer->Veto, legendEntry, "l"); + leg1->Draw("SAME"); + canvas->cd(2); + runs[runi]->plothistogramstructpointer->Sum->Draw("SAME"); + lastbin = runs[runi]->plothistogramstructpointer->Sum->GetBinCenter(runs[runi]->plothistogramstructpointer->Sum->FindLastBinAbove(2,1)); + runs[runi]->plothistogramstructpointer->Sum->SetAxisRange(0,lastbin*1.1,"X"); + canvas->cd(3); + runs[runi]->plothistogramstructpointer->Veto->Draw("SAME"); + runs[runi]->plothistogramstructpointer->Veto->SetAxisRange(runs[runi]->plothistogramstructpointer->posVeto*0.7,runs[runi]->plothistogramstructpointer->posVeto*1.4,"X"); + canvas->cd(4); + runs[runi]->plothistogramstructpointer->Noise->Draw("SAME"); + legendEntry = Form("%s, Noise: %.2f", runs[runi]->labbook.matrix.Data(), runs[runi]->plothistogramstructpointer->avgNoise); + leg2->AddEntry(runs[runi]->plothistogramstructpointer->Veto, legendEntry, "l"); + leg2->Draw("SAME"); + } + } + } + + // canvas -> Print( runs[0]->savepathresults + "/" + canvastitle + ".eps"); + TImageDump *img = new TImageDump(runs[0]->savepathresults + "/" + Form("%s - %s",runs[0]->runcode.Data(), runs[numberRuns-1]->runcode.Data()) + ".png"); + canvas->Paint(); + img->Close(); + + TFile *f = new TFile(runs[0]->savepathresults + "/" + Form("%s - %s",runs[0]->runcode.Data(),runs[numberRuns-1]->runcode.Data()) + ".root","RECREATE"); + f->cd(); + f->Append(canvas); + f->Append(img); + f->Write(); + } + return 0; +} + -- 2.43.0