00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "StHbtMaker/Cut/adamsTrackCut.h"
00017 #include <cstdio>
00018
00019 #ifdef __ROOT__
00020 ClassImp(adamsTrackCut)
00021 #endif
00022
00023
00024
00025 adamsTrackCut::adamsTrackCut(): franksTrackCut() {
00026 mPIDPThreshold = 0;
00027 }
00028
00029 adamsTrackCut::adamsTrackCut(adamsTrackCut& c) : franksTrackCut(c) {
00030 mPIDPThreshold = c.mPIDPThreshold;
00031 #ifdef STHBTDEBUG
00032 cout << " adamsTrackCut::adamsTrackCut(adamsTrackCut& c) " << endl;
00033 #endif
00034 }
00035
00036
00037 adamsTrackCut::~adamsTrackCut(){
00038 }
00039
00040
00041 bool adamsTrackCut::Pass(const StHbtTrack* track){
00042
00043
00044 float TEnergy = ::sqrt(track->P().mag2()+mMass*mMass);
00045 float TRapidity = 0.5*::log((TEnergy+track->P().z())/
00046 (TEnergy-track->P().z()));
00047
00048 #ifdef STHBTDEBUG
00049 cout <<
00050 track->NSigmaElectron() << " " <<
00051 track->NSigmaPion() << " " <<
00052 track->NSigmaKaon() << " " <<
00053 track->NSigmaProton() << " " <<
00054 track->DCAxy() << " " <<
00055 track->DCAxyGlobal() << " " <<
00056 track->NHits() << " " <<
00057 track->NHitsDedx() << " " <<
00058 track->P().mag() << " " <<
00059 track->Pt() << " " <<
00060 TRapidity << " " <<
00061 track->Charge() << " ";
00062 #endif
00063
00064 bool goodPID;
00065
00066 if (track->P().mag() < mPIDPThreshold)
00067 {
00068
00069 goodPID = (
00070 (track->NSigmaElectron() >= mNSigmaElectron[0]) &&
00071 (track->NSigmaElectron() <= mNSigmaElectron[1]) &&
00072 (track->NSigmaPion() >= mNSigmaPion[0]) &&
00073 (track->NSigmaPion() <= mNSigmaPion[1]) &&
00074 (track->NSigmaKaon() >= mNSigmaKaon[0]) &&
00075 (track->NSigmaKaon() <= mNSigmaKaon[1]) &&
00076 (track->NSigmaProton() >= mNSigmaProton[0]) &&
00077 (track->NSigmaProton() <= mNSigmaProton[1]) &&
00078 !( (track->NSigmaElectron() > mNSigmaAntiElectron[0]) &&
00079 (track->NSigmaElectron() < mNSigmaAntiElectron[1]) ) &&
00080 !( (track->NSigmaPion() > mNSigmaAntiPion[0]) &&
00081 (track->NSigmaPion() < mNSigmaAntiPion[1]) ) &&
00082 !( (track->NSigmaKaon() > mNSigmaAntiKaon[0]) &&
00083 (track->NSigmaKaon() < mNSigmaAntiKaon[1]) ) &&
00084 !( (track->NSigmaProton() > mNSigmaAntiProton[0]) &&
00085 (track->NSigmaProton() < mNSigmaAntiProton[1]) ) &&
00086 (track->Charge() == mCharge || mCharge==0 )
00087 );
00088 }
00089 else
00090 {
00091
00092 goodPID = (
00093 (track->PidProbElectron() >= mPidProbElectron[0]) &&
00094 (track->PidProbElectron() <= mPidProbElectron[1]) &&
00095 (track->PidProbPion() >= mPidProbPion[0]) &&
00096 (track->PidProbPion() <= mPidProbPion[1]) &&
00097 (track->PidProbKaon() >= mPidProbKaon[0]) &&
00098 (track->PidProbKaon() <= mPidProbKaon[1]) &&
00099 (track->PidProbProton() >= mPidProbProton[0]) &&
00100 (track->PidProbProton() <= mPidProbProton[1]) &&
00101 (track->Charge() == mCharge || mCharge==0 )
00102 );
00103 }
00104
00105 #ifdef STHBTDEBUG
00106 cout << mNSigmaElectron[0] << " << " << track->NSigmaElectron() << " << " << mNSigmaElectron[1] << " ";
00107 cout << (track->NSigmaElectron() >= mNSigmaElectron[0]) << (track->NSigmaElectron() <= mNSigmaElectron[1]) << endl;
00108 #endif
00109
00110 bool goodTrack=( true &&
00111 (track->DCAxy() >= mDCA[0]) &&
00112 (track->DCAxy() <= mDCA[1]) &&
00113 (track->DCAxyGlobal() >= mDCAGlobal[0]) &&
00114 (track->DCAxyGlobal() <= mDCAGlobal[1]) &&
00115 (track->NHits() >= mNHits[0]) &&
00116 (track->NHits() <= mNHits[1]) &&
00117 (track->NHitsDedx() >= mNdEdxHits[0]) &&
00118 (track->NHitsDedx() <= mNdEdxHits[1]) &&
00119 (track->P().mag() >= mP[0]) &&
00120 (track->P().mag() <= mP[1]) &&
00121 (track->Pt() >= mPt[0]) &&
00122 (track->Pt() <= mPt[1]) &&
00123 (track->P().x() >= mPx[0]) &&
00124 (track->P().x() <= mPx[1]) &&
00125 (track->P().y() >= mPy[0]) &&
00126 (track->P().y() <= mPy[1]) &&
00127 (track->P().z() >= mPz[0]) &&
00128 (track->P().z() <= mPz[1]) &&
00129 (track->P().pseudoRapidity() >= mEta[0]) &&
00130 (track->P().pseudoRapidity() <= mEta[1]) &&
00131 (TRapidity >= mRapidity[0]) &&
00132 (TRapidity <= mRapidity[1])
00133 );
00134
00135
00136 #ifdef STHBTDEBUG
00137 cout << " goodPID=" << goodPID << " ";
00138 cout << " goodTrack=" << goodTrack << " ";
00139 cout << endl;
00140 #endif
00141
00142 (goodTrack && goodPID) ? mNTracksPassed++ : mNTracksFailed++;
00143
00144 return (goodPID && goodTrack);
00145 }
00146
00147 StHbtString adamsTrackCut::Report() {
00148 return franksTrackCut::Report();
00149 }
00150
00151
00152 ostrstream* adamsTrackCut::finalReport() const{
00153 return franksTrackCut::finalReport();
00154 }
00155