--- PamCut/TofCuts/TofDedxHCut/TofDedxHCut.cpp 2011/09/30 10:16:36 1.3 +++ PamCut/TofCuts/TofDedxHCut/TofDedxHCut.cpp 2012/01/03 08:57:21 1.5 @@ -16,47 +16,81 @@ const float TofDedxHCut::_S31_SA_params[] = { 1.6, 1.2, -0.15, -2., 0.8, 1.6, 1.2, -0.2, 0., 0.8 }; 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) : +const float TofDedxHCut::_S11_SA_params_strict[] = { 1.5, 1.2, -0.15, -1.7, 0.8, 1.6, 1.2, -0.2, -0.8, 0.8 }; +const float TofDedxHCut::_S12_SA_params_strict[] = { 1.5, 1.2, -0.15, -1.7, 0.8, 1.6, 1.2, -0.2, -0.8, 0.8 }; +const float TofDedxHCut::_S21_SA_params_strict[] = { 1.6, 1.2, -0.15, -1.7, 0.8, 1.6, 1.2, -0.2, -0.8, 0.8 }; +const float TofDedxHCut::_S22_SA_params_strict[] = { 1.6, 1.2, -0.15, -1.7, 0.8, 1.6, 1.2, -0.2, -0.8, 0.8 }; +const float TofDedxHCut::_S31_SA_params_strict[] = { 1.6, 1.2, -0.15, -1.7, 0.8, 1.6, 1.2, -0.2, -0.8, 0.8 }; +const float TofDedxHCut::_S32_SA_params_strict[] = { 1.6, 1.2, -0.15, -1.7, 0.8, 1.6, 1.2, -0.2, -0.8, 0.8 }; + +TofDedxHCut::TofDedxHCut(const char *cutName, unsigned int layer, bool standAlone, bool strict) : PamCut(cutName), _layer(layer), _standAlone(standAlone), _p(NULL) { - switch (_layer) { - case S11: - _p = _S11_SA_params; - break; - case S12: - _p = _S12_SA_params; - break; - case S21: - _p = _S21_SA_params; - break; - case S22: - _p = _S22_SA_params; - break; - case S31: - _p = _S31_SA_params; - break; - case S32: - _p = _S32_SA_params; - break; - default: - _p = _S21_SA_params; + if (strict) { + switch (_layer) { + case S11: + _p = _S11_SA_params_strict; + break; + case S12: + _p = _S12_SA_params_strict; + break; + case S21: + _p = _S21_SA_params_strict; + break; + case S22: + _p = _S22_SA_params_strict; + break; + case S31: + _p = _S31_SA_params_strict; + break; + case S32: + _p = _S32_SA_params_strict; + break; + default: + _p = _S21_SA_params_strict; + } + } + else { + switch (_layer) { + case S11: + _p = _S11_SA_params; + break; + case S12: + _p = _S12_SA_params; + break; + case S21: + _p = _S21_SA_params; + break; + case S22: + _p = _S22_SA_params; + break; + case S31: + _p = _S31_SA_params; + break; + case S32: + _p = _S32_SA_params; + break; + default: + _p = _S21_SA_params; + } } - } int TofDedxHCut::Check(PamLevel2 *event) { static int trkSeqNo; + static int idx; if (_standAlone) - trkSeqNo = 0; - else { - for (int i = 0; i < event->GetToFLevel2()->ntrk(); i++) { - if (event->GetToFLevel2()->GetToFTrkVar(i)->trkseqno == event->GetTrack(0)->GetTrkTrack()->GetSeqNo()) - trkSeqNo = i; - } + trkSeqNo = -1; + else + trkSeqNo = event->GetTrack(0)->GetTrkTrack()->GetSeqNo(); + + for (int i = 0; i < event->GetToFLevel2()->ntrk(); i++) { + if (event->GetToFLevel2()->GetToFTrkVar(i)->trkseqno == trkSeqNo) + idx = i; } - float beta = event->GetToFLevel2()->GetToFTrkVar(trkSeqNo)->beta[12]; + float beta = event->GetToFLevel2()->GetToFTrkVar(idx)->beta[12]; static unsigned int auxLayer; static float dEdx; @@ -69,11 +103,11 @@ nLayers = 0; while (auxLayer > 0) { if ((auxLayer & 0x1) == 1) { - dEdx += event->GetToFLevel2()->GetdEdx(trkSeqNo, currLayer, 100); + dEdx += event->GetToFLevel2()->GetdEdx(idx, currLayer, 100); nLayers++; // Patch to exclude S115b if (currLayer == 0) { - ToFTrkVar *tofTrk = event->GetToFLevel2()->GetToFTrkVar(trkSeqNo); + ToFTrkVar *tofTrk = event->GetToFLevel2()->GetToFTrkVar(idx); bool has8 = false, has9 = false; float dedx9 = 0.; for (Int_t ib = 0; ib < tofTrk->npmtadc; ib++) {