File indexing completed on 2023-03-17 11:16:00
0001 #ifndef PhysicsTools_MVAComputer_MVAComputerCache_h
0002 #define PhysicsTools_MVAComputer_MVAComputerCache_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include <memory>
0015
0016 #include "PhysicsTools/MVAComputer/interface/Calibration.h"
0017 #include "PhysicsTools/MVAComputer/interface/MVAComputer.h"
0018
0019 namespace PhysicsTools {
0020
0021
0022
0023
0024
0025
0026 class MVAComputerCache {
0027 public:
0028 MVAComputerCache();
0029 ~MVAComputerCache();
0030
0031 bool update(const Calibration::MVAComputer *computer);
0032 bool update(const Calibration::MVAComputerContainer *container, const char *calib);
0033
0034 operator bool() const { return computer.get(); }
0035
0036 MVAComputer &operator*() { return *computer; }
0037 const MVAComputer &operator*() const { return *computer; }
0038
0039 MVAComputer *operator->() { return computer.get(); }
0040 const MVAComputer *operator->() const { return computer.get(); }
0041
0042 MVAComputer *get() { return computer.get(); }
0043 const MVAComputer *get() const { return computer.get(); }
0044
0045 std::unique_ptr<MVAComputer> release();
0046
0047 void reset() { computer.reset(); }
0048
0049 private:
0050 Calibration::MVAComputerContainer::CacheId containerCacheId;
0051 Calibration::MVAComputer::CacheId computerCacheId;
0052 std::unique_ptr<MVAComputer> computer;
0053 };
0054
0055 }
0056
0057 #endif