LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
hit::GausFitCache Class Reference

A set of TF1 linear sum of base functions (Gaussians) More...

#include "GausFitCache.h"

Inheritance diagram for hit::GausFitCache:
hit::details::CompiledGausFitCacheBaseStruct reco_tool::BaselinedGausFitCache hit::CompiledGausFitCache< MaxGaus > hit::CompiledTruncatedGausFitCache< MaxGaus, CutOff >

Public Member Functions

 GausFitCache (std::string new_name="GausFitCache")
 Constructor; optionally set the name of the repository. More...
 
virtual ~GausFitCache ()
 Destructor. More...
 
std::string GetName () const
 Return the name of this cache. More...
 
virtual TF1 * Get (size_t nFunc)
 Returns a function sum of nFunc base functions. More...
 
virtual TF1 * GetClone (size_t nGaus)
 
virtual std::string FunctionName (size_t nFunc) const
 Returns a name for the function with nFunc base functions. More...
 

Protected Member Functions

virtual TF1 * CreateFunction (size_t nFunc) const
 Creates a new sum function. More...
 

Protected Attributes

std::string name
 name of the cache More...
 
std::vector< TF1 * > funcs
 

Detailed Description

A set of TF1 linear sum of base functions (Gaussians)


This object holds and owns a number of functions that are linear sum of "base" functions. The original use is for Gaussian functions, and this class implements Gaussians as base functions. This class is used as a base class for other function caches that do not necessarily use Gaussian base functions.

The idea is that if you need a temporary function to perform a fit and extract the parameters, you can reuse the same function over and over rather than creating a new one each time.

The expected use for an algorithm is to have one of these caches as a data member and when the algorithm code needs a function it obtains it with:

TF1* pFunc = fitcache.Get(nGaussians);

Then pFunc is used for fitting but never destroyed.

Definition at line 45 of file GausFitCache.h.

Constructor & Destructor Documentation

hit::GausFitCache::GausFitCache ( std::string  new_name = "GausFitCache")
inline

Constructor; optionally set the name of the repository.

Definition at line 48 of file GausFitCache.h.

References ~GausFitCache().

48 : name(new_name) {}
std::string name
name of the cache
Definition: GausFitCache.h:77
hit::GausFitCache::~GausFitCache ( )
virtual

Destructor.

Definition at line 38 of file GausFitCache.cxx.

References funcs.

Referenced by GausFitCache().

39  {
40  std::for_each(funcs.begin(), funcs.end(), std::default_delete<TF1>());
41  } // GausFitCache::~GausFitCache()
std::vector< TF1 * > funcs
Definition: GausFitCache.h:80

Member Function Documentation

TF1 * hit::GausFitCache::CreateFunction ( size_t  nFunc) const
protectedvirtual

Creates a new sum function.

Reimplemented in hit::CompiledTruncatedGausFitCache< MaxGaus, CutOff >, hit::CompiledGausFitCache< MaxGaus >, and reco_tool::BaselinedGausFitCache.

Definition at line 65 of file GausFitCache.cxx.

References FunctionName().

Referenced by Get().

66  {
67 
68  std::string func_name = FunctionName(nFunc);
69 
70  // no gaussian, no nothing
71  if (nFunc == 0) return new TF1(func_name.c_str(), "0");
72 
73  std::ostringstream sstr;
74  sstr << "gaus(0)";
75  for (size_t iGaus = 1; iGaus < nFunc; ++iGaus)
76  sstr << " + gaus(" << (iGaus * 3) << ")";
77 
78  // create and return the function
79  return new TF1(func_name.c_str(), sstr.str().c_str());
80  } // GausFitCache::CreateFunction()
virtual std::string FunctionName(size_t nFunc) const
Returns a name for the function with nFunc base functions.
std::string hit::GausFitCache::FunctionName ( size_t  nFunc) const
virtual

Returns a name for the function with nFunc base functions.

Definition at line 83 of file GausFitCache.cxx.

References name.

Referenced by hit::details::CompiledGausFitCacheBaseStruct::AppendFunction(), reco_tool::BaselinedGausFitCache::CreateFunction(), CreateFunction(), hit::details::CompiledGausFitCacheBaseStruct::InitializeFuncSumVector< NFunc, Func >::fill(), hit::details::CompiledGausFitCacheBaseStruct::InitializeFuncSumVector< 0U, Func >::fill(), and GetName().

84  {
85  std::ostringstream sstr;
86  sstr << name << "_" << nFunc;
87  return sstr.str();
88  } // GausFitCache::FunctionName()
std::string name
name of the cache
Definition: GausFitCache.h:77
TF1 * hit::GausFitCache::Get ( size_t  nFunc)
virtual

Returns a function sum of nFunc base functions.

Parameters
nGausthe number of base functions in the function
Returns
a pointer to a TF1 with the required characteristics

The returned function must not be deleted at any time!

This implementation returns a function sum of nFunc Gaussians. The parameters are sorted by Gaussian: first normalization (not the area, but the coefficient), first mean, first sigma, second normalization etc.

Definition at line 44 of file GausFitCache.cxx.

References CreateFunction(), and funcs.

Referenced by reco_tool::PeakFitterGaussian::findPeakParameters(), GetClone(), and GetName().

45  {
46 
47  // expand the list if needed
48  if (nFunc >= funcs.size()) funcs.resize(nFunc + 1, nullptr);
49 
50  // get the pointer we need...
51  TF1*& pFunc = funcs[nFunc];
52 
53  if (!pFunc) pFunc = CreateFunction(nFunc);
54 
55  return pFunc;
56  } // GausFitCache::Get()
std::vector< TF1 * > funcs
Definition: GausFitCache.h:80
virtual TF1 * CreateFunction(size_t nFunc) const
Creates a new sum function.
TF1 * hit::GausFitCache::GetClone ( size_t  nGaus)
virtual

Returns a new function sum of nFunc base functions (caller needs to set limits and parameters)

Reimplemented in hit::details::CompiledGausFitCacheBaseStruct.

Definition at line 59 of file GausFitCache.cxx.

References Get().

Referenced by GetName().

60  {
61  return static_cast<TF1*>(Get(nFunc)->Clone());
62  }
virtual TF1 * Get(size_t nFunc)
Returns a function sum of nFunc base functions.
std::string hit::GausFitCache::GetName ( ) const
inline

Return the name of this cache.

Definition at line 54 of file GausFitCache.h.

References FunctionName(), Get(), GetClone(), and name.

54 { return name; }
std::string name
name of the cache
Definition: GausFitCache.h:77

Member Data Documentation

std::string hit::GausFitCache::name
protected

name of the cache

Gaussian sum functions; n-th element is sum of n base functions

Definition at line 77 of file GausFitCache.h.

Referenced by hit::details::CompiledGausFitCacheBaseStruct::CannotCreateFunction(), FunctionName(), and GetName().


The documentation for this class was generated from the following files: