#include <ParticleIDBase.h>
Inheritance diagram for ParticleIDBase:
Public Member Functions | |
int | all () const |
int | all () const |
virtual void | calculate ()=0 |
virtual void | calculate ()=0 |
double | charge () |
double | charge () |
virtual double | chi (int n) const =0 |
virtual double | chi (int n) const =0 |
double | chiMinCut () const |
double | chiMinCut () const |
int | dedxValid () const |
int | dedxValid () const |
int | emcValid () const |
int | emcValid () const |
double | getRunNo () const |
double | getRunNo () const |
virtual void | init ()=0 |
virtual void | init ()=0 |
double | interpolation (double *x, double *y, double x1) |
double | interpolation (double *x, double *y, double x1) |
virtual bool | IsPidInfoValid () const =0 |
virtual bool | IsPidInfoValid () const =0 |
int | methodLikelihood () const |
int | methodLikelihood () const |
int | methodNeuronNetwork () const |
int | methodNeuronNetwork () const |
int | methodProbability () const |
int | methodProbability () const |
int | mucValid () const |
int | mucValid () const |
virtual int | ndof () const =0 |
virtual int | ndof () const =0 |
int | onlyElectron () const |
int | onlyElectron () const |
int | onlyKaon () const |
int | onlyKaon () const |
int | onlyMuon () const |
int | onlyMuon () const |
int | onlyPion () const |
int | onlyPion () const |
int | onlyPionKaon () const |
int | onlyPionKaon () const |
int | onlyPionKaonElectron () const |
int | onlyPionKaonElectron () const |
int | onlyPionKaonProton () const |
int | onlyPionKaonProton () const |
int | onlyProton () const |
int | onlyProton () const |
double | p () |
double | p () |
ParticleIDBase () | |
ParticleIDBase () | |
double | pdfCalculate (double offset, double sigma) |
double | pdfCalculate (double offset, double sigma) |
double | pdfMinSigmaCut () const |
double | pdfMinSigmaCut () const |
EvtRecTrack * | PidTrk () const |
EvtRecTrack * | PidTrk () const |
double | pol2 (double x, double *par) |
double | pol2 (double x, double *par) |
double | pol3 (double x, double *par) |
double | pol3 (double x, double *par) |
double | pol4 (double x, double *par) |
double | pol4 (double x, double *par) |
virtual double | prob (int n) const =0 |
virtual double | prob (int n) const =0 |
double | probCalculate (double chi2, int n) |
double | probCalculate (double chi2, int n) |
double | pt () |
double | pt () |
void | setChiMinCut (const double chi=4) |
void | setChiMinCut (const double chi=4) |
void | setPdfMinSigmaCut (const double pdf=4) |
void | setPdfMinSigmaCut (const double pdf=4) |
void | setRecTrack (EvtRecTrack *trk) |
void | setRecTrack (EvtRecTrack *trk) |
void | setRunNo (const double runh=8093) |
void | setRunNo (const double runh=8093) |
int | tofcValid () const |
int | tofcValid () const |
int | tofeValid () const |
int | tofeValid () const |
int | tofqValid () const |
int | tofqValid () const |
int | tofValid () const |
int | tofValid () const |
int | useDedx () const |
int | useDedx () const |
int | useEmc () const |
int | useEmc () const |
int | useMuc () const |
int | useMuc () const |
int | useTof () const |
int | useTof () const |
int | useTof1 () const |
int | useTof1 () const |
int | useTof2 () const |
int | useTof2 () const |
int | useTofC () const |
int | useTofC () const |
int | useTofE () const |
int | useTofE () const |
int | useTofQ () const |
int | useTofQ () const |
double | velc () |
double | velc () |
double | xmass (int n) |
double | xmass (int n) |
virtual | ~ParticleIDBase () |
virtual | ~ParticleIDBase () |
Protected Member Functions | |
virtual int | LikelihoodCalculation ()=0 |
virtual int | LikelihoodCalculation ()=0 |
virtual int | particleIDCalculation ()=0 |
virtual int | particleIDCalculation ()=0 |
Private Attributes | |
double | m_chimin_cut |
double | m_pdfsigmamin_cut |
double | m_runno |
EvtRecTrack * | m_trk |
EvtRecTrack * | m_trk |
Static Private Attributes | |
const int | DEDX_VALID = 1 |
const int | EMC_VALID = 32 |
const int | IDENTIFY_ELECTRON = 1 |
const int | IDENTIFY_KAON = 8 |
const int | IDENTIFY_MUON = 2 |
const int | IDENTIFY_PION = 4 |
const int | IDENTIFY_PROTON = 16 |
const int | LIKELIHOOD_PID = 2 |
const int | MUC_VALID = 64 |
const int | NEURONNETWORK_PID = 4 |
const int | PROBABILITY_PID = 1 |
const int | TOF1_VALID = 2 |
const int | TOF2_VALID = 4 |
const int | TOF_VALID = 128 |
const int | TOFC_VALID = 256 |
const int | TOFE_VALID = 8 |
const int | TOFQ_VALID = 16 |
const int | USE_DEDX = 1 |
const int | USE_EMC = 32 |
const int | USE_MUC = 64 |
const int | USE_TOF = 128 |
const int | USE_TOF1 = 2 |
const int | USE_TOF2 = 4 |
const int | USE_TOFC = 256 |
const int | USE_TOFE = 8 |
const int | USE_TOFQ = 16 |
|
00039 {m_trk = 0; m_chimin_cut = 4;m_pdfsigmamin_cut=99;}
|
|
00040 {;}
|
|
00039 {m_trk = 0; m_chimin_cut = 4;m_pdfsigmamin_cut=99;}
|
|
00040 {;}
|
|
00091 {return (IDENTIFY_ELECTRON | IDENTIFY_PION | IDENTIFY_KAON | IDENTIFY_PROTON);}
|
|
00091 {return (IDENTIFY_ELECTRON | IDENTIFY_PION | IDENTIFY_KAON | IDENTIFY_PROTON);}
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
|
|
00077 { 00078 double val = 999; 00079 if(!m_trk) return val; 00080 if(!m_trk->isMdcTrackValid()) return val; 00081 RecMdcTrack *mdcTrk = m_trk->mdcTrack(); 00082 val = mdcTrk->charge() + 0.0; 00083 }
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
00052 {return m_chimin_cut;}
|
|
00052 {return m_chimin_cut;}
|
|
00103 {return DEDX_VALID;}
|
|
00103 {return DEDX_VALID;}
|
|
00108 {return EMC_VALID;}
|
|
00108 {return EMC_VALID;}
|
|
00056 {return m_runno;}
|
|
00056 {return m_runno;}
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
|
|
00085 { 00086 double c1 = (y[0]-y[1])*(x[1]-x[2])-(x[0]-x[1])*(y[1]-y[2]); 00087 double c2 = (x[0]*x[0]-x[1]*x[1])*(x[1]-x[2])-(x[1]*x[1]-x[2]*x[2])*(x[0]-x[1]); 00088 double c = c1/c2; 00089 double b1 = (y[0]-y[1])*(x[1]*x[1]-x[2]*x[2])-(x[0]*x[0]-x[1]*x[1])*(y[1]-y[2]); 00090 double b2 = (x[0]-x[1])*(x[1]*x[1]-x[2]*x[2])-(x[1]-x[2])*(x[0]*x[0]-x[1]*x[1]); 00091 double b = b1/b2; 00092 double a = y[0] - b*x[0]-c*x[0]*x[0]; 00093 double y1 = a + b*x1 +c*x1*x1; 00094 return y1; 00095 }
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
00099 {return LIKELIHOOD_PID;}
|
|
00099 {return LIKELIHOOD_PID;}
|
|
00101 {return NEURONNETWORK_PID;}
|
|
00101 {return NEURONNETWORK_PID;}
|
|
00100 {return PROBABILITY_PID;}
|
|
00100 {return PROBABILITY_PID;}
|
|
00109 {return MUC_VALID;}
|
|
00109 {return MUC_VALID;}
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
00092 {return IDENTIFY_ELECTRON;}
|
|
00092 {return IDENTIFY_ELECTRON;}
|
|
00095 {return IDENTIFY_KAON;}
|
|
00095 {return IDENTIFY_KAON;}
|
|
00093 {return IDENTIFY_MUON;}
|
|
00093 {return IDENTIFY_MUON;}
|
|
00094 {return IDENTIFY_PION;}
|
|
00094 {return IDENTIFY_PION;}
|
|
00088 {return (IDENTIFY_PION | IDENTIFY_KAON);}
|
|
00088 {return (IDENTIFY_PION | IDENTIFY_KAON);}
|
|
00090 {return (IDENTIFY_PION | IDENTIFY_KAON | IDENTIFY_ELECTRON);}
|
|
00090 {return (IDENTIFY_PION | IDENTIFY_KAON | IDENTIFY_ELECTRON);}
|
|
00089 {return (IDENTIFY_PION | IDENTIFY_KAON | IDENTIFY_PROTON);}
|
|
00089 {return (IDENTIFY_PION | IDENTIFY_KAON | IDENTIFY_PROTON);}
|
|
00096 {return IDENTIFY_PROTON;}
|
|
00096 {return IDENTIFY_PROTON;}
|
|
|
|
00063 { 00064 double val = 999; 00065 if(!m_trk) return val; 00066 if(!m_trk->isMdcTrackValid()) return val; 00067 RecMdcTrack *mdcTrk = m_trk->mdcTrack(); 00068 val = mdcTrk->p(); 00069 }
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
|
|
00055 { 00056 const double pi = 3.141592653589793238; 00057 const double twoPi = 2*pi; 00058 double chi2 = -0.5*offset*offset/(sigma*sigma); 00059 double pdf = exp(chi2)/(sigma*sqrt(twoPi)); 00060 return pdf; 00061 }
|
|
00054 {return m_pdfsigmamin_cut;}
|
|
00054 {return m_pdfsigmamin_cut;}
|
|
00050 {return m_trk;}
|
|
00050 {return m_trk;}
|
|
|
|
00097 { 00098 double y=x; 00099 return par[0] + (par[1] * y) +(par[2] * y * y); 00100 }
|
|
|
|
00102 { 00103 double y=x; 00104 return par[0] + (par[1] * y) +(par[2] * y * y)+(par[3] * y * y*y); 00105 }
|
|
|
|
00107 { 00108 double y=x; 00109 return par[0] + (par[1] * y) +(par[2] * y * y)+(par[3] * y * y*y) + (par[4] * y * y*y*y); 00110 }
|
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
Implemented in DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, TofQPID, DedxPID, EmcPID, MucPID, ParticleID, Tof1PID, Tof2PID, TofCPID, TofEPID, TofPID, and TofQPID. |
|
|
|
00047 { 00048 double p = -1.0; 00049 if(chi2 < 0) return p; 00050 p = TMath::Prob(chi2, ndof); 00051 return p; 00052 }
|
|
|
|
00070 { 00071 double val = 999; 00072 if(!m_trk) return val; 00073 if(!m_trk->isMdcTrackValid()) return val; 00074 RecMdcTrack *mdcTrk = m_trk->mdcTrack(); 00075 val = mdcTrk->pxy(); 00076 }
|
|
00053 {m_chimin_cut = chi;}
|
|
00053 {m_chimin_cut = chi;}
|
|
00055 {m_pdfsigmamin_cut= pdf;}
|
|
00055 {m_pdfsigmamin_cut= pdf;}
|
|
00051 {m_trk = trk;}
|
|
00051 {m_trk = trk;}
|
|
00057 {m_runno = runh;}
|
|
00057 {m_runno = runh;}
|
|
00107 {return TOFC_VALID;}
|
|
00107 {return TOFC_VALID;}
|
|
00105 {return TOFE_VALID;}
|
|
00105 {return TOFE_VALID;}
|
|
00106 {return TOFQ_VALID;}
|
|
00106 {return TOFQ_VALID;}
|
|
00104 {return TOF_VALID;}
|
|
00104 {return TOF_VALID;}
|
|
00077 {return USE_DEDX;}
|
|
00077 {return USE_DEDX;}
|
|
00084 {return USE_EMC;}
|
|
00084 {return USE_EMC;}
|
|
00085 {return USE_MUC;}
|
|
00085 {return USE_MUC;}
|
|
00078 {return USE_TOF;}
|
|
00078 {return USE_TOF;}
|
|
00079 {return USE_TOF1;}
|
|
00079 {return USE_TOF1;}
|
|
00080 {return USE_TOF2;}
|
|
00080 {return USE_TOF2;}
|
|
00083 {return USE_TOFC;}
|
|
00083 {return USE_TOFC;}
|
|
00081 {return USE_TOFE;}
|
|
00081 {return USE_TOFE;}
|
|
00082 {return USE_TOFQ;}
|
|
00082 {return USE_TOFQ;}
|
|
|
|
00041 { 00042 // double vel = 29.9792458; // tof_path unit in cm. 00043 double vel = 299.792458; // tof path unit in mm 00044 return vel; 00045 }
|
|
|
|
00035 { 00036 double mass[5] = {0.000511, 0.105658, 0.139570,0.493677, 0.938272}; 00037 if(n < 0 || n >=5) return 0.0; 00038 return mass[n]; 00039 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|