ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::DetAnnealingMaker Class Reference

This class implements an annealing maker. More...

#include <DetAnnealingMaker.h>

Inheritance diagram for Trk::DetAnnealingMaker:
Collaboration diagram for Trk::DetAnnealingMaker:

Public Member Functions

virtual StatusCode initialize () override
virtual StatusCode finalize () override
 DetAnnealingMaker (const std::string &t, const std::string &n, const IInterface *p)
 Default constructor due to Athena interface.
virtual void reset (AnnealingState &state) const override
 Resets the annealing process to its beginning.
virtual void anneal (AnnealingState &state) const override
 One more annealing step.
virtual double getWeight (const AnnealingState &state, double chisq, const std::vector< double > &allchisq) const override
 Weight access method.
virtual double getWeight (const AnnealingState &state, double chisq) const override
 Weight access method.
virtual bool isEquilibrium (const AnnealingState &state) const override
 Equilibrium is reached (last scheduled temperature)
virtual double actualTemp (const AnnealingState &state) const override
 Access to the actual temperature value.

Private Attributes

std::vector< double > m_SetOfTemperatures
 A vector of temperatures, you will start from SetOfTemperature[0] and Anneal towards SetOfTemperature[last].
double m_cutoff
 Weight will be insensitive to chi2 at order of magnitude of the cutoff...

Detailed Description

This class implements an annealing maker.

The weight implemented is phi(chi2)=exp[-1/2.*chi2/Temp]

Author
N. Giacinto Piacquadio (for the Freiburg Group)

Definition at line 21 of file DetAnnealingMaker.h.

Constructor & Destructor Documentation

◆ DetAnnealingMaker()

Trk::DetAnnealingMaker::DetAnnealingMaker ( const std::string & t,
const std::string & n,
const IInterface * p )

Default constructor due to Athena interface.

Definition at line 22 of file DetAnnealingMaker.cxx.

22 :
23 base_class(t,n,p),
25 m_cutoff(9.)
26 {
27 declareProperty("SetOfTemperatures", m_SetOfTemperatures);
28 declareProperty("Cutoff", m_cutoff);
29 }
std::vector< double > m_SetOfTemperatures
A vector of temperatures, you will start from SetOfTemperature[0] and Anneal towards SetOfTemperature...
double m_cutoff
Weight will be insensitive to chi2 at order of magnitude of the cutoff...

Member Function Documentation

◆ actualTemp()

virtual double Trk::DetAnnealingMaker::actualTemp ( const AnnealingState & state) const
inlineoverridevirtual

Access to the actual temperature value.

Definition at line 67 of file DetAnnealingMaker.h.

68 {
69 if (state >= m_SetOfTemperatures.size()) {
70 return m_SetOfTemperatures.back();
71 }
72 return m_SetOfTemperatures[state];
73 }

◆ anneal()

void Trk::DetAnnealingMaker::anneal ( AnnealingState & state) const
overridevirtual

One more annealing step.

Definition at line 49 of file DetAnnealingMaker.cxx.

49 {
50
51//check if there are some temperatures
52 if (m_SetOfTemperatures.empty())
53 {
54 ATH_MSG_ERROR( "The vector SetOfTemperatures for the annealing is empty" );
55 }
56 //go one step further
57 ++state;
58 }
#define ATH_MSG_ERROR(x)

◆ finalize()

StatusCode Trk::DetAnnealingMaker::finalize ( )
overridevirtual

Definition at line 37 of file DetAnnealingMaker.cxx.

38 {
39 ATH_MSG_DEBUG( "Finalize successful" );
40 return StatusCode::SUCCESS;
41 }
#define ATH_MSG_DEBUG(x)

◆ getWeight() [1/2]

double Trk::DetAnnealingMaker::getWeight ( const AnnealingState & state,
double chisq ) const
overridevirtual

Weight access method.

Definition at line 73 of file DetAnnealingMaker.cxx.

75 {
76 double temp = actualTemp (state);
77 return gauss(chisq,temp)/(gauss(m_cutoff,temp)+gauss(chisq,temp));
78 }
virtual double actualTemp(const AnnealingState &state) const override
Access to the actual temperature value.

◆ getWeight() [2/2]

double Trk::DetAnnealingMaker::getWeight ( const AnnealingState & state,
double chisq,
const std::vector< double > & allchisq ) const
overridevirtual

Weight access method.

Definition at line 60 of file DetAnnealingMaker.cxx.

63 {
64 double temp = actualTemp (state);
65 double allweight(0.);
66 for (double ch : allchisq) {
67 allweight+=gauss(ch,temp);
68 }
69 double actualweight(gauss(chisq,temp));
70 return actualweight/(gauss(m_cutoff,temp)+allweight);
71 }

◆ initialize()

StatusCode Trk::DetAnnealingMaker::initialize ( )
overridevirtual

Definition at line 31 of file DetAnnealingMaker.cxx.

32 {
33 ATH_MSG_DEBUG( "Initialize successful" );
34 return StatusCode::SUCCESS;
35 }

◆ isEquilibrium()

virtual bool Trk::DetAnnealingMaker::isEquilibrium ( const AnnealingState & state) const
inlineoverridevirtual

Equilibrium is reached (last scheduled temperature)

Definition at line 59 of file DetAnnealingMaker.h.

60 {
61 return state >= m_SetOfTemperatures.size();
62 }

◆ reset()

void Trk::DetAnnealingMaker::reset ( AnnealingState & state) const
overridevirtual

Resets the annealing process to its beginning.

Definition at line 43 of file DetAnnealingMaker.cxx.

44 {
45 state = 0;
46 ATH_MSG_DEBUG( "Annealing reset" );
47 }

Member Data Documentation

◆ m_cutoff

double Trk::DetAnnealingMaker::m_cutoff
private

Weight will be insensitive to chi2 at order of magnitude of the cutoff...

Definition at line 85 of file DetAnnealingMaker.h.

◆ m_SetOfTemperatures

std::vector<double> Trk::DetAnnealingMaker::m_SetOfTemperatures
private

A vector of temperatures, you will start from SetOfTemperature[0] and Anneal towards SetOfTemperature[last].

Definition at line 80 of file DetAnnealingMaker.h.


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