Author: [log in to unmask] Date: Thu Feb 11 17:15:20 2016 New Revision: 4207 Log: Merge to dev branch from trunk. Added: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/examples/VertexAnalysis.java - copied unchanged from r4202, java/trunk/analysis/src/main/java/org/hps/analysis/examples/VertexAnalysis.java java/branches/jeremy-dev/analysis/src/test/ - copied from r4202, java/trunk/analysis/src/test/ java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-1_5mm-v4-4/ - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-1_5mm-v4-4/ java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-2mm-v4-4/ - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-2mm-v4-4/ java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-3mm-v4-4/ - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-3mm-v4-4/ java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-4mm-v4-4/ - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-4mm-v4-4/ java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4/ - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4/ java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4-fieldmap/ - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4-fieldmap/ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalFeeMonitor.java - copied unchanged from r4202, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalFeeMonitor.java java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/filtering/CosmicPMTFilter.java - copied unchanged from r4202, java/trunk/recon/src/main/java/org/hps/recon/filtering/CosmicPMTFilter.java java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/baltzell/Cosmic.lcsim - copied unchanged from r4202, java/trunk/steering-files/src/main/resources/org/hps/steering/users/baltzell/Cosmic.lcsim java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/holly/EcalFeeViewer.lcsim - copied unchanged from r4202, java/trunk/steering-files/src/main/resources/org/hps/steering/users/holly/EcalFeeViewer.lcsim java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/spaul/MollerBeamtilt.lcsim - copied unchanged from r4202, java/trunk/steering-files/src/main/resources/org/hps/steering/users/spaul/MollerBeamtilt.lcsim java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/moller/ - copied from r4202, java/trunk/users/src/main/java/org/hps/users/spaul/moller/ Modified: java/branches/jeremy-dev/ (props changed) java/branches/jeremy-dev/analysis/pom.xml java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java java/branches/jeremy-dev/conditions/ (props changed) java/branches/jeremy-dev/conditions/pom.xml java/branches/jeremy-dev/crawler/pom.xml java/branches/jeremy-dev/datacat-client/pom.xml java/branches/jeremy-dev/detector-data/pom.xml java/branches/jeremy-dev/detector-model/pom.xml java/branches/jeremy-dev/distribution/ (props changed) java/branches/jeremy-dev/distribution/pom.xml java/branches/jeremy-dev/ecal-event-display/pom.xml java/branches/jeremy-dev/ecal-readout-sim/pom.xml java/branches/jeremy-dev/ecal-recon/pom.xml java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java java/branches/jeremy-dev/evio/pom.xml java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java java/branches/jeremy-dev/integration-tests/ (props changed) java/branches/jeremy-dev/integration-tests/pom.xml java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim java/branches/jeremy-dev/job/pom.xml java/branches/jeremy-dev/logging/pom.xml java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties java/branches/jeremy-dev/monitoring-app/ (props changed) java/branches/jeremy-dev/monitoring-app/pom.xml java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java java/branches/jeremy-dev/monitoring-drivers/pom.xml java/branches/jeremy-dev/monitoring-util/pom.xml java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java java/branches/jeremy-dev/parent/pom.xml java/branches/jeremy-dev/plugin/pom.xml java/branches/jeremy-dev/pom.xml java/branches/jeremy-dev/recon/pom.xml java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java java/branches/jeremy-dev/record-util/pom.xml java/branches/jeremy-dev/run-database/pom.xml java/branches/jeremy-dev/steering-files/pom.xml java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim (contents, props changed) java/branches/jeremy-dev/tracking/pom.xml java/branches/jeremy-dev/users/pom.xml java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java (contents, props changed) java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java java/branches/jeremy-dev/util/pom.xml Modified: java/branches/jeremy-dev/analysis/pom.xml ============================================================================= --- java/branches/jeremy-dev/analysis/pom.xml (original) +++ java/branches/jeremy-dev/analysis/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/analysis/</url> @@ -21,4 +21,17 @@ <artifactId>hps-recon</artifactId> </dependency> </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <excludes> + <exclude>**/VertexAnalysisTest.java</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> </project> Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java ============================================================================= --- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java (original) +++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java Thu Feb 11 17:15:20 2016 @@ -165,7 +165,8 @@ IHistogram2D chi2VsLambda; IHistogram2D chi2VsZ0; - IHistogram2D beamAngle2D; + IHistogram2D beamAngleXY; + IHistogram2D beamAngleThetaPhi; IHistogram1D L1Iso; IHistogram1D L12Iso; @@ -288,7 +289,8 @@ chi2VsLambda = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "chi2 vs lambda", 50, -lambdaCut, lambdaCut, 50, 0.0, 50.0); chi2VsZ0 = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "chi2 vs z0", 50, -z0Cut, z0Cut, 50, 0.0, 50.0); - beamAngle2D = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "angles around beam axis: theta vs phi", 100, -Math.PI, Math.PI, 100, 0, 0.25); + beamAngleXY = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "angles around beam axis: theta_y vs theta_x", 100, -0.1, 0.1, 100, -0.1, 0.1); + beamAngleThetaPhi = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "angles around beam axis: theta vs phi", 100, -Math.PI, Math.PI, 100, 0, 0.25); L1Iso = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "L1 isolation", 100, -5.0, 5.0); L12Iso = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "L1-2 isolation", 100, -5.0, 5.0); @@ -423,7 +425,8 @@ double beamPhi = Math.atan2(dirRotated.y(), dirRotated.x()); double beamTheta = Math.acos(dirRotated.z()); - beamAngle2D.fill(beamPhi, beamTheta); + beamAngleXY.fill(dirRotated.x(), dirRotated.y()); + beamAngleThetaPhi.fill(beamPhi, beamTheta); Double[] isolations = TrackUtils.getIsolations(trk, hitToStrips, hitToRotated); double l1Iso = Double.MAX_VALUE; Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java ============================================================================= --- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java (original) +++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java Thu Feb 11 17:15:20 2016 @@ -135,6 +135,11 @@ IHistogram2D mollerXVsVtxZ; IHistogram2D mollerYVsVtxZ; IHistogram2D mollerXVsVtxY; + + IHistogram1D mollerUx; + IHistogram1D mollerUy; + + IHistogram1D sumChargeHisto; IHistogram1D numChargeHisto; @@ -240,6 +245,12 @@ mollerXVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx vs Vz", 100, -5, 5, 100, -50, 50); mollerYVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vy vs Vz", 100, -2, 2, 100, -50, 50); mollerXVsVtxY = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx vs Vy", 100, -5, 5, 100, -2, 2); + + mollerUx = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Ux", 100, .025, .035); + mollerUy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Uy", 100, -.005, .005); + + + } @Override @@ -459,6 +470,10 @@ mollerXVsVtxZ.fill(bv.getPosition().x(), bv.getPosition().z()); mollerYVsVtxZ.fill(bv.getPosition().y(), bv.getPosition().z()); mollerXVsVtxY.fill(bv.getPosition().x(), bv.getPosition().y()); + + mollerUx.fill((p1.x()+p2.x())/(p1.z()+p2.z())); + mollerUy.fill((p1.y()+p2.y())/(p1.z()+p2.z())); + if (Math.abs(bv.getPosition().x()) < 2 && Math.abs(bv.getPosition().y()) < 0.5) { mollerMassVtxCut.fill(bv.getParameters().get("invMass")); Modified: java/branches/jeremy-dev/conditions/pom.xml ============================================================================= --- java/branches/jeremy-dev/conditions/pom.xml (original) +++ java/branches/jeremy-dev/conditions/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/conditions/</url> Modified: java/branches/jeremy-dev/crawler/pom.xml ============================================================================= --- java/branches/jeremy-dev/crawler/pom.xml (original) +++ java/branches/jeremy-dev/crawler/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/crawler/</url> Modified: java/branches/jeremy-dev/datacat-client/pom.xml ============================================================================= --- java/branches/jeremy-dev/datacat-client/pom.xml (original) +++ java/branches/jeremy-dev/datacat-client/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/datacat-client/</url> Modified: java/branches/jeremy-dev/detector-data/pom.xml ============================================================================= --- java/branches/jeremy-dev/detector-data/pom.xml (original) +++ java/branches/jeremy-dev/detector-data/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/detector-data/</url> Modified: java/branches/jeremy-dev/detector-model/pom.xml ============================================================================= --- java/branches/jeremy-dev/detector-model/pom.xml (original) +++ java/branches/jeremy-dev/detector-model/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <build> <plugins> Modified: java/branches/jeremy-dev/distribution/pom.xml ============================================================================= --- java/branches/jeremy-dev/distribution/pom.xml (original) +++ java/branches/jeremy-dev/distribution/pom.xml Thu Feb 11 17:15:20 2016 @@ -13,7 +13,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/distribution/</url> @@ -80,7 +80,7 @@ <binFileExtensions> <unix>.sh</unix> </binFileExtensions> - <extraJvmArguments>-Djava.util.logging.config.class=org.hps.logging.config.DefaultLoggingConfig</extraJvmArguments> + <extraJvmArguments>-Xmx2g -Djava.util.logging.config.class=org.hps.logging.config.DefaultLoggingConfig</extraJvmArguments> <programs> <program> <mainClass>org.hps.evio.EvioToLcio</mainClass> Modified: java/branches/jeremy-dev/ecal-event-display/pom.xml ============================================================================= --- java/branches/jeremy-dev/ecal-event-display/pom.xml (original) +++ java/branches/jeremy-dev/ecal-event-display/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/ecal-event-display/</url> Modified: java/branches/jeremy-dev/ecal-readout-sim/pom.xml ============================================================================= --- java/branches/jeremy-dev/ecal-readout-sim/pom.xml (original) +++ java/branches/jeremy-dev/ecal-readout-sim/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/ecal-readout-sim/</url> Modified: java/branches/jeremy-dev/ecal-recon/pom.xml ============================================================================= --- java/branches/jeremy-dev/ecal-recon/pom.xml (original) +++ java/branches/jeremy-dev/ecal-recon/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/ecal-recon/</url> Modified: java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java ============================================================================= --- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java (original) +++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java Thu Feb 11 17:15:20 2016 @@ -24,6 +24,14 @@ this.slot = slot; this.channel = channel; this.data = data; + } + + public FADCGenericHit(GenericObject object) { + this.readoutMode = getReadoutMode(object); + this.crate = getCrate(object); + this.slot = getSlot(object); + this.channel = getChannel(object); + this.data = getData(object); } @Override @@ -114,5 +122,5 @@ data[i] = object.getIntVal(i+4); } return data; - } + } } Modified: java/branches/jeremy-dev/evio/pom.xml ============================================================================= --- java/branches/jeremy-dev/evio/pom.xml (original) +++ java/branches/jeremy-dev/evio/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/evio/</url> Modified: java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java ============================================================================= --- java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java (original) +++ java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java Thu Feb 11 17:15:20 2016 @@ -22,6 +22,7 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.PosixParser; import org.freehep.record.source.NoSuchRecordException; import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.job.JobManager; @@ -71,7 +72,7 @@ * @author Jeremy McCormick <[log in to unmask]> * @author Sho Uemura <[log in to unmask]> */ -public class EvioToLcio { +public final class EvioToLcio { /** * The default steering resource, which basically does nothing except print event numbers. @@ -113,6 +114,7 @@ */ private static Options OPTIONS = new Options(); static { + OPTIONS.addOption(new Option("h", false, "print help and exit")); OPTIONS.addOption(new Option("d", true, "detector name (required)")); OPTIONS.getOption("d").setRequired(true); OPTIONS.addOption(new Option("f", true, "text file containing a list of EVIO files")); @@ -251,19 +253,25 @@ } public void parse(String[] args) { - // Parse the command line options. + if (args.length == 0) { this.printUsage(); } - final CommandLineParser parser = new DefaultParser(); + + final CommandLineParser parser = new PosixParser(); CommandLine cl = null; try { cl = parser.parse(OPTIONS, args); } catch (final ParseException e) { throw new RuntimeException("Problem parsing command line options.", e); } + + if (cl.hasOption("h")) { + this.printUsage(); + } // Set the log level. + // TODO: Remove this argument; use java logging prop instead. if (cl.hasOption("L")) { final Level level = Level.parse(cl.getOptionValue("L").toUpperCase()); Modified: java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java ============================================================================= --- java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java (original) +++ java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java Thu Feb 11 17:15:20 2016 @@ -1,9 +1,4 @@ package org.hps.evio; - -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; import hep.aida.IAnalysisFactory; import hep.aida.IDataPointSet; @@ -11,7 +6,9 @@ import hep.aida.IFitResult; import hep.aida.IFitter; import hep.aida.IFunction; -import hep.aida.IFunctionFactory; + +import java.util.ArrayList; +import java.util.List; import org.hps.recon.ecal.FADCGenericHit; import org.lcsim.event.EventHeader; @@ -19,145 +16,156 @@ import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA; -/* +/** * Extract RF time from waveform and put into lcsim event. */ public class RfFitterDriver extends Driver { - static final double NOISE=2.0; // units = FADC - static final int CRATE=46; - static final int SLOT=13; - static final int CHANNELS[]={0,1}; - static final double NSPERSAMPLE=4; - + private static final double NOISE = 2.0; // units = FADC + private static final int CRATE = 46; + private static final int SLOT = 13; + private static final int CHANNELS[] = {0, 1}; + private static final double NSPERSAMPLE = 4; - // boilerplate: - AIDA aida = AIDA.defaultInstance(); - IAnalysisFactory analysisFactory = aida.analysisFactory(); - IFunctionFactory functionFactory = analysisFactory.createFunctionFactory(null); - IFitFactory fitFactory = analysisFactory.createFitFactory(); - IFitter fitter=fitFactory.createFitter(); - IDataPointSet fitData=aida.analysisFactory().createDataPointSetFactory(null).create("RF ADC DataPointSet", 2); - + // boilerplate: + private AIDA aida = AIDA.defaultInstance(); + private IAnalysisFactory analysisFactory = aida.analysisFactory(); + //private IFunctionFactory functionFactory = analysisFactory.createFunctionFactory(null); + private IFitFactory fitFactory = analysisFactory.createFitFactory(); + private IFitter fitter = fitFactory.createFitter(); + private IDataPointSet fitData = aida.analysisFactory().createDataPointSetFactory(null).create("RF ADC DataPointSet", 2); + // the function used to fit the RF pulse: - IFunction fitFunction=new RfFitFunction(); + private IFunction fitFunction = new RfFitFunction(); - /* + /** * Check the event for an RF pulse, and, if found, fit it to get RF time. */ - public void process(EventHeader event) { - - List <RfHit> rfHits=new ArrayList<RfHit>(); - - boolean foundRf=false; - double times[]={-9999,-9999}; - - if (event.hasCollection(GenericObject.class,"FADCGenericHits")) { + public void process(EventHeader event) { - for (GenericObject gob : event.get(GenericObject.class,"FADCGenericHits")) { - FADCGenericHit hit=(FADCGenericHit)gob; + List<RfHit> rfHits = new ArrayList<RfHit>(); - // ignore hits not from proper RF signals based on crate/slot/channel: - if (hit.getCrate()!=CRATE || hit.getSlot()!=SLOT) continue; - - for (int ii=0; ii<CHANNELS.length; ii++) { - if (hit.getChannel()==CHANNELS[ii]) { + boolean foundRf = false; + double times[] = {-9999, -9999}; - // we found a RF readout, fit it: - foundRf=true; - times[ii] = fitPulse(hit); + if (event.hasCollection(GenericObject.class, "FADCGenericHits")) { - break; - } - } - } - } - if (foundRf) rfHits.add(new RfHit(times)); - event.put("RFHits", rfHits, RfHit.class, 1); - } + for (GenericObject gob : event.get(GenericObject.class, "FADCGenericHits")) { - /* - * Perform the fit to the RF pulse: - */ - public double fitPulse(FADCGenericHit hit) { - fitData.clear(); - final int adcSamples[]=hit.getData(); - //stores the number of peaks - int iz=0; - int peakBin[]={-999,-999}; - final int threshold = 300; - double fitThresh[]={-999,-999}; - double pedVal[]={-999,-999}; - - // Look for bins containing the peaks (2-3 peaks) - for (int ii=4; ii<adcSamples.length; ii++) { - // After 2 peaks, stop looking for more - if (iz==2){break;} - if ((adcSamples[ii+1]>0) && (adcSamples[ii-1]>0) && (adcSamples[ii]>threshold) && ii>8){ - if ((adcSamples[ii]>adcSamples[ii+1]) && (adcSamples[ii]>=adcSamples[ii-1]) ){ - - peakBin[iz]=ii; - iz++; - } - } - } - - - int jj=0; - // Choose peak closest to center of window (second peak, ik=1) - final int ik=1; - pedVal[ik] = (adcSamples[peakBin[ik]-6]+adcSamples[peakBin[ik]-7]+adcSamples[peakBin[ik]-8]+adcSamples[peakBin[ik]-9])/4.0; - fitThresh[ik]= (adcSamples[peakBin[ik]]+pedVal[ik])/3.0; - - // Initial values: we find/fit 3 points: - double itime[] = {-999,-999,-999}; - double ifadc[] = {-999,-999,-999}; - - // Find the points of the peak bin to peak bin-5 - for (int ll=0; ll<5; ll++){ - if ((adcSamples[peakBin[ik]-5+ll]) > fitThresh[ik]){ - // One point is below fit threshold and two points are above - if(jj==0 && (adcSamples[peakBin[ik]-6+ll] > pedVal[ik])){ - final int zz=fitData.size(); - fitData.addPoint(); - itime[zz] = peakBin[ik]-6+ll; - ifadc[zz] = adcSamples[peakBin[ik]-6+ll]; - fitData.point(zz).coordinate(0).setValue(peakBin[ik]-6+ll); - fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik]-6+ll]); - fitData.point(zz).coordinate(1).setErrorMinus(NOISE); - fitData.point(zz).coordinate(1).setErrorPlus(NOISE); - jj++; - } - final int zz=fitData.size(); - fitData.addPoint(); - itime[zz] = peakBin[ik]-5+ll; - ifadc[zz] = adcSamples[peakBin[ik]-5+ll]; - fitData.point(zz).coordinate(0).setValue(peakBin[ik]-5+ll); - fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik]-5+ll]); - fitData.point(zz).coordinate(1).setErrorMinus(NOISE); - fitData.point(zz).coordinate(1).setErrorPlus(NOISE); - - jj++; - if (jj==3) {break;} - } - } - - double islope = ((double)(ifadc[2]-ifadc[0]))/(itime[2]-itime[0]); - double icept = ifadc[1] - islope*itime[1]; - // Initialize fit parameters: - fitFunction.setParameter("intercept",icept); - fitFunction.setParameter("slope",islope); + FADCGenericHit hit = null; - // this used to be turned on somewhere else on every event, dunno if it still is: - //Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF); - - IFitResult fitResults = fitter.fit(fitData,fitFunction); - - // Read the time value at this location on the fit: - double halfVal = (adcSamples[peakBin[1]]+pedVal[1])/2.0; - - return NSPERSAMPLE*(halfVal-fitResults.fittedParameter("intercept"))/fitResults.fittedParameter("slope"); - - } - + /* Added conversion from GenericObject in case loading back from an LCIO file. --JM */ + if (gob instanceof FADCGenericHit) { + hit = (FADCGenericHit) gob; + } else { + hit = new FADCGenericHit(gob); + } + + // ignore hits not from proper RF signals based on crate/slot/channel: + if (hit.getCrate() != CRATE || hit.getSlot() != SLOT) + continue; + + for (int ii = 0; ii < CHANNELS.length; ii++) { + if (hit.getChannel() == CHANNELS[ii]) { + + // we found a RF readout, fit it: + foundRf = true; + times[ii] = fitPulse(hit); + + break; + } + } + } + } + if (foundRf) { + rfHits.add(new RfHit(times)); + } + event.put("RFHits", rfHits, RfHit.class, 1); + } + + /** + * Perform the fit to the RF pulse: + */ + private double fitPulse(FADCGenericHit hit) { + fitData.clear(); + final int adcSamples[] = hit.getData(); + // stores the number of peaks + int iz = 0; + int peakBin[] = {-999, -999}; + final int threshold = 300; + double fitThresh[] = {-999, -999}; + double pedVal[] = {-999, -999}; + + // Look for bins containing the peaks (2-3 peaks) + for (int ii = 4; ii < adcSamples.length; ii++) { + // After 2 peaks, stop looking for more + if (iz == 2) { + break; + } + if ((adcSamples[ii + 1] > 0) && (adcSamples[ii - 1] > 0) && (adcSamples[ii] > threshold) && ii > 8) { + if ((adcSamples[ii] > adcSamples[ii + 1]) && (adcSamples[ii] >= adcSamples[ii - 1])) { + + peakBin[iz] = ii; + iz++; + } + } + } + + int jj = 0; + // Choose peak closest to center of window (second peak, ik=1) + final int ik = 1; + pedVal[ik] = (adcSamples[peakBin[ik] - 6] + adcSamples[peakBin[ik] - 7] + adcSamples[peakBin[ik] - 8] + adcSamples[peakBin[ik] - 9]) / 4.0; + fitThresh[ik] = (adcSamples[peakBin[ik]] + pedVal[ik]) / 3.0; + + // Initial values: we find/fit 3 points: + double itime[] = {-999, -999, -999}; + double ifadc[] = {-999, -999, -999}; + + // Find the points of the peak bin to peak bin-5 + for (int ll = 0; ll < 5; ll++) { + if ((adcSamples[peakBin[ik] - 5 + ll]) > fitThresh[ik]) { + // One point is below fit threshold and two points are above + if (jj == 0 && (adcSamples[peakBin[ik] - 6 + ll] > pedVal[ik])) { + final int zz = fitData.size(); + fitData.addPoint(); + itime[zz] = peakBin[ik] - 6 + ll; + ifadc[zz] = adcSamples[peakBin[ik] - 6 + ll]; + fitData.point(zz).coordinate(0).setValue(peakBin[ik] - 6 + ll); + fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik] - 6 + ll]); + fitData.point(zz).coordinate(1).setErrorMinus(NOISE); + fitData.point(zz).coordinate(1).setErrorPlus(NOISE); + jj++; + } + final int zz = fitData.size(); + fitData.addPoint(); + itime[zz] = peakBin[ik] - 5 + ll; + ifadc[zz] = adcSamples[peakBin[ik] - 5 + ll]; + fitData.point(zz).coordinate(0).setValue(peakBin[ik] - 5 + ll); + fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik] - 5 + ll]); + fitData.point(zz).coordinate(1).setErrorMinus(NOISE); + fitData.point(zz).coordinate(1).setErrorPlus(NOISE); + + jj++; + if (jj == 3) { + break; + } + } + } + + double islope = ((double) (ifadc[2] - ifadc[0])) / (itime[2] - itime[0]); + double icept = ifadc[1] - islope * itime[1]; + // Initialize fit parameters: + fitFunction.setParameter("intercept", icept); + fitFunction.setParameter("slope", islope); + + // this used to be turned on somewhere else on every event, dunno if it still is: + // Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF); + + IFitResult fitResults = fitter.fit(fitData, fitFunction); + + // Read the time value at this location on the fit: + double halfVal = (adcSamples[peakBin[1]] + pedVal[1]) / 2.0; + + return NSPERSAMPLE * (halfVal - fitResults.fittedParameter("intercept")) / fitResults.fittedParameter("slope"); + } } Modified: java/branches/jeremy-dev/integration-tests/pom.xml ============================================================================= --- java/branches/jeremy-dev/integration-tests/pom.xml (original) +++ java/branches/jeremy-dev/integration-tests/pom.xml Thu Feb 11 17:15:20 2016 @@ -23,7 +23,7 @@ <dependency> <groupId>org.hps</groupId> <artifactId>hps-test-data</artifactId> - <version>1.0.0-SNAPSHOT</version> + <version>1.0-SNAPSHOT</version> <scope>test</scope> <classifier>archive</classifier> <type>jar</type> @@ -31,7 +31,7 @@ <dependency> <groupId>org.hps</groupId> <artifactId>hps-test-data</artifactId> - <version>1.0.0-SNAPSHOT</version> + <version>1.0-SNAPSHOT</version> <scope>test</scope> <type>jar</type> </dependency> @@ -51,7 +51,8 @@ <version>2.19</version> <configuration> <argLine>-server -Xmx2g -XX:MaxPermSize=512m -Djava.util.logging.config.class=org.hps.logging.config.TestLoggingConfig</argLine> - <forkMode>always</forkMode> + <forkCount>1</forkCount> + <reuseForks>false</reuseForks> <includes> <include>org/hps/test/it/*Test.java</include> </includes> Modified: java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java ============================================================================= --- java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java (original) +++ java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java Thu Feb 11 17:15:20 2016 @@ -17,16 +17,14 @@ private static final String CLASS_NAME = DataQualityMonitorTest.class.getSimpleName(); private static final File OUTPUT_DIR = new File("./target/test-output/" + CLASS_NAME); - private static final File OUTPUT_FILE = new File(OUTPUT_DIR.getAbsolutePath() + File.separator + CLASS_NAME); - private static final File AIDA_FILE = new File(OUTPUT_FILE.getAbsolutePath() + ".aida"); + private static final File OUTPUT_FILE = new File(OUTPUT_DIR.getAbsolutePath() + File.separator + CLASS_NAME + ".aida"); private static final String STEERING_RESOURCE = "/org/hps/steering/test/DataQualityTest.lcsim"; public void setUp() { - System.out.println("Setting up DQM Test"); // Delete files if they already exist. - if (AIDA_FILE.exists()) - AIDA_FILE.delete(); + if (OUTPUT_FILE.exists()) + OUTPUT_FILE.delete(); // Create output dir. OUTPUT_DIR.mkdirs(); @@ -36,11 +34,12 @@ public void testQualityMonitor() { File dataFile = new TestDataUtility().getTestData("DataQualityMonitorTest.slcio"); - System.out.println("running data quality job with steering resource " + STEERING_RESOURCE); + System.out.println("running data quality job with steering resource " + STEERING_RESOURCE + " ..."); JobManager jobManager = new JobManager(); jobManager.addVariableDefinition("outputFile", OUTPUT_FILE.getPath()); jobManager.addInputFile(dataFile); jobManager.setup(STEERING_RESOURCE); jobManager.run(); + System.out.println("Done!"); } } Modified: java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java ============================================================================= --- java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java (original) +++ java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java Thu Feb 11 17:15:20 2016 @@ -1,100 +1,41 @@ package org.hps.test.it; import java.io.File; -import java.io.IOException; -import java.net.URL; import junit.framework.TestCase; import org.hps.data.test.TestDataUtility; import org.hps.job.JobManager; -import org.lcsim.util.cache.FileCache; import org.lcsim.util.test.TestUtil.TestOutputFile; /** - * Test that production MC recon steering files are not broken by running an LCSim job on them - * using an LCIO file. + * Run a test job on Eng Run 2015 data. * * @author Jeremy McCormick, SLAC */ public class ReconSteeringTest extends TestCase { - /** - * List of steering files to run. - */ - final static String[] STEERING_FILES = { - "EngineeringRun2014EcalRecon_Pass1.lcsim", - "EngineeringRun2014EcalRecon.lcsim", - "EngineeringRun2015EcalRecon.lcsim", - "EngineeringRun2015FullRecon.lcsim", - "EngineeringRun2015FullRecon_Pass2.lcsim", - "EngineeringRun2015HitRecon.lcsim", - "HPSTrackingDefaultsRecon.lcsim" - }; - - /** - * Test recon steering files. - * @throws Exception if any error occurs running the recon job - */ - public void testSteeringFiles() { + final static String STEERING_RESOURCE = "/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim"; + + public void testReconSteering() throws Exception { - File inputFile = new TestDataUtility().getTestData("tritrigv1-egsv3-triv2-g4v1_s2d6_HPS-EngRun2015-Nominal-v3_3.4.0_pairs1_1.slcio"); - - for (String steeringFile : STEERING_FILES) { - - // Run the reconstruction steering file. - File outputFile = null; - try { - outputFile = new TestOutputFile(new File(steeringFile).getName().replace(".lcsim", "")); - runSteering("/org/hps/steering/recon/" + steeringFile, inputFile, outputFile); - } catch (Throwable e) { - System.err.println("Job with steering " + steeringFile + " failed!"); - throw new RuntimeException("Recon job failed.", e); - } - - Runtime runtime = Runtime.getRuntime(); - - int mb = 1024 * 1024; - - System.out.println("total memory: " + runtime.totalMemory() / mb); - System.out.println("free memory: " + runtime.freeMemory() / mb); - System.out.println("max memory: " + runtime.maxMemory() / mb); - System.out.println("used memory: " + (runtime.totalMemory() - runtime.freeMemory()) / mb); - - System.gc(); - - // Create DQM output for QA. - try { - runDQM(outputFile); - } catch (Throwable e) { - throw new RuntimeException("The DQM job failed.", e); - } - } - } - - private void runSteering(String steeringFile, File inputFile, File outputFile) { - System.out.println("Testing steering file " + steeringFile + " ..."); + File inputFile = new TestDataUtility().getTestData("run_5772_data_only.slcio"); + + File outputFile = null; + outputFile = new TestOutputFile(new File(STEERING_RESOURCE).getName().replace(".lcsim", "")); + System.out.println("Testing steering " + STEERING_RESOURCE + " ..."); JobManager job = new JobManager(); job.addVariableDefinition("outputFile", outputFile.getPath()); - job.addVariableDefinition("detector", "HPS-EngRun2015-Nominal-v3"); - job.addVariableDefinition("run", "5772"); - job.addVariableDefinition("isMC", "true"); job.addInputFile(inputFile); - job.setup(steeringFile); + job.setup(STEERING_RESOURCE); job.run(); - System.out.println("Job with steering " + steeringFile + " successfully processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events."); - } - - private void runDQM(File outputFile) { - System.out.println("Running DQM on " + outputFile.getPath() + " ..."); - JobManager job = new JobManager(); - File inputFile = new File(outputFile.getPath() + ".slcio"); - job.addInputFile(inputFile); - job.addVariableDefinition("outputFile", outputFile.getPath().replace(".slcio", "")); - job.setup("/org/hps/steering/production/DataQualityRecon.lcsim"); - job.run(); - System.out.println("DQM processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events from " + outputFile + "."); + System.out.println("Done processing " + job.getLCSimLoop().getTotalCountableConsumed() + " events."); + + Runtime runtime = Runtime.getRuntime(); + int mb = 1024 * 1024; + System.out.printf("total memory: %d mb\n", runtime.totalMemory() / mb); + System.out.printf("free memory: %d mb\n", runtime.freeMemory() / mb); + System.out.printf("max memory: %d mb\n", runtime.maxMemory() / mb); + System.out.printf("used memory: %d mb\n", (runtime.totalMemory() - runtime.freeMemory()) / mb); } } - - Modified: java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim ============================================================================= --- java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim (original) +++ java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim Thu Feb 11 17:15:20 2016 @@ -18,13 +18,12 @@ <driver name="CleanupDriver"/> </execute> <drivers> - <!-- <driver name="DQMDatabaseDriver" type="org.hps.analysis.dataquality.DQMDatabaseDriver"/> --> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> - <eventInterval>1</eventInterval> + <eventInterval>100</eventInterval> </driver> <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"/> <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> - <outputFileName>${outputFile}.root</outputFileName> + <outputFileName>${outputFile}</outputFileName> </driver> <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring"> <overwriteDB>false</overwriteDB> @@ -48,6 +47,5 @@ <overwriteDB>false</overwriteDB> </driver> <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/> - </drivers> </lcsim> Modified: java/branches/jeremy-dev/job/pom.xml ============================================================================= --- java/branches/jeremy-dev/job/pom.xml (original) +++ java/branches/jeremy-dev/job/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/job/</url> Modified: java/branches/jeremy-dev/logging/pom.xml ============================================================================= --- java/branches/jeremy-dev/logging/pom.xml (original) +++ java/branches/jeremy-dev/logging/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/logging/</url> Modified: java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties ============================================================================= --- java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties (original) +++ java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties Thu Feb 11 17:15:20 2016 @@ -16,6 +16,9 @@ # configure the console handler java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + +# turn minuit logging off +org.freehep.math.minuit = OFF # lcsim job org.lcsim.job.level = CONFIG Modified: java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties ============================================================================= --- java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties (original) +++ java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties Thu Feb 11 17:15:20 2016 @@ -16,7 +16,10 @@ # configure the console handler java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter -f + +# turn minuit off +org.freehep.math.minuit = OFF + # lcsim job org.lcsim.job.level = WARNING org.lcsim.job.EventMarkerDriver.level = OFF Modified: java/branches/jeremy-dev/monitoring-app/pom.xml ============================================================================= --- java/branches/jeremy-dev/monitoring-app/pom.xml (original) +++ java/branches/jeremy-dev/monitoring-app/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-app/</url> Modified: java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java ============================================================================= --- java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java (original) +++ java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java Thu Feb 11 17:15:20 2016 @@ -954,7 +954,7 @@ // Add listener to push conditions changes to conditions panel. final List<ConditionsListener> conditionsListeners = new ArrayList<ConditionsListener>(); - conditionsListeners.add(this.frame.getConditionsPanel().new ConditionsPanelListener()); + //conditionsListeners.add(this.frame.getConditionsPanel().new ConditionsPanelListener()); // Instantiate the event processing wrapper. this.processing = new EventProcessing(this, processors, drivers, conditionsListeners); Modified: java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java ============================================================================= --- java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java (original) +++ java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java Thu Feb 11 17:15:20 2016 @@ -37,7 +37,7 @@ /** * The conditions panel. */ - private final ConditionsPanel conditionsPanel; + //private final ConditionsPanel conditionsPanel; /** * The dashboard panel. @@ -150,8 +150,8 @@ tableTabbedPane.addTab("Trigger Diagnostics", this.triggerPanel); // Add the conditions panel. - this.conditionsPanel = new ConditionsPanel(); - tableTabbedPane.addTab("Detector Conditions", this.conditionsPanel); + //this.conditionsPanel = new ConditionsPanel(); + //tableTabbedPane.addTab("Detector Conditions", this.conditionsPanel); // Vertical split pane in left panel. this.leftSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, this.dashboardPanel, tableTabbedPane); @@ -209,9 +209,9 @@ * * @return the conditions panel */ - ConditionsPanel getConditionsPanel() { - return this.conditionsPanel; - } + //ConditionsPanel getConditionsPanel() { + // return this.conditionsPanel; + //} /** * Get the panel for the dashboard. Modified: java/branches/jeremy-dev/monitoring-drivers/pom.xml ============================================================================= --- java/branches/jeremy-dev/monitoring-drivers/pom.xml (original) +++ java/branches/jeremy-dev/monitoring-drivers/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-drivers/</url> Modified: java/branches/jeremy-dev/monitoring-util/pom.xml ============================================================================= --- java/branches/jeremy-dev/monitoring-util/pom.xml (original) +++ java/branches/jeremy-dev/monitoring-util/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-util/</url> Modified: java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java ============================================================================= --- java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java (original) +++ java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java Thu Feb 11 17:15:20 2016 @@ -8,6 +8,9 @@ import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.logging.Logger; @@ -70,9 +73,23 @@ } catch (DocumentException e) { throw new IOException(e); } + + // Sort plotters so output appears the same every time. + ArrayList<IPlotter> sortedPlotters = new ArrayList<IPlotter>(plotters); + Collections.sort(sortedPlotters, new Comparator<IPlotter>() { + public int compare(IPlotter object1, IPlotter object2) { + if (object1.title() == null) { + return -1; + } + if (object2.title() == null) { + return 1; + } + return object1.title().compareTo(object2.title()); + } + }); // Write the graphics from each plotter on a new page. - for (IPlotter plotter : plotters) { + for (IPlotter plotter : sortedPlotters) { plotter.refresh(); document.newPage(); writePage(document, writer, plotter); Modified: java/branches/jeremy-dev/parent/pom.xml ============================================================================= --- java/branches/jeremy-dev/parent/pom.xml (original) +++ java/branches/jeremy-dev/parent/pom.xml Thu Feb 11 17:15:20 2016 @@ -6,13 +6,13 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <packaging>pom</packaging> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> <name>parent</name> <description>HPS Java parent POM</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <org.lcsim.cacheDir>${user.home}</org.lcsim.cacheDir> - <lcsimVersion>3.1.7-SNAPSHOT</lcsimVersion> + <lcsimVersion>3.2-SNAPSHOT</lcsimVersion> <skipSite>false</skipSite> <skipPlugin>false</skipPlugin> </properties> @@ -142,117 +142,117 @@ <dependency> <groupId>org.hps</groupId> <artifactId>hps-util</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-detector-data</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-detector-model</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-conditions</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-ecal-recon</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-ecal-readout-sim</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-tracking</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-evio</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-recon</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-analysis</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-monitoring-drivers</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-monitoring-app</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-users</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-steering-files</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-distribution</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-ecal-event-display</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-record-util</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-monitoring-util</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-run-database</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-crawler</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-datacat-client</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-job</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <dependency> <groupId>org.hps</groupId> <artifactId>hps-logging</artifactId> - <version>${project.version}</version> + <version>3.6-SNAPSHOT</version> </dependency> <!-- Next are external dependencies used in multiple modules. --> <dependency> @@ -283,7 +283,7 @@ <dependency> <groupId>jfreechart-aida-experimental</groupId> <artifactId>jfreechart-aida-experimental</artifactId> - <version>1.8-SNAPSHOT</version> + <version>1.8</version> <exclusions> <exclusion> <groupId>jdom</groupId> @@ -346,7 +346,7 @@ <artifactId>maven-surefire-report-plugin</artifactId> <version>2.17</version> </plugin> - <!-- + <!-- <plugin> <groupId>org.kuali.maven.plugins</groupId> <artifactId>graph-maven-plugin</artifactId> @@ -411,7 +411,7 @@ </lifecycleMappingMetadata> </configuration> </plugin> - <!-- + <!-- <plugin> <groupId>org.kuali.maven.plugins</groupId> <artifactId>graph-maven-plugin</artifactId> Modified: java/branches/jeremy-dev/plugin/pom.xml ============================================================================= --- java/branches/jeremy-dev/plugin/pom.xml (original) +++ java/branches/jeremy-dev/plugin/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/plugin/</url> Modified: java/branches/jeremy-dev/pom.xml ============================================================================= --- java/branches/jeremy-dev/pom.xml (original) +++ java/branches/jeremy-dev/pom.xml Thu Feb 11 17:15:20 2016 @@ -9,7 +9,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>svn://svn.freehep.org/hps/java/trunk/</url> Modified: java/branches/jeremy-dev/recon/pom.xml ============================================================================= --- java/branches/jeremy-dev/recon/pom.xml (original) +++ java/branches/jeremy-dev/recon/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/recon/</url> Modified: java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java ============================================================================= --- java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java (original) +++ java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java Thu Feb 11 17:15:20 2016 @@ -69,7 +69,7 @@ * Rafo's parameterization of cluster-seed x/y position residuals as function of energy. * * Derived using GBL/seed tracks, non-analytic extrapolation, uncorrected cluster positions, - * and EngRun2015-Nominal-v3-4-fieldmap detector. + * and EngRun2015-Nominal-v4-4-fieldmap detector. * * f = p0+e*(p1+e*(p2+e*(p3+e*(p4+e*p5)))) */ @@ -83,14 +83,14 @@ private static final double dxMeanBotElecGBL[] = {-6.63558, 83.7763,-460.451, 1275.63,-1702.83, 873.913 }; private static final double dxSigmBotElecGBL[] = { 47.0029,-411.784, 1586.52,-3083.37, 2985.58,-1145.53 }; - private static final double dyMeanTopPosiGBL[] = { 0.71245, 5.57585,-6.50267,-8.21688, 39.8607,-43.9661 }; + private static final double dyMeanTopPosiGBL[] = { 0.31245, 5.57585,-6.50267,-8.21688, 39.8607,-43.9661 }; private static final double dySigmTopPosiGBL[] = { 33.0213,-275.174, 1168.77,-2642.34, 3045.52,-1406.21 }; - private static final double dyMeanBotPosiGBL[] = {-5.532, 74.9738,-383.972, 977.849,-1250.28, 637.75 }; + private static final double dyMeanBotPosiGBL[] = {-7.032, 74.9738,-383.972, 977.849,-1250.28, 637.75 }; private static final double dySigmBotPosiGBL[] = { 19.019, -83.9253, 133.813, 119.883,-546.951, 405.207 }; - private static final double dyMeanTopElecGBL[] = { 2.88498,-20.4101, 62.9689, 25.6386,-259.957, 207.145 }; + private static final double dyMeanTopElecGBL[] = { 2.48498,-20.4101, 62.9689, 25.6386,-259.957, 207.145 }; private static final double dySigmTopElecGBL[] = { 8.65583, 120.676,-1166.43, 3811.72,-5383.19, 2787.42 }; - private static final double dyMeanBotElecGBL[] = {-9.02276, 112.329,-489.761, 953.037,-829.96, 260.772 }; + private static final double dyMeanBotElecGBL[] = {-10.5228, 112.329,-489.761, 953.037,-829.96, 260.772 }; private static final double dySigmBotElecGBL[] = { 23.4856,-108.19, 158.7, 189.261,-682.034, 459.15 }; private static final double dxMeanTopPosiSeed[] ={ 11.6245,-28.5061, 13.0332, 59.9465,-21.1014,-63.6126 }; @@ -103,17 +103,15 @@ private static final double dxMeanBotElecSeed[] ={-3.44302, 12.4687, 4.09878,-30.0057,-13.3151, 40.2707 }; private static final double dxSigmBotElecSeed[] ={ 48.4089,-385.494, 1341.37,-2271.52, 1814.02,-526.555 }; - private static final double dyMeanTopPosiSeed[] ={-0.127741,10.4944, -18.242,-12.9155, 81.0116,-73.9773 }; + private static final double dyMeanTopPosiSeed[] ={-0.527741,10.4944, -18.242,-12.9155, 81.0116,-73.9773 }; private static final double dySigmTopPosiSeed[] ={ 37.3097, -357.55, 1607.03,-3709.55, 4282.36,-1957.91 }; - private static final double dyMeanBotPosiSeed[] ={ 2.24392,-55.2003, 405.04,-1250.64, 1731.47,-887.262 }; + private static final double dyMeanBotPosiSeed[] ={ 0.74392,-55.2003, 405.04,-1250.64, 1731.47,-887.262 }; private static final double dySigmBotPosiSeed[] ={ 25.5776,-199.731, 754.59,-1408.72, 1240.36,-400.912 }; - private static final double dyMeanTopElecSeed[] ={ 3.25429,-24.0858, 69.0145, 34.1213,-297.752, 239.939 }; + private static final double dyMeanTopElecSeed[] ={ 2.85429,-24.0858, 69.0145, 34.1213,-297.752, 239.939 }; private static final double dySigmTopElecSeed[] ={ 19.9111,-53.2699,-261.915, 1593.2,-2774.01, 1605.54 }; - private static final double dyMeanBotElecSeed[] ={-7.72963, 98.1346, -427.91, 840.225,-751.188, 250.792 }; + private static final double dyMeanBotElecSeed[] ={-9.22963, 98.1346, -427.91, 840.225,-751.188, 250.792 }; private static final double dySigmBotElecSeed[] ={ 21.7909,-85.4757,-56.9423, 977.522,-1902.05, 1137.92 }; - - /** * Z position to start extrapolation from */ Modified: java/branches/jeremy-dev/record-util/pom.xml ============================================================================= --- java/branches/jeremy-dev/record-util/pom.xml (original) +++ java/branches/jeremy-dev/record-util/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/record-util/</url> Modified: java/branches/jeremy-dev/run-database/pom.xml ============================================================================= --- java/branches/jeremy-dev/run-database/pom.xml (original) +++ java/branches/jeremy-dev/run-database/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/run-database/</url> Modified: java/branches/jeremy-dev/steering-files/pom.xml ============================================================================= --- java/branches/jeremy-dev/steering-files/pom.xml (original) +++ java/branches/jeremy-dev/steering-files/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/steering-files/</url> Modified: java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim ============================================================================= --- java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim (original) +++ java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim Thu Feb 11 17:15:20 2016 @@ -19,7 +19,7 @@ <driver name="ConditionsDriver" type="org.hps.conditions.ConditionsDriver"> <tag>pass0</tag> </driver> - <driver name="DAQConfig" type="org.hps.recon.ecal.daqconfig.DAQConfigDriver"/> + <driver name="DAQConfig" type="org.hps.record.daqconfig.DAQConfigDriver"/> <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver"> <ecalCollectionName>EcalCalHits</ecalCollectionName> <use2014Gain>false</use2014Gain> Modified: java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim ============================================================================= --- java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim (original) +++ java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim Thu Feb 11 17:15:20 2016 @@ -59,6 +59,7 @@ <driver name="TridentMonitoringGBLPairs1"/> <!-- --> <driver name="AidaSaveDriver"/> + <driver name="AidaToRootSaveDriver"/> <driver name="CleanupDriver"/> </execute> <drivers> @@ -68,7 +69,10 @@ <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"> <readoutCollections>SVTRawTrackerHits</readoutCollections> </driver> - <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> + <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> + <outputFileName>${outputFile}.aida</outputFileName> + </driver> + <driver name="AidaToRootSaveDriver" type="org.lcsim.job.AidaSaveDriver"> <outputFileName>${outputFile}.root</outputFileName> </driver> Modified: java/branches/jeremy-dev/tracking/pom.xml ============================================================================= --- java/branches/jeremy-dev/tracking/pom.xml (original) +++ java/branches/jeremy-dev/tracking/pom.xml Thu Feb 11 17:15:20 2016 @@ -8,7 +8,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/tracking/</url> Modified: java/branches/jeremy-dev/users/pom.xml ============================================================================= --- java/branches/jeremy-dev/users/pom.xml (original) +++ java/branches/jeremy-dev/users/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/users/</url> Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java Thu Feb 11 17:15:20 2016 @@ -129,6 +129,9 @@ if (tiTimeOffset == 0) { continue; } + if (tiTimeOffset == 0) { + continue; + } } try { Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java Thu Feb 11 17:15:20 2016 @@ -1,9 +1,16 @@ package org.hps.users.spaul; +import java.awt.Component; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.File; import java.util.Arrays; import java.util.Random; +import javax.imageio.ImageIO; + import hep.aida.*; +import hep.aida.ref.plotter.PlotterUtilities; public class StyleUtil { @@ -27,14 +34,16 @@ r.style().yAxisStyle().labelStyle().setFontSize(16); r.style().yAxisStyle().tickLabelStyle().setFontSize(14); // r.style().statisticsBoxStyle().set; - //System.out.println(Arrays.toString()); + //debugPrint()); r.style().legendBoxStyle().textStyle().setFontSize(16); + r.style().statisticsBoxStyle().textStyle().setFontSize(16); //r.style().dataStyle().showInLegendBox(false); + r.style().legendBoxStyle().boxStyle().foregroundStyle().setOpacity(1.0); r.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); r.style().dataStyle().fillStyle().setParameter("showZeroHeightBins", "false"); - System.out.println(Arrays.toString(r.style().statisticsBoxStyle().boxStyle().backgroundStyle().availableParameters())); + //debugPrint(r.style().dataStyle().availableParameters())); //r.style().dataStyle().setParameter("showDataInStatisticsBox", "false"); r.style().setParameter("hist2DStyle", "colorMap"); //r.style().dataBoxStyle() @@ -62,15 +71,38 @@ region.style().dataStyle().lineStyle().setParameter("colorRotateMethod", "regionOverlayIndex"); region.style().dataStyle().lineStyle().setParameter("colorRotate", "black, red, green, blue"); region.style().dataStyle().lineStyle().setParameter("thickness", "3"); + region.style().dataStyle().outlineStyle().setParameter("colorRotateMethod", "regionOverlayIndex"); + //debug = true; + debugPrint(region.style().dataStyle().outlineStyle().availableParameters()); + region.style().dataStyle().outlineStyle().setParameter("colorRotate", "black, red, green, blue"); + region.style().dataStyle().outlineStyle().setParameter("thickness", "3"); region.style().dataStyle().errorBarStyle().setVisible(false); - System.out.println(Arrays.toString(region.style().dataStyle().lineStyle().availableParameterOptions("colorRotateMethod"))); + debugPrint(region.style().dataStyle().lineStyle().availableParameterOptions("colorRotateMethod")); + } + public static void setSize(IPlotter p, int width, int height){ + p.setParameter("plotterWidth", width +""); + p.setParameter("plotterHeight", height +""); } + public static void setLog(IPlotterRegion r){ + + r.style().yAxisStyle().setParameter("scale", "log"); + r.style().gridStyle().setUnits(100); + debugPrint(r.style().gridStyle().availableParameters()); + + } + static boolean debug = false; + static void debugPrint(String[] stuff){ + if(debug){ + System.out.println(Arrays.toString(stuff)); + } + } public static void main(String arg[]){ IAnalysisFactory af = IAnalysisFactory.create(); IHistogramFactory hf = af.createHistogramFactory(af.createTreeFactory().create()); IPlotter p = af.createPlotterFactory().create(); + debugPrint(p.availableParameters()); p.createRegions(1, 2); IHistogram1D h1 = hf.createHistogram1D("blah", 100, -5, 5); IHistogram1D h2 = hf.createHistogram1D("bleh", 100, -5, 5); @@ -99,9 +131,65 @@ p.show(); + p = af.createPlotterFactory().create(); + debugPrint(p.availableParameters()); + p.createRegions(1, 2); + + p.region(0).plot(h1); + setLog(p.region(0)); + + + + p.show(); } public static void hideLegendAndStats(IPlotterRegion r){ r.style().statisticsBoxStyle().setVisible(false); r.style().legendBoxStyle().setVisible(false); } + public static IPlotterStyle smoothCurveStyle(IPlotterFactory pf) { + IPlotterStyle style = pf.createPlotterStyle(); + debugPrint(style.dataStyle().availableParameters()); + + style.dataStyle().markerStyle().setVisible(false); + + return style; + } + public static void writeToFile(IPlotter plotter, String filename, String filetype){ + //JFrame frame = new JFrame() + //if(plotter.) + //plotter.hide(); + //plotter.show(); + //PlotterUtilities.writeToFile(plotter, filename, filetype, null); + try { + + + //PlotterUtilities.writeToFile(plotter, filename, filetype, null); + Thread.sleep(1000); + Component c = PlotterUtilities.componentForPlotter(plotter); + int width = Integer.parseInt(plotter.parameterValue("plotterWidth")); + int height = Integer.parseInt(plotter.parameterValue("plotterHeight")); + if(width <= 0){ + width = 300; + plotter.setParameter("plotterWidth", Integer.toString(width)); + } + if(height <= 0){ + height = 300; + + plotter.setParameter("plotterHeight", Integer.toString(height)); + } + + c.setSize(width, height); + BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); + Graphics2D graphics2D = image.createGraphics(); + c.paint(graphics2D); + ImageIO.write(image,filetype, new File(filename)); + Runtime.getRuntime().exec("open " + filename); + System.out.println("saved"); + + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } } Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java Thu Feb 11 17:15:20 2016 @@ -3,6 +3,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; @@ -17,12 +18,14 @@ // and put the sums in separate files in a folder called "sums" public class SumEverything { public static void main(String arg[]) throws IllegalArgumentException, IOException{ - if(arg.length > 1){ + if(arg.length == 2){ twoArg(arg[0], arg[1]); } - else{ + else if(arg.length == 1){ oneArg(arg[0]); } + else + polyArg(arg); } static void oneArg(final String indir) throws IllegalArgumentException, IOException{ File outdir = new File(indir + "/sums"); @@ -64,53 +67,76 @@ } + + static void twoArg(String indir, String out) throws IllegalArgumentException, IOException{ + + run(new File(indir).listFiles(), out); + } + static void run(File[] files, String out) throws IllegalArgumentException, IOException{ + + long timeStart = System.currentTimeMillis(); IAnalysisFactory af = IAnalysisFactory.create(); ITreeFactory tf = af.createTreeFactory(); new File(out).delete(); - ITree tree0 = tf.create(out, "xml", false, true); - IHistogramFactory hf = af.createHistogramFactory(tree0); - - + ITree outtree = tf.create(out, "xml", false, true); + //IHistogramFactory hf = af.createHistogramFactory(outtree); int j = 0; - for(File s : new File(indir).listFiles()){ + String names[] = null; + for(File s : files){ if(!s.getAbsolutePath().endsWith("aida")) continue; try{ - ITree tree = af.createTreeFactory().create(s.getAbsolutePath(),"xml"); + ITree tree = tf.create(s.getAbsolutePath(),"xml"); if(j == 0){ - String [] names = tree.listObjectNames(); - tree0.mount("/tmp", tree, "/"); + names = tree.listObjectNames("/", true); + System.out.println(Arrays.toString(names)); + outtree.mount("/tmp", tree, "/"); for(String name : names){ + if(name.endsWith("/")){ + outtree.mkdirs(name); + continue; + } Object o = tree.find(name); if(o instanceof IHistogram1D || o instanceof IHistogram2D) - tree0.cp("/tmp/" + name, name); + outtree.cp("/tmp" + name, name); } - tree0.unmount("/tmp"); - tree.close(); + outtree.unmount("/tmp"); + //tree.close(); } else{ //tree. - String [] names = tree.listObjectNames(); - tree0.mount("/tmp", tree, "/"); + //String [] names = tree.listObjectNames("/", true); + //outtree.mount("/tmp", tree, "/"); + //System.out.println(Arrays.toString(names)); for(String name : names){ - Object o = tree.find(name); - if(o instanceof IHistogram1D) - ((IHistogram1D)tree0.find(name)).add((IHistogram1D)o); + if(name.endsWith("/")) + continue; + Object o = null; + try{ + o = tree.find(name); + } catch(IllegalArgumentException e){ + System.err.println("couldn't find object called " + name + " in file " + s); + throw e; + } + if(o instanceof IHistogram1D){ + if(((IHistogram1D)o).allEntries() != 0) + ((IHistogram1D)outtree.find(name)).add((IHistogram1D)o); + } if(o instanceof IHistogram2D) - ((IHistogram2D)tree0.find(name)).add((IHistogram2D)o); + if(((IHistogram2D)o).allEntries() != 0) + ((IHistogram2D)outtree.find(name)).add((IHistogram2D)o); } - tree0.unmount("/tmp"); - tree.close(); + //outtree.unmount("/tmp"); + //tree.close(); } tree.close(); j++; - System.out.println(j + " files have been read"); - + System.out.println(j + " files have been read (" +(System.currentTimeMillis()-timeStart)/j + " ms per event"); } catch(IllegalArgumentException e){ //print the filename @@ -118,7 +144,28 @@ e.printStackTrace(); } - tree0.commit(); + + outtree.commit(); + System.out.println("summed file " + out +" commited. Total time = " + (System.currentTimeMillis()-timeStart)/1000 + " seconds"); + } + } + + static void polyArg(String[] arg) throws IllegalArgumentException, IOException{ + ArrayList<File> files = new ArrayList<File>(); + boolean nextIsOutput = false; + for(String a : arg){ + if(a.equals("-o")){ + nextIsOutput = true; + continue; + } + if(nextIsOutput){ + run(files.toArray(new File[0]), a); + nextIsOutput = false; + files.clear(); + continue; + } + files.add(new File(a)); + } } } Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java Thu Feb 11 17:15:20 2016 @@ -36,7 +36,8 @@ IDataPointSetFactory dpsf = af.createDataPointSetFactory(treeNew); - IPlotter p = af.createPlotterFactory().create(outpaths[config]); + IPlotterFactory pf = af.createPlotterFactory(); + IPlotter p = pf.create(outpaths[config]); int Nsets = arg.length/10; @@ -152,7 +153,9 @@ //p.region(0).plot(dps_iso); } - p.region(0).plot(dpsTheory); + + IPlotterStyle style = StyleUtil.smoothCurveStyle(pf); + p.region(0).plot(dpsTheory, style); StyleUtil.stylize(p.region(0), "Form Factors", "Q^2 (GeV^2)", "|F(Q^2)|^2"); p.show(); } Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java Thu Feb 11 17:15:20 2016 @@ -145,7 +145,7 @@ thetaHist = hf.createHistogram1D("theta", "theta", thetaBins); - EHist = hf.createHistogram1D("energy", 50, 0, 1.3); + EHist = hf.createHistogram1D("energy", 200, 0, 1.3); IPlotter p = af.createPlotterFactory().create(); p.createRegions(2,1); p.region(0).plot(thetaHist); @@ -166,8 +166,9 @@ if(phep[3] > .5*E){ StdhepEvent event = new StdhepEvent(nevhep, nhep, isthep, idhep, jmohep, jdahep, phep, vhep); + double smear = .02; if(display) - EHist.fill(phep[3]*(1+random.nextGaussian()*.045)); + EHist.fill(phep[3]*(1+random.nextGaussian()*smear)); writer.writeRecord(event); } else{ // if the event has enough energy loss, Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java Thu Feb 11 17:15:20 2016 @@ -59,7 +59,7 @@ String input = arg[0]; String output = arg[1]; cb = new CustomBinning(new File(arg[2])); - if(arg.length == 5) + if(arg[arg.length -1].equals("display")) display = true; IAnalysisFactory af = IAnalysisFactory.create(); ITree tree = af.createTreeFactory().create(output,"xml",false,true); @@ -73,7 +73,10 @@ hack.setDetectorName("HPS-EngRun2015-Nominal-v3"); hack.setFreeze(true); hack.setRunNumber(Integer.parseInt(arg[3])); + hack.initialize(); + beamTiltY = Double.parseDouble(arg[4]); + beamTiltX = Double.parseDouble(arg[5]); LCIOReader reader = new LCIOReader(new File(input)); //reader.open(input); //reader. @@ -98,13 +101,14 @@ static IHistogram2D h1, h2, h2a, h2b, h2c; static IHistogram2D h4,h4a; - static IHistogram1D h3, h3a, h3_t, h3_b; + static IHistogram1D h3, /*h3a,*/ h3_t, h3_b; static IHistogram1D h5, h5a; - static IHistogram2D h6, h6a; + //static IHistogram2D h6, h6a; static IHistogram1D h7, h7a; static IHistogram1D h8; static IHistogram1D h9_t, h9_b; static IHistogram1D h10_t, h10_b; + private static IHistogram1D h4y; private static void extractHistograms(ITree tree0) { h1 = (IHistogram2D) tree0.find("theta vs energy"); @@ -115,7 +119,7 @@ h2c = (IHistogram2D) tree0.find("theta vs phi alt"); h3 = (IHistogram1D) tree0.find("theta"); - h3a = (IHistogram1D) tree0.find("theta isolated "); + //h3a = (IHistogram1D) tree0.find("theta isolated "); h3_t = (IHistogram1D) tree0.find("theta top"); h3_b = (IHistogram1D) tree0.find("theta bottom"); @@ -125,8 +129,8 @@ h5 = (IHistogram1D) tree0.find("energy top"); h5 = (IHistogram1D) tree0.find("energy bottom"); - h6 = (IHistogram2D) tree0.find("cluster"); - h6a = (IHistogram2D) tree0.find("cluster matched"); +// h6 = (IHistogram2D) tree0.find("cluster"); +// h6a = (IHistogram2D) tree0.find("cluster matched"); h7 = (IHistogram1D) tree0.find("y top"); h7a = (IHistogram1D) tree0.find("y bottom"); h8 = (IHistogram1D) tree0.find("seed energy"); @@ -176,7 +180,7 @@ h2c = hf.createHistogram2D("theta vs phi alt", "theta vs phi alt", thetaBins, phiBins); h3 = hf.createHistogram1D("theta", "theta", thetaBins); - h3a = hf.createHistogram1D("theta isolated ", "theta isolated", thetaBins); +// h3a = hf.createHistogram1D("theta isolated ", "theta isolated", thetaBins); h3_t = hf.createHistogram1D("theta top", "theta top", thetaBins); h3_b = hf.createHistogram1D("theta bottom", "theta bottom", thetaBins); @@ -184,7 +188,8 @@ h4 = hf.createHistogram2D("px\\/pz vs py\\/pz", 300, -.16, .24, 300, -.2, .2); h4a = hf.createHistogram2D("px\\/pz vs py\\/pz cut", 300, -.16, .24, 300, -.2, .2); - + h4y = hf.createHistogram1D("py\\pz", 1200, -.06, .06); + h5 = hf.createHistogram1D("energy top", 75, 0, 1.5); h5a = hf.createHistogram1D("energy bottom", 75, 0, 1.5); @@ -192,8 +197,8 @@ h9_t = hf.createHistogram1D("pz top", 75, 0, 1.5); h9_b = hf.createHistogram1D("pz bottom", 75, 0, 1.5); - h6 = hf.createHistogram2D("cluster", 47, -23.5, 23.5, 11, -5.5, 5.5); - h6a = hf.createHistogram2D("cluster matched", 47, -23.5, 23.5, 11, -5.5, 5.5); +// h6 = hf.createHistogram2D("cluster", 47, -23.5, 23.5, 11, -5.5, 5.5); +// h6a = hf.createHistogram2D("cluster matched", 47, -23.5, 23.5, 11, -5.5, 5.5); h7 = hf.createHistogram1D("y top", 500, 0, 100); @@ -210,12 +215,15 @@ p.createRegions(2,2); p.region(0).plot(h2); StyleUtil.stylize(p.region(0), "theta", "phi"); - p.region(1).plot(h3a); +// p.region(1).plot(h3a); StyleUtil.stylize(p.region(1), "theta", "# of particles"); - p.region(2).plot(h3); - StyleUtil.stylize(p.region(2), "theta", "# of particles"); + p.region(2).plot(h9_t); + p.region(2).plot(h9_b); + StyleUtil.noFillHistogramBars(p.region(2)); + StyleUtil.stylize(p.region(2), "pztilt" ,"pztilt", "# of particles"); p.region(3).plot(h5); p.region(3).plot(h5a); + StyleUtil.noFillHistogramBars(p.region(3)); StyleUtil.stylize(p.region(3), "energy", "# of particles"); p.show(); @@ -252,9 +260,9 @@ IPlotter p6 = pf.create("efficiency"); p6.createRegions(1,2); - p6.region(0).plot(h6); +// p6.region(0).plot(h6); StyleUtil.stylize(p6.region(0), "ix", "iy"); - p6.region(1).plot(h6a); +// p6.region(1).plot(h6a); StyleUtil.stylize(p6.region(1), "ix", "iy"); p6.show(); @@ -279,15 +287,22 @@ p9.region(0).plot(h3_b); StyleUtil.stylize(p9.region(0), "theta", "theta", "# of particles"); StyleUtil.noFillHistogramBars(p9.region(0)); - StyleUtil.stylize(p6.region(1), "ix", "iy"); + //StyleUtil.stylize(p6.region(1), "ix", "iy"); p9.show(); IPlotter p10 = pf.create("seed energy"); //p6.createRegions(1,2); + p10.createRegions(2,1); p10.region(0).plot(h8); StyleUtil.stylize(p10.region(0), "seed energy", "seed energy (GeV)", "# of particles"); + + p10.region(1).plot(h10_t); + p10.region(1).plot(h10_b); + StyleUtil.noFillHistogramBars(p10.region(1)); + StyleUtil.stylize(p10.region(1), "clust size", "n ecal hits", "# of particles"); + //StyleUtil.noFillHistogramBars(p10.region(0)); - StyleUtil.stylize(p6.region(1), "ix", "iy"); + //StyleUtil.stylize(p6.region(1), "ix", "iy"); p10.show(); } @@ -307,80 +322,37 @@ List<ReconstructedParticle> particles = event.get(ReconstructedParticle.class, "FinalStateParticles"); particles = RemoveDuplicateParticles.removeDuplicateParticles(particles); outer : for(ReconstructedParticle p : particles){ - //check if this is a duplicate particle (ie, different track same cluster) - /*for(ParticleInfo cand : candidates){ - if(p.getEnergy() == cand.E && cand.isGood == true) - continue outer; - }*/ + boolean isGood = addParticle(p); - if(!isGood){ - if(p.getClusters().size()!= 0) - candidates.add(new ParticleInfo(0, p.getEnergy(), p.getClusters().get(0).getCalorimeterHits().get(0).getTime(), false)); - - } - - } - for(ParticleInfo c : candidates){ - if(c.isGood){ - boolean isIsolated = true; - for(ParticleInfo c2 :candidates){ - //try to remove events that have possible mollers in them. - //correct for this later. - if(Math.abs(c2.t - c.t) < 2.5 && c2.E < .3 && c2 != c){ - isIsolated = false; - break; - } - } - if(isIsolated){ - h3a.fill(c.theta); - } - } - } - candidates.clear(); - processEventEfficiency(particles); - } - - private static void processEventEfficiency(List<ReconstructedParticle> parts) { - for(ReconstructedParticle p : parts){ - if(p.getClusters().size() == 0) - continue; - if(!(p.getEnergy() > eMin && p.getEnergy() < eMax)) - continue; - Cluster c = p.getClusters().get(0); - if(!EcalUtil.fid_ECal(c) || c.getCalorimeterHits().size() < 3) - continue; - //good cluster? now continue - int ixiy[] = EcalUtil.getCrystalIndex(c); - - h6.fill(ixiy[0], ixiy[1]); - if(p.getTracks().size() == 0) - continue; - Track t = p.getTracks().get(0); - if(t.getChi2()> maxChi2) - continue; - h6a.fill(ixiy[0], ixiy[1]); - - } - } + + + } + + } + + static double eMin = .8; static double eMax = 1.2; static double beamEnergy = 1.057; - static double beamTilt = .03057; + static double beamTiltX = .03057; + static double beamTiltY; static double maxChi2 = 50; //maximum difference between the reconstructed energy and momentum - static double maxdE = .3; + static double maxdE = .5; static double seedEnergyCut = .4; - static ArrayList<ParticleInfo> candidates = new ArrayList(); static boolean addParticle(ReconstructedParticle part){ - - - + if(part.getTracks().size() != 0){ + if(part.getMomentum().magnitudeSquared() > .8 + && part.getTracks().get(0).getChi2() > maxChi2){ + h4y.fill(part.getMomentum().y()/part.getMomentum().z()); + } + } if(part.getCharge() != -1) return false; if(part.getClusters().size() == 0) @@ -422,6 +394,12 @@ if(EcalUtil.fid_ECal(c)){ + if(c.getPosition()[1] > 0){ + h5.fill(c.getEnergy()); + } + else{ + h5a.fill(c.getEnergy()); + } if(part.getTracks().size() == 0) return false; Track t = part.getTracks().get(0); @@ -430,12 +408,7 @@ } if(!TrackType.isGBL(t.getType())) return false; - if(c.getPosition()[1] > 0){ - h5.fill(c.getEnergy()); - } - else{ - h5a.fill(c.getEnergy()); - } + Hep3Vector p = part.getMomentum(); @@ -443,9 +416,12 @@ double px = p.x(), pz = p.z(); - double pxtilt = px*Math.cos(beamTilt)-pz*Math.sin(beamTilt); + double pxtilt = px*Math.cos(beamTiltX)-pz*Math.sin(beamTiltX); double py = p.y(); - double pztilt = pz*Math.cos(beamTilt)+px*Math.sin(beamTilt); + double pztilt = pz*Math.cos(beamTiltX)+px*Math.sin(beamTiltX); + + double pytilt = py*Math.cos(beamTiltY)-pztilt*Math.sin(beamTiltY); + pztilt = pz*Math.cos(beamTiltY) + pytilt*Math.sin(beamTiltY); if(Math.abs(pztilt - c.getEnergy()) > maxdE) return false; @@ -454,8 +430,8 @@ else h9_b.fill(pztilt); - double theta = Math.atan(Math.hypot(pxtilt, py)/pztilt); - double phi =Math.atan2(py, pxtilt); + double theta = Math.atan(Math.hypot(pxtilt, pytilt)/pztilt); + double phi =Math.atan2(pytilt, pxtilt); boolean inRange = cb.inRange(theta, phi); if(inRange) h1.fill(theta, c.getEnergy()); @@ -470,6 +446,7 @@ h2c.fill(theta, phi); h4.fill(px/pz, py/pz); + //h4y.fill(py/pz); if(inRange){ @@ -492,7 +469,6 @@ h4a.fill(px/pz, py/pz); - candidates.add(new ParticleInfo(theta, c.getEnergy(), c.getCalorimeterHits().get(0).getTime(), true)); } @@ -502,16 +478,5 @@ } return false; } - static class ParticleInfo{ - double theta; - double E; - double t; - boolean isGood; - ParticleInfo(double theta, double E, double t, boolean isGood){ - this.theta = theta; - this.E = E; - this.t = t; - this.isGood = isGood; - } - } + } Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java Thu Feb 11 17:15:20 2016 @@ -56,7 +56,7 @@ return false; if(p.getTracks().size() == 1 && p.getTracks().size() == 0) return true; - if(TrackType.isGBL(p.getTracks().get(0).getType()) && !TrackType.isGBL(p.getTracks().get(0).getType())) + if(TrackType.isGBL(p.getTracks().get(0).getType()) && !TrackType.isGBL(p2.getTracks().get(0).getType())) return true; if(p.getTracks().get(0).getChi2() < p2.getTracks().get(0).getChi2()){ Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java ============================================================================= --- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java (original) +++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java Thu Feb 11 17:15:20 2016 @@ -24,28 +24,29 @@ double nK = 10; for(int sign = -1; sign <=1; sign +=2){ - for(int k = 0; k< nK; k++){ - drawLineFromPolar(theta1, sign*(phi1+(phi2-phi1)*k/nK), theta1, sign*(phi1+(phi2-phi1)*(k+1)/nK),g); - } - for(int k = 0; k< nK; k++){ - drawLineFromPolar(theta1 + (theta2-theta1)*k/nK, sign*phi2, theta1 + (theta2-theta1)*(k+1)/nK, sign*phi2,g); - } - for(int k = 0; k< nK; k++){ - drawLineFromPolar(theta2, sign*(phi2+(phi1-phi2)*k/nK), theta2, sign*(phi2+(phi1-phi2)*(k+1)/nK),g); - } - for(int k = 0; k< nK; k++){ - drawLineFromPolar(theta2 + (theta1-theta2)*k/nK, sign*phi1, theta2 + (theta1-theta2)*(k+1)/nK, sign*phi1,g); + + Polygon p = new Polygon(); + for(int k = 0; k< nK; k++){ + drawLineFromPolar(theta1, sign*(phi1+(phi2-phi1)*k/nK), theta1, sign*(phi1+(phi2-phi1)*(k+1)/nK),g,p); + } + for(int k = 0; k< nK; k++){ + drawLineFromPolar(theta1 + (theta2-theta1)*k/nK, sign*phi2, theta1 + (theta2-theta1)*(k+1)/nK, sign*phi2,g,p); + } + for(int k = 0; k< nK; k++){ + drawLineFromPolar(theta2, sign*(phi2+(phi1-phi2)*k/nK), theta2, sign*(phi2+(phi1-phi2)*(k+1)/nK),g, p); + } + for(int k = 0; k< nK; k++){ + drawLineFromPolar(theta2 + (theta1-theta2)*k/nK, sign*phi1, theta2 + (theta1-theta2)*(k+1)/nK, sign*phi1,g, p); } - closePolarFigure(g, i%2 == 0 ? altBin1 : altBin2, i%2 == 0 ? fillBin1 : fillBin2); + closePolarFigure(g, i%2 == 0 ? altBin1 : altBin2, i%2 == 0 ? fillBin1 : fillBin2, p); } } } } - Polygon p = null; private void drawLineFromPolar(double theta1, double phi1, double theta2, - double phi2, Graphics g) { + double phi2, Graphics g, Polygon p) { double[] xy1 = toXY(theta1, phi1); double[] xy2 = toXY(theta2, phi2); @@ -57,19 +58,24 @@ getY(xy2[1]));*/ p.addPoint(getX(xy2[0]), getY(xy2[1])); } - private void closePolarFigure(Graphics g, Color outlineColor, Color fillColor){ + private void closePolarFigure(Graphics g, Color outlineColor, Color fillColor, Polygon p){ g.setColor(fillColor); g.fillPolygon(p); g.setColor(outlineColor); g.drawPolygon(p); - p = null; - - } - double tilt = .03057; + + } + double xtilt = .0294; + double ytilt = -.00082; double[] toXY(double theta, double phi){ - double ux = Math.cos(phi)*Math.sin(theta)*Math.cos(tilt)+Math.cos(theta)*Math.sin(tilt); + double ux = Math.cos(phi)*Math.sin(theta)*Math.cos(xtilt)+Math.cos(theta)*Math.sin(xtilt); double uy = Math.sin(phi)*Math.sin(theta); - double uz = Math.cos(theta)*Math.cos(tilt)-Math.cos(phi)*Math.sin(theta)*Math.sin(tilt); + double uz = Math.cos(theta)*Math.cos(xtilt)-Math.cos(phi)*Math.sin(theta)*Math.sin(xtilt); + + double temp = Math.cos(ytilt)*uy+Math.sin(ytilt)*uz; + uz = Math.cos(ytilt)*uz-Math.sin(ytilt)*uy; + uy = temp; + double pxpz = ux/uz; double pypz = uy/uz; return new double[]{pxpz, pypz}; @@ -224,4 +230,19 @@ g.drawLine(getX(0), getY(i/100.), getX(0) + 5, getY(i/100.)); } } + public void paint(Graphics g){ + super.paint(g); + drawBeamspot(g); + } + + void drawBeamspot(Graphics g){ + g.setColor(Color.red); + int x = getX(xtilt), y = getY(ytilt); + g.drawLine(x+10, y, x-10, y); + g.drawLine(x+10, y+1, x-10, y+1); + g.drawLine(x+10, y-1, x-10, y-1); + g.drawLine(x, y-10, x, y+10); + g.drawLine(x+1, y-10, x+1, y+10); + g.drawLine(x-1, y-10, x-1, y+10); + } } Modified: java/branches/jeremy-dev/util/pom.xml ============================================================================= --- java/branches/jeremy-dev/util/pom.xml (original) +++ java/branches/jeremy-dev/util/pom.xml Thu Feb 11 17:15:20 2016 @@ -7,7 +7,7 @@ <groupId>org.hps</groupId> <artifactId>hps-parent</artifactId> <relativePath>../parent/pom.xml</relativePath> - <version>3.5-SNAPSHOT</version> + <version>3.6-SNAPSHOT</version> </parent> <scm> <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/util/</url>