File indexing completed on 2024-04-06 12:02:28
0001
0002
0003 #ifndef CondFormats_PPSObjects_LHCInterpolatedOpticalFunctionsSet_h
0004 #define CondFormats_PPSObjects_LHCInterpolatedOpticalFunctionsSet_h
0005
0006 #include "CondFormats/PPSObjects/interface/LHCOpticalFunctionsSet.h"
0007
0008 #include "TSpline.h"
0009
0010 class CTPPSInterpolatedOpticalFunctionsESSource;
0011 class CTPPSModifiedOpticalFunctionsESSource;
0012
0013
0014 class LHCInterpolatedOpticalFunctionsSet : public LHCOpticalFunctionsSet {
0015 public:
0016 LHCInterpolatedOpticalFunctionsSet() = default;
0017
0018 LHCInterpolatedOpticalFunctionsSet(const LHCOpticalFunctionsSet &src) : LHCOpticalFunctionsSet(src) {}
0019
0020 ~LHCInterpolatedOpticalFunctionsSet() = default;
0021
0022 const std::vector<std::shared_ptr<const TSpline3>> &splines() const { return m_splines; }
0023
0024
0025 void initializeSplines();
0026
0027
0028 struct Kinematics {
0029 double x;
0030 double th_x;
0031 double y;
0032 double th_y;
0033 double xi;
0034 };
0035
0036
0037 void transport(const Kinematics &input, Kinematics &output, bool calculateAngles = false) const;
0038
0039 protected:
0040 friend CTPPSInterpolatedOpticalFunctionsESSource;
0041 friend CTPPSModifiedOpticalFunctionsESSource;
0042
0043 std::vector<std::shared_ptr<const TSpline3>> m_splines;
0044 };
0045
0046 #endif