00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "StHbtMaker/Cut/mikesTrackCut.h"
00017 #include <cstdio>
00018
00019 #ifdef __ROOT__
00020 ClassImp(mikesTrackCut)
00021 #endif
00022
00023 mikesTrackCut::mikesTrackCut(){
00024 mNTracksPassed = mNTracksFailed = 0;
00025 }
00026
00027
00028
00029
00030
00031 bool mikesTrackCut::Pass(const StHbtTrack* track){
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 bool goodPID = ((track->NSigmaPion() > mNSigmaPion[0]) &&
00042 (track->NSigmaPion() < mNSigmaPion[1]) &&
00043 (track->NSigmaKaon() > mNSigmaKaon[0]) &&
00044 (track->NSigmaKaon() < mNSigmaKaon[1]) &&
00045 (track->NSigmaProton() > mNSigmaProton[0]) &&
00046 (track->NSigmaProton() < mNSigmaProton[1]));
00047 if (mCharge !=0){
00048 goodPID = (goodPID&&(track->Charge() == mCharge));
00049 }
00050
00051 if (goodPID){
00052 float TEnergy = ::sqrt(track->P().mag2()+mMass*mMass);
00053 float TRapidity = 0.5*::log((TEnergy+track->P().z())/
00054 (TEnergy-track->P().z()));
00055
00056 float Pt = ::sqrt((track->P().x())*(track->P().x())+
00057 (track->P().y())*(track->P().y()));
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 bool goodTrack=
00073 ((track->DCAxy() > mDCA[0]) &&
00074 (track->DCAxy() < mDCA[1]) &&
00075 (track->NHits() > mNHits[0]) &&
00076 (track->NHits() < mNHits[1]) &&
00077 (Pt > mPt[0]) &&
00078 (Pt < mPt[1]) &&
00079 (TRapidity > mRapidity[0]) &&
00080 (TRapidity < mRapidity[1]));
00081
00082 goodTrack ? mNTracksPassed++ : mNTracksFailed++;
00083 return (goodTrack);
00084 }
00085 else{
00086 mNTracksFailed++;
00087 return (goodPID);
00088 }
00089 }
00090
00091 StHbtString mikesTrackCut::Report(){
00092 string Stemp;
00093 char Ctemp[100];
00094 sprintf(Ctemp,"Particle mass:\t%E\n",this->Mass());
00095 Stemp=Ctemp;
00096 sprintf(Ctemp,"Particle charge:\t%d\n",mCharge);
00097 Stemp=Ctemp;
00098 sprintf(Ctemp,"Particle Nsigma from pion:\t%E - %E\n",mNSigmaPion[0],mNSigmaPion[1]);
00099 Stemp+=Ctemp;
00100 sprintf(Ctemp,"Particle Nsigma from kaon:\t%E - %E\n",mNSigmaKaon[0],mNSigmaKaon[1]);
00101 Stemp+=Ctemp;
00102 sprintf(Ctemp,"Particle Nsigma from proton:\t%E - %E\n",mNSigmaProton[0],mNSigmaProton[1]);
00103 Stemp+=Ctemp;
00104 sprintf(Ctemp,"Particle #hits:\t%d - %d\n",mNHits[0],mNHits[1]);
00105 Stemp+=Ctemp;
00106 sprintf(Ctemp,"Particle pT:\t%E - %E\n",mPt[0],mPt[1]);
00107 Stemp+=Ctemp;
00108 sprintf(Ctemp,"Particle rapidity:\t%E - %E\n",mRapidity[0],mRapidity[1]);
00109 Stemp+=Ctemp;
00110 sprintf(Ctemp,"Particle DCA:\t%E - %E\n",mDCA[0],mDCA[1]);
00111 Stemp+=Ctemp;
00112 sprintf(Ctemp,"Number of tracks which passed:\t%ld Number which failed:\t%ld\n",mNTracksPassed,mNTracksFailed);
00113 Stemp += Ctemp;
00114 StHbtString returnThis = Stemp;
00115 return returnThis;
00116 }