CMS 3D CMS Logo

Cos.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_Utilities_Cos_h
2 #define PhysicsTools_Utilities_Cos_h
3 
4 #include <cmath>
5 
6 namespace funct {
7 
8  template <typename T>
9  struct CosStruct {
10  CosStruct(const T& t) : _(t) {}
11  inline double operator()() const { return ::cos(_()); }
12  T _;
13  };
14 
15  template <typename T>
16  struct Cos {
17  typedef CosStruct<T> type;
18  inline static type compose(const T& t) { return type(t); }
19  };
20 
21  template <typename T>
22  inline typename Cos<T>::type cos(const T& t) {
23  return Cos<T>::compose(t);
24  }
25 
26 } // namespace funct
27 
28 #endif
funct::Cos::compose
static type compose(const T &t)
Definition: Cos.h:18
funct::CosStruct::_
T _
Definition: Cos.h:12
funct::CosStruct
Definition: Cos.h:9
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
funct::CosStruct::CosStruct
CosStruct(const T &t)
Definition: Cos.h:10
funct::Cos::type
CosStruct< T > type
Definition: Cos.h:17
T
long double T
Definition: Basic3DVectorLD.h:48
funct::CosStruct::operator()
double operator()() const
Definition: Cos.h:11
funct::Cos
Definition: Cos.h:16
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
funct
Definition: Abs.h:5