File indexing completed on 2024-04-06 12:29:19
0001 #ifndef DeterministicAnnealing_H
0002 #define DeterministicAnnealing_H
0003
0004 #include "RecoVertex/VertexTools/interface/AnnealingSchedule.h"
0005 #include <vector>
0006
0007 class DeterministicAnnealing : public AnnealingSchedule {
0008 public:
0009
0010
0011
0012
0013
0014
0015
0016 DeterministicAnnealing(float cutoff = 3.0);
0017 DeterministicAnnealing(const std::vector<float>& sched, float cutoff = 3.0);
0018
0019 void anneal() override;
0020 void resetAnnealing() override;
0021
0022
0023
0024
0025 double phi(double chi2) const override;
0026
0027
0028
0029
0030 double weight(double chi2) const override;
0031
0032
0033
0034
0035 bool isAnnealed() const override;
0036
0037 void debug() const override;
0038
0039
0040
0041
0042
0043
0044 double cutoff() const override;
0045 double currentTemp() const override;
0046 double initialTemp() const override;
0047
0048 DeterministicAnnealing* clone() const override { return new DeterministicAnnealing(*this); };
0049
0050 private:
0051 std::vector<float> theTemperatures;
0052 unsigned int theIndex;
0053 double theChi2cut;
0054 bool theIsAnnealed;
0055 };
0056
0057 #endif