]> jspc29.x-matter.uni-frankfurt.de Git - radhard.git/commitdiff
Analyzer: Reorganized code, made ChargeSpectrum.C more handy
authorBenjamin Linnik <blinnik@jspc61.x-matter.uni-frankfurt.de>
Mon, 13 Nov 2017 10:42:44 +0000 (11:42 +0100)
committerBenjamin Linnik <blinnik@jspc61.x-matter.uni-frankfurt.de>
Mon, 13 Nov 2017 10:42:44 +0000 (11:42 +0100)
MABS_run_analyzer/ChargeSpektrum.c
MABS_run_analyzer/ChargeSpektrumFunctions.c
MABS_run_analyzer/Run.c
MABS_run_analyzer/Run.h

index e8b065ba42c9576cc6de3835ea1244e796a7d1df..71f7107efff1ef170e404419cdc948673a5a5975 100644 (file)
@@ -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<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)
@@ -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<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];
@@ -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<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];
@@ -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<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();
                      
@@ -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<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;
 }
index ff3cb471232c492b57795f5c8dc68d4505e470c8..db281ea00a3243e506b31f2ddd725b5f166d0fe5 100644 (file)
@@ -25,7 +25,6 @@ using namespace std;
 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;
@@ -83,7 +82,7 @@ TCanvas* plot1DData(std::vector<TNtupleO*>* ntuplepvectorpointer, Bool_t verbose
  * */
 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 
@@ -98,9 +97,13 @@ Bool_t printSummaryTable(vector<HistogramType*>*);
 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;
 
@@ -474,7 +477,7 @@ Bool_t writeOneHistogramTypeToFile(vector<HistogramType*>* ptCompareHistogramCla
 }
 
 
-Bool_t writeObservableToFile()
+Bool_t writeObservableToFile(vector<TH1FO*>* ptCompareHistogramVector)
 {
     if (numberRuns>0)
     {
@@ -496,7 +499,7 @@ Bool_t writeObservableToFile()
         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;
@@ -504,7 +507,7 @@ Bool_t writeObservableToFile()
         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;
@@ -520,7 +523,8 @@ Bool_t CompareHistograms(vector<TH1FO*>* 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<HistogramType*>* ptCompareHistogramClassVector
     return 1;
 }
 
-
-Bool_t plotAllRuns() {
-    return plotAllRuns(&compareHistogramClassVector);
-}
-
 Bool_t testifMixingCalibration(vector<HistogramType*>* ptCompareHistogramClassVector) {
     if ( !ptCompareHistogramClassVector->size() )
     {
index b2993e07ffa49cd41d79e6aea8700e1ebdc169a4..bc0b94c1b9610e3e9c52f106c940ff87df4be5a1 100644 (file)
@@ -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; framei<processed->fHitTree->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; 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
@@ -1322,8 +1324,7 @@ Bool_t Run::binF0()
                 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]);
@@ -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; 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);
@@ -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;
index aeb7be9dd632a543f8abe1bb1b099bb86e5ca046..f0ac8cf23a573e3f7c5ba9cb25b0e9b58b2d42a6 100644 (file)
@@ -405,14 +405,14 @@ public:
     vector<HistogramType*> 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 
      *