CMS 3D CMS Logo

Functions | Variables

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/RecoLocalTracker/SiPixelRecHits/src/sicif.h File Reference

#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 []

Function Documentation

float p1evlf ( float  xx,
float *  coef,
int  N 
) [inline]

Definition at line 207 of file sicif.h.

References i, AlCaHLTBitMon_ParallelJobs::p, and x.

Referenced by sicif().

                                            {
float ans, x;
float *p;
int i;

x = xx;
p = coef;
ans = x + *p++;
i = N-1;

do
        ans = ans * x  + *p++;
while( --i );

return( ans );
}
float polevlf ( float  xx,
float *  coef,
int  N 
) [inline]

Definition at line 184 of file sicif.h.

References i, N, AlCaHLTBitMon_ParallelJobs::p, and x.

Referenced by sicif().

                                              {
float ans, x;
float *p;
int i;

x = xx;
p = coef;
ans = *p++;

i = N;
do
        ans = ans * x  +  *p++;
while( --i );

return( ans );
}
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);
}

Variable Documentation

float CD[] [static]
Initial value:
 {
  4.07746040061880559506E-12,
  3.06780997581887812692E-9,
  1.23210355685883423679E-6,
  3.17442024775032769882E-4,
  5.10028056236446052392E-2,
  4.00000000000000000080E0,
}

Definition at line 84 of file sicif.h.

Referenced by sicif().

float CN[] [static]
Initial value:
 {
 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]
Initial value:
 {

  8.16496634205391016773E0,
  7.30828822505564552187E0,
  1.86792257950184183883E0,
  1.78792052963149907262E-1,
  7.01710668322789753610E-3,
  1.10034357153915731354E-4,
  5.48900252756255700982E-7,
}

Definition at line 103 of file sicif.h.

Referenced by sicif().

float FD8[] [static]
Initial value:
 {

  9.17463611873684053703E-1,
  1.78685545332074536321E-1,
  1.22253594771971293032E-2,
  3.58696481881851580297E-4,
  4.92435064317881464393E-6,
  3.21956939101046018377E-8,
  9.43720590350276732376E-11,
  9.70507110881952025725E-14,
}

Definition at line 126 of file sicif.h.

Referenced by sicif().

float FN4[] [static]
Initial value:
 {
  4.23612862892216586994E0,
  5.45937717161812843388E0,
  1.62083287701538329132E0,
  1.67006611831323023771E-1,
  6.81020132472518137426E-3,
  1.08936580650328664411E-4,
  5.48900223421373614008E-7,
}

Definition at line 94 of file sicif.h.

Referenced by sicif().

float FN8[] [static]
Initial value:
 {
  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]
Initial value:
 {

  1.64402202413355338886E0,
  6.66296701268987968381E-1,
  9.88771761277688796203E-2,
  6.22396345441768420760E-3,
  1.73221081474177119497E-4,
  2.02659182086343991969E-6,
  7.82579218933534490868E-9,
}

Definition at line 148 of file sicif.h.

Referenced by sicif().

float GD8[] [static]
Initial value:
 {

  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]
Initial value:
 {
  8.71001698973114191777E-2,
  6.11379109952219284151E-1,
  3.97180296392337498885E-1,
  7.48527737628469092119E-2,
  5.38868681462177273157E-3,
  1.61999794598934024525E-4,
  1.97963874140963632189E-6,
  7.82579040744090311069E-9,
}

Definition at line 138 of file sicif.h.

Referenced by sicif().

float GN8[] [static]
Initial value:
 {
  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]
Initial value:
 {
  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().

float SN[] [static]
Initial value:
 {
-8.39167827910303881427E-11,
 4.62591714427012837309E-8,
-9.75759303843632795789E-6,
 9.76945438170435310816E-4,
-4.13470316229406538752E-2,
 1.00000000000000000302E0,
}

Definition at line 59 of file sicif.h.

Referenced by sicif().