5#include "ParticleID/ParticleIDBase.h"
8const int ParticleIDBase::USE_DEDX = 1;
9const int ParticleIDBase::USE_TOF1 = 2;
10const int ParticleIDBase::USE_TOF2 = 4;
11const int ParticleIDBase::USE_TOFE = 8;
12const int ParticleIDBase::USE_TOFQ = 16;
13const int ParticleIDBase::USE_EMC = 32;
14const int ParticleIDBase::USE_MUC = 64;
15const int ParticleIDBase::USE_TOF = 128;
16const int ParticleIDBase::USE_TOFC = 256;
17const int ParticleIDBase::USE_TOFCorr = 512;
19const int ParticleIDBase::IDENTIFY_ELECTRON = 1;
20const int ParticleIDBase::IDENTIFY_MUON = 2;
21const int ParticleIDBase::IDENTIFY_PION = 4;
22const int ParticleIDBase::IDENTIFY_KAON = 8;
23const int ParticleIDBase::IDENTIFY_PROTON = 16;
25const int ParticleIDBase::PROBABILITY_PID = 1;
26const int ParticleIDBase::LIKELIHOOD_PID = 2;
27const int ParticleIDBase::NEURONNETWORK_PID = 4;
29const int ParticleIDBase::DEDX_VALID = 1;
30const int ParticleIDBase::TOF1_VALID = 2;
31const int ParticleIDBase::TOF2_VALID = 4;
32const int ParticleIDBase::TOFE_VALID = 8;
33const int ParticleIDBase::TOFQ_VALID = 16;
34const int ParticleIDBase::EMC_VALID = 32;
35const int ParticleIDBase::MUC_VALID = 64;
36const int ParticleIDBase::TOF_VALID = 128;
37const int ParticleIDBase::TOFC_VALID = 256;
38const int ParticleIDBase::TOFCorr_VALID = 512;
46 m_pdfsigmamin_cut = 99;
54 if ( s_path ) {
path = string( s_path ); }
57 char* env_path = getenv(
"PARTICLEIDROOT" );
60 cout <<
" ParticleIDBase::set_path ERROR:"
61 " the environment PARTICLEIDROOT not defined "
65 path = string( env_path );
70 double mass[5] = { 0.000511, 0.105658, 0.139570, 0.493677, 0.938272 };
77 double vel = 299.792458;
83 if ( chi2 < 0 )
return p;
84 p = TMath::Prob( chi2,
ndof );
93 double chi2 = -0.5 * offset * offset / ( sigma * sigma );
94 double pdf =
exp( chi2 ) / ( sigma * sqrt(
twoPi ) );
100 if ( !m_trk )
return val;
101 if ( !m_trk->isMdcTrackValid() )
return val;
108 if ( !m_trk )
return val;
109 if ( !m_trk->isMdcTrackValid() )
return val;
116 if ( !m_trk )
return val;
117 if ( !m_trk->isMdcTrackValid() )
return val;
119 val = mdcTrk->
charge() + 0.0;
124 double c1 = ( y[0] - y[1] ) * ( x[1] - x[2] ) - ( x[0] - x[1] ) * ( y[1] - y[2] );
125 double c2 = ( x[0] * x[0] - x[1] * x[1] ) * ( x[1] - x[2] ) -
126 ( x[1] * x[1] - x[2] * x[2] ) * ( x[0] - x[1] );
128 double b1 = ( y[0] - y[1] ) * ( x[1] * x[1] - x[2] * x[2] ) -
129 ( x[0] * x[0] - x[1] * x[1] ) * ( y[1] - y[2] );
130 double b2 = ( x[0] - x[1] ) * ( x[1] * x[1] - x[2] * x[2] ) -
131 ( x[1] - x[2] ) * ( x[0] * x[0] - x[1] * x[1] );
133 double a = y[0] - b * x[0] - c * x[0] * x[0];
134 double y1 = a + b * x1 + c * x1 * x1;
141 return par[0] + y * ( par[1] + y * ( par[2] ) );
147 return par[0] + y * ( par[1] + y * ( par[2] + y * ( par[3] ) ) );
154 return par[0] + y * ( par[1] + y * ( par[2] + y * ( par[3] + y * ( par[4] ) ) ) );
EvtComplex exp(const EvtComplex &c)
double pol2(double x, double *par)
virtual int ndof() const =0
double interpolation(double *x, double *y, double x1)
double probCalculate(double chi2, int n)
double pol4(double x, double *par)
double pol3(double x, double *par)
double pdfCalculate(double offset, double sigma)
void set_path(const char *s_path=0)