--- PamCut/TofCuts/TofDedxHCut/TofDedxHCut.cpp 2011/04/05 17:28:49 1.1 +++ PamCut/TofCuts/TofDedxHCut/TofDedxHCut.cpp 2011/09/30 10:16:36 1.3 @@ -17,7 +17,7 @@ const float TofDedxHCut::_S32_SA_params[] = { 1.6, 1.2, -0.15, -2., 0.8, 1.6, 1.2, -0.2, 0., 0.8 }; TofDedxHCut::TofDedxHCut(const char *cutName, unsigned int layer, bool standAlone) : - PamCut(cutName), _layer(layer), _standAlone(standAlone), _p(NULL) { + PamCut(cutName), _layer(layer), _standAlone(standAlone), _p(NULL) { switch (_layer) { case S11: @@ -71,6 +71,27 @@ if ((auxLayer & 0x1) == 1) { dEdx += event->GetToFLevel2()->GetdEdx(trkSeqNo, currLayer, 100); nLayers++; + // Patch to exclude S115b + if (currLayer == 0) { + ToFTrkVar *tofTrk = event->GetToFLevel2()->GetToFTrkVar(trkSeqNo); + bool has8 = false, has9 = false; + float dedx9 = 0.; + for (Int_t ib = 0; ib < tofTrk->npmtadc; ib++) { + if (tofTrk->pmtadc[ib] == 8) { + has8 = true; + } + if (tofTrk->pmtadc[ib] == 9) { + has9 = true; + dedx9 = tofTrk->dedx[ib]; + } + } + + if (has9) { + dEdx -= (dedx9 / ((int) has8 + 1)); + dEdx *= 2.; + } + } + //End of patch } currLayer++; auxLayer >>= 1; @@ -78,10 +99,10 @@ dEdx /= nLayers; - if (dEdx < 1 / (_p[0] * beta + _p[1]) + _p[2] + _p[3]*beta) + if (dEdx < _p[0] / (_p[1] * beta + _p[2]) + _p[3] + _p[4] * beta) return 0; - if (dEdx > 1 / (_p[4] * beta + _p[5]) + _p[6] + _p[7]*beta) + if (dEdx > _p[5] / (_p[6] * beta + _p[7]) + _p[8] + _p[9] * beta) return 0; return CUTOK;