Author: [log in to unmask] Date: Mon Aug 31 18:30:53 2015 New Revision: 3479 Log: don't crash on tracks without L1 hits Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java Mon Aug 31 18:30:53 2015 @@ -263,29 +263,33 @@ pos = trks.get(0); ele = trks.get(1); } - - Double[] eleIso = TrackUtils.getIsolations(ele.getTracks().get(0), hitToStrips, hitToRotated); - Double[] posIso = TrackUtils.getIsolations(pos.getTracks().get(0), hitToStrips, hitToRotated); - double eleL1Iso = Math.min(eleIso[0], eleIso[1]); - double posL1Iso = Math.min(posIso[0], posIso[1]); - double minL1Iso = Math.min(eleL1Iso,posL1Iso); - L1IsoVsVz.fill(uncVert.getPosition().z(), minL1Iso); - - double pe = ele.getMomentum().magnitude(); - double pp = pos.getMomentum().magnitude(); - pEleVspPos.fill(pe, pp); - pxEleVspxPos.fill(ele.getMomentum().x(), pos.getMomentum().x()); - pyEleVspyPos.fill(ele.getMomentum().y(), pos.getMomentum().y()); - if (pe < v0MaxPCut && pp < v0MaxPCut && (pe + pp) > v0ESumMinCut && (pe + pp) < v0ESumMaxCut)//enrich radiative-like events - { - pEleVspPosWithCut.fill(pe, pp); + if (trks.get(0).getCharge() < 0 && trks.get(1).getCharge() > 0) { + + Double[] eleIso = TrackUtils.getIsolations(ele.getTracks().get(0), hitToStrips, hitToRotated); + Double[] posIso = TrackUtils.getIsolations(pos.getTracks().get(0), hitToStrips, hitToRotated); + if (eleIso[0] != null && posIso[0] != null) { + double eleL1Iso = Math.min(eleIso[0], eleIso[1]); + double posL1Iso = Math.min(posIso[0], posIso[1]); + double minL1Iso = Math.min(eleL1Iso, posL1Iso); + L1IsoVsVz.fill(uncVert.getPosition().z(), minL1Iso); + } + + double pe = ele.getMomentum().magnitude(); + double pp = pos.getMomentum().magnitude(); + pEleVspPos.fill(pe, pp); + pxEleVspxPos.fill(ele.getMomentum().x(), pos.getMomentum().x()); + pyEleVspyPos.fill(ele.getMomentum().y(), pos.getMomentum().y()); + if (pe < v0MaxPCut && pp < v0MaxPCut && (pe + pp) > v0ESumMinCut && (pe + pp) < v0ESumMaxCut)//enrich radiative-like events + { + pEleVspPosWithCut.fill(pe, pp); + } } double eleT = TrackUtils.getTrackTime(ele.getTracks().get(0), hitToStrips, hitToRotated); double posT = TrackUtils.getTrackTime(pos.getTracks().get(0), hitToStrips, hitToRotated); double meanT = (eleT + posT) / 2.0; v0Time.fill(meanT); - v0Dt.fill(eleT-posT); + v0Dt.fill(eleT - posT); trigTimeV0Time.fill(meanT, event.getTimeStamp() % 24); trigTime.fill(event.getTimeStamp() % 24); }