00001 #include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableAnnealing.h" 00002 #include "RecoVertex/VertexTools/interface/GeometricAnnealing.h" 00003 #include <string> 00004 00005 using namespace std; 00006 00007 ConfigurableAnnealing::ConfigurableAnnealing ( const edm::ParameterSet & m ) : 00008 theImpl( 0 ) 00009 { 00010 string type = m.getParameter<string>("annealing"); 00011 theImpl = new GeometricAnnealing( 00012 m.getParameter<double>("sigmacut"), 00013 m.getParameter<double>("Tini"), 00014 m.getParameter<double>("ratio") ); 00015 } 00016 00017 ConfigurableAnnealing::ConfigurableAnnealing ( const ConfigurableAnnealing & o ) : 00018 theImpl ( o.theImpl->clone() ) 00019 {} 00020 00021 ConfigurableAnnealing * ConfigurableAnnealing::clone() const 00022 { 00023 return new ConfigurableAnnealing ( *this ); 00024 } 00025 00026 ConfigurableAnnealing::~ConfigurableAnnealing() 00027 { 00028 delete theImpl; 00029 } 00030 00031 void ConfigurableAnnealing::debug() const 00032 { 00033 theImpl->debug(); 00034 } 00035 00036 void ConfigurableAnnealing::anneal() 00037 { 00038 theImpl->anneal(); 00039 } 00040 00041 double ConfigurableAnnealing::weight ( double chi2 ) const 00042 { 00043 return theImpl->weight ( chi2 ); 00044 } 00045 00046 void ConfigurableAnnealing::resetAnnealing() 00047 { 00048 theImpl->resetAnnealing(); 00049 } 00050 00051 inline double ConfigurableAnnealing::phi( double chi2 ) const 00052 { 00053 return theImpl->phi ( chi2 ); 00054 } 00055 00056 double ConfigurableAnnealing::cutoff() const 00057 { 00058 return theImpl->cutoff(); 00059 } 00060 00061 double ConfigurableAnnealing::currentTemp() const 00062 { 00063 return theImpl->currentTemp(); 00064 } 00065 00066 double ConfigurableAnnealing::initialTemp() const 00067 { 00068 return theImpl->initialTemp(); 00069 } 00070 00071 bool ConfigurableAnnealing::isAnnealed() const 00072 { 00073 return theImpl->isAnnealed(); 00074 }