b4ff559d7a1c02153b39fc2fe9a634f2b77cc96c
[u/mrichter/AliRoot.git] / PHOS / CLHEP / config / CLHEP.h
1 // -*- C++ -*-
2 // CLASSDOC OFF
3 // $Id$
4 // ---------------------------------------------------------------------------
5 // CLASSDOC ON
6 //
7 // This file is a part of the CLHEP - a Class Library for High Energy Physics.
8 //
9 // This file contains definitions of some usefull utilities and macros.
10 //
11 #ifndef _CLHEP_H_
12 #define _CLHEP_H_
13
14 #include <stdlib.h>
15 #include <limits.h>
16 #include <math.h>
17
18 #if defined(CLHEP_TARGET_H)
19 #include CLHEP_TARGET_H
20 #else
21 #include "CLHEP/config/CLHEP-default.h"
22 #endif
23
24 // CLASSDOC OFF
25 // **** You should probably not touch anything below this line: ****
26
27 typedef double HepDouble;
28 typedef int    HepInt;
29 typedef float  HepFloat;
30
31 #ifdef HEP_HAVE_BOOL
32 typedef bool HepBoolean;
33 #else
34 typedef int HepBoolean;
35 #ifndef false
36 const HepBoolean hep_false = 0;
37 #define false hep_false
38 #endif
39 #ifndef true
40 const HepBoolean hep_true  = 1;
41 #define true hep_true
42 #endif
43 #endif /* HEP_HAVE_BOOL */
44
45 #ifdef HEP_SHORT_NAMES
46 typedef HepBoolean Boolean;
47 #endif
48
49 #ifndef M_PI_2
50 #define M_PI_2  1.57079632679489661923
51 #endif
52
53 #ifndef M_PI
54 #define M_PI    3.14159265358979323846
55 #endif
56
57 #ifndef M_2PI
58 #define M_2PI   6.28318530717958647692
59 #endif
60
61 #ifndef CLHEP_MAX_MIN_DEFINED
62 #define CLHEP_MAX_MIN_DEFINED
63 template <class T>
64 inline const T& min(const T& a, const T& b) {
65   // Break this into two lines to avoid an incorrect warning with
66   // Cfront-based compilers.
67   const T& retval = b < a ? b : a;
68   return retval;
69 }
70
71 template <class T>
72 inline const T& max(const T& a, const T& b) {
73   // Break this into two lines to avoid an incorrect warning with
74   // Cfront-based compilers.
75   const T& retval = a < b ? b : a;
76   return retval;
77 }
78 #endif
79
80 #ifndef CLHEP_SQR_ABS_DEFINED
81 #define CLHEP_SQR_ABS_DEFINED
82 template <class T>
83 inline T sqr(const T& x) {
84   return x*x;
85 }
86
87 template <class T>
88 inline T abs(const T& a) {
89   return a < 0 ? -a : a;
90 }
91 #endif
92
93 #ifdef HEP_DEBUG_INLINE
94 #define HEP_NO_INLINE_IN_DECLARATION
95 #endif
96
97 #ifdef HEP_NO_INLINE_IN_DECLARATION
98 #define HEP_NO_INLINE_IN_TEMPLATE_DECLARATION
99 #endif
100
101 // Default to generate random matrix
102 //
103 #ifndef HEP_USE_RANDOM
104 #define HEP_USE_RANDOM
105 #endif
106
107 // GNU g++ compiler can optimize when returning an object.
108 // However g++ on HP cannot deal with this.
109 //
110 #undef HEP_GNU_OPTIMIZED_RETURN
111
112 // CLASSDOC ON
113 #endif /* _CLHEP_H_ */