Author: [log in to unmask] Date: Fri Mar 18 18:37:41 2016 New Revision: 4309 Log: max events flag, etc. Modified: java/trunk/users/src/main/java/org/hps/users/meeg/SVTPhaseOffsetReader.java Modified: java/trunk/users/src/main/java/org/hps/users/meeg/SVTPhaseOffsetReader.java ============================================================================= --- java/trunk/users/src/main/java/org/hps/users/meeg/SVTPhaseOffsetReader.java (original) +++ java/trunk/users/src/main/java/org/hps/users/meeg/SVTPhaseOffsetReader.java Fri Mar 18 18:37:41 2016 @@ -30,6 +30,7 @@ Options options = new Options(); options.addOption(new Option("d", false, "debug")); options.addOption(new Option("o", true, "output ROOT file name")); + options.addOption(new Option("n", true, "max events")); // Parse the command line options. if (args.length == 0) { @@ -48,14 +49,19 @@ } AIDA aida = AIDA.defaultInstance(); - IHistogram2D ratioVsPhase = aida.histogram2D("ratio vs phase", 200, -1.0, 2.0, 6, 0.0, 24.0); + IHistogram2D ratioVsPhase = aida.histogram2D("ratio vs phase", 100, -1.0, 2.0, 6, 0.0, 24.0); IHistogram1D[] ratios = new IHistogram1D[6]; + IHistogram2D hitsVsPhase = aida.histogram2D("hits vs phase", 300, 0.0, 300.0, 35, 0.0, 840.0); for (int i = 0; i < 6; i++) { - ratios[i] = aida.histogram1D("ratio, phase " + i, 200, -1.0, 2.0); + ratios[i] = aida.histogram1D("ratio, phase " + i, 100, -1.0, 2.0); } boolean debug = cl.hasOption("d"); boolean seqRead = true; + int maxEvents = -1; + if (cl.hasOption("n")) { + maxEvents = Integer.parseInt(cl.getOptionValue("n")); + } IntBankDefinition tiBankDefinition = new IntBankDefinition(TIData.class, new int[]{0x2e, 0xe10a}); @@ -68,7 +74,6 @@ try { org.jlab.coda.jevio.EvioReader reader = new org.jlab.coda.jevio.EvioReader(evioFile, true, seqRead); int eventN = 1; - fileLoop: while (true) { if (debug) { System.out.println("Reading event " + eventN); @@ -76,10 +81,11 @@ try { EvioEvent event = reader.nextEvent(); if (event == null) { - break fileLoop; + break; } reader.parseEvent(event); //printBytes(event.getRawBytes()); // DEBUG + int nHits = 0; if (EvioEventUtilities.isPhysicsEvent(event)) { BaseStructure tiBank = tiBankDefinition.findBank(event); TIData tiData = null; @@ -97,6 +103,7 @@ if (SvtEvioUtils.isMultisampleHeader(multisample) || SvtEvioUtils.isMultisampleTail(multisample)) { continue; } + nHits++; short[] samples = SvtEvioUtils.getSamples(multisample); // System.out.format("%d %d %d %d %d %d\n", samples[0], samples[1], samples[2], samples[3], samples[4], samples[5]); @@ -107,18 +114,25 @@ } } } + if (tiData != null) { + hitsVsPhase.fill(nHits, tiData.getTime() % 840); + + } } } catch (Exception e) { System.out.println("Caught Exception processing event " + eventN + " which was..."); e.printStackTrace(); } ++eventN; + if (maxEvents > 0 && eventN > maxEvents) { + break; + } if (debug) { System.out.println("-------"); } } double[] peaks = new double[6]; - double minPeak = Double.MIN_VALUE; + double minPeak = Double.MAX_VALUE; int minPhase = -1; for (int i = 0; i < 6; i++) { peaks[i] = -1; @@ -136,14 +150,18 @@ } } boolean isGood = true; - System.out.format("phase %d: peak at %f\n", (minPhase) % 6, peaks[(minPhase) % 6]); + for (int i = 0; i < 6; i++) { + System.out.format("phase %d: mean %f, peak at %f\n", (minPhase + i) % 6, ratios[(minPhase + i) % 6].mean(), peaks[(minPhase + i) % 6]); + } for (int i = 0; i < 5; i++) { - System.out.format("phase %d: peak at %f\n", (minPhase + i + 1) % 6, peaks[(minPhase + i + 1) % 6]); - if (peaks[(minPhase + i) % 6] > peaks[(minPhase + i + 1) % 6]) { + if (peaks[(minPhase + i + 1) % 6] - peaks[(minPhase + i) % 6] < 0.1) { //should be strictly increasing + isGood = false; + } + if (ratios[(minPhase + i + 1) % 6].mean() < ratios[(minPhase + i) % 6].mean()) { //should be strictly increasing isGood = false; } } - System.out.format("offset phase %d, isGood = %b,\n", minPhase, isGood); + System.out.format("offset phase %d, isGood = %b\n", minPhase, isGood); reader.close(); } catch (Exception e) { e.printStackTrace();