Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:22:56

0001 // @(#)root/tmva $Id$
0002 // Author: Dominik Dannheim, Alexander Voigt
0003 
0004 /**********************************************************************************
0005  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       *
0006  * Package: TMVA                                                                  *
0007  * Classes: PDEFoamKernelGauss                                                    *
0008  *                                             *
0009  *                                                                                *
0010  * Description:                                                                   *
0011  *      PDEFoam kernel, which weights all cell values by a gauss function.        *
0012  *                                                                                *
0013  * Authors (alphabetical):                                                        *
0014  *      S. Jadach        - Institute of Nuclear Physics, Cracow, Poland           *
0015  *      Tancredi Carli   - CERN, Switzerland                                      *
0016  *      Dominik Dannheim - CERN, Switzerland                                      *
0017  *      Alexander Voigt  - TU Dresden, Germany                                    *
0018  *                                                                                *
0019  * Copyright (c) 2008, 2010:                                                      *
0020  *      CERN, Switzerland                                                         *
0021  *      MPI-K Heidelberg, Germany                                                 *
0022  *                                                                                *
0023  * Redistribution and use in source and binary forms, with or without             *
0024  * modification, are permitted according to the terms listed in LICENSE           *
0025  * (see tmva/doc/LICENSE)                                          *
0026  **********************************************************************************/
0027 
0028 #ifndef ROOT_TMVA_PDEFoamKernelGauss
0029 #define ROOT_TMVA_PDEFoamKernelGauss
0030 
0031 #include "TMVA/PDEFoam.h"
0032 #include "TMVA/PDEFoamKernelBase.h"
0033 #include <vector>
0034 
0035 namespace TMVA
0036 {
0037 
0038    class PDEFoamKernelGauss : public PDEFoamKernelBase
0039    {
0040 
0041    protected:
0042       Float_t fSigma;          ///< width of gauss curve
0043 
0044       // Square function (fastest implementation)
0045       template<typename T> T Sqr(T x) const { return x * x; }
0046 
0047       // calculate gaussian weight
0048       Float_t WeightGaus(PDEFoam*, PDEFoamCell*, std::vector<Float_t>&);
0049 
0050       // estimate the cell value by its neighbors
0051       Float_t GetAverageNeighborsValue(PDEFoam*, std::vector<Float_t>&, ECellValue);
0052 
0053    public:
0054       PDEFoamKernelGauss(Float_t sigma);    // Constructor
0055       PDEFoamKernelGauss(const PDEFoamKernelGauss&); // Copy Constructor
0056       virtual ~PDEFoamKernelGauss() {}      // Destructor
0057 
0058       // kernel estimator
0059       virtual Float_t Estimate(PDEFoam*, std::vector<Float_t>&, ECellValue);
0060 
0061       ClassDef(PDEFoamKernelGauss, 1) // Gaussian PDEFoam kernel estimator
0062          }; // end of PDEFoamKernelGauss
0063 }  // namespace TMVA
0064 
0065 #endif