ATLAS Offline Software
Loading...
Searching...
No Matches
eflowCellIntegrator< expType > Class Template Reference

Class that controls the 2D integration. More...

#include <eflowCellIntegrator.h>

Collaboration diagram for eflowCellIntegrator< expType >:

Public Member Functions

 eflowCellIntegrator (double stdDev, double error)
 eflowCellIntegrator (const eflowCellIntegrator &original)
eflowCellIntegratoroperator= (const eflowCellIntegrator &original)
 ~eflowCellIntegrator ()
double integrate (const eflowRange &etaRange, const eflowRange &phiRange)
 Main method, which starts the integration.
double evaluate (double eta)
 Evaluate method for the outer (i.e.

Private Attributes

std::unique_ptr< eflowCellIntegrand<(Exp_t) expType > > m_integrand2D
eflowRecursiveGaussLegendreIntegrator< eflowCellIntegrator< expType > > m_outerIntegrator
eflowRecursiveGaussLegendreIntegrator< eflowCellIntegrand<(Exp_t) expType > > m_innerIntegrator
eflowRange m_rangePhi

Detailed Description

template<int expType>
class eflowCellIntegrator< expType >

Class that controls the 2D integration.

Holds two eflowRecursiveGaussLegendreIntegrators, one to perform the outer (i.e. eta) and one to perform the inner (i.e. phi) integration. The class itself acts as the integrand of the outer integration. Its evaluate method performs a full integral in phi at the given eta value. (This is how the 2D integration is achieved.) The integrand of the inner (i.e. phi) integration is an eflowCellIntegrand.

To evaluate the actual Gaussian, either std::exp or eflowLookupExp is used, depending on the value of the template parameter (see eflowCellIntegrand). Templates are used instead of polymorphism here due to the better CPU performance.

Definition at line 154 of file eflowCellIntegrator.h.

Constructor & Destructor Documentation

◆ eflowCellIntegrator() [1/2]

template<int expType>
eflowCellIntegrator< expType >::eflowCellIntegrator ( double stdDev,
double error )
inline

Definition at line 156 of file eflowCellIntegrator.h.

Class that controls the 2D integration.
eflowRecursiveGaussLegendreIntegrator< eflowCellIntegrand<(Exp_t) expType > > m_innerIntegrator
std::unique_ptr< eflowCellIntegrand<(Exp_t) expType > > m_integrand2D
eflowRecursiveGaussLegendreIntegrator< eflowCellIntegrator< expType > > m_outerIntegrator

◆ eflowCellIntegrator() [2/2]

◆ ~eflowCellIntegrator()

template<int expType>
eflowCellIntegrator< expType >::~eflowCellIntegrator ( )
inline

Definition at line 167 of file eflowCellIntegrator.h.

167{}

Member Function Documentation

◆ evaluate()

template<int expType>
double eflowCellIntegrator< expType >::evaluate ( double eta)
inline

Evaluate method for the outer (i.e.

eta) integration (invoked by m_outerIntegrator)

Definition at line 178 of file eflowCellIntegrator.h.

178 {
179 /* Set the eta (square) value for the inner integration */
180 m_integrand2D->setEtaSq(eta*eta);
181 /* Perform the inner (i.e. phi) integration (will invoke the evaluate() method on m_innerIntegrator) */
182 return m_innerIntegrator.integrate(m_rangePhi);
183 }

◆ integrate()

template<int expType>
double eflowCellIntegrator< expType >::integrate ( const eflowRange & etaRange,
const eflowRange & phiRange )
inline

Main method, which starts the integration.

Definition at line 170 of file eflowCellIntegrator.h.

170 {
171 /* Store the phi range for the inner integration */
173 /* Invoke the outer integration */
174 return m_outerIntegrator.integrate(etaRange);
175 }

◆ operator=()

template<int expType>
eflowCellIntegrator & eflowCellIntegrator< expType >::operator= ( const eflowCellIntegrator< expType > & original)
inline

Member Data Documentation

◆ m_innerIntegrator

template<int expType>
eflowRecursiveGaussLegendreIntegrator<eflowCellIntegrand<(Exp_t)expType> > eflowCellIntegrator< expType >::m_innerIntegrator
private

Definition at line 188 of file eflowCellIntegrator.h.

◆ m_integrand2D

template<int expType>
std::unique_ptr<eflowCellIntegrand<(Exp_t)expType> > eflowCellIntegrator< expType >::m_integrand2D
private

Definition at line 186 of file eflowCellIntegrator.h.

◆ m_outerIntegrator

template<int expType>
eflowRecursiveGaussLegendreIntegrator<eflowCellIntegrator<expType> > eflowCellIntegrator< expType >::m_outerIntegrator
private

Definition at line 187 of file eflowCellIntegrator.h.

◆ m_rangePhi

template<int expType>
eflowRange eflowCellIntegrator< expType >::m_rangePhi
private

Definition at line 189 of file eflowCellIntegrator.h.


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