FairRoot/PandaRoot
PndCADef.h
Go to the documentation of this file.
1 //-*- Mode: C++ -*-
2 
3 //* This file is property of and copyright by the ALICE HLT Project *
4 //* ALICE Experiment at CERN, All rights reserved. *
5 //* See cxx source for full Copyright notice *
6 
7 #ifndef PNDCADEF_H
8 #define PNDCADEF_H
9 
10 #include <iostream>
11 using std::cout;
12 using std::endl;
13 
14 #include <Vc/Vc>
15 #include <Vc/limits>
16 
17 using ::Vc::double_v;
18 using ::Vc::float_v;
19 //using ::Vc::sfloat_v;
20 using ::Vc::int_v;
21 using ::Vc::uint_v;
22 //using ::Vc::short_v;
23 //using ::Vc::ushort_v;
24 using ::Vc::VectorAlignment;
25 using ::Vc::double_m;
26 using ::Vc::float_m;
27 //using ::Vc::sfloat_m;
28 using ::Vc::int_m;
29 using ::Vc::uint_m;
30 //using ::Vc::short_m;
31 //using ::Vc::ushort_m;
32 
38 #if defined(HLTCA_STANDALONE)
39 typedef unsigned char UChar_t;
40 typedef UChar_t Byte_t;
41 typedef int Int_t;
42 typedef double Double_t;
43 #else
44 #include "Rtypes.h"
45 #endif
46 
47 // according to http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c
48 template <typename T> int sign(T val) {
49  return (T(0) < val) - (val < T(0));
50 }
51 
52 
53 #ifdef NDEBUG
54 #define ASSERT(v, msg)
55 #else
56 #define ASSERT(v, msg) \
57 if (v) {} else { \
58  std::cerr << __FILE__ << ":" << __LINE__ << " assertion failed: " \
59  << #v << " = " << (v) << "\n" << msg << std::endl; \
60  abort(); \
61 }
62 #endif
63 
64 
65 struct float2 { float x; float y; };
66 /*
67  * Helper for compile-time verification of correct API usage
68  */
69 namespace
70 {
71  template<bool> struct HLTTPCCA_STATIC_ASSERT_FAILURE;
72  template<> struct HLTTPCCA_STATIC_ASSERT_FAILURE<true> {};
73 }
74 
75 #define HLTTPCCA_STATIC_ASSERT_CONCAT_HELPER(a, b) a##b
76 #define HLTTPCCA_STATIC_ASSERT_CONCAT(a, b) HLTTPCCA_STATIC_ASSERT_CONCAT_HELPER(a, b)
77 #define STATIC_ASSERT(cond, msg) \
78  typedef HLTTPCCA_STATIC_ASSERT_FAILURE<cond> HLTTPCCA_STATIC_ASSERT_CONCAT(_STATIC_ASSERTION_FAILED_##msg, __LINE__); \
79  HLTTPCCA_STATIC_ASSERT_CONCAT(_STATIC_ASSERTION_FAILED_##msg, __LINE__) Error_##msg; \
80  (void) Error_##msg
81 
82 namespace
83 {
84  template<typename T1>
85  void UNUSED_PARAM1( const T1 & ) {}
86  template<typename T1, typename T2>
87  void UNUSED_PARAM2( const T1 &, const T2 & ) {}
88  template<typename T1, typename T2, typename T3>
89  void UNUSED_PARAM3( const T1 &, const T2 &, const T3 & ) {}
90  template<typename T1, typename T2, typename T3, typename T4>
91  void UNUSED_PARAM4( const T1 &, const T2 &, const T3 &, const T4 & ) {}
92  template<typename T1, typename T2, typename T3, typename T4, typename T5>
93  void UNUSED_PARAM5( const T1 &, const T2 &, const T3 &, const T4 &, const T5 & ) {}
94  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
95  void UNUSED_PARAM6( const T1 &, const T2 &, const T3 &, const T4 &, const T5 &, const T6 & ) {}
96  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
97  void UNUSED_PARAM7( const T1 &, const T2 &, const T3 &, const T4 &, const T5 &, const T6 &, const T7 & ) {}
98  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
99  void UNUSED_PARAM8( const T1 &, const T2 &, const T3 &, const T4 &, const T5 &, const T6 &, const T7 &, const T8 & ) {}
100  template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
101  void UNUSED_PARAM9( const T1 &, const T2 &, const T3 &, const T4 &, const T5 &, const T6 &, const T7 &, const T8 &, const T9 & ) {}
102 }
103 
104 #define unrolled_loop4( _type_, _it_, _start_, _end_, _code_ ) \
105 if (_start_ + 0 < _end_) { enum { _it_ = (_start_ + 0) < _end_ ? (_start_ + 0) : _start_ }; _code_ } \
106 if (_start_ + 1 < _end_) { enum { _it_ = (_start_ + 1) < _end_ ? (_start_ + 1) : _start_ }; _code_ } \
107 if (_start_ + 2 < _end_) { enum { _it_ = (_start_ + 2) < _end_ ? (_start_ + 2) : _start_ }; _code_ } \
108 if (_start_ + 3 < _end_) { enum { _it_ = (_start_ + 3) < _end_ ? (_start_ + 3) : _start_ }; _code_ } \
109 do {} while ( false )
110 
111 #ifdef __GNUC__
112 #define MAY_ALIAS __attribute__((__may_alias__))
113 #else
114 #define MAY_ALIAS
115 #endif
116 
117 #if defined( __GNUC__ ) && __GNUC__ - 0 >= 3
118 # define ISLIKELY( x ) __builtin_expect( !!( x ),1 )
119 # define ISUNLIKELY( x ) __builtin_expect( !!( x ),0 )
120 #else
121 # define ISLIKELY( x ) ( x )
122 # define ISUNLIKELY( x ) ( x )
123 #endif
124 
125 #endif
float x
Definition: PndCADef.h:65
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
TTree * T
Definition: anaLmdReco.C:32
float y
Definition: PndCADef.h:65
Double_t
int sign(T val)
Definition: PndCADef.h:48