LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  October 2015

HPS-SVN October 2015

Subject:

r3852 - in /java/trunk: analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Fri, 16 Oct 2015 18:33:09 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (463 lines)

Author: [log in to unmask]
Date: Fri Oct 16 11:32:57 2015
New Revision: 3852

Log:
fancier cut analysis

Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
    java/trunk/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java	Fri Oct 16 11:32:57 2015
@@ -11,6 +11,7 @@
 import hep.physics.vec.VecOp;
 
 import java.util.ArrayList;
+import java.util.EnumSet;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.logging.Logger;
@@ -36,30 +37,63 @@
  */
 public class TridentMonitoring extends DataQualityMonitor {
 
-    private static Logger LOGGER = Logger.getLogger(TridentMonitoring.class.getPackage().getName());
-    
+    private enum Cut {
+
+        TRK_QUALITY("Trk Quality"),
+        VTX_QUALITY("Vtx Quality"),
+        VERTEX_CUTS("Vtx Cuts"),
+        TIMING("Timing"),
+        TRACK_CUTS("Trk Cuts"),
+        CLUSTER_CUTS("Cluster"),
+        EVENT_QUALITY("Evt Quality"),
+        FRONT_HITS("Front Hits"),
+        ISOLATION("Isolation");
+        private final String name;
+        private final static int nCuts = 9;
+        private final static int firstVertexingCut = 7;
+
+        Cut(String name) {
+            this.name = name;
+        }
+
+        static int bitmask(EnumSet<Cut> flags) {
+            int mask = 0;
+            for (Cut flag : flags) {
+                mask |= 1 << flag.ordinal();
+            }
+            return mask;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+    }
+
+    private final static Logger LOGGER = Logger.getLogger(TridentMonitoring.class.getPackage().getName());
+
     private double ebeam = 1.05;
     private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
-    private static final int nCuts = 9;
-    private final String[] cutNames = {"Trk Quality",
-        "V0 Quality",
-        "V0 Vertex",
-        "Timing",
-        "Tracking",
-        "Cluster",
-        "Event",
-        "Front Hits",
-        "Isolation"};
-    private int firstVertexingCut = 0;
-    private static final int PASS = 0;
-    private static final int FAIL = 1;
+//    private static final int nCuts = 9;
+//    private final String[] cutNames = {"Trk Quality",
+//        "V0 Quality",
+//        "V0 Vertex",
+//        "Timing",
+//        "Tracking",
+//        "Cluster",
+//        "Event",
+//        "Front Hits",
+//        "Isolation"};
+//    private int firstVertexingCut = 0;
+    private static final int TRIDENT = 0;
+    private static final int VERTEX = 1;
 
     private final String finalStateParticlesColName = "FinalStateParticles";
     private final String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
 //    private final String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
 //    private final String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates";
 //    private final String trackListName = "MatchedTracks";
-    private String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"};
+    private final String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"};
 
     private final String plotDir = "TridentMonitoring/";
 
@@ -175,36 +209,39 @@
     private IHistogram1D l1Iso;
     private IHistogram2D zVsL1Iso;
 
-    private final IHistogram1D[][] cutVertexMass = new IHistogram1D[nCuts][2];
-    private final IHistogram1D[][] cutVertexZ = new IHistogram1D[nCuts][2];
-    private final IHistogram2D[][] cutVertexZVsMass = new IHistogram2D[nCuts][2];
+    private final IHistogram1D[][] cutVertexMass = new IHistogram1D[Cut.nCuts][2];
+    private final IHistogram1D[][] cutVertexZ = new IHistogram1D[Cut.nCuts][2];
+    private final IHistogram2D[][] cutVertexZVsMass = new IHistogram2D[Cut.nCuts][2];
+
+    private final double plotsMinMass = 0.03 * ebeam;
+    private final double plotsMaxMass = 0.04 * ebeam;
 
     //clean up event first
-    private int nTrkMax = 5;
-    private int nPosMax = 1;
-
-    private double maxChi2SeedTrack = 7.0;
-    private double maxChi2GBLTrack = 15.0;
-    private double maxVertChi2 = 7.0;
+    private final int nTrkMax = 5;
+    private final int nPosMax = 1;
+
+    private final double maxChi2SeedTrack = 7.0;
+    private final double maxChi2GBLTrack = 15.0;
+    private final double maxVertChi2 = 7.0;
 
     //v0 cuts   
-    private double v0PzMax = 1.25 * ebeam;//GeV 
-    private double v0PzMin = 0.1;// GeV
-    private double v0PyMax = 0.04;//GeV absolute value
-    private double v0PxMax = 0.04;//GeV absolute value
-    private double v0VzMax = 50.0;// mm from target...someday make mass dependent
-    private double v0VyMax = 1.0;// mm from target...someday make mass dependent
-    private double v0VxMax = 2.0;// mm from target...someday make mass dependent
+    private final double v0PzMax = 1.25 * ebeam;//GeV 
+    private final double v0PzMin = 0.1;// GeV
+    private final double v0PyMax = 0.04;//GeV absolute value
+    private final double v0PxMax = 0.04;//GeV absolute value
+    private final double v0VzMax = 50.0;// mm from target...someday make mass dependent
+    private final double v0VyMax = 1.0;// mm from target...someday make mass dependent
+    private final double v0VxMax = 2.0;// mm from target...someday make mass dependent
     //  track quality cuts
-    private double beamPCut = 0.85;
-    private double minPCut = 0.05;
+    private final double beamPCut = 0.85;
+    private final double minPCut = 0.05;
 //    private double trkPyMax = 0.2;
 //    private double trkPxMax = 0.2;
-    private double radCut = 0.8 * ebeam;
-    private double trkTimeDiff = 5.0;
-    private double clusterTimeDiffCut = 2.5;
-
-    private double l1IsoMin = 1.0;
+    private final double radCut = 0.8 * ebeam;
+    private final double trkTimeDiff = 5.0;
+    private final double clusterTimeDiffCut = 2.5;
+
+    private final double l1IsoMin = 1.0;
 //cluster matching
 //    private boolean reqCluster = false;
 //    private int nClustMax = 3;
@@ -214,7 +251,7 @@
 //counters
     private float nEvents = 0;
     private float nRecoV0 = 0;
-    private final float[] nPassCut = new float[nCuts];
+    private final float[] nPassCut = new float[Cut.nCuts];
 
     public void setEbeam(double ebeam) {
         this.ebeam = ebeam;
@@ -368,13 +405,13 @@
         l1Iso = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Cut: L1 Isolation", 50, 0.0, 5.0);
         zVsL1Iso = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Cut: Vz vs L1 Isolation", 50, 0.0, 5.0, 50, -v0VzMax, v0VzMax);
 
-        for (int i = 0; i < nCuts; i++) {
-            for (int pass = 0; pass < 2; pass++) {
-                cutVertexZ[i][pass] = aida.histogram1D(String.format("%s%s%s/cut %d: %s/%s: Vertex Z position (mm)", plotDir, trkType, triggerType, i, cutNames[i], pass == PASS ? "pass" : "fail"),
+        for (Cut cut : Cut.values()) {
+            for (int i = 0; i < 2; i++) {
+                cutVertexZ[cut.ordinal()][i] = aida.histogram1D(String.format("%s%s%s/failed cut: %s/%s: Vertex Z position (mm)", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
                         100, -v0VzMax, v0VzMax);
-                cutVertexMass[i][pass] = aida.histogram1D(String.format("%s%s%s/cut %d: %s/%s: Vertex mass (GeV)", plotDir, trkType, triggerType, i, cutNames[i], pass == PASS ? "pass" : "fail"),
+                cutVertexMass[cut.ordinal()][i] = aida.histogram1D(String.format("%s%s%s/failed cut: %s/%s: Vertex mass (GeV)", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
                         100, 0, 0.1 * ebeam);
-                cutVertexZVsMass[i][pass] = aida.histogram2D(String.format("%s%s%s/cut %d: %s/%s: Vertex Z vs. mass", plotDir, trkType, triggerType, i, cutNames[i], pass == PASS ? "pass" : "fail"),
+                cutVertexZVsMass[cut.ordinal()][i] = aida.histogram2D(String.format("%s%s%s/failed cut: %s/%s: Vertex Z vs. mass", plotDir, trkType, triggerType, cut.ordinal(), cut.name, i == VERTEX ? "vertex" : "trident"),
                         100, 0, 0.1 * ebeam, 100, -v0VzMax, v0VzMax);
             }
         }
@@ -480,96 +517,49 @@
             }
 
             //start applying cuts
-            int cutNum = 0;
+            EnumSet<Cut> bits = EnumSet.noneOf(Cut.class);
+
             boolean trackQualityCut = Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()) < (isGBL ? maxChi2GBLTrack : maxChi2SeedTrack);
             maxTrkChi2.fill(Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()));
             zVsMaxTrkChi2.fill(Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()), v0Vtx.z());
-            if (!trackQualityCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (trackQualityCut) {
+                bits.add(Cut.TRK_QUALITY);
+            }
 
             boolean v0QualityCut = uncVert.getChi2() < maxVertChi2;
             v0Chi2.fill(uncVert.getChi2());
             zVsV0Chi2.fill(uncVert.getChi2(), v0Vtx.z());
-            if (!v0QualityCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (v0QualityCut) {
+                bits.add(Cut.VTX_QUALITY);
+            }
 
             boolean vertexMomentumCut = v0MomRot.z() < v0PzMax && v0MomRot.z() > v0PzMin && Math.abs(v0MomRot.x()) < v0PxMax && Math.abs(v0MomRot.y()) < v0PyMax;
             boolean vertexPositionCut = Math.abs(v0Vtx.x()) < v0VxMax && Math.abs(v0Vtx.y()) < v0VyMax && Math.abs(v0Vtx.z()) < v0VzMax;
-            if (!vertexMomentumCut || !vertexPositionCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (vertexMomentumCut && vertexPositionCut) {
+                bits.add(Cut.VERTEX_CUTS);
+            }
 
             boolean trackTimeDiffCut = Math.abs(trackTimes.get(0) - trackTimes.get(1)) < trkTimeDiff;
             trackTimeDiff.fill(Math.abs(trackTimes.get(0) - trackTimes.get(1)));
             hitTimeStdDev.fill(stdDev);
             zVsTrackTimeDiff.fill(Math.abs(trackTimes.get(0) - trackTimes.get(1)), v0Vtx.z());
             zVsHitTimeStdDev.fill(stdDev, v0Vtx.z());
-            if (!trackTimeDiffCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (trackTimeDiffCut) {
+                bits.add(Cut.TIMING);
+            }
 
             boolean topBottomCut = electron.getMomentum().y() * positron.getMomentum().y() < 0;
             boolean pMinCut = electron.getMomentum().magnitude() > minPCut && positron.getMomentum().magnitude() > minPCut;
             boolean pMaxCut = electron.getMomentum().magnitude() < beamPCut && positron.getMomentum().magnitude() < beamPCut;
-            if (!topBottomCut || !pMaxCut || !pMinCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (topBottomCut && pMaxCut && pMinCut) {
+                bits.add(Cut.TRACK_CUTS);
+            }
 
             boolean clusterMatchCut = !electron.getClusters().isEmpty() && !positron.getClusters().isEmpty();
             boolean clusterTimeCut = clusterMatchCut && Math.abs(ClusterUtilities.getSeedHitTime(electron.getClusters().get(0)) - ClusterUtilities.getSeedHitTime(positron.getClusters().get(0))) < clusterTimeDiffCut;
-            if (!clusterMatchCut || !clusterTimeCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (clusterMatchCut && clusterTimeCut) {
+                bits.add(Cut.CLUSTER_CUTS);
+            }
 
             boolean eventTrkCountCut = ntrk >= 2 && ntrk <= nTrkMax;
             boolean eventPosCountCut = npos >= 1 && npos <= nPosMax;
@@ -577,50 +567,61 @@
             eventPosCount.fill(npos);
             zVsEventTrkCount.fill(ntrk, v0Vtx.z());
             zVsEventPosCount.fill(npos, v0Vtx.z());
-            if (!eventTrkCountCut || !eventPosCountCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
-
-            candidateList.add(uncV0);
-            firstVertexingCut = cutNum;
+            if (eventTrkCountCut && eventPosCountCut) {
+                bits.add(Cut.EVENT_QUALITY);
+            }
 
             boolean frontHitsCut = eleIso[0] != null && posIso[0] != null && eleIso[2] != null && posIso[2] != null;
-            if (!frontHitsCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
+            if (frontHitsCut) {
+                bits.add(Cut.FRONT_HITS);
+            }
 
             l1Iso.fill(minL1Iso);
             zVsL1Iso.fill(minL1Iso, v0Vtx.z());
             boolean isoCut = minL1Iso > l1IsoMin;
-            if (!isoCut) {
-                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
-                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
-                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
-                continue;
-            }
-            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
-            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
-            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
-            nPassCut[cutNum]++;
-            cutNum++;
-
-            vertCandidateList.add(uncV0);
+            if (isoCut) {
+                bits.add(Cut.ISOLATION);
+            }
+
+            for (Cut cut : Cut.values()) {
+                if (bits.contains(cut)) {
+                    if (cut.ordinal() == Cut.firstVertexingCut) {//if we get here, we've passed all non-vertexing cuts
+                        candidateList.add(uncV0);
+                    }
+                    nPassCut[cut.ordinal()]++;
+                } else {
+                    break;
+                }
+            }
+
+            for (Cut cut : Cut.values()) {
+                EnumSet<Cut> allButThisCut = EnumSet.allOf(Cut.class);
+                allButThisCut.remove(cut);
+                if (bits.equals(allButThisCut)) {
+                    if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+                        cutVertexZ[cut.ordinal()][VERTEX].fill(v0Vtx.z());
+                    }
+                    cutVertexMass[cut.ordinal()][VERTEX].fill(uncV0.getMass());
+                    cutVertexZVsMass[cut.ordinal()][VERTEX].fill(uncV0.getMass(), v0Vtx.z());
+                }
+
+                EnumSet<Cut> allTriCutsButThisCut = EnumSet.range(Cut.values()[0], Cut.values()[Cut.firstVertexingCut - 1]);
+                allTriCutsButThisCut.remove(cut);
+                if (bits.containsAll(allTriCutsButThisCut) && !bits.contains(cut)) {
+                    if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+                        cutVertexZ[cut.ordinal()][TRIDENT].fill(v0Vtx.z());
+                    }
+                    cutVertexMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass());
+                    cutVertexZVsMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass(), v0Vtx.z());
+                }
+            }
+
+            if (bits.containsAll(EnumSet.range(Cut.values()[0], Cut.values()[Cut.firstVertexingCut - 1]))) {
+                candidateList.add(uncV0);
+            }
+            if (bits.equals(EnumSet.allOf(Cut.class))) {
+                vertCandidateList.add(uncV0);
+            }
         }
 
         nTriCand.fill(candidateList.size());
@@ -765,7 +766,7 @@
 
     @Override
     // TODO: Change from System.out to use logger instead.
-    public void printDQMData() {        
+    public void printDQMData() {
         System.out.println("TridendMonitoring::printDQMData");
         for (Entry<String, Double> entry : monitoredQuantityMap.entrySet()) {
             System.out.println(entry.getKey() + " = " + entry.getValue());
@@ -778,13 +779,13 @@
         System.out.println("******************************************************************************************");
         System.out.println(String.format("Number of      V0:\t%8.0f\t%8.6f\t%8.6f\t%8.6f\n", nRecoV0, nRecoV0 / nRecoV0, nRecoV0 / nRecoV0, nRecoV0 / nEvents));
 
-        for (int i = 0; i < nCuts; i++) {
-            if (i == firstVertexingCut) {
+        for (Cut cut : Cut.values()) {
+            if (cut.ordinal() == Cut.firstVertexingCut) {
                 System.out.println("******************************************************************************************");
                 System.out.println("\t\t\tVertex Selection Summary");
                 System.out.println("******************************************************************************************");
             }
-            System.out.format("%-12s Cuts:\t%8.0f\t%8.6f\t%8.6f\t%8.6f\n", cutNames[i], nPassCut[i], nPassCut[i] / (i == 0 ? nRecoV0 : nPassCut[i == 0 ? 0 : (i - 1)]), nPassCut[i] / nRecoV0, nPassCut[i] / nEvents);
+            System.out.format("%-12s Cuts:\t%8.0f\t%8.6f\t%8.6f\t%8.6f\n", cut.name, nPassCut[cut.ordinal()], nPassCut[cut.ordinal()] / (cut.ordinal() == 0 ? nRecoV0 : nPassCut[cut.ordinal() == 0 ? 0 : (cut.ordinal() - 1)]), nPassCut[cut.ordinal()] / nRecoV0, nPassCut[cut.ordinal()] / nEvents);
         }
         System.out.println("******************************************************************************************");
     }

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java	Fri Oct 16 11:32:57 2015
@@ -9,6 +9,7 @@
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.util.Properties;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
@@ -164,6 +165,11 @@
                 if (attempt >= MAX_ATTEMPTS) {
                     throw new RuntimeException("Failed to connect to database after " + attempt + " attempts: " + this.getConnectionString(), x);
                 }
+                try {
+                    Thread.sleep(attempt * 1000);
+                } catch (InterruptedException ex) {
+                    Logger.getLogger(ConnectionParameters.class.getName()).log(Level.SEVERE, null, ex);
+                }
                 continue;
             }
             if (attempt > 1) {

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use