test
Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
RecoVertex
VertexTools
src
DeterministicAnnealing.cc
Go to the documentation of this file.
1
#include "
RecoVertex/VertexTools/interface/DeterministicAnnealing.h
"
2
#include "
FWCore/Utilities/interface/isFinite.h
"
3
#include <cmath>
4
#include <vector>
5
#include <iostream>
6
#include <limits>
7
8
using namespace
std;
9
10
DeterministicAnnealing::DeterministicAnnealing
(
float
cutoff
) :
11
theTemperatures({256,64,16,4,2,1}),
12
theIndex
(0),
theChi2cut
(
cutoff
*
cutoff
),
theIsAnnealed
(
false
)
13
{
14
}
15
16
DeterministicAnnealing::DeterministicAnnealing
(
const
vector < float > & sched,
float
cutoff
) :
17
theTemperatures(sched),
theIndex
(0),
theChi2cut
( cutoff*cutoff ),
theIsAnnealed
(
false
)
18
{
19
}
20
21
void
DeterministicAnnealing::anneal
()
22
{
23
if
(
theIndex
< (
theTemperatures
.size() - 1 ) )
24
{
25
theIndex
++;
26
}
else
{
27
theIsAnnealed
=
true
;
28
};
29
}
30
31
double
DeterministicAnnealing::weight
(
double
chi2 )
const
32
{
33
long
double
mphi =
phi
( chi2 );
34
/*
35
if ( mphi < std::numeric_limits<double>::epsilon() ) return 0.;
36
return 1. / ( 1. + phi ( theChi2cut * theChi2cut ) / mphi );
37
*/
38
// return mphi / ( mphi + phi ( theChi2cut ) );
39
long
double
newtmp = mphi / ( mphi +
phi
(
theChi2cut
) );
40
if
(
edm::isNotFinite
(newtmp ) )
41
{
42
if
( chi2 <
theChi2cut
) newtmp=1.;
43
else
newtmp=0.;
44
}
45
return
newtmp;
46
}
47
48
void
DeterministicAnnealing::resetAnnealing
()
49
{
50
theIndex
=0;
51
theIsAnnealed
=
false
;
52
}
53
54
inline
double
DeterministicAnnealing::phi
(
double
chi2 )
const
55
{
56
return
exp
( -.5 * chi2 /
theTemperatures
[
theIndex
] );
57
}
58
59
double
DeterministicAnnealing::cutoff
()
const
60
{
61
return
sqrt
(
theChi2cut
);
62
}
63
64
double
DeterministicAnnealing::currentTemp
()
const
65
{
66
return
theTemperatures
[
theIndex
];
67
}
68
69
double
DeterministicAnnealing::initialTemp
()
const
70
{
71
return
theTemperatures
[0];
72
}
73
74
bool
DeterministicAnnealing::isAnnealed
()
const
75
{
76
return
theIsAnnealed
;
77
}
78
79
void
DeterministicAnnealing::debug
()
const
80
{
81
cout
<<
"[DeterministicAnnealing] schedule="
;
82
for
( vector< float >::const_iterator
i
=
theTemperatures
.begin();
83
i
!=
theTemperatures
.end() ; ++
i
)
84
{
85
cout
<< *
i
<<
" "
;
86
};
87
cout
<< endl;
88
}
isFinite.h
i
int i
Definition:
DBlmapReader.cc:9
create_public_lumi_plots.exp
tuple exp
Definition:
create_public_lumi_plots.py:1087
DeterministicAnnealing::weight
double weight(double chi2) const
Definition:
DeterministicAnnealing.cc:31
DeterministicAnnealing::theIndex
unsigned int theIndex
Definition:
DeterministicAnnealing.h:58
theIndex
theIndex(0)
DeterministicAnnealing::currentTemp
double currentTemp() const
Definition:
DeterministicAnnealing.cc:64
DeterministicAnnealing::resetAnnealing
void resetAnnealing()
Definition:
DeterministicAnnealing.cc:48
edm::isNotFinite
bool isNotFinite(T x)
Definition:
isFinite.h:10
DeterministicAnnealing.h
DeterministicAnnealing::theChi2cut
double theChi2cut
Definition:
DeterministicAnnealing.h:59
mathSSE::sqrt
T sqrt(T t)
Definition:
SSEVec.h:48
DeterministicAnnealing::isAnnealed
bool isAnnealed() const
Definition:
DeterministicAnnealing.cc:74
prof2calltree.cutoff
tuple cutoff
Definition:
prof2calltree.py:22
theIsAnnealed
theIsAnnealed(false)
Definition:
DeterministicAnnealing.cc:12
DeterministicAnnealing::initialTemp
double initialTemp() const
Definition:
DeterministicAnnealing.cc:69
DeterministicAnnealing::cutoff
double cutoff() const
Definition:
DeterministicAnnealing.cc:59
DeterministicAnnealing::debug
void debug() const
Definition:
DeterministicAnnealing.cc:79
DeterministicAnnealing::theIsAnnealed
bool theIsAnnealed
Definition:
DeterministicAnnealing.h:60
theChi2cut
theChi2cut(cutoff *cutoff)
DeterministicAnnealing::anneal
void anneal()
Definition:
DeterministicAnnealing.cc:21
DeterministicAnnealing::DeterministicAnnealing
DeterministicAnnealing(float cutoff=3.0)
Definition:
DeterministicAnnealing.cc:10
gather_cfg.cout
tuple cout
Definition:
gather_cfg.py:121
DeterministicAnnealing::theTemperatures
std::vector< float > theTemperatures
Definition:
DeterministicAnnealing.h:54
edm::false
volatile std::atomic< bool > shutdown_flag false
Definition:
UnixSignalHandlers.cc:22
DeterministicAnnealing::phi
double phi(double chi2) const
Definition:
DeterministicAnnealing.cc:54
Generated for CMSSW Reference Manual by
1.8.5