--- PamCut/CollectionActions/Histo2DActions/TofDedxVsBetaHistoAction/TofDedxVsBetaHistoAction.cpp 2009/09/25 15:36:35 1.1 +++ PamCut/CollectionActions/Histo2DActions/TofDedxVsBetaHistoAction/TofDedxVsBetaHistoAction.cpp 2012/01/03 08:57:21 1.5 @@ -11,49 +11,63 @@ TofDedxVsBetaHistoAction::TofDedxVsBetaHistoAction(const char *actionName, unsigned int layers, bool standAlone, TString outFileBase, TString mode, bool outRoot, bool outText, TString title) : - Histo2DAction (actionName, title, outFileBase, mode, outRoot, outText), _layers(layers), _nLayers(0), - _badEvents(0), _standAlone(standAlone) { + Histo2DAction(actionName, title, outFileBase, mode, outRoot, outText), _layers(layers), _nLayers(0), _badEvents( + 0), _standAlone(standAlone) { + bool buildTitle = false; if (title == "") { + buildTitle = true; title = "TOF dE/dx ("; - if ((_layers & S11) == S11) { + } + if ((_layers & S11) == S11) { + if (buildTitle) title += "S11"; - _nLayers++; - } - if ((_layers & S12) == S12) { + _nLayers++; + } + if ((_layers & S12) == S12) { + if (buildTitle) { if (_nLayers > 0) title += ","; title += "S12"; - _nLayers++; } - if ((_layers & S21) == S21) { + _nLayers++; + } + if ((_layers & S21) == S21) { + if (buildTitle) { if (_nLayers > 0) title += ","; title += "S21"; - _nLayers++; } - if ((_layers & S22) == S22) { + _nLayers++; + } + if ((_layers & S22) == S22) { + if (buildTitle) { if (_nLayers > 0) title += ","; title += "S22"; - _nLayers++; } - if ((_layers & S31) == S31) { + _nLayers++; + } + if ((_layers & S31) == S31) { + if (buildTitle) { if (_nLayers > 0) title += ","; title += "S31"; - _nLayers++; } - if ((_layers & S32) == S32) { + _nLayers++; + } + if ((_layers & S32) == S32) { + if (buildTitle) { if (_nLayers > 0) title += ","; title += "S32"; - _nLayers++; } + _nLayers++; + } + if (buildTitle) title += ") Vs Beta"; - SetTitle(title); - } + SetTitle(title); } @@ -64,61 +78,83 @@ static unsigned int badLayers; static int trkSeqNo; + static int idx; if (_standAlone) - trkSeqNo = 0; + trkSeqNo = -1; else - for (int i = 0; i < event->GetToFLevel2()->ntrk(); i++) { - if (event->GetToFLevel2()->GetToFTrkVar(i)->trkseqno == event->GetTrack(0)->GetTrkTrack()->GetSeqNo()) - trkSeqNo = i; - } + trkSeqNo = event->GetTrack(0)->GetTrkTrack()->GetSeqNo(); + + for (int i = 0; i < event->GetToFLevel2()->ntrk(); i++) { + if (event->GetToFLevel2()->GetToFTrkVar(i)->trkseqno == trkSeqNo) + idx = i; + } dEdx = 0.; badLayers = 0; if ((_layers & S11) == S11) { - dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 0, 100); + dEdxLayer = event->GetToFLevel2()->GetdEdx(idx, 0, 100); + // Patch to exclude S115b + ToFTrkVar *tofTrk = event->GetToFLevel2()->GetToFTrkVar(idx); + 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) { + dEdxLayer -= (dedx9 / ((int) has8 + 1)); + dEdxLayer *= 2.; + } + //End of patch if (dEdxLayer > 0. && dEdxLayer < 4090) dEdx += dEdxLayer; else badLayers++; } if ((_layers & S12) == S12) { - dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 1, 100); + dEdxLayer = event->GetToFLevel2()->GetdEdx(idx, 1, 100); if (dEdxLayer > 0. && dEdxLayer < 4090) dEdx += dEdxLayer; else badLayers++; } if ((_layers & S21) == S21) { - dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 2, 100); + dEdxLayer = event->GetToFLevel2()->GetdEdx(idx, 2, 100); if (dEdxLayer > 0. && dEdxLayer < 4090) dEdx += dEdxLayer; else badLayers++; } if ((_layers & S22) == S22) { - dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 3, 100); + dEdxLayer = event->GetToFLevel2()->GetdEdx(idx, 3, 100); if (dEdxLayer > 0. && dEdxLayer < 4090) dEdx += dEdxLayer; else badLayers++; } if ((_layers & S31) == S31) { - dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 4, 100); + dEdxLayer = event->GetToFLevel2()->GetdEdx(idx, 4, 100); if (dEdxLayer > 0. && dEdxLayer < 4090) dEdx += dEdxLayer; else badLayers++; } if ((_layers & S32) == S32) { - dEdxLayer = event->GetToFLevel2()->GetdEdx(trkSeqNo, 5, 100); + dEdxLayer = event->GetToFLevel2()->GetdEdx(idx, 5, 100); if (dEdxLayer > 0. && dEdxLayer < 4090) dEdx += dEdxLayer; else badLayers++; } if (badLayers == 0) { - dEdx /= _nLayers - badLayers; - Fill(event->GetToFLevel2()->GetToFTrkVar(trkSeqNo)->beta[12], dEdx); + dEdx /= _nLayers; + Fill(event->GetToFLevel2()->GetToFTrkVar(idx)->beta[12], dEdx); } else _badEvents++;