/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/MdcPatRec/MdcxReco/MdcxReco-00-01-59/MdcxReco/Mdcxprobab.h File Reference

Go to the source code of this file.

Functions

float Mdcxprobab (int &ndof, float &chisq)


Function Documentation

float Mdcxprobab ( int &  ndof,
float &  chisq 
)

Definition at line 4 of file Mdcxprobab.cxx.

References exp(), genRecEmupikp::i, M_PI, and subSeperate::temp.

Referenced by MdcxCosmicSewer::execute(), MdcxFittedHel::Grow(), MdcxFittedHel::IterateFit(), and MdcxFindTracks::process().

00004                                                  {
00005 
00006   //constants
00007   static float srtopi = 2.0/sqrt(2.0*M_PI);
00008   static float upl = 100.0;  //FIXME
00009 
00010   float prob = 0.0;
00011   if(ndof <= 0) return prob;
00012   if(chisq < 0.0) return prob;
00013   if(ndof <= 60) {
00014     //full treatment
00015     if(chisq > upl) return prob;
00016     float sum = exp(-0.5*chisq);
00017     float term = sum;
00018 
00019     int m = ndof/2;
00020     if(2*m == ndof) {
00021       if(m == 1) return sum;
00022       for(int i = 2; i <= m; i++) {
00023         term = 0.5*term*chisq/(i-1);
00024         sum += term;
00025       }//(int i=2; i<=m)
00026       return sum;
00027       //even
00028     } else {
00029       //odd
00030       float srty = sqrt(chisq);
00031       float temp = srty/M_SQRT2;
00032       prob = erfc(temp);
00033       if(ndof == 1) return prob;
00034       if(ndof == 3) return (srtopi*srty*sum+prob);
00035       m--;
00036       for(int i = 1; i <= m; i++) {
00037         term = term*chisq/(2*i+1);
00038         sum += term;
00039       }//(int i=1; i<=m; i++)
00040       return (srtopi*srty*sum + prob);
00041 
00042     }//(2*m==ndof)
00043 
00044   } else {
00045     //asymtotic Gaussian approx
00046     float srty = sqrt(chisq) - sqrt(ndof - 0.5);
00047     if(srty < 12.0) prob=0.5*erfc(srty);
00048     return prob;
00049 
00050   }//ndof<30
00051 
00052   // cannot reach following line; warning on OSF; so comment it out
00053   // return prob;
00054 }//endof Mdcxprobab


Generated on Tue Nov 29 23:16:58 2016 for BOSS_7.0.2 by  doxygen 1.4.7