CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/RecoVertex/VertexTools/interface/DeterministicAnnealing.h

Go to the documentation of this file.
00001 #ifndef DeterministicAnnealing_H
00002 #define DeterministicAnnealing_H
00003 
00004 #include "RecoVertex/VertexTools/interface/AnnealingSchedule.h"
00005 #include <vector>
00006 
00007 class DeterministicAnnealing : public AnnealingSchedule {
00008 
00009 public:
00010 
00018   DeterministicAnnealing( float cutoff = 3.0 );
00019   DeterministicAnnealing( const std::vector < float > & sched, float cutoff = 3.0 );
00020 
00021   void anneal(); //< One annealing step. theT *= theRatio.
00022   void resetAnnealing(); //< theT = theT0.
00023 
00027   double phi ( double chi2 ) const;
00028 
00032   double weight ( double chi2 ) const;
00033   
00037   bool isAnnealed() const;
00038 
00039   void debug() const;
00040 
00044   // double weight ( double chi2, const vector < double > & chi2s ) const;
00045 
00046 
00047   double cutoff() const;
00048   double currentTemp() const;
00049   double initialTemp() const;
00050 
00051   DeterministicAnnealing * clone() const
00052   {
00053     return new DeterministicAnnealing ( * this );
00054   };
00055 
00056 private:
00057   unsigned int theIndex;
00058   double theChi2cut;
00059   bool theIsAnnealed;
00060 };
00061 
00062 #endif