BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Kinem< R > Class Template Reference

#include <kinem.h>

Classes

union  DI64

Public Member Functions

bool operator== (const Kinem &kinem) const
double mass (int i) const

Protected Types

enum  Invar {
  im1 = 0 , ip1 , im2 , ip2 ,
  ip3 , im3 , ip4 , is12 ,
  is23 , im4 , ip5 , is34 ,
  is45 , is15 , im5 , ip6 ,
  im6
}

Protected Member Functions

 Kinem ()
void zero ()
bool eq (const double &a, const double &b) const
bool neq (const double &a, const double &b) const

Protected Attributes

double kdata [KLEN]

Static Protected Attributes

static const uint64_t idelta = 5
static const int KLEN = R * ( R + 1 ) / 2

Detailed Description

template<int R>
class Kinem< R >

Definition at line 15 of file kinem.h.

Member Enumeration Documentation

◆ Invar

template<int R>
enum Kinem::Invar
protected
Enumerator
im1 
ip1 
im2 
ip2 
ip3 
im3 
ip4 
is12 
is23 
im4 
ip5 
is34 
is45 
is15 
im5 
ip6 
im6 

Definition at line 57 of file kinem.h.

57 {
58 im1 = 0,
59 ip1,
60 im2,
61 ip2,
62 ip3,
63 im3,
64 ip4,
65 is12,
66 is23,
67 im4,
68 ip5,
69 is34,
70 is45,
71 is15,
72 im5,
73 ip6,
74 /* 6-point inv */ im6
75 };
@ is34
Definition kinem.h:69
@ im1
Definition kinem.h:58
@ im4
Definition kinem.h:67
@ im2
Definition kinem.h:60
@ is45
Definition kinem.h:70
@ ip5
Definition kinem.h:68
@ im6
Definition kinem.h:74
@ ip3
Definition kinem.h:62
@ ip2
Definition kinem.h:61
@ im3
Definition kinem.h:63
@ ip6
Definition kinem.h:73
@ im5
Definition kinem.h:72
@ ip1
Definition kinem.h:59
@ is15
Definition kinem.h:71
@ is12
Definition kinem.h:65
@ is23
Definition kinem.h:66
@ ip4
Definition kinem.h:64

Constructor & Destructor Documentation

◆ Kinem()

template<int R>
Kinem< R >::Kinem ( )
inlineprotected

Definition at line 22 of file kinem.h.

22{}

Referenced by operator==().

Member Function Documentation

◆ eq()

template<int R>
bool Kinem< R >::eq ( const double & a,
const double & b ) const
inlineprotected

Definition at line 43 of file kinem.h.

43 {
44 const DI64 ia = { a };
45 const DI64 ib = { b };
46 const int64_t diff = ia.i64 - ib.i64;
47 return diff == 0LL || static_cast<uint64_t>( llabs( diff ) ) <= idelta;
48 }
Definition kinem.h:15
static const uint64_t idelta
Definition kinem.h:41

Referenced by operator==().

◆ mass()

template<int R>
double Kinem< R >::mass ( int i) const
inline

Definition at line 19 of file kinem.h.

19{ return kdata[( i - 1 ) * ( i + 2 ) / 2]; }
double kdata[KLEN]
Definition kinem.h:77

◆ neq()

template<int R>
bool Kinem< R >::neq ( const double & a,
const double & b ) const
inlineprotected

Definition at line 49 of file kinem.h.

49 {
50 const DI64 ia = { a };
51 const DI64 ib = { b };
52 const int64_t diff = ia.i64 - ib.i64;
53 return diff != 0LL && static_cast<uint64_t>( llabs( diff ) ) > idelta;
54 }

◆ operator==()

template<int R>
bool Kinem< R >::operator== ( const Kinem< R > & kinem) const

Definition at line 80 of file kinem.h.

80 {
81 for ( int i = 0; i < KLEN; i++ )
82 {
83 if ( not eq( kdata[i], kinem.kdata[i] ) ) return false;
84 }
85 return true;
86}
bool eq(const double &a, const double &b) const
Definition kinem.h:43
static const int KLEN
Definition kinem.h:56

◆ zero()

template<int R>
void Kinem< R >::zero ( )
protected

Definition at line 88 of file kinem.h.

88 {
89 for ( int i = 0; i < KLEN; i++ ) { kdata[i] = 0; }
90}

Member Data Documentation

◆ idelta

template<int R>
const uint64_t Kinem< R >::idelta = 5
staticprotected

Definition at line 41 of file kinem.h.

Referenced by eq(), and neq().

◆ kdata

template<int R>
double Kinem< R >::kdata[KLEN]
protected

Definition at line 77 of file kinem.h.

Referenced by mass(), operator==(), and zero().

◆ KLEN

template<int R>
const int Kinem< R >::KLEN = R * ( R + 1 ) / 2
staticprotected

Definition at line 56 of file kinem.h.

Referenced by operator==(), and zero().


The documentation for this class was generated from the following file: