00001 #include "CutRc.h"
00002
00003
00004
00005
00006
00007 bool
00008 CutRc::Accept(StHiMicroEvent* event)
00009 {
00010
00011 return(
00012 AcceptVertexZ(event) && AcceptCent(event) && AcceptTrgWord(event)
00013 );
00014 }
00015
00016
00017 bool
00018 CutRc::AcceptVertexZ(StHiMicroEvent* event)
00019 {
00020
00021 return(
00022 event->VertexZ() >= mVertexZ[0] &&
00023 event->VertexZ() <= mVertexZ[1]
00024 );
00025 }
00026
00027
00028 bool
00029 CutRc::AcceptEastSideVertexZ(StHiMicroEvent* event)
00030 {
00031
00032 return( event->VertexZ() < 0 );
00033 }
00034
00035
00036 bool
00037 CutRc::AcceptWestSideVertexZ(StHiMicroEvent* event)
00038 {
00039
00040 return( event->VertexZ() > 0 );
00041 }
00042
00043
00044 bool
00045 CutRc::AcceptCent(StHiMicroEvent* event)
00046 {
00047 bool acceptCent = false;
00048 if (mFlowCent[0] >= 0 && mFlowCent[1] >= 0)
00049 { acceptCent=AcceptFlowCent(event); }
00050 else
00051 { acceptCent=AcceptZDCCent(event); }
00052
00053 return acceptCent;
00054 }
00055
00056
00057 bool
00058 CutRc::AcceptFlowCent(StHiMicroEvent* event)
00059 {
00060 return (
00061 flowCentrality(event->NUncorrectedPrimaries()) >= mFlowCent[0] &&
00062 flowCentrality(event->NUncorrectedPrimaries()) <= mFlowCent[1]
00063 );
00064 }
00065
00066
00067 bool
00068 CutRc::AcceptZDCCent(StHiMicroEvent* event)
00069 {
00070 return (
00071 event->ZDCe()+event->ZDCw() >= mZDCSum[0] &&
00072 event->ZDCe()+event->ZDCw() <= mZDCSum[1]
00073 );
00074 }
00075
00076
00077 bool
00078 CutRc::AcceptTrgWord(StHiMicroEvent* event)
00079 {
00080 bool acceptTrgWord = false;
00081
00082 if (event->L3UnbiasedTrigger()) {
00083
00084 if (event->L0TriggerWord() == 4096) acceptTrgWord = true;
00085
00086 if (event->L0TriggerWord() == 4352) acceptTrgWord = true;
00087
00088 }
00089
00090 return acceptTrgWord;
00091
00092 }
00093
00094
00095
00096
00097
00098
00099 bool
00100 CutRc::Accept(StHiMicroTrack* track)
00101 {
00102 return (
00103 track
00104 && AcceptFitPts(track)
00105 && AcceptEta(track)
00106 && AcceptSDcaGl(track)
00107 && AcceptFirstPadrow(track)
00108 && AcceptSameSector(track)
00109 );
00110 }
00111
00112
00113 bool
00114 CutRc::AcceptNoDca(StHiMicroTrack* track)
00115 {
00116 return (
00117 track
00118 && AcceptFitPts(track)
00119 && AcceptEta(track)
00120 && AcceptFirstPadrow(track)
00121 && AcceptSameSector(track)
00122 );
00123 }
00124
00125
00126 bool
00127 CutRc::AcceptNoEta(StHiMicroTrack* track)
00128 {
00129 return (
00130 track
00131 && AcceptFitPts(track)
00132 && AcceptSDcaGl(track)
00133 && AcceptFirstPadrow(track)
00134 && AcceptSameSector(track)
00135 );
00136 }
00137
00138
00139
00140
00141
00142 bool
00143 CutRc::AcceptFitPts(StHiMicroTrack* track)
00144 {
00145 return(
00146 track->FitPts() >= mFitPts[0] &&
00147 track->FitPts() <= mFitPts[1]
00148 );
00149 }
00150
00151
00152 bool
00153 CutRc::AcceptEta(StHiMicroTrack* track)
00154 {
00155 return(
00156 track->EtaPr() >= mEta[0] &&
00157 track->EtaPr() <= mEta[1]
00158 );
00159 }
00160
00161
00162 bool
00163 CutRc::AcceptSDcaGl(StHiMicroTrack* track)
00164 {
00165 return(
00166 track->DcaGl() >= mSDcaGl[0] &&
00167 track->DcaGl() <= mSDcaGl[1] &&
00168 track->DcaXYGl() >= mDcaXYGl[0] &&
00169 track->DcaXYGl() <= mDcaXYGl[1]
00170 );
00171 }
00172
00173
00174 bool
00175 CutRc::AcceptFirstPadrow(StHiMicroTrack* track)
00176 {
00177 int firstPadrow = track->FirstPadRow();
00178
00179 return (track && firstPadrow>=mFirstPadrow[0]
00180 && firstPadrow<=mFirstPadrow[1]);
00181
00182 }
00183
00184
00185 bool
00186 CutRc::AcceptSameSector(StHiMicroTrack* track)
00187 {
00188
00189
00190
00191
00192 if (mSameSector) {
00193 return (track && track->FirstSector() == track->LastSector());
00194 } else {
00195 return true;
00196 }
00197
00198 }
00199
00200
00201 bool
00202 CutRc::AcceptWestSideTrack(StHiMicroTrack* track)
00203 {
00204
00205
00206 return (track && track->FirstSector() <= 12 && track->LastSector() <= 12);
00207
00208 }
00209
00210
00211 bool
00212 CutRc::AcceptEastSideTrack(StHiMicroTrack* track)
00213 {
00214
00215
00216 return (track && track->FirstSector() >= 13 && track->LastSector() >= 13);
00217
00218 }
00219
00220
00221 bool
00222 CutRc::AcceptTrackVtxZHalf(StHiMicroTrack* track, Float_t vtxZ)
00223 {
00224
00225 if ((AcceptWestSideTrack(track) && vtxZ > 0) || (AcceptEastSideTrack(track) && vtxZ < 0))
00226 { return true; } else { return false; }
00227
00228 }
00229
00230 bool
00231 CutRc::AcceptTrackHalf(StHiMicroTrack* track)
00232 {
00233
00234 if (mCrossCM) {
00235 return true;
00236 } else {
00237 if (AcceptWestSideTrack(track) || AcceptEastSideTrack(track))
00238 { return true; } else { return false; }
00239 }
00240 }
00241