CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Private Attributes
GeometricAnnealing Class Reference

#include <GeometricAnnealing.h>

Inheritance diagram for GeometricAnnealing:
AnnealingSchedule DefaultMVFAnnealing

Classes

class  A
 

Public Member Functions

void anneal () override
 
GeometricAnnealingclone () const override
 
double currentTemp () const override
 
double cutoff () const override
 
void debug () const override
 
 GeometricAnnealing (const double cutoff=3.0, const double T=256.0, const double annealing_ratio=0.25)
 
double initialTemp () const override
 
bool isAnnealed () const override
 
double phi (double chi2) const override
 
void resetAnnealing () override
 
double weight (double chi2) const override
 
- Public Member Functions inherited from AnnealingSchedule
virtual ~AnnealingSchedule ()
 

Private Attributes

double theChi2cut
 
double theRatio
 
double theT
 
double theT0
 

Detailed Description

Definition at line 7 of file GeometricAnnealing.h.

Constructor & Destructor Documentation

GeometricAnnealing::GeometricAnnealing ( const double  cutoff = 3.0,
const double  T = 256.0,
const double  annealing_ratio = 0.25 
)

Definition at line 7 of file GeometricAnnealing.cc.

8  : theT0(T), theT(T), theChi2cut(cutoff * cutoff), theRatio(ratio) {}
double cutoff() const override
long double T

Member Function Documentation

void GeometricAnnealing::anneal ( )
overridevirtual

Implements AnnealingSchedule.

Definition at line 10 of file GeometricAnnealing.cc.

References theRatio, and theT.

10 { theT = 1 + (theT - 1) * theRatio; }
GeometricAnnealing* GeometricAnnealing::clone ( void  ) const
inlineoverridevirtual

Implements AnnealingSchedule.

Definition at line 42 of file GeometricAnnealing.h.

42 { return new GeometricAnnealing(*this); };
GeometricAnnealing(const double cutoff=3.0, const double T=256.0, const double annealing_ratio=0.25)
double GeometricAnnealing::currentTemp ( ) const
overridevirtual

Implements AnnealingSchedule.

Definition at line 33 of file GeometricAnnealing.cc.

References theT.

33 { return theT; }
double GeometricAnnealing::cutoff ( ) const
overridevirtual

Implements AnnealingSchedule.

Definition at line 28 of file GeometricAnnealing.cc.

References mathSSE::sqrt(), and theChi2cut.

28  {
29  // std::cout << "[GeometricAnnealing] cutoff called!" << std::endl;
30  return sqrt(theChi2cut);
31 }
T sqrt(T t)
Definition: SSEVec.h:19
void GeometricAnnealing::debug ( ) const
overridevirtual

Implements AnnealingSchedule.

Definition at line 39 of file GeometricAnnealing.cc.

References gather_cfg::cout, theChi2cut, theRatio, and theT0.

39  {
40  std::cout << "[GeometricAnnealing] chi2_cut=" << theChi2cut << ", Tini=" << theT0 << ", ratio=" << theRatio
41  << std::endl;
42 }
tuple cout
Definition: gather_cfg.py:144
double GeometricAnnealing::initialTemp ( ) const
overridevirtual

Implements AnnealingSchedule.

Definition at line 35 of file GeometricAnnealing.cc.

References theT0.

35 { return theT0; }
bool GeometricAnnealing::isAnnealed ( ) const
overridevirtual

is it annealed yet?

Implements AnnealingSchedule.

Definition at line 37 of file GeometricAnnealing.cc.

References theT.

37 { return (theT < 1.02); }
double GeometricAnnealing::phi ( double  chi2) const
overridevirtual

phi ( chi2 ) = e^( -.5 * chi2 / T )

Implements AnnealingSchedule.

Definition at line 26 of file GeometricAnnealing.cc.

References funct::exp(), and theT.

Referenced by Particle.Particle::__str__(), ntupleDataFormat.Track::phiPull(), and weight().

26 { return exp(-.5 * chi2 / theT); }
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
void GeometricAnnealing::resetAnnealing ( )
overridevirtual

Implements AnnealingSchedule.

Definition at line 24 of file GeometricAnnealing.cc.

References theT, and theT0.

double GeometricAnnealing::weight ( double  chi2) const
overridevirtual

Returns phi(chi2) / ( phi(cutoff^2) + phi(chi2) ),

Implements AnnealingSchedule.

Definition at line 12 of file GeometricAnnealing.cc.

References edm::isNotFinite(), phi(), and theChi2cut.

12  {
13  double mphi = phi(chi2);
14  long double newtmp = mphi / (mphi + phi(theChi2cut));
15  if (edm::isNotFinite(newtmp)) {
16  if (chi2 < theChi2cut)
17  newtmp = 1.;
18  else
19  newtmp = 0.;
20  }
21  return newtmp;
22 }
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
double phi(double chi2) const override

Member Data Documentation

double GeometricAnnealing::theChi2cut
private

Definition at line 47 of file GeometricAnnealing.h.

Referenced by cutoff(), debug(), and weight().

double GeometricAnnealing::theRatio
private

Definition at line 48 of file GeometricAnnealing.h.

Referenced by anneal(), and debug().

double GeometricAnnealing::theT
private

Definition at line 46 of file GeometricAnnealing.h.

Referenced by anneal(), currentTemp(), isAnnealed(), phi(), and resetAnnealing().

double GeometricAnnealing::theT0
private

Definition at line 42 of file GeometricAnnealing.h.

Referenced by debug(), initialTemp(), and resetAnnealing().