00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "StHbtMaker/Infrastructure/StHbtAihongPid.h"
00026 #include <Stiostream.h>
00027 #include "StEventUtilities/StuProbabilityPidAlgorithm.h"
00028
00029 #ifdef __ROOT__
00030 ClassImp(StHbtAihongPid)
00031 #endif
00032
00033
00034 StHbtAihongPid* StHbtAihongPid::_instance=0;
00035
00036 StHbtAihongPid* StHbtAihongPid::Instance(const char* fileName) {
00037 if (_instance == 0 ) _instance = new StHbtAihongPid(fileName);
00038 return _instance;
00039 }
00040
00041 StHbtAihongPid::StHbtAihongPid(const char* fileName) {
00042 cout << " StHbtAihongPid::StHbtAihongPid() " << endl;
00043 mAihongPid = new StuProbabilityPidAlgorithm() ;
00044 setPidTable(fileName);
00045 }
00046
00047 void StHbtAihongPid::setPidTable(const char* fileName) {
00048 StuProbabilityPidAlgorithm::readParametersFromFile(fileName);
00049
00050 }
00051
00052 void StHbtAihongPid::updateEvent(int refMult) {
00053 if (refMult > 225 ) mAihongCentrality = 0.03;
00054 else if (refMult > 215 ) mAihongCentrality = 0.05;
00055 else if (refMult > 200 ) mAihongCentrality = 0.07;
00056 else if (refMult > 180 ) mAihongCentrality = 0.10;
00057 else if (refMult > 140 ) mAihongCentrality = 0.18;
00058 else if (refMult > 130 ) mAihongCentrality = 0.20;
00059 else if (refMult > 120 ) mAihongCentrality = 0.23;
00060 else if (refMult > 115 ) mAihongCentrality = 0.24;
00061 else if (refMult > 100 ) mAihongCentrality = 0.28;
00062 else mAihongCentrality = 0.99;
00063 }
00064
00065 void StHbtAihongPid::updateTrack(int charge, double p, double eta, int nHitsDedx, double dedx) {
00066 mAihongPid->processPIDAsFunction(mAihongCentrality, 0., charge, p, eta, nHitsDedx, dedx);
00067 }
00068
00069 StuProbabilityPidAlgorithm* StHbtAihongPid::aihongPid() {
00070 return mAihongPid;
00071 }
00072
00073 StuProbabilityPidAlgorithm* StHbtAihongPid::aihongPid(int refMult, int charge, double p, double eta, int nHitsDedx, double dedx){
00074 updateEvent(refMult);
00075 updateTrack(charge, p, eta, nHitsDedx, dedx);
00076 return mAihongPid;
00077 }
00078
00079 StuProbabilityPidAlgorithm* StHbtAihongPid::aihongPid(int charge, double p, double eta, int nHitsDedx, double dedx) {
00080 updateTrack(charge, p, eta, nHitsDedx, dedx);
00081 return mAihongPid;
00082 }
00083
00084
00085
00086