From c0513f4bb67e60f958f399d71c8304c4cc3c5861 Mon Sep 17 00:00:00 2001 From: Benjamin Linnik Date: Mon, 13 Nov 2017 11:42:44 +0100 Subject: [PATCH] Analyzer: Reorganized code, made ChargeSpectrum.C more handy --- MABS_run_analyzer/ChargeSpektrum.c | 299 ++++++++++++-------- MABS_run_analyzer/ChargeSpektrumFunctions.c | 27 +- MABS_run_analyzer/Run.c | 69 ++--- MABS_run_analyzer/Run.h | 10 +- 4 files changed, 230 insertions(+), 175 deletions(-) diff --git a/MABS_run_analyzer/ChargeSpektrum.c b/MABS_run_analyzer/ChargeSpektrum.c index e8b065b..71f7107 100644 --- a/MABS_run_analyzer/ChargeSpektrum.c +++ b/MABS_run_analyzer/ChargeSpektrum.c @@ -41,18 +41,46 @@ void ChargeSpektrum(TString runnumber = "") // set file path and other variables to be set Init(); cout << "Found " << numberRuns << " run(s) in 'runlist.txt' or given as parameters." << endl; - TNtupleO *datainputPosVeto; - datainputPosVeto =new TNtupleO("Position Veto", "data", "x:y:xerr:yerr"); + + // variables for classical analysis + vector compareHistogramClassVectorClassic; + + // variables for calibrated analysis + vector compareHistogramClassVectorCalibrated; + + // variables for dynamical threshold analysis + + // variables for Sum analysis + TNtupleO *datainputIntSum; + vector ntupleVectorSum; + datainputIntSum =new TNtupleO("Integral Sum", "data", "x:y:xerr:yerr"); + + // variables for Seed analysis TNtupleO *datainputIntSeed; + vector ntupleVectorSeed; datainputIntSeed =new TNtupleO("Integral Seed", "data", "x:y:xerr:yerr"); - TNtupleO *datainput3; - datainput3 =new TNtupleO("ntuple3", "data", "x:y:xerr:yerr"); - TNtupleO *prop2ndpixelfire; + + // variables for Depletion analysis + TNtupleO *datainputPosVeto, *prop2ndpixelfire; prop2ndpixelfire =new TNtupleO("Prop. 2nd pixel", "data", "x:y:xerr:yerr"); - TNtupleO *averageChargeCollectedSeed; - averageChargeCollectedSeed =new TNtupleO("Average charge collected by Seed", "data", "x:y:xerr:yerr"); - TNtupleO *averageChargeCollectedSum; + datainputPosVeto =new TNtupleO("Position Veto", "data", "x:y:xerr:yerr"); + vector compareHistogramVectorDepletion, compareHistogramVectorDepletionSum; + vector ntupleVectorDepltetion1, ntupleVectorDepltetion2, ntupleVectorDepltetion3; + + // variables for temperature analysis + vector compareHistogramClassVectorTemp; + TNtupleO *averageChargeCollectedSeed, *averageChargeCollectedSum; + vector vectorAverageChargeCollectedSeed; averageChargeCollectedSum =new TNtupleO("Average charge collected by Sum", "data", "x:y:xerr:yerr"); + averageChargeCollectedSeed =new TNtupleO("Average charge collected by Seed", "data", "x:y:xerr:yerr"); + + // variables for RTS analysis + vector compareHistogramVectorRTSSeed, compareHistogramVectorRTSSum; + + // variables for cluster multiplicity + vector compareHistogramVectorClusterMultiplicity; + vector ntupleVectorAvgChargeColl; + for(Int_t runi=0; runi0) @@ -111,44 +139,53 @@ void ChargeSpektrum(TString runnumber = "") if (!isBatch) gROOT->SetBatch(kFALSE); + // use only lower case when matching anaylsis types if (analysisis.Contains("clas")) { // classic analysis - compareHistogramClassVector.push_back(runs[runi]->histogram->normalized); + compareHistogramClassVectorClassic.push_back(runs[runi]->histogram->normalized); + if (runi+1 == runnumber) + compareHistogramClassVectorVector.push_back(compareHistogramClassVectorClassic); } if (analysisis.Contains("dynthresh") || analysisis.Contains("dynamicalthresh")) { // fixed threshold analysis - compareHistogramClassVector4.push_back(runs[runi]->histogram); - compareHistogramClassVector4.push_back(runs[runi]->histogramdynamicalthreshold); - plotAllRuns(&compareHistogramClassVector4); - compareHistogramClassVector4.clear(); + vector compareHistogramClassVectorDynamicalThreshold; + compareHistogramClassVectorDynamicalThreshold.push_back(runs[runi]->histogram); + compareHistogramClassVectorDynamicalThreshold.push_back(runs[runi]->histogramdynamicalthreshold); + plotAllRuns(&compareHistogramClassVectorDynamicalThreshold); + compareHistogramClassVectorDynamicalThreshold.clear(); } if (analysisis.Contains("cali")) { // calibrated analysis - compareHistogramClassVector2.push_back(runs[runi]->histogram->calibrated->normalized); + compareHistogramClassVectorCalibrated.push_back(runs[runi]->histogram->calibrated->normalized); + if (runi+1 == runnumber) + compareHistogramClassVectorVector.push_back(compareHistogramClassVectorCalibrated); } - if (analysisis.Contains("signal")) { // calibrated analysis - // TODO Delete the following two lines + if (analysisis.Contains("signal")) { // F0 analysis for some frames, quantitatively runs[runi]->processed->plotSignal(100,1000); } if (analysisis.Contains("depl")) { // depletion analysis - compareHistogramVector.push_back(runs[runi]->histogramdynamicalthreshold->normalized->SeedPerc); + compareHistogramVectorDepletion.push_back(runs[runi]->histogramdynamicalthreshold->normalized->SeedPerc); datainputPosVeto->itsHistogramType = runs[runi]->histogramdynamicalthreshold; datainputPosVeto->xaxisTitle = "Voltage"; datainputPosVeto->yaxisTitle = "Position Veto"; datainputPosVeto->Fill(runs[runi]->labbook.depletionV,runs[runi]->histogramdynamicalthreshold->posVeto,0,0); - if (runi+1 == runnumber) - ntupleVector.push_back(datainputPosVeto); + if (runi+1 == runnumber) { + ntupleVectorDepltetion1.push_back(datainputPosVeto); + ntupleVectorVector.push_back(ntupleVectorDepltetion1); + } prop2ndpixelfire->itsHistogramType = runs[runi]->histogramdynamicalthreshold; prop2ndpixelfire->xaxisTitle = "Voltage"; prop2ndpixelfire->yaxisTitle = "Propability for second pixel to fire"; prop2ndpixelfire->Fill(runs[runi]->labbook.depletionV,runs[runi]->histogramdynamicalthreshold->clustermultiplicity->GetBinContent(2),0,0); cout << colorcyan << " Cluster Mult.:" << runs[runi]->histogramdynamicalthreshold->clustermultiplicity << endlr; - if (runi+1 == runnumber) - ntupleVector3.push_back(prop2ndpixelfire); + if (runi+1 == runnumber) { + ntupleVectorDepltetion2.push_back(prop2ndpixelfire); + ntupleVectorVector.push_back(ntupleVectorDepltetion2); + } Double_t AverageCharge[9]; @@ -170,63 +207,97 @@ void ChargeSpektrum(TString runnumber = "") numpixelincl->yaxisTitle = "Average charge collected [e]"; for (UInt_t sumi = 0; sumi < 9; sumi++) { if (!(sumi%2)) - compareHistogramVector2.push_back((*runs[runi]->histogram->normalized->a_Sum)[sumi]); + compareHistogramVectorDepletionSum.push_back((*runs[runi]->histogram->normalized->a_Sum)[sumi]); numpixelincl->Fill(sumi+1,AverageCharge[sumi],0,0); } - ntupleVector2.push_back(numpixelincl); + ntupleVectorDepltetion3.push_back(numpixelincl); + if (runi+1 == runnumber) { + ntupleVectorVector.push_back(ntupleVectorDepltetion3); + compareHistogramVectorVector.push_back(compareHistogramVectorDepletion); + compareHistogramVectorVector.push_back(compareHistogramVectorDepletionSum); + } } - if (analysisis.Contains("rts")) { // rts studies - // Uncomment below to do classical analysis withour RTS - compareHistogramClassVector3.push_back(runs[runi]->histogramwoRTS); - compareHistogramClassVector3.push_back(runs[runi]->histogram); - // plot and clear compareHistogramClassVector7 vector, delete these two lines if you want to compare among different runs - plotAllRuns(&compareHistogramClassVector3); - compareHistogramClassVector3.clear(); - - compareHistogramVector4.push_back(runs[runi]->histogramwoRTS->normalized->Seed); - compareHistogramVector5.push_back((*runs[runi]->histogramwoRTS->normalized->Sum)); + if (analysisis.Contains("rts")) { // rts studies + vector compareHistogramClassVectorRTS; + compareHistogramClassVectorRTS.push_back(runs[runi]->histogramwoRTS); + compareHistogramClassVectorRTS.push_back(runs[runi]->histogram); + // plot and clear compareHistogramClassVectorRTS vector, + plotAllRuns(&compareHistogramClassVectorRTS); + compareHistogramClassVectorRTS.clear(); + + compareHistogramVectorRTSSeed.push_back(runs[runi]->histogramwoRTS->normalized->Seed); + compareHistogramVectorRTSSum.push_back(*(runs[runi]->histogramwoRTS->normalized->Sum)); runs[runi]->plot1DHistogram(runs[runi]->histogramwoRTS->pixeltimefiredDistrib); runs[runi]->plot1DHistogram(runs[runi]->histogramwoRTS->LeakageCurrentInPixelSorted); + + if (runi+1 == runnumber) { + compareHistogramVectorVector.push_back(compareHistogramVectorRTSSeed); + compareHistogramVectorVector.push_back(compareHistogramVectorRTSSum); + } } if (analysisis.Contains("seedf")) { // seedfit: seed integral anaylsis runs[runi]->plot1DHistogram( runs[runi]->histogram->normalized->Seed, "gaus", true, false, false, runs[runi]->histogram->fixedThresholdValue); runs[runi]->plot1DHistogram( runs[runi]->histogramdynamicalthreshold->normalized->Seed, "gaus", true, false, false, runs[runi]->histogram->fixedThresholdValue); - - compareHistogramVector6.push_back(runs[runi]->histogram->Seed); - compareHistogramVector6.push_back(runs[runi]->histogramdynamicalthreshold->Seed); - CompareHistograms(&compareHistogramVector6); - compareHistogramVector6.clear(); + vector compareHistogramVectorSeedFit; + compareHistogramVectorSeedFit.push_back(runs[runi]->histogram->Seed); + compareHistogramVectorSeedFit.push_back(runs[runi]->histogramdynamicalthreshold->Seed); + CompareHistograms(&compareHistogramVectorSeedFit); + compareHistogramVectorSeedFit.clear(); datainputIntSeed->itsHistogramType = runs[runi]->histogram->normalized; datainputIntSeed->xaxisTitle = "Voltage"; datainputIntSeed->yaxisTitle = "Integral of Seed"; datainputIntSeed->Fill(runs[runi]->labbook.depletionV,runs[runi]->histogram->integralSeed,0,runs[runi]->histogram->integralSeedErr); - if (runi+1 == runnumber) - ntupleVector4.push_back(datainputIntSeed); + if (runi+1 == runnumber) { + ntupleVectorSeed.push_back(datainputIntSeed); + ntupleVectorVector.push_back(ntupleVectorSeed); + } + } + + if (analysisis.Contains("sumf")) { // seedfit: seed integral anaylsis + runs[runi]->plot1DHistogram(*(runs[runi]->histogram->normalized->Sum), "gaus", true, false, false, runs[runi]->histogram->fixedThresholdValue); + runs[runi]->plot1DHistogram(*(runs[runi]->histogramdynamicalthreshold->normalized->Sum), "gaus", true, false, false, runs[runi]->histogram->fixedThresholdValue); + + vector compareHistogramVectorSumFit; + compareHistogramVectorSumFit.push_back(*(runs[runi]->histogram->Sum)); + compareHistogramVectorSumFit.push_back(*(runs[runi]->histogramdynamicalthreshold->Sum)); + CompareHistograms(&compareHistogramVectorSumFit); + compareHistogramVectorSumFit.clear(); + + datainputIntSum->itsHistogramType = runs[runi]->histogram->normalized; + datainputIntSum->xaxisTitle = "Voltage"; + datainputIntSum->yaxisTitle = "Integral of Sum"; + datainputIntSum->Fill(runs[runi]->labbook.depletionV,runs[runi]->histogram->integralSum,0,runs[runi]->histogram->integralSumErr); + if (runi+1 == runnumber) { + ntupleVectorSum.push_back(datainputIntSum); + ntupleVectorVector.push_back(ntupleVectorSeed); + } } if (analysisis.Contains("cluster")) { // analyze cluster formation // show cluster multiplicity - compareHistogramVector9.push_back(runs[runi]->histogram->normalized->clustermultiplicity); + compareHistogramVectorClusterMultiplicity.push_back(runs[runi]->histogram->normalized->clustermultiplicity); // runs[runi]->plot1DHistogram( runs[runi]->histogram->clustermultiplicity); - compareHistogramVector7.push_back(runs[runi]->histogram->Sum9); - compareHistogramVector7.push_back(runs[runi]->histogram->Sum25); - CompareHistograms(&compareHistogramVector7); - compareHistogramVector7.clear(); + vector compareHistogramVectorCluster; + compareHistogramVectorCluster.push_back(runs[runi]->histogram->Sum9); + compareHistogramVectorCluster.push_back(runs[runi]->histogram->Sum25); + CompareHistograms(&compareHistogramVectorCluster); + compareHistogramVectorCluster.clear(); - compareHistogramVector8.push_back(runs[runi]->histogram->Seed); - compareHistogramVector8.push_back(runs[runi]->histogram->a_Sum9[1]); - compareHistogramVector8.push_back(runs[runi]->histogram->Sum9); - compareHistogramVector8.push_back(runs[runi]->histogram->a_Sum25[1]); - compareHistogramVector8.push_back(runs[runi]->histogram->Sum25); - CompareHistograms(&compareHistogramVector8); - compareHistogramVector8.clear(); + vector compareHistogramVectorCluster2; + compareHistogramVectorCluster2.push_back(runs[runi]->histogram->Seed); + compareHistogramVectorCluster2.push_back(runs[runi]->histogram->a_Sum9[1]); + compareHistogramVectorCluster2.push_back(runs[runi]->histogram->Sum9); + compareHistogramVectorCluster2.push_back(runs[runi]->histogram->a_Sum25[1]); + compareHistogramVectorCluster2.push_back(runs[runi]->histogram->Sum25); + CompareHistograms(&compareHistogramVectorCluster2); + compareHistogramVectorCluster2.clear(); Double_t AverageCharge25[25]; Double_t TotalHits25[25]; @@ -249,7 +320,7 @@ void ChargeSpektrum(TString runnumber = "") for (UInt_t sumi = 0; sumi < 25; sumi++) { numpixelincl2->Fill(sumi+1,AverageCharge25[sumi],0,0); } - ntupleVector5.push_back(numpixelincl2); + ntupleVectorAvgChargeColl.push_back(numpixelincl2); Double_t AverageCharge9[9]; Double_t TotalHits9[9]; @@ -272,40 +343,60 @@ void ChargeSpektrum(TString runnumber = "") for (UInt_t sumi = 0; sumi < 9; sumi++) { numpixelincl->Fill(sumi+1,AverageCharge9[sumi],0,0); } - ntupleVector5.push_back(numpixelincl); + ntupleVectorAvgChargeColl.push_back(numpixelincl); + + if (runi+1 == runnumber) { + compareHistogramVectorVector.push_back(compareHistogramVectorClusterMultiplicity); + ntupleVectorVector.push_back(ntupleVectorAvgChargeColl); + } } - if (analysisis.Contains("temp")) { // analyze cluster formation - compareHistogramClassVector5.push_back(runs[runi]->histogramfixedthreshold->normalized); - + if (analysisis.Contains("temp")) { // analyze temperatur dependance + compareHistogramClassVectorTemp.push_back(runs[runi]->histogramfixedthreshold->normalized); + Double_t AverageChargeTempSeed = 0; Double_t AverageChargeTempSum = 0; Double_t TotalHitsTemp = 0; - for (Int_t bini = 1; bini <= runs[runi]->histogramfixedthreshold->normalized->Seed->GetXaxis()->GetNbins();++bini) { - AverageChargeTempSeed += runs[runi]->histogramfixedthreshold->normalized->Seed->GetBinContent(bini)*runs[runi]->histogramfixedthreshold->normalized->Seed->GetBinCenter(bini); - TotalHitsTemp += runs[runi]->histogramfixedthreshold->normalized->Seed->GetBinContent(bini); - } - AverageChargeTempSeed /= TotalHitsTemp; - for (Int_t bini = 1; bini <= (*runs[runi]->histogramfixedthreshold->normalized->Sum)->GetXaxis()->GetNbins();++bini) { - AverageChargeTempSum += (*runs[runi]->histogramfixedthreshold->normalized->Sum)->GetBinContent(bini)*(*runs[runi]->histogramfixedthreshold->normalized->Sum)->GetBinCenter(bini); - } - AverageChargeTempSum /= TotalHitsTemp; - + for (Int_t bini = 1; bini <= runs[runi]->histogramfixedthreshold->normalized->Seed->GetXaxis()->GetNbins();++bini) { + AverageChargeTempSeed += runs[runi]->histogramfixedthreshold->normalized->Seed->GetBinContent(bini)*runs[runi]->histogramfixedthreshold->normalized->Seed->GetBinCenter(bini); + TotalHitsTemp += runs[runi]->histogramfixedthreshold->normalized->Seed->GetBinContent(bini); + } + AverageChargeTempSeed /= TotalHitsTemp; + for (Int_t bini = 1; bini <= (*runs[runi]->histogramfixedthreshold->normalized->Sum)->GetXaxis()->GetNbins();++bini) { + AverageChargeTempSum += (*runs[runi]->histogramfixedthreshold->normalized->Sum)->GetBinContent(bini)*(*runs[runi]->histogramfixedthreshold->normalized->Sum)->GetBinCenter(bini); + } + AverageChargeTempSum /= TotalHitsTemp; + averageChargeCollectedSeed->itsHistogramType = runs[runi]->histogramfixedthreshold->normalized; averageChargeCollectedSeed->xaxisTitle = "Temperature [°C]"; averageChargeCollectedSeed->yaxisTitle = "Average charge collected [ADU]"; - + averageChargeCollectedSum->itsHistogramType = runs[runi]->histogramfixedthreshold->normalized; averageChargeCollectedSum->xaxisTitle = "Temperature [°C]"; averageChargeCollectedSum->yaxisTitle = "Average charge collected [ADU]"; - - averageChargeCollectedSeed->Fill(runs[runi]->labbook.tempSens,AverageChargeTempSeed,2,0); - averageChargeCollectedSum->Fill(runs[runi]->labbook.tempSens,AverageChargeTempSum,2,0); - } - - + averageChargeCollectedSeed->Fill(runs[runi]->labbook.tempSens,AverageChargeTempSeed,2,0); + averageChargeCollectedSum->Fill(runs[runi]->labbook.tempSens,AverageChargeTempSum,2,0); + + if (runi+1 == runnumber) { + compareHistogramClassVectorVector.push_back(compareHistogramClassVectorTemp); + vectorAverageChargeCollectedSeed.push_back(averageChargeCollectedSeed); + vectorAverageChargeCollectedSeed.push_back(averageChargeCollectedSum); + ntupleVectorVector.push_back(vectorAverageChargeCollectedSeed); + } + + } + + if (analysisis.Contains("f0")) { // analyze cluster formation + // Plot F0 signal + vector compareHistogramVectorF0; + compareHistogramVectorF0.push_back(runs[runi]->averageF0DistrEnd); + compareHistogramVectorVector.push_back(compareHistogramVectorF0); + + runs[runi]->plot1DHistogram( runs[runi]->averageF0DistrEnd, "gaus", true); + } + // write all histograms to a dat file, can be imported by ORIGIN or Excel. Leave this line ;) runs[runi]->writeAllHistogramsToFile(); @@ -314,52 +405,26 @@ void ChargeSpektrum(TString runnumber = "") } } } // loop over all runs end - ntupleVector6.push_back(averageChargeCollectedSeed); - ntupleVector6.push_back(averageChargeCollectedSum); -printSummaryTable(&compareHistogramClassVector); -printSummaryTable(&compareHistogramClassVector2); -printSummaryTable(&compareHistogramClassVector4); -CompareHistograms(&compareHistogramVector); -CompareHistograms(&compareHistogramVector2); -CompareHistograms(&compareHistogramVector3); -CompareHistograms(&compareHistogramVector4); -CompareHistograms(&compareHistogramVector5); -CompareHistograms(&compareHistogramVector6); -CompareHistograms(&compareHistogramVector7); -CompareHistograms(&compareHistogramVector8); -CompareHistograms(&compareHistogramVector9); -plotAllRuns(&compareHistogramClassVector); -plotAllRuns(&compareHistogramClassVector2); -plotAllRuns(&compareHistogramClassVector3); -plotAllRuns(&compareHistogramClassVector4); -plotAllRuns(&compareHistogramClassVector5); -plotAllRuns(&compareHistogramClassVector6); -plotAllRuns(&compareHistogramClassVector7); -plotAllRuns(&compareHistogramClassVector8); -plotAllRuns(&compareHistogramClassVector9); -plot1DData(&ntupleVector); -plot1DData(&ntupleVector2); -plot1DData(&ntupleVector3); -plot1DData(&ntupleVector4); -plot1DData(&ntupleVector5); -plot1DData(&ntupleVector6); -plot1DData(&ntupleVector7); -plot1DData(&ntupleVector8); -plot1DData(&ntupleVector9); -CompareLeageCurrent(&compareHistogramClassVector8); -CompareLeageCurrent(&compareHistogramClassVector9); -writeObservableToFile(); -writeOneHistogramTypeToFile(&compareHistogramClassVector); + +for (std::vector< std::vector > ::iterator curHistogramVector = compareHistogramVectorVector.begin(); curHistogramVector != compareHistogramVectorVector.end(); curHistogramVector++) { + CompareHistograms(&(*curHistogramVector)); + writeObservableToFile(&(*curHistogramVector)); +} + +for (std::vector< std::vector > ::iterator curHistogramClassVector = compareHistogramClassVectorVector.begin(); curHistogramClassVector != compareHistogramClassVectorVector.end(); curHistogramClassVector++) { + printSummaryTable(&(*curHistogramClassVector)); + plotAllRuns(&(*curHistogramClassVector)); + writeOneHistogramTypeToFile(&(*curHistogramClassVector)); +} + +for (std::vector< std::vector > ::iterator curNtupleVector = ntupleVectorVector.begin(); curNtupleVector != ntupleVectorVector.end(); curNtupleVector++) { + plot1DData(&(*curNtupleVector)); +} + // Don't change this gROOT->SetBatch(kTRUE); plotAllRuns(&compareHistogramClassVectorMABSBot); -// plotAllRuns("seed threshold calibrated"); -// setCustomPath("Excel/"); -// writeObservableToFile("seed threshold calibrated"); -// writeObservableToFile("seed threshold"); -// writeObservableToFile("seed threshold"); -// writeObservableToFile("sum threshold"); - cout << "" << endl; +cout << "" << endl; } diff --git a/MABS_run_analyzer/ChargeSpektrumFunctions.c b/MABS_run_analyzer/ChargeSpektrumFunctions.c index ff3cb47..db281ea 100644 --- a/MABS_run_analyzer/ChargeSpektrumFunctions.c +++ b/MABS_run_analyzer/ChargeSpektrumFunctions.c @@ -25,7 +25,6 @@ using namespace std; Int_t* ReadRunList(); Int_t ReadRunList(std::vector*); void InterpreteUserInput(TString, std::vector*, std::vector*, std::vector*, std::vector*, TString* analysisis); -Bool_t plotAllRuns(); Bool_t plotAllRuns(vector*); // vector wich is used to save a good title by the function FindGoodTitle() vector headerStringsVector; @@ -83,7 +82,7 @@ TCanvas* plot1DData(std::vector* ntuplepvectorpointer, Bool_t verbose * */ Bool_t writeNTupleVectorToFile(std::vector* ntuplepvectorpointer); -Bool_t writeObservableToFile(); +Bool_t writeObservableToFile(vector* ptCompareHistogramVector); /** @brief A vector able to hold pointer of type #Run::histogramstruct * * You push in pointer of the type Run::histogramstruct in ChargeSpectrum.C and then @@ -98,9 +97,13 @@ Bool_t printSummaryTable(vector*); Bool_t testifMixingCalibration(vector*); /** @brief Turns a value into a string with fixed precision */ string to_str_w_prec(const Float_t a_value, int precision = 1); -vector compareHistogramClassVector, compareHistogramClassVector2, compareHistogramClassVector3, compareHistogramClassVector4, compareHistogramClassVector5, compareHistogramClassVector6, compareHistogramClassVector7, compareHistogramClassVector8, compareHistogramClassVector9, compareHistogramClassVectorMABSBot; -vector compareHistogramVector, compareHistogramVector2, compareHistogramVector3, compareHistogramVector4, compareHistogramVector5, compareHistogramVector6, compareHistogramVector7, compareHistogramVector8, compareHistogramVector9; -vector ntupleVector, ntupleVector2, ntupleVector3, ntupleVector4, ntupleVector5, ntupleVector6, ntupleVector7, ntupleVector8, ntupleVector9; +vector compareHistogramClassVectorMABSBot; +//vector compareHistogramClassVector, compareHistogramClassVector2, compareHistogramClassVector3, compareHistogramClassVector4, compareHistogramClassVector5, compareHistogramClassVector6, compareHistogramClassVector7, compareHistogramClassVector8, compareHistogramClassVector9, compareHistogramClassVectorMABSBot; +vector< vector > compareHistogramClassVectorVector; +//vector compareHistogramVector, compareHistogramVector2, compareHistogramVector3, compareHistogramVector4, compareHistogramVector5, compareHistogramVector6, compareHistogramVector7, compareHistogramVector8, compareHistogramVector9; +vector< vector > compareHistogramVectorVector; +// vector ntupleVector, ntupleVector2, ntupleVector3, ntupleVector4, ntupleVector5, ntupleVector6, ntupleVector7, ntupleVector8, ntupleVector9; +vector< vector > ntupleVectorVector; TString ownpath = ""; TString savepathresults; @@ -474,7 +477,7 @@ Bool_t writeOneHistogramTypeToFile(vector* ptCompareHistogramCla } -Bool_t writeObservableToFile() +Bool_t writeObservableToFile(vector* ptCompareHistogramVector) { if (numberRuns>0) { @@ -496,7 +499,7 @@ Bool_t writeObservableToFile() filename+=".dat"; fstream* fout = new fstream(filename,ios::out); header += Form("#"); - for (vector::iterator curHistogram = compareHistogramVector.begin(); curHistogram != compareHistogramVector.end(); curHistogram++) { + for (vector::iterator curHistogram = ptCompareHistogramVector->begin(); curHistogram != ptCompareHistogramVector->end(); curHistogram++) { header += Form("bin\t%s\t",(*curHistogram)->GetName()); } *fout << header << endl; @@ -504,7 +507,7 @@ Bool_t writeObservableToFile() for(Int_t bin=1;bin<=runs[0]->cursystemparam.nbins;bin++) { outline =""; - for (vector::iterator curHistogram = compareHistogramVector.begin(); curHistogram != compareHistogramVector.end(); curHistogram++) { + for (vector::iterator curHistogram = ptCompareHistogramVector->begin(); curHistogram != ptCompareHistogramVector->end(); curHistogram++) { outline+=Form("%.1f\t%.1f\t", (*curHistogram)->GetBinCenter(bin), (*curHistogram)->GetBinContent(bin)); } *fout<* ptCompareHistogramVector, TString title { if (ptCompareHistogramVector->size() > 0) { - FindGoodTitle(ptCompareHistogramVector); + FindGoodTitle(ptCompareHistogramVector); + cout << "Returned from find good title" << endlr; gROOT->SetStyle("RadHard_NoTitle"); @@ -760,11 +764,6 @@ Bool_t CompareLeageCurrent(vector* ptCompareHistogramClassVector return 1; } - -Bool_t plotAllRuns() { - return plotAllRuns(&compareHistogramClassVector); -} - Bool_t testifMixingCalibration(vector* ptCompareHistogramClassVector) { if ( !ptCompareHistogramClassVector->size() ) { diff --git a/MABS_run_analyzer/Run.c b/MABS_run_analyzer/Run.c index b2993e0..bc0b94c 100644 --- a/MABS_run_analyzer/Run.c +++ b/MABS_run_analyzer/Run.c @@ -1244,7 +1244,7 @@ Bool_t Run::binNoise(HistogramType* oneHistogramClass) Bool_t Run::binF0() { - averageF0Hist =new TH1F(Form("%d AvgF0 for whole chip",labbook.runnumber), Form("%d AvgF0 for whole chip",labbook.runnumber), processed->fHitTree->GetEntries(), 0, processed->fHitTree->GetEntries()); + averageF0Hist = (TH1FO*) new TH1F(Form("%d AvgF0 for whole chip",labbook.runnumber), Form("%d AvgF0 for whole chip",labbook.runnumber), processed->fHitTree->GetEntries(), 0, processed->fHitTree->GetEntries()); averageF0Hist->SetLineStyle(rootlinestyle[plotStyle]); averageF0Hist->SetLineColor(rootcolors[plotStyle]); averageF0Hist->SetStats(kTRUE); @@ -1254,6 +1254,7 @@ Bool_t Run::binF0() averageF0Hist->GetYaxis()->SetTitle("AverageF0"); averageF0Hist->GetXaxis()->CenterTitle(); averageF0Hist->GetYaxis()->CenterTitle(); + averageF0Hist->itsHistogramType = histogram; labbook.averageF0 = 0; labbook.sigmaF0 = 0; for (Int_t framei=0; frameifHitTree->GetEntries(); framei++) // loop over all frames @@ -1274,7 +1275,7 @@ Bool_t Run::binF0() labbook.sigmaF0 /= processed->fHitTree->GetEntries(); labbook.sigmaF0 = sqrt(labbook.sigmaF0); - averageF0PixelwiseStart =new TH1F(Form("%d AvgF0 per Pixel, first 1000 frames",labbook.runnumber), Form("%d AvgF0 per Pixel, first 1000 frames",labbook.runnumber), cursensorinfo.columns * cursensorinfo.rows, 0, cursensorinfo.columns * cursensorinfo.rows); + averageF0PixelwiseStart = (TH1FO*) new TH1F(Form("%d AvgF0 per Pixel, first 1000 frames",labbook.runnumber), Form("%d Average F0 per Pixel, first 1000 frames",labbook.runnumber), cursensorinfo.columns * cursensorinfo.rows, 0, cursensorinfo.columns * cursensorinfo.rows); averageF0PixelwiseStart->SetLineStyle(1); averageF0PixelwiseStart->SetLineColor(1); averageF0PixelwiseStart->SetStats(kTRUE); @@ -1283,8 +1284,9 @@ Bool_t Run::binF0() averageF0PixelwiseStart->GetXaxis()->SetTitle("pixel #"); averageF0PixelwiseStart->GetYaxis()->SetTitle("Average F0"); averageF0PixelwiseStart->GetXaxis()->CenterTitle(); - averageF0PixelwiseStart->GetYaxis()->CenterTitle(); - averageF0DistrStart =new TH1F(Form("%d AvgF0, first 1000 frames",labbook.runnumber), Form("%d AvgF0, first 1000 frames",labbook.runnumber), 10000, 0, 10000); + averageF0PixelwiseStart->GetYaxis()->CenterTitle(); + averageF0PixelwiseStart->itsHistogramType = histogram; + averageF0DistrStart = (TH1FO*) new TH1F(Form("%d AvgF0, first 1000 frames",labbook.runnumber), Form("%d Average F0, first 1000 frames",labbook.runnumber), 10000, 0, 10000); averageF0DistrStart->SetLineStyle(1); averageF0DistrStart->SetLineColor(1); averageF0DistrStart->SetStats(kTRUE); @@ -1293,26 +1295,26 @@ Bool_t Run::binF0() averageF0DistrStart->GetXaxis()->SetTitle("Average F0"); averageF0DistrStart->GetYaxis()->SetTitle("counts"); averageF0DistrStart->GetXaxis()->CenterTitle(); - averageF0DistrStart->GetYaxis()->CenterTitle(); + averageF0DistrStart->GetYaxis()->CenterTitle(); + averageF0DistrStart->itsHistogramType = histogram; + averageF0PixelwiseEnd = (TH1FO*) averageF0PixelwiseStart->Clone(); + averageF0PixelwiseEnd->SetNameTitle(Form("%d AvgF0 per Pixel, last 1000 frames",labbook.runnumber),Form("%d AvgF0 per Pixel, last 1000 frames",labbook.runnumber)); + averageF0PixelwiseEnd->SetLineColor(12); + averageF0PixelwiseEnd->itsHistogramType = histogram; + averageF0DistrEnd = (TH1FO*) averageF0DistrStart->Clone(); + averageF0DistrEnd->SetNameTitle(Form("%d AvgF0, last 1000 frames",labbook.runnumber),Form("%d Average F0, last 1000 frames",labbook.runnumber)); + averageF0DistrEnd->SetLineColor(12); + averageF0DistrEnd->itsHistogramType = histogram; - for (Int_t framei=processed->fHitTree->GetEntries()-1000; frameifHitTree->GetEntries(); framei++) { // loop over all frames - processed->getFrame(framei); - for (Int_t pixeli=0; pixeliGetF0Frame(); - avgF0ForPixel[pixeli] += fF0matrix[pixeli]; // sum up all pedestals for a given pixel, we need this to calculate an average F0 (average signal) - numberofconsideredpixel++; - } - Double_t const probabilities[] = {0.158655254, 0.5, 1-0.158655254}; // sigma/2 from gaus to the left and to the right //{0.17, 0.5, 1-0.17}; Double_t avgF0ForPixel [cursensorinfo.columns*cursensorinfo.rows]; Double_t numberofconsideredpixel = 0; Int_t* fF0matrix; + for (Int_t pixeli=0; pixeligetFrame(framei); for (Int_t pixeli=0; pixeliFill(pixeli+1, avgF0ForPixel[pixeli]); @@ -1332,18 +1333,10 @@ Bool_t Run::binF0() // next histograms - averageF0PixelwiseEnd = (TH1F*) averageF0PixelwiseStart->Clone(); - averageF0PixelwiseEnd->SetLineColor(11); - averageF0DistrEnd = (TH1F*) averageF0DistrStart->Clone(); - averageF0DistrEnd->SetLineColor(11); numberofconsideredpixel = 0; - // Avarege F0 wird überall nicht Null gesetzt, deshalb der doppelter Wert. !! - // Unsere Loesungsansatz ist eine zwei For Schleife - // for (Int_t framei=processed->fHitTree->GetEntries()-1000; frameifHitTree->GetEntries(); framei++) { // loop over all frames - for (Int_t pixeli=0; pixelifHitTree->GetEntries()-1000; frameifHitTree->GetEntries(); framei++) { // loop over all frames processed->getFrame(framei); @@ -1363,17 +1356,15 @@ Bool_t Run::binF0() } - TCanvas *c1 = new TCanvas("c1","c1",600,400); - averageF0DistrStart->Draw(""); - averageF0DistrEnd->Draw("SAME"); - c1->Update(); - - TCanvas *c2 = new TCanvas("c2","c2",600,400); - averageF0PixelwiseStart->Draw(""); - averageF0PixelwiseEnd->Draw("SAME"); - c2->Update(); - - +// TCanvas *c1 = new TCanvas("c1","c1",600,400); +// averageF0DistrStart->Draw(""); +// averageF0DistrEnd->Draw("SAME"); +// c1->Update(); +// +// TCanvas *c2 = new TCanvas("c2","c2",600,400); +// averageF0PixelwiseStart->Draw(""); +// averageF0PixelwiseEnd->Draw("SAME"); +// c2->Update(); return 0; diff --git a/MABS_run_analyzer/Run.h b/MABS_run_analyzer/Run.h index aeb7be9..f0ac8cf 100644 --- a/MABS_run_analyzer/Run.h +++ b/MABS_run_analyzer/Run.h @@ -405,14 +405,14 @@ public: vector HistogramClassVector; /** @brief The average F0 value of the run over the complete chip in dependance of the time */ - TH1F* averageF0Hist = 0; + TH1FO* averageF0Hist = 0; /** @brief The average F0 value of the run over some frames, for each pixel */ - TH1F* averageF0PixelwiseStart = 0; // Over first 1000 frames - TH1F* averageF0PixelwiseEnd = 0; // Over last 1000 frames + TH1FO* averageF0PixelwiseStart = 0; // Over first 1000 frames + TH1FO* averageF0PixelwiseEnd = 0; // Over last 1000 frames - TH1F* averageF0DistrStart = 0; // Over first 1000 frames - TH1F* averageF0DistrEnd = 0; // Over last 1000 frames + TH1FO* averageF0DistrStart = 0; // Over first 1000 frames + TH1FO* averageF0DistrEnd = 0; // Over last 1000 frames /** @brief Plots all histograms from #Run::HistogramType into one canvas * -- 2.43.0