#include "vdt/vdtMath.h"
Go to the source code of this file.
Functions | |
float | p1evlf (float xx, float *coef, int N) |
float | polevlf (float xx, float *coef, int N) |
int | sicif (float xx, float &si, float &ci) |
Variables | |
static float | CD [] |
static float | CN [] |
static float | FD4 [] |
static float | FD8 [] |
static float | FN4 [] |
static float | FN8 [] |
static float | GD4 [] |
static float | GD8 [] |
static float | GN4 [] |
static float | GN8 [] |
static float | SD [] |
static float | SN [] |
float p1evlf | ( | float | xx, |
float * | coef, | ||
int | N | ||
) | [inline] |
float polevlf | ( | float | xx, |
float * | coef, | ||
int | N | ||
) | [inline] |
int sicif | ( | float | xx, |
float & | si, | ||
float & | ci | ||
) | [inline] |
Definition at line 227 of file sicif.h.
References trackerHits::c, CD, CN, f, FD4, FD8, FN4, FN8, g, GD4, GD8, GN4, GN8, p1evlf(), polevlf(), alignCSCRings::s, SD, SN, x, and z.
{ const float MAXNUMF = 1.7014117331926442990585209174225846272e38; const float PIO2F = 1.5707963267948966192; // const float MACHEPF = 5.9604644775390625E-8; const float EUL = 0.57721566490153286061; float x, z, c, s, f, g; int sign; x = xx; if( x < 0.0f ) { sign = -1; x = -x; } else sign = 0; if( x == 0.0f ) { si = 0.0; ci = -MAXNUMF; return( 0 ); } if( x > 1.0e9f ) { float su,cu; vdt::fast_sincosf(x,su,cu); si = PIO2F - cu/x; ci = su/x; return( 0 ); } if( x > 4.0f ) goto asympt; z = x * x; s = x * polevlf( z, SN, 5 ) / polevlf( z, SD, 5 ); c = z * polevlf( z, CN, 5 ) / polevlf( z, CD, 5 ); if( sign ) s = -s; si = s; ci = EUL + vdt::fast_logf(x) + c; /* real part if x < 0 */ return(0); /* The auxiliary functions are: * * * *si = *si - PIO2; * c = cos(x); * s = sin(x); * * t = *ci * s - *si * c; * a = *ci * c + *si * s; * * *si = t; * *ci = -a; */ asympt: vdt::fast_sincosf(x,s,c); z = 1.0f/(x*x); if( x < 8.0f ) { f = polevlf( z, FN4, 6 ) / (x * p1evlf( z, FD4, 7 )); g = z * polevlf( z, GN4, 7 ) / p1evlf( z, GD4, 7 ); } else { f = polevlf( z, FN8, 8 ) / (x * p1evlf( z, FD8, 8 )); g = z * polevlf( z, GN8, 8 ) / p1evlf( z, GD8, 9 ); } si = PIO2F - f * c - g * s; if( sign ) si = -( si ); ci = f * s - g * c; return(0); }
float CD[] [static] |
float CN[] [static] |
{ 2.02524002389102268789E-11, -1.35249504915790756375E-8, 3.59325051419993077021E-6, -4.74007206873407909465E-4, 2.89159652607555242092E-2, -1.00000000000000000080E0, }
Definition at line 76 of file sicif.h.
Referenced by EcalLaserAnalyzerYousi::analyze(), RecoTauCleanerImpl< Prod >::produce(), and sicif().
float FD4[] [static] |
float FD8[] [static] |
float FN4[] [static] |
float FN8[] [static] |
{ 4.55880873470465315206E-1, 7.13715274100146711374E-1, 1.60300158222319456320E-1, 1.16064229408124407915E-2, 3.49556442447859055605E-4, 4.86215430826454749482E-6, 3.20092790091004902806E-8, 9.41779576128512936592E-11, 9.70507110881952024631E-14, }
Definition at line 115 of file sicif.h.
Referenced by sicif().
float GD4[] [static] |
float GD8[] [static] |
{ 1.68548898811011640017E0, 4.87852258695304967486E-1, 4.67913194259625806320E-2, 1.90284426674399523638E-3, 3.68475504442561108162E-5, 3.57043223443740838771E-7, 1.72693748966316146736E-9, 3.87830166023954706752E-12, 3.14040098946363335242E-15, }
Definition at line 170 of file sicif.h.
Referenced by sicif().
float GN4[] [static] |
float GN8[] [static] |
{ 6.97359953443276214934E-1, 3.30410979305632063225E-1, 3.84878767649974295920E-2, 1.71718239052347903558E-3, 3.48941165502279436777E-5, 3.47131167084116673800E-7, 1.70404452782044526189E-9, 3.85945925430276600453E-12, 3.14040098946363334640E-15, }
Definition at line 159 of file sicif.h.
Referenced by sicif().
float SD[] [static] |
{ 2.03269266195951942049E-12, 1.27997891179943299903E-9, 4.41827842801218905784E-7, 9.96412122043875552487E-5, 1.42085239326149893930E-2, 9.99999999999999996984E-1, }
Definition at line 67 of file sicif.h.
Referenced by HcalDetDiagLEDMonitor::GetCalib(), HcalDetDiagLaserMonitor::GetCalib(), HcalDetDiagLEDClient::htmlOutput(), and sicif().