00001 #include "CutRc.h"
00002
00003 bool
00004 CutRc::AcceptTrackHalf(StHiMicroTrack* track, float vtxZ)
00005 {
00006 if(VertexSkipOn() &&
00007 !IsOutSide(track->mFirstZ,track->mLastZ,mVertexZSkip)) return false;
00008 if(mHitAvoid &&
00009 !IsOutSide(track->mFirstZ,track->mLastZ,mHitAvoid)) return false;
00010 if(Half() && !IsSameSide(vtxZ,track->mFirstZ,track->mLastZ)) return false;
00011 if(HitHalf() && !IsHitSameSide(track->mFirstZ,track->mLastZ))
00012 return false;
00013 if(GeomHalf() && !IsGeomSameSide(vtxZ,track->mDipAngleGl))
00014 return false;
00015
00016 return true;
00017 }
00018
00019 bool
00020 CutRc::AcceptCent(StHiMicroEvent* event)
00021 {
00022 bool acceptCent = false;
00023 if(mDoFlowCent) acceptCent=AcceptFlowCent(event);
00024 else if(mDoZdcCtbCent) acceptCent=AcceptZdcCtbCent(event);
00025 else if(mDoHMinusCent) acceptCent=AcceptHMinusCent(event);
00026 else if(mDoNchCent || mDoNchCentKludge) acceptCent=AcceptNchCent(event);
00027 else acceptCent = false;
00028
00029 return acceptCent;
00030 }
00031
00032 bool
00033 CutRc::Accept(StHiMicroEvent* event)
00034 {
00035
00036
00037 return(
00038 AcceptVertexZ(event) && AcceptCent(event)
00039 );
00040 }
00041
00042 bool
00043 CutRc::AcceptFlowCent(StHiMicroEvent* event)
00044 {
00045 return (
00046 event->mCentrality >= mFlowCent[0] &&
00047 event->mCentrality <= mFlowCent[1]
00048 );
00049 }
00050
00051 bool
00052 CutRc::AcceptZdcCtbCent(StHiMicroEvent* event)
00053 {
00054 float zdcSum = event->mZDCe + event->mZDCw;
00055 float ctb = event->mCTB;
00056 NchCentrality zdcCent = centrality(zdcSum,ctb);
00057
00058 return(
00059 zdcCent >= mZdcCtbCent[1] &&
00060 zdcCent <= mZdcCtbCent[0]
00061 );
00062 }
00063
00064 bool
00065 CutRc::AcceptHMinusCent(StHiMicroEvent* event)
00066 {
00067 int nHMinus = event->mNUncorrectedNegativePrimaries;
00068 NchCentrality cent = centralityHMinus(nHMinus);
00069
00070 return(
00071 cent >= mHMinusCent[1] &&
00072 cent <= mHMinusCent[0]
00073 );
00074 }
00075
00076 bool
00077 CutRc::AcceptNchCent(StHiMicroEvent* event)
00078 {
00079 int nCh = event->mNUncorrectedPrimaries;
00080 NchCentrality cent = centralityNch(nCh);
00081 if(mDoNchCentKludge) cent = centralityNchKludge(nCh);
00082
00083 return(
00084 cent >= mNchCent[1] &&
00085 cent <= mNchCent[0]
00086 );
00087 }
00088
00089 bool
00090 CutRc::AcceptVertexZ(StHiMicroEvent* event)
00091 {
00092
00093 return(
00094 event->mVertexZ >= mVertexZ[0] &&
00095 event->mVertexZ <= mVertexZ[1] &&
00096 ( (!mVertexZSkip) ? true : fabs(event->mVertexZ)>mVertexZSkip )
00097 );
00098 }
00099
00100 bool
00101 CutRc::Accept(StHiMicroTrack* track)
00102 {
00103 return (
00104 track &&
00105 AcceptFitPts(track) &&
00106 AcceptEta(track) &&
00107 AcceptSDcaGl(track)
00108 );
00109 }
00110
00111 bool
00112 CutRc::AcceptNoEta(StHiMicroTrack* track)
00113 {
00114 return (
00115 track &&
00116 AcceptFitPts(track) &&
00117 AcceptSDcaGl(track)
00118 );
00119 }
00120
00121 bool
00122 CutRc::AcceptFitPts(StHiMicroTrack* track)
00123 {
00124 return(
00125 track->mFitPts >= mFitPts[0] &&
00126 track->mFitPts <= mFitPts[1]
00127 );
00128 }
00129
00130 bool
00131 CutRc::AcceptEta(StHiMicroTrack* track)
00132 {
00133 return(
00134 track->mEtaPr >= mEta[0] &&
00135 track->mEtaPr <= mEta[1]
00136 );
00137 }
00138
00139 bool
00140 CutRc::AcceptSDcaGl(StHiMicroTrack* track)
00141 {
00142 return(
00143 track->mDcaGl >= mSDcaGl[0] &&
00144 track->mDcaGl <= mSDcaGl[1]
00145 );
00146 }