]> jspc29.x-matter.uni-frankfurt.de Git - radhard.git/commitdiff
Analyzer
authorBenjamin Linnik <blinnik@jspc61.x-matter.uni-frankfurt.de>
Wed, 13 Dec 2017 18:47:46 +0000 (19:47 +0100)
committerBenjamin Linnik <blinnik@jspc61.x-matter.uni-frankfurt.de>
Wed, 13 Dec 2017 18:47:46 +0000 (19:47 +0100)
MABS_run_analyzer/HistogramType.c
MABS_run_analyzer/Run.c

index c10d2ad1c13b65e05a760cc60ca24a707d83d50c..0bc88e2163daa8fd58f9f42808d60d13130eae07 100644 (file)
@@ -416,21 +416,30 @@ Double_t* HistogramType::FitPerform(TH1FO* histogrampointer, TString fitFuncType
         
         histogrampointer->GetXaxis()->UnZoom(); // resets range
         Int_t binPosMaxHist = histogrampointer->FindLastBinAbove(1,1);
-        Int_t binPosMaxPeak = 0;
-        TString histogramname = histogrampointer->GetName();
         posMaxValHist = (histogrampointer->GetBinCenter(binPosMaxHist));
+        histogrampointer->GetXaxis()->SetRange(histogrampointer->GetXaxis()->FindBin(noiseborder),histogrampointer->GetXaxis()->FindBin(posMaxValHist));   // look only for maxima with x greater than noiseborder, cut away noise
+        Int_t binPosMaxPeak = histogrampointer->GetMaximumBin();
+        Double_t valueMaxPeak = histogrampointer->GetBinCenter(binPosMaxPeak);
+        
+        TString histogramname = histogrampointer->GetName();
         Bool_t do_loop = kTRUE;        
         Int_t loopi = 0;  
-        do {    
-            histogrampointer->GetXaxis()->SetRange(histogrampointer->GetXaxis()->FindBin(noiseborder*(++loopi)),histogrampointer->GetXaxis()->FindBin(posMaxValHist));   // look only for maxima with x greater than noiseborder, cut away noise
+        do {
+            binPosMaxHist = histogrampointer->FindLastBinAbove(valueMaxPeak/5,1);
+            posMaxValHist = (histogrampointer->GetBinCenter(binPosMaxHist));
+            
+            histogrampointer->GetXaxis()->SetRange(histogrampointer->GetXaxis()->FindBin(noiseborder*++loopi),histogrampointer->GetXaxis()->FindBin(posMaxValHist));   // look only for maxima with x greater than noiseborder, cut away noise
             binPosMaxPeak = histogrampointer->GetMaximumBin();  
+            
             // if Sum peak, than the peak must be in the right region of the whole histogram, so search for it
-            if (!histogramname.Contains("Sum") || ( binPosMaxPeak > binPosMaxHist/2)  || (loopi > 3) ) {
-//                 cout << "Exit loop, loopi: " << loopi << " binPosMaxPeak > binPosMaxHist/2: " << binPosMaxPeak << " > " << binPosMaxHist/2 << endlr;
+            //             cout << colorcyan << "binPosMaxPeak: " << binPosMaxPeak << endlr;
+            //             cout << colorcyan << "binPosMaxHist/2: " << binPosMaxHist/2 << endlr;
+            if (!(histogramname.Contains("Sum")) || ( binPosMaxPeak > binPosMaxHist/2)  || (loopi > 3) ) {
                 do_loop = kFALSE;
                 noiseborder = noiseborder*loopi;
+                //                 cout << colorcyan << "loopi: " << posMaxValHist << endlr;
             }
-        } while ( do_loop );        
+        } while ( do_loop );       
         if (histogramname.Contains("Sum")) {
             noiseborder = (histogrampointer->GetBinCenter(binPosMaxPeak/2)); // if Sum peak is fitted, otherwise fits fails too often
         }
@@ -731,7 +740,7 @@ Double_t* HistogramType::FitPerform(TH1FO* histogrampointer, TString fitFuncType
         Bool_t do_loop = kTRUE;        
         Int_t loopi = 0;  
         do {
-            binPosMaxHist = histogrampointer->FindLastBinAbove(valueMaxPeak/10,1);
+            binPosMaxHist = histogrampointer->FindLastBinAbove(valueMaxPeak/5,1);
             posMaxValHist = (histogrampointer->GetBinCenter(binPosMaxHist));
             
             histogrampointer->GetXaxis()->SetRange(histogrampointer->GetXaxis()->FindBin(noiseborder*++loopi),histogrampointer->GetXaxis()->FindBin(posMaxValHist));   // look only for maxima with x greater than noiseborder, cut away noise
index 6b7a33f6af82d4ca645c9ce7c3dd6f7c5f41224a..db029d6c747ff03dd9d3cc5885f3fbbc0f30effc 100644 (file)
@@ -2407,7 +2407,7 @@ TCanvas* Run::plot1DHistogram(HistogramType* HistogramTypepointer, TH1FO* onehis
         
         Float_t startvalue = onehistogram->GetBinLowEdge(onehistogram->FindFirstBinAbove(0));
         Float_t endrange = onehistogram->GetBinCenter(onehistogram->FindLastBinAbove(0));
-        onehistogram->GetXaxis()->SetRange(fitstart, endrange);
+        onehistogram->GetXaxis()->SetRangeUser(fitstart, endrange);
         Float_t endrangeY = onehistogram->GetMaximum();
         onehistogram->GetXaxis()->SetRangeUser(fitstart,endrange*1.1);
         if (logscale)