00001 #include "CutMc.h"
00002 #include "StMiniMcEvent/StMiniMcEvent.h"
00003
00004 bool
00005 CutMc::AcceptTrackHalf(StTinyRcTrack* track, float vtxZ)
00006 {
00007
00008 if(VertexSkipOn() &&
00009 !IsOutSide(track->mFirstZ,track->mLastZ,mVertexZSkip)) return false;
00010 if(mHitAvoid &&
00011 !IsOutSide(track->mFirstZ,track->mLastZ,mHitAvoid)) return false;
00012 if(Half() && !IsSameSide(vtxZ,track->mFirstZ,track->mLastZ)) return false;
00013 if(HitHalf() && !IsHitSameSide(track->mFirstZ,track->mLastZ))
00014 return false;
00015 if(GeomHalf() && !IsGeomSameSide(vtxZ,atan2(track->mPzGl,track->mPtGl)))
00016 return false;
00017
00018 return true;
00019 }
00020
00021 bool
00022 CutMc::AcceptCent(StMiniMcEvent* event)
00023 {
00024 bool acceptCent = false;
00025 if(mDoFlowCent) acceptCent=AcceptFlowCent(event);
00026 else if(mDoZdcCtbCent) acceptCent=AcceptZdcCtbCent(event);
00027 else if(mDoHMinusCent) acceptCent=AcceptHMinusCent(event);
00028 else if(mDoNchCent || mDoNchCentKludge) acceptCent=AcceptNchCent(event);
00029
00030 return acceptCent;
00031 }
00032
00033 bool
00034 CutMc::Accept(StMiniMcEvent* event)
00035 {
00036
00037 return(
00038 AcceptVertexZ(event) && AcceptCent(event)
00039 );
00040 }
00041
00042 bool
00043 CutMc::AcceptFlowCent(StMiniMcEvent* event)
00044 {
00045 return (
00046 event->mCentrality >= mFlowCent[0] &&
00047 event->mCentrality <= mFlowCent[1]
00048 );
00049 }
00050
00051 bool
00052 CutMc::AcceptZdcCtbCent(StMiniMcEvent* event)
00053 {
00054 double zdcSum = event->mZDCe + event->mZDCw;
00055 double 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 CutMc::AcceptHMinusCent(StMiniMcEvent* 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 CutMc::AcceptNchCent(StMiniMcEvent* 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
00090 bool
00091 CutMc::AcceptVertexZ(StMiniMcEvent* event)
00092 {
00093
00094 return(
00095 event->mVertexZ >= mVertexZ[0] &&
00096 event->mVertexZ <= mVertexZ[1] &&
00097 ( (!mVertexZSkip) ? true : fabs(event->mVertexZ)>mVertexZSkip )
00098 );
00099 }
00100
00101
00102
00103
00104
00105
00106
00107 bool
00108 CutMc::Accept(StMiniMcPair* track)
00109 {
00110 return (
00111 track &&
00112 AcceptFitPts(track) &&
00113 AcceptEtaMc(track) &&
00114 AcceptSDcaGl(track)
00115 );
00116 }
00117
00118 bool
00119 CutMc::AcceptNoEta(StTinyRcTrack* track)
00120 {
00121 return (
00122 track &&
00123 AcceptFitPts(track) &&
00124 AcceptSDcaGl(track)
00125 );
00126 }
00127
00128 bool
00129 CutMc::AcceptFitPts(StTinyRcTrack* track)
00130 {
00131 return(
00132 track->mFitPts >= mFitPts[0] &&
00133 track->mFitPts <= mFitPts[1]
00134 );
00135 }
00136
00137 bool
00138 CutMc::AcceptMcPts(StTinyMcTrack* track)
00139 {
00140 return(
00141 track->mNHitMc >= mMcPts[0] &&
00142 track->mNHitMc <= mMcPts[1]
00143 );
00144 }
00145
00146 bool
00147 CutMc::AcceptEtaPr(StTinyRcTrack* track)
00148 {
00149 return(
00150 track->mEtaPr >= mEta[0] &&
00151 track->mEtaPr <= mEta[1]
00152 );
00153 }
00154
00155
00156 bool
00157 CutMc::AcceptEtaMc(StTinyMcTrack* track)
00158 {
00159 return(
00160 track->mEtaMc >= mEta[0] &&
00161 track->mEtaMc <= mEta[1]
00162 );
00163 }
00164
00165 bool
00166 CutMc::AcceptEtaMcTight(StTinyMcTrack* track)
00167 {
00168 return(
00169 track->mEtaMc >= mEtaTight[0] &&
00170 track->mEtaMc <= mEtaTight[1]
00171 );
00172 }
00173
00174
00175 bool
00176 CutMc::AcceptSDcaGl(StTinyRcTrack* track)
00177 {
00178 return(
00179 track->mDcaGl >= mSDcaGl[0] &&
00180 track->mDcaGl <= mSDcaGl[1]
00181 );
00182 }