// 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<HistogramType*> compareHistogramClassVectorClassic;
+
+ // variables for calibrated analysis
+ vector<HistogramType*> compareHistogramClassVectorCalibrated;
+
+ // variables for dynamical threshold analysis
+
+ // variables for Sum analysis
+ TNtupleO *datainputIntSum;
+ vector<TNtupleO*> ntupleVectorSum;
+ datainputIntSum =new TNtupleO("Integral Sum", "data", "x:y:xerr:yerr");
+
+ // variables for Seed analysis
TNtupleO *datainputIntSeed;
+ vector<TNtupleO*> 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<TH1FO*> compareHistogramVectorDepletion, compareHistogramVectorDepletionSum;
+ vector<TNtupleO*> ntupleVectorDepltetion1, ntupleVectorDepltetion2, ntupleVectorDepltetion3;
+
+ // variables for temperature analysis
+ vector<HistogramType*> compareHistogramClassVectorTemp;
+ TNtupleO *averageChargeCollectedSeed, *averageChargeCollectedSum;
+ vector<TNtupleO*> 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<TH1FO*> compareHistogramVectorRTSSeed, compareHistogramVectorRTSSum;
+
+ // variables for cluster multiplicity
+ vector<TH1FO*> compareHistogramVectorClusterMultiplicity;
+ vector<TNtupleO*> ntupleVectorAvgChargeColl;
+
for(Int_t runi=0; runi<numberRuns; runi++) // loop over runs read from file or given as aparameters
{
if (runList[runi]>0)
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<HistogramType*> 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];
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<HistogramType*> 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<TH1FO*> 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<TH1FO*> 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<TH1FO*> 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<TH1FO*> 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];
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];
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<TH1FO*> 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();
}
}
} // 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<TH1FO*> > ::iterator curHistogramVector = compareHistogramVectorVector.begin(); curHistogramVector != compareHistogramVectorVector.end(); curHistogramVector++) {
+ CompareHistograms(&(*curHistogramVector));
+ writeObservableToFile(&(*curHistogramVector));
+}
+
+for (std::vector< std::vector<HistogramType*> > ::iterator curHistogramClassVector = compareHistogramClassVectorVector.begin(); curHistogramClassVector != compareHistogramClassVectorVector.end(); curHistogramClassVector++) {
+ printSummaryTable(&(*curHistogramClassVector));
+ plotAllRuns(&(*curHistogramClassVector));
+ writeOneHistogramTypeToFile(&(*curHistogramClassVector));
+}
+
+for (std::vector< std::vector<TNtupleO*> > ::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;
}
Int_t* ReadRunList();
Int_t ReadRunList(std::vector<int>*);
void InterpreteUserInput(TString, std::vector<int>*, std::vector<Bool_t>*, std::vector<Bool_t>*, std::vector<Bool_t>*, TString* analysisis);
-Bool_t plotAllRuns();
Bool_t plotAllRuns(vector<HistogramType*>*);
// vector wich is used to save a good title by the function FindGoodTitle()
vector<TString> headerStringsVector;
* */
Bool_t writeNTupleVectorToFile(std::vector<TNtupleO*>* ntuplepvectorpointer);
-Bool_t writeObservableToFile();
+Bool_t writeObservableToFile(vector<TH1FO*>* 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
Bool_t testifMixingCalibration(vector<HistogramType*>*);
/** @brief Turns a value into a string with fixed precision */
string to_str_w_prec(const Float_t a_value, int precision = 1);
-vector<HistogramType*> compareHistogramClassVector, compareHistogramClassVector2, compareHistogramClassVector3, compareHistogramClassVector4, compareHistogramClassVector5, compareHistogramClassVector6, compareHistogramClassVector7, compareHistogramClassVector8, compareHistogramClassVector9, compareHistogramClassVectorMABSBot;
-vector<TH1FO*> compareHistogramVector, compareHistogramVector2, compareHistogramVector3, compareHistogramVector4, compareHistogramVector5, compareHistogramVector6, compareHistogramVector7, compareHistogramVector8, compareHistogramVector9;
-vector<TNtupleO*> ntupleVector, ntupleVector2, ntupleVector3, ntupleVector4, ntupleVector5, ntupleVector6, ntupleVector7, ntupleVector8, ntupleVector9;
+vector<HistogramType*> compareHistogramClassVectorMABSBot;
+//vector<HistogramType*> compareHistogramClassVector, compareHistogramClassVector2, compareHistogramClassVector3, compareHistogramClassVector4, compareHistogramClassVector5, compareHistogramClassVector6, compareHistogramClassVector7, compareHistogramClassVector8, compareHistogramClassVector9, compareHistogramClassVectorMABSBot;
+vector< vector<HistogramType*> > compareHistogramClassVectorVector;
+//vector<TH1FO*> compareHistogramVector, compareHistogramVector2, compareHistogramVector3, compareHistogramVector4, compareHistogramVector5, compareHistogramVector6, compareHistogramVector7, compareHistogramVector8, compareHistogramVector9;
+vector< vector<TH1FO*> > compareHistogramVectorVector;
+// vector<TNtupleO*> ntupleVector, ntupleVector2, ntupleVector3, ntupleVector4, ntupleVector5, ntupleVector6, ntupleVector7, ntupleVector8, ntupleVector9;
+vector< vector<TNtupleO*> > ntupleVectorVector;
TString ownpath = "";
TString savepathresults;
}
-Bool_t writeObservableToFile()
+Bool_t writeObservableToFile(vector<TH1FO*>* ptCompareHistogramVector)
{
if (numberRuns>0)
{
filename+=".dat";
fstream* fout = new fstream(filename,ios::out);
header += Form("#");
- for (vector<TH1FO*>::iterator curHistogram = compareHistogramVector.begin(); curHistogram != compareHistogramVector.end(); curHistogram++) {
+ for (vector<TH1FO*>::iterator curHistogram = ptCompareHistogramVector->begin(); curHistogram != ptCompareHistogramVector->end(); curHistogram++) {
header += Form("bin\t%s\t",(*curHistogram)->GetName());
}
*fout << header << endl;
for(Int_t bin=1;bin<=runs[0]->cursystemparam.nbins;bin++)
{
outline ="";
- for (vector<TH1FO*>::iterator curHistogram = compareHistogramVector.begin(); curHistogram != compareHistogramVector.end(); curHistogram++) {
+ for (vector<TH1FO*>::iterator curHistogram = ptCompareHistogramVector->begin(); curHistogram != ptCompareHistogramVector->end(); curHistogram++) {
outline+=Form("%.1f\t%.1f\t", (*curHistogram)->GetBinCenter(bin), (*curHistogram)->GetBinContent(bin));
}
*fout<<outline<<endl;
{
if (ptCompareHistogramVector->size() > 0)
{
- FindGoodTitle(ptCompareHistogramVector);
+ FindGoodTitle(ptCompareHistogramVector);
+ cout << "Returned from find good title" << endlr;
gROOT->SetStyle("RadHard_NoTitle");
return 1;
}
-
-Bool_t plotAllRuns() {
- return plotAllRuns(&compareHistogramClassVector);
-}
-
Bool_t testifMixingCalibration(vector<HistogramType*>* ptCompareHistogramClassVector) {
if ( !ptCompareHistogramClassVector->size() )
{
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);
averageF0Hist->GetYaxis()->SetTitle("AverageF0");
averageF0Hist->GetXaxis()->CenterTitle();
averageF0Hist->GetYaxis()->CenterTitle();
+ averageF0Hist->itsHistogramType = histogram;
labbook.averageF0 = 0;
labbook.sigmaF0 = 0;
for (Int_t framei=0; framei<processed->fHitTree->GetEntries(); framei++) // loop over all frames
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);
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);
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; framei<processed->fHitTree->GetEntries(); framei++) { // loop over all frames
- processed->getFrame(framei);
- for (Int_t pixeli=0; pixeli<cursensorinfo.columns*cursensorinfo.rows ; pixeli++) { // loop over all pixel
- if (pixeli%cursensorinfo.columns) { // Not marker pixel
- fF0matrix = processed->GetF0Frame();
- 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; pixeli<cursensorinfo.columns*cursensorinfo.rows ; pixeli++) { // loop over all pixel
avgF0ForPixel[pixeli]=0;
}
-
for (Int_t framei = 1000; framei < 2000; framei++) { // loop over 1000 frames
processed->getFrame(framei);
for (Int_t pixeli=0; pixeli<cursensorinfo.columns*cursensorinfo.rows ; pixeli++) { // loop over all pixel
numberofconsideredpixel++;
}
}
- }
-
+ }
for (Int_t pixeli=0; pixeli<cursensorinfo.columns*cursensorinfo.rows ; pixeli++) { // loop over all pixel
avgF0ForPixel[pixeli] /= 1000;
averageF0PixelwiseStart->Fill(pixeli+1, avgF0ForPixel[pixeli]);
// 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; framei<processed->fHitTree->GetEntries(); framei++) { // loop over all frames
- for (Int_t pixeli=0; pixeli<cursensorinfo.columns*cursensorinfo.rows ; pixeli++) { // loop over all pixel
- avgF0ForPixel[pixeli]=0;
- }
- // }
+ for (Int_t pixeli=0; pixeli<cursensorinfo.columns*cursensorinfo.rows ; pixeli++) { // loop over all pixel
+ avgF0ForPixel[pixeli]=0;
+ }
for (Int_t framei=processed->fHitTree->GetEntries()-1000; framei<processed->fHitTree->GetEntries(); framei++) { // loop over all frames
processed->getFrame(framei);
}
- 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;