Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

TGo4FitPeakFinder.h

Go to the documentation of this file.
00001 //-------------------------------------------------------------
00002 //        Go4 Release Package v3.04-01 (build 30401)
00003 //                      28-November-2008
00004 //---------------------------------------------------------------
00005 //   The GSI Online Offline Object Oriented (Go4) Project
00006 //   Experiment Data Processing at EE department, GSI
00007 //---------------------------------------------------------------
00008 //
00009 //Copyright (C) 2000- Gesellschaft f. Schwerionenforschung, GSI
00010 //                    Planckstr. 1, 64291 Darmstadt, Germany
00011 //Contact:            http://go4.gsi.de
00012 //----------------------------------------------------------------
00013 //This software can be used under the license agreements as stated
00014 //in Go4License.txt file which is part of the distribution.
00015 //----------------------------------------------------------------
00016 #ifndef TGO4FITPEAKFINDER_H
00017 #define TGO4FITPEAKFINDER_H
00018 
00019 #include "TGo4FitterAction.h"
00020 
00021 #include "TArrayD.h"
00022 
00023 class TGo4Fitter;
00024 class TGo4FitData;
00025 
00032 class TGo4FitPeakFinder : public TGo4FitterAction {
00033    public:
00034 
00038       TGo4FitPeakFinder();
00039 
00044       TGo4FitPeakFinder(const char* Name, const char* DataName = 0, Bool_t ClearModels = kFALSE, Int_t PolOrder = -1);
00045 
00049       virtual ~TGo4FitPeakFinder();
00050 
00051       void SetDataName(const char* name) { fxDataName = name; }
00052       const char* GetDataName() { return fxDataName.Data(); }
00053       void SetClearModels(Bool_t clear) { fbClearModels = clear; }
00054       Bool_t GetClearModels() { return fbClearModels; }
00055 
00056 
00057       void SetupPolynomialBackground(Int_t PolynomOrder);
00058 
00059       void SetupForFirst(Double_t MaxAmplFactor, Double_t MinWidth, Double_t MaxWidth);
00060 
00061       void SetupForSecond(Double_t LineWidth);
00062 
00063       void SetupForThird(Double_t NoiseFactor, Double_t NoiseMinimum, Int_t ChannelSum);
00064 
00065       virtual void DoAction(TGo4FitterAbstract* Fitter);
00066 
00067       virtual Bool_t CanChangeFitter() const { return kTRUE; }
00068 
00069       // Following functions directly changes single parameters of peakfinders.
00070       // Normally you should not use them, because some or all of them can be changed later on
00071       // You should use Setup... routines to configure specific peakfinder
00072 
00073       void SetUsePolynom(Bool_t use) { fbUsePolynom = use; }
00074       Bool_t GetUsePolynom() { return fbUsePolynom; }
00075       void SetPolynomOrder(Int_t order) { fiPolynomOrder = order; }
00076       Int_t GetPolynomOrder() { return fiPolynomOrder; }
00077 
00078       void SetPeakFinderType(Int_t typ) { fiPeakFinderType = typ; }
00079       Int_t GetPeakFinderType() { return fiPeakFinderType; }
00080 
00081       void Set0MaxAmplFactor(Double_t factor) { fd0MaxAmplFactor = factor; }
00082       Double_t Get0MaxAmplFactor() { return fd0MaxAmplFactor; }
00083       void Set0MinWidth(Double_t min) { fd0MinWidth = min; }
00084       Double_t Get0MinWidth() { return fd0MinWidth; }
00085       void Set0MaxWidth(Double_t max) { fd0MaxWidth = max; }
00086       Double_t Get0MaxWidth() { return fd0MaxWidth; }
00087 
00088       void Set1LineWidth(Double_t width) { fd1LineWidth = width; }
00089       Double_t Get1LineWidth() { return fd1LineWidth; }
00090 
00091       void Set2NoiseFactor(Double_t factor) { fd2NoiseFactor = factor; }
00092       Double_t Get2NoiseFactor() { return fd2NoiseFactor; }
00093       void Set2NoiseMinimum(Double_t min) { fd2NoiseMinimum = min; }
00094       Double_t Get2NoiseMinimum() { return fd2NoiseMinimum; }
00095       void Set2ChannelSum(Int_t sum) { fi2ChannelSum = sum; }
00096       Int_t Get2ChannelSum() { return fi2ChannelSum; }
00097 
00098 
00099 
00103       virtual void Print(Option_t* option) const;
00104 
00105     private:
00106 
00107       void ROOTPeakFinder(TGo4Fitter* fitter,
00108                           TGo4FitData* data,
00109                           Int_t PolynomOrder,
00110                           Double_t Sigma);
00111 
00112 
00120       void SergeyLinevPeakFinder(TGo4Fitter* fitter,
00121                                  TGo4FitData* data,
00122                                  Int_t PolOrder,
00123                                  Double_t AmplThreshold,
00124                                  Double_t MinWidth,
00125                                  Double_t MaxWidth);
00126 
00131       void HansEsselPeakFinder(TGo4Fitter* fitter,
00132                                TGo4FitData* data,
00133                                Int_t MaxNumPeaks = 50,
00134                                Int_t ChannelSum = 1,
00135                                Double_t NoiseFactor = 2.,
00136                                Double_t NoiseMinimum = 10.,
00137                                Int_t MinimasOrder = -1);
00138 
00139       static void DefinePolynom(Int_t size,              // number of experim points
00140                                 Double_t* bins,          // arrray of bins
00141                                 Double_t* scales,        // array of scale values
00142                                 TArrayD& Coef,           // array of polynomial coefficients
00143                                 Double_t* weight = 0,    // statistical weight of each bin
00144                                 Double_t* backgr = 0,    // background values
00145                                 Char_t* use = 0);        // usage of each points
00146 
00147       static void DefinePolynomEx(Int_t size, Double_t* bins, Double_t* scales, Double_t* weight, Double_t* backgr,
00148                                   Int_t lbound, Int_t rbound, TArrayD& Coef);
00149 
00150 
00151       static Double_t CalcPolynom(const TArrayD& Coef, Double_t x);
00152 
00153 
00154       Int_t fiPeakFinderType;   // 0 - by S.Linev,  1 - ROOT TSpectrum , 2 - by H.Essel
00155 
00156       TString fxDataName;
00157 
00158       Bool_t fbClearModels;
00159 
00160       Bool_t fbUsePolynom;
00161       Int_t  fiPolynomOrder;
00162 
00163       Double_t fd0MinWidth;
00164       Double_t fd0MaxWidth;
00165       Double_t fd0MaxAmplFactor;
00166 
00167       Double_t fd1LineWidth;
00168 
00169       Double_t fd2NoiseFactor;
00170       Double_t fd2NoiseMinimum;
00171       Int_t  fi2ChannelSum;
00172 
00173    ClassDef(TGo4FitPeakFinder,1)
00174 };
00175 
00176 #endif // TGO4FITPEAKFINDER_H
00177 
00178 //----------------------------END OF GO4 SOURCE FILE ---------------------

Generated on Fri Nov 28 12:59:13 2008 for Go4-v3.04-1 by  doxygen 1.4.2