Author: [log in to unmask] Date: Thu Mar 5 10:58:18 2015 New Revision: 2265 Log: changes to tracking recon monitoring Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java - copied, changed from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java - copied, changed from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java Removed: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java java/trunk/conditions/ (props changed) java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java java/trunk/monitoring-util/ (props changed) java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java Thu Mar 5 10:58:18 2015 @@ -26,7 +26,7 @@ protected boolean connectToDB = false; protected boolean printDQMStrings = false; protected Map<String, Double> monitoredQuantityMap = new HashMap<>(); - + protected boolean debug=false; protected boolean outputPlots = false; protected String outputPlotDir = "DQMOutputPlots/"; @@ -34,6 +34,10 @@ this.recoVersion = recoVersion; } + public void setDebug(boolean debug){ + this.debug=debug; + } + public void setRunNumber(int run) { this.runNumber = run; } Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java Thu Mar 5 10:58:18 2015 @@ -51,8 +51,7 @@ //some summers double sumdelX = 0.0; double sumdelY = 0.0; - double sumEoverP = 0.0; - boolean debug = false; + double sumEoverP = 0.0; private String plotDir = "FinalStateParticles/"; @Override @@ -90,8 +89,11 @@ @Override public void process(EventHeader event) { /* make sure everything is there */ - if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)) + if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)){ + if(debug) + System.out.println(finalStateParticlesColName+" collection not found???"); return; + } nRecoEvents++; int nPhotons = 0; //number of photons int nUnAssTracks = 0; //number of tracks w/o clusters Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java Thu Mar 5 10:58:18 2015 @@ -121,28 +121,34 @@ //make sure the required collections exist if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) { - System.out.println(this.getClass().getSimpleName() + ": no collection found " + rawTrackerHitCollectionName); + if (debug) + System.out.println(this.getClass().getSimpleName() + ": no collection found " + rawTrackerHitCollectionName); return; } - if (!event.hasCollection(LCRelation.class, fittedSVTHitCollectionName)) { - System.out.println(this.getClass().getSimpleName() + ": no collection found " + fittedSVTHitCollectionName); + if (!event.hasCollection(LCRelation.class, fittedSVTHitCollectionName)) + if (debug) + System.out.println(this.getClass().getSimpleName() + ": no collection found " + fittedSVTHitCollectionName); //mg...2/1/2015...don't return if the fitted collection isn't there... + //allow us to run if we simulated in "simple" mode (i.e. no time evolution) + // return; + if (!event.hasCollection(Track.class, trackCollectionName)) { + if (debug) + System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackCollectionName); return; } - if (!event.hasCollection(Track.class, trackCollectionName)) { - System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackCollectionName); + if (!event.hasCollection(LCRelation.class, trackHitMCRelationsCollectionName)) { + if (debug) + System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackHitMCRelationsCollectionName); return; } - if (!event.hasCollection(LCRelation.class, trackHitMCRelationsCollectionName)) { - System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackHitMCRelationsCollectionName); + if (!event.hasCollection(TrackerHit.class, siClusterCollectionName)) { + if (debug) + System.out.println(this.getClass().getSimpleName() + ": no collection found " + siClusterCollectionName); return; } - if (!event.hasCollection(TrackerHit.class, siClusterCollectionName)) { - System.out.println(this.getClass().getSimpleName() + ": no collection found " + siClusterCollectionName); - return; - } if (!event.hasCollection(SimTrackerHit.class, trackerHitCollectionName)) { - System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackerHitCollectionName); + if (debug) + System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackerHitCollectionName); return; } // @@ -153,37 +159,28 @@ Map<Track, TrackAnalysis> tkanalMap = new HashMap<Track, TrackAnalysis>(); RelationalTable hittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED); List<LCRelation> mcrelations = event.get(LCRelation.class, trackHitMCRelationsCollectionName); - if (debugTrackEfficiency) { + if (debugTrackEfficiency) System.out.println(this.getClass().getSimpleName() + ": number of MC relations = " + mcrelations.size()); - } - for (LCRelation relation : mcrelations) { - if (relation != null && relation.getFrom() != null && relation.getTo() != null) { + for (LCRelation relation : mcrelations) + if (relation != null && relation.getFrom() != null && relation.getTo() != null) hittomc.add(relation.getFrom(), relation.getTo()); - } - } - if (debugTrackEfficiency) { + if (debugTrackEfficiency) System.out.println(this.getClass().getSimpleName() + ": number of hittomc relations = " + hittomc.size()); - } RelationalTable mcHittomcP = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED); // Get the collections of SimTrackerHits List<List<SimTrackerHit>> simcols = event.get(SimTrackerHit.class); // Loop over the SimTrackerHits and fill in the relational table - for (List<SimTrackerHit> simlist : simcols) { - for (SimTrackerHit simhit : simlist) { - if (simhit.getMCParticle() != null) { + for (List<SimTrackerHit> simlist : simcols) + for (SimTrackerHit simhit : simlist) + if (simhit.getMCParticle() != null) mcHittomcP.add(simhit, simhit.getMCParticle()); - } - } - } RelationalTable trktomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED); RelationalTable rawtomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED); if (event.hasCollection(LCRelation.class, "SVTTrueHitRelations")) { List<LCRelation> trueHitRelations = event.get(LCRelation.class, "SVTTrueHitRelations"); - for (LCRelation relation : trueHitRelations) { - if (relation != null && relation.getFrom() != null && relation.getTo() != null) { + for (LCRelation relation : trueHitRelations) + if (relation != null && relation.getFrom() != null && relation.getTo() != null) rawtomc.add(relation.getFrom(), relation.getTo()); - } - } } // make relational table for strip clusters to mc particle List<TrackerHit> siClusters = event.get(TrackerHit.class, siClusterCollectionName); @@ -192,59 +189,49 @@ List<RawTrackerHit> rawHits = cluster.getRawHits(); for (RawTrackerHit rth : rawHits) { Set<SimTrackerHit> simTrackerHits = rawtomc.allFrom(rth); - if (simTrackerHits != null) { - for (SimTrackerHit simhit : simTrackerHits) { + if (simTrackerHits != null) + for (SimTrackerHit simhit : simTrackerHits) clustertosimhit.add(cluster, simhit); - } - } } } //relational tables from mc particle to raw and fitted tracker hits RelationalTable fittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED); - List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedSVTHitCollectionName); - for (LCRelation hit : fittedTrackerHits) { - RawTrackerHit rth = FittedRawTrackerHit.getRawTrackerHit(hit); - Set<SimTrackerHit> simTrackerHits = rawtomc.allFrom(rth); - if (simTrackerHits != null) { - for (SimTrackerHit simhit : simTrackerHits) { - if (simhit.getMCParticle() != null) { - fittomc.add(hit, simhit.getMCParticle()); - } - } - } - } - + if (event.hasCollection(LCRelation.class, fittedSVTHitCollectionName)) { + List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedSVTHitCollectionName); + for (LCRelation hit : fittedTrackerHits) { + RawTrackerHit rth = FittedRawTrackerHit.getRawTrackerHit(hit); + Set<SimTrackerHit> simTrackerHits = rawtomc.allFrom(rth); + if (simTrackerHits != null) + for (SimTrackerHit simhit : simTrackerHits) + if (simhit.getMCParticle() != null) + fittomc.add(hit, simhit.getMCParticle()); + } + } RelationalTable hittostrip = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED); List<LCRelation> hitrelations = event.get(LCRelation.class, detectorFrameHitRelationsCollectionName); - for (LCRelation relation : hitrelations) { - if (relation != null && relation.getFrom() != null && relation.getTo() != null) { + for (LCRelation relation : hitrelations) + if (relation != null && relation.getFrom() != null && relation.getTo() != null) hittostrip.add(relation.getFrom(), relation.getTo()); - } - } RelationalTable hittorotated = new BaseRelationalTable(RelationalTable.Mode.ONE_TO_ONE, RelationalTable.Weighting.UNWEIGHTED); List<LCRelation> rotaterelations = event.get(LCRelation.class, trackHitRelationsCollectionName); - for (LCRelation relation : rotaterelations) { - if (relation != null && relation.getFrom() != null && relation.getTo() != null) { + for (LCRelation relation : rotaterelations) + if (relation != null && relation.getFrom() != null && relation.getTo() != null) hittorotated.add(relation.getFrom(), relation.getTo()); - } - } // Instantiate the class that determines if a track is "findable" FindableTrack findable = new FindableTrack(event); List<Track> tracks = event.get(Track.class, trackCollectionName); - if (debugTrackEfficiency) { + if (debugTrackEfficiency) System.out.println(this.getClass().getSimpleName() + ": nTracks = " + tracks.size()); - } for (Track trk : tracks) { TrackAnalysis tkanal = new TrackAnalysis(trk, hittomc, rawtomc, hittostrip, hittorotated); tkanalMap.put(trk, tkanal); MCParticle mcp = tkanal.getMCParticleNew(); if (mcp != null) {// Create a map between the tracks found and the assigned MC particle - if (debugTrackEfficiency) { + if (debugTrackEfficiency) System.out.println(this.getClass().getSimpleName() + ": found MCP match"); - } trktomc.add(trk, tkanal.getMCParticleNew()); } } @@ -266,12 +253,12 @@ double eta = -Math.log(Math.tan(Math.atan2(pt, pz) / 2)); double phi = Math.atan2(px, pz); // Find the number of layers hit by this mc particle - if (debugTrackEfficiency) { + if (debugTrackEfficiency) System.out.println("MC pt=" + pt); - } int nhits = findable.LayersHit(mcp); boolean isFindable = findable.InnerTrackerIsFindable(mcp, nlayers - 2); - + if (debugTrackEfficiency) + System.out.println("nhits Findable =" + nhits + "; is findable? " + isFindable); // Calculate the helix parameters for this MC particle HelixParamCalculator helix = new HelixParamCalculator(mcp, bfield); double d0 = helix.getDCA(); @@ -289,17 +276,14 @@ //it's the A'...let's see if we found both tracks. List<MCParticle> daughters = mcp.getDaughters(); for (MCParticle d : daughters) { - if (trktomc.allTo(d).isEmpty()) { + if (trktomc.allTo(d).isEmpty()) bothreco = false; - } - if (!findable.InnerTrackerIsFindable(d, nlayers - 2)) { + if (!findable.InnerTrackerIsFindable(d, nlayers - 2)) bothfindable = false; - } } double vtxWgt = 0; - if (bothreco) { + if (bothreco) vtxWgt = 1.0; - } // VxEff.fill(mcp.getOriginX(), vtxWgt); // VyEff.fill(mcp.getOriginY(), vtxWgt); // VzEff.fill(mcp.getOriginZ(), vtxWgt); @@ -315,35 +299,41 @@ _nchMCP++; findableTracks++; double wgt = 0.; - if (ntrk > 0) { + if (ntrk > 0) wgt = 1.; - } foundTracks += wgt; + if (debugTrackEfficiency) + System.out.println("...is findable; filling plots with weight " + wgt); peffFindable.fill(p, wgt); phieffFindable.fill(phi, wgt); ctheffFindable.fill(cth, wgt); if (wgt == 0) { - Set<SimTrackerHit> mchitlist = mcHittomcP.allTo(mcp); Set<HelicalTrackCross> hitlist = hittomc.allTo(mcp); - Set<FittedRawTrackerHit> fitlist = fittomc.allTo(mcp); - if (debugTrackEfficiency) { - System.out.println(this.getClass().getSimpleName() + ": Missed a findable track with MC p = " + p); - if (!hasHTHInEachLayer(hitlist, fitlist)) { - System.out.println("\t\tThis track failed becasue it's missing a helical track hit"); + if (debugTrackEfficiency) + if (fittomc != null) { + Set<FittedRawTrackerHit> fitlist = fittomc.allTo(mcp); + System.out.println(this.getClass().getSimpleName() + ": Missed a findable track with MC p = " + p); + if (!hasHTHInEachLayer(hitlist, fitlist)) + System.out.println("\t\tThis track failed becasue it's missing a helical track hit"); } - } } + } + if (debugTrackEfficiency){ + System.out.println("# of mc parents " + mcp.getParents().size()); + if(mcp.getParents().size() > 0 ) + System.out.println("PDG ID of parent 0 is " + mcp.getParents().get(0).getPDGID()); } if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) { totelectrons++; // findableelectrons++; double wgt = 0.; - if (ntrk > 0) { + if (ntrk > 0) wgt = 1.; - } + if (debugTrackEfficiency) + System.out.println("...is from A'; filling plots with weight " + wgt); foundelectrons += wgt; peffElectrons.fill(p, wgt); phieffElectrons.fill(phi, wgt); @@ -386,19 +376,15 @@ } private boolean hasHTHInEachLayer(Set<HelicalTrackCross> list, Set<FittedRawTrackerHit> fitlist) { - if (list.isEmpty()) { + if (list.isEmpty()) return false; - } - if (!(list.toArray()[0] instanceof HelicalTrackCross)) { + if (!(list.toArray()[0] instanceof HelicalTrackCross)) return false; - } for (int layer = 1; layer < nlayers - 2; layer += 2) { boolean hasThisLayer = false; - for (HelicalTrackCross hit : list) { - if (hit.Layer() == layer) { + for (HelicalTrackCross hit : list) + if (hit.Layer() == layer) hasThisLayer = true; - } - } if (!hasThisLayer) { // System.out.println("Missing reconstructed hit in layer = " + layer); boolean hasFitHitSL1 = false; Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java ============================================================================= --- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java (original) +++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java Thu Mar 5 10:58:18 2015 @@ -13,7 +13,6 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import org.hps.recon.tracking.gbl.GBLStripClusterData; import org.lcsim.event.EventHeader; import org.lcsim.event.GenericObject; import org.lcsim.geometry.Detector; Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java Thu Mar 5 10:58:18 2015 @@ -1,5 +1,6 @@ package org.hps.monitoring.drivers.svt; +import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; import hep.aida.IPlotter; @@ -160,7 +161,7 @@ try { aida.saveAs(outputPlots); } catch (IOException ex) { - Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); } } Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java Thu Mar 5 10:58:18 2015 @@ -1,5 +1,6 @@ package org.hps.monitoring.drivers.svt; +import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram2D; import hep.aida.IPlotter; @@ -148,7 +149,7 @@ try { aida.saveAs(outputPlots); } catch (IOException ex) { - Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); } } //plotterFrame.dispose(); Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java Thu Mar 5 10:58:18 2015 @@ -1,5 +1,6 @@ package org.hps.monitoring.drivers.svt; +import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; import hep.aida.IHistogram2D; @@ -285,7 +286,7 @@ try { aida.saveAs(outputPlots); } catch (IOException ex) { - Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); } } //plotterFrame.dispose(); Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java Thu Mar 5 10:58:18 2015 @@ -1,5 +1,6 @@ package org.hps.monitoring.drivers.svt; +import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; import hep.aida.IHistogram2D; @@ -185,7 +186,7 @@ try { aida.saveAs(outputPlots); } catch (IOException ex) { - Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); } } } Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java (added) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java Thu Mar 5 10:58:18 2015 @@ -0,0 +1,235 @@ +package org.hps.monitoring.drivers.trackrecon; + +import hep.aida.IAnalysisFactory; +import hep.aida.IFitFactory; +import hep.aida.IFitResult; +import hep.aida.IFitter; +import hep.aida.IHistogram1D; +import hep.aida.IPlotter; +import hep.aida.IPlotterStyle; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.lcsim.event.EventHeader; +import org.lcsim.event.GenericObject; +import org.lcsim.geometry.Detector; +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; + +/** + * + * @author mgraham + */ +public class TrackResiduals extends Driver { + + // Collection Names + String trackTimeDataCollectionName = "TrackTimeData"; + String trackResidualsCollectionName = "TrackResiduals"; + String gblStripClusterDataCollectionName = "GBLStripClusterData"; + private AIDA aida = AIDA.defaultInstance(); + + int nEvents = 0; + + private String plotDir = "TrackResiduals/"; + String[] trackingQuantNames = {}; + int nmodules = 6; + private String posresDir = "PostionResiduals/"; + private String uresDir = "UResiduals/"; + private String timeresDir = "TimeResiduals/"; + + IPlotter plotterResX; + IPlotter plotterResY; + + String outputPlots; + + void setupPlotter(IPlotter plotter, String title) { + plotter.setTitle(title); + IPlotterStyle style = plotter.style(); + style.dataStyle().fillStyle().setColor("yellow"); + style.dataStyle().errorBarStyle().setVisible(false); + } + + private int computePlotterRegion(int i, boolean istop) { + + int region =-99; + if (i < 3) + if (istop) + region= i*4; + else + region= i*4+1; + else + if (istop) + region= (i-3)*4+2 ; + else + region= (i-3)*4+3; +// System.out.println("Setting region to "+region); + return region; + } + + @Override + protected void detectorChanged(Detector detector) { + + aida.tree().cd("/"); +// resetOccupancyMap(); // this is for calculating averages + IAnalysisFactory fac = aida.analysisFactory(); + + plotterResX = fac.createPlotterFactory().create("HPS Tracking Plots"); + setupPlotter(plotterResX, "X-Residuals"); + plotterResX.createRegions(3, 4); + + plotterResY = fac.createPlotterFactory().create("HPS Tracking Plots"); + setupPlotter(plotterResY, "Y-Residuals"); + plotterResY.createRegions(3, 4); + + for (int i = 1; i <= nmodules; i++) { + IHistogram1D xresid = aida.histogram1D("Module " + i + " Top x Residual", 50, -getRange(i, true), getRange(i, true)); + IHistogram1D yresid = aida.histogram1D("Module " + i + " Top y Residual", 50, -getRange(i, false), getRange(i, false)); + IHistogram1D xresidbot = aida.histogram1D("Module " + i + " Bot x Residual", 50, -getRange(i, true), getRange(i, true)); + IHistogram1D yresidbot = aida.histogram1D("Module " + i + " Bot y Residual", 50, -getRange(i, false), getRange(i, false)); + plotterResX.region(computePlotterRegion(i - 1, true)).plot(xresid); + plotterResX.region(computePlotterRegion(i - 1, false)).plot(xresidbot); + plotterResY.region(computePlotterRegion(i - 1, true)).plot(yresid); + plotterResY.region(computePlotterRegion(i - 1, false)).plot(yresidbot); + } + + /* + for (int i = 1; i <= nmodules * 2; i++) { + IHistogram1D tresid = aida.histogram1D(plotDir + timeresDir + "HalfModule " + i + " t Residual", 50, -20, 20); + IHistogram1D utopresid = aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Top u Residual", 50, -getRange((i + 1) / 2, false), getRange((i + 1) / 2, false)); + IHistogram1D ubotresid = aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Bot u Residual", 50, -getRange((i + 1) / 2, false), getRange((i + 1) / 2, false)); + } + */ + } + + @Override + public void process(EventHeader event) { + aida.tree().cd("/"); + if (!event.hasCollection(GenericObject.class, trackTimeDataCollectionName)) + return; + if (!event.hasCollection(GenericObject.class, trackResidualsCollectionName)) + return; + nEvents++; + List<GenericObject> trdList = event.get(GenericObject.class, trackResidualsCollectionName); + for (GenericObject trd : trdList) { + int nResid = trd.getNDouble(); + int isBot = trd.getIntVal(trd.getNInt() - 1);//last Int is the top/bottom flag + for (int i = 1; i <= nResid; i++) + + if (isBot == 1) { + aida.histogram1D("Module " + i + " Bot x Residual").fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object + aida.histogram1D("Module " + i + " Bot y Residual").fill(trd.getFloatVal(i - 1));//y is the float value in the generic object + } else { + aida.histogram1D("Module " + i + " Top x Residual").fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object + aida.histogram1D("Module " + i + " Top y Residual").fill(trd.getFloatVal(i - 1));//y is the float value in the generic object + } + } + /* + List<GenericObject> ttdList = event.get(GenericObject.class, trackTimeDataCollectionName); + for (GenericObject ttd : ttdList) { + int nResid = ttd.getNDouble(); + for (int i = 1; i <= nResid; i++) + aida.histogram1D( "HalfModule " + i + " t Residual").fill(ttd.getDoubleVal(i - 1));//x is the double value in the generic object + } + */ + /* + if (!event.hasCollection(GenericObject.class, gblStripClusterDataCollectionName)) + return; + List<GenericObject> gblSCDList = event.get(GenericObject.class, gblStripClusterDataCollectionName); + for (GenericObject gblSCD : gblSCDList) { + double umeas = gblSCD.getDoubleVal(15);//TODO: implement generic methods into GBLStripClusterData so this isn't hard coded + double utrk = gblSCD.getDoubleVal(16);//implement generic methods into GBLStripClusterData so this isn't hard coded + double resid = umeas - utrk; + double tanlambda = gblSCD.getDoubleVal(21);//use the slope as a proxy for the top/bottom half of tracker + + int i = gblSCD.getIntVal(0);//implement generic methods into GBLStripClusterData so this isn't hard coded + if (tanlambda > 0) + aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Top u Residual").fill(resid);//x is the double value in the generic object + else + aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Bot u Residual").fill(resid);//x is the double value in the generic object + + } + */ + } + + private String getQuantityName(int itype, int iquant, int top, int nlayer) { + String typeString = "position_resid"; + String quantString = "mean_"; + if (itype == 1) + typeString = "time_resid"; + if (iquant == 1) + quantString = "sigma_"; + + String botString = "bot_"; + if (top == 1) + botString = "top_"; + if (top == 2) + botString = ""; + + String layerString = "module" + nlayer; + if (itype == 1) + layerString = "halfmodule" + nlayer; + + return typeString + quantString + botString + layerString; + } + + + private double getRange(int layer, boolean isX) { + double range = 2.5; + if (isX) { + if (layer == 1) + return 0.5; + if (layer == 2) + return 0.5; + if (layer == 3) + return 0.5; + if (layer == 4) + return 1.0; + if (layer == 5) + return 1.0; + if (layer == 6) + return 1.0; + } else { + if (layer == 1) + return 0.005; + if (layer == 2) + return 0.5; + if (layer == 3) + return 0.5; + if (layer == 4) + return 1.0; + if (layer == 5) + return 1.0; + if (layer == 6) + return 1.5; + } + return range; + + } + + IFitResult fitGaussian(IHistogram1D h1d, IFitter fitter, String range) { + double[] init = {20.0, 0.0, 0.2}; + return fitter.fit(h1d, "g", init, range); +// double[] init = {20.0, 0.0, 1.0, 20, -1}; +// return fitter.fit(h1d, "g+p1", init, range); + } + + public void setOutputPlots(String output) { + this.outputPlots = output; + } + + @Override + public void endOfData() { + if (outputPlots != null) + try { + plotterResX.writeToFile(outputPlots + "-X.gif"); + plotterResY.writeToFile(outputPlots + "-Y.gif"); + } catch (IOException ex) { + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); + } + + } + +} Copied: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java (from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java) ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java Thu Mar 5 10:58:18 2015 @@ -1,4 +1,4 @@ -package org.hps.monitoring.drivers.svt; +package org.hps.monitoring.drivers.trackrecon; import hep.aida.IHistogram1D; import hep.aida.IHistogram2D; Copied: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java (from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java) ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java Thu Mar 5 10:58:18 2015 @@ -1,48 +1,21 @@ -package org.hps.monitoring.drivers.svt; +package org.hps.monitoring.drivers.trackrecon; import hep.aida.IAnalysisFactory; import hep.aida.IHistogram1D; -import hep.aida.IHistogram2D; import hep.aida.IPlotter; import hep.aida.IPlotterStyle; -import hep.aida.IProfile; -import hep.physics.matrix.SymmetricMatrix; -import hep.physics.vec.Hep3Vector; import java.io.IOException; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants; -//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants; -//===> import org.hps.conditions.deprecated.SvtUtils; -import org.hps.recon.tracking.BeamlineConstants; -import org.hps.recon.tracking.DumbShaperFit; -import org.hps.recon.tracking.HelixConverter; -import org.hps.recon.tracking.ShapeFitParameters; -import org.hps.recon.tracking.ShaperFitAlgorithm; -import org.hps.recon.tracking.StraightLineTrack; -import org.hps.recon.tracking.TrackUtils; -import org.lcsim.detector.tracker.silicon.HpsSiSensor; -import org.lcsim.detector.tracker.silicon.SiSensor; -import org.lcsim.event.Cluster; import org.lcsim.event.EventHeader; import org.lcsim.event.LCIOParameters.ParameterName; -import org.lcsim.event.RawTrackerHit; import org.lcsim.event.Track; -import org.lcsim.event.TrackerHit; -import org.lcsim.fit.helicaltrack.HelicalTrackCross; -import org.lcsim.fit.helicaltrack.HelicalTrackFit; import org.lcsim.fit.helicaltrack.HelicalTrackHit; -import org.lcsim.fit.helicaltrack.HelicalTrackStrip; -import org.lcsim.fit.helicaltrack.HelixUtils; import org.lcsim.geometry.Detector; import org.lcsim.geometry.IDDecoder; -import org.lcsim.geometry.compact.converter.HPSTrackerBuilder; -import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D; -import org.lcsim.recon.tracking.seedtracker.SeedCandidate; -import org.lcsim.recon.tracking.seedtracker.SeedTrack; import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA; @@ -50,11 +23,8 @@ * * @author mgraham */ -public class TrackingReconstructionPlots extends Driver { +public class TrackingReconPlots extends Driver { - //private AIDAFrame plotterFrame; - //private AIDAFrame topFrame; - //private AIDAFrame bottomFrame; private AIDA aida = AIDA.defaultInstance(); private String helicalTrackHitCollectionName = "HelicalTrackHits"; private String rotatedTrackHitCollectionName = "RotatedHelicalTrackHits"; @@ -64,113 +34,43 @@ IDDecoder dec; private String outputPlots = null; IPlotter plotter; - IPlotter plotter2; IPlotter plotter22; - IPlotter plotter222; - IPlotter plotter3; - IPlotter plotter3_1; - IPlotter plotter3_2; - IPlotter plotter4; - IPlotter plotter5; - IPlotter plotter5_1; - IPlotter plotter55; - IPlotter plotter6; - IPlotter plotter7; - IPlotter top1; - IPlotter top2; - IPlotter top3; - IPlotter top4; - IPlotter bot1; - IPlotter bot2; - IPlotter bot3; - IPlotter bot4; - double zEcal = 1500; - double zAtDownStrPairSpec = 914.0; //mm - double zAtColl = -1500; IHistogram1D trkPx; IHistogram1D nTracks; - ShaperFitAlgorithm _shaper = new DumbShaperFit(); - private boolean shapeFit = false; @Override protected void detectorChanged(Detector detector) { aida.tree().cd("/"); - //plotterFrame = new AIDAFrame(); - //plotterFrame.setTitle("HPS Tracking Plots"); - //topFrame = new AIDAFrame(); - //topFrame.setTitle("Top Tracking Plots"); - //bottomFrame = new AIDAFrame(); - //bottomFrame.setTitle("Bottom Tracking Plots"); - IAnalysisFactory fac = aida.analysisFactory(); plotter = fac.createPlotterFactory().create("HPS Tracking Plots"); plotter.setTitle("Momentum"); IPlotterStyle style = plotter.style(); style.dataStyle().fillStyle().setColor("yellow"); style.dataStyle().errorBarStyle().setVisible(false); - plotter.createRegions(2, 2); + plotter.createRegions(2, 3); //plotterFrame.addPlotter(plotter); + IHistogram1D nhits = aida.histogram1D("Hits per Track", 2, 5, 7); + IHistogram1D charge = aida.histogram1D("Track Charge", 3, -1, 2); + trkPx = aida.histogram1D("Track Momentum (Px)", 50, -0.1, 0.2); + IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 50, -0.2, 0.2); + IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 50, 0, 3); + IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 50, 0, 25.0); - trkPx = aida.histogram1D("Track Momentum (Px)", 25, -0.25, 0.25); - IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 25, -0.5, 0.5); - IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 25, 0, 3.5); - IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 25, 0, 25.0); - - plotter.region(0).plot(trkPx); - plotter.region(1).plot(trkPy); - plotter.region(2).plot(trkPz); - plotter.region(3).plot(trkChi2); - - plotter.show(); + plotter.region(0).plot(nhits); + plotter.region(1).plot(charge); + plotter.region(2).plot(trkPx); + plotter.region(3).plot(trkPy); + plotter.region(4).plot(trkPz); + plotter.region(5).plot(trkChi2); // ****************************************************************** - top1 = fac.createPlotterFactory().create("Top Tracking Plots"); - top1.setTitle("Top Momentum"); - IPlotterStyle stop1 = top1.style(); - stop1.dataStyle().fillStyle().setColor("green"); - stop1.dataStyle().errorBarStyle().setVisible(false); - top1.createRegions(2, 2); - //topFrame.addPlotter(top1); - - IHistogram1D toptrkPx = aida.histogram1D("Top Track Momentum (Px)", 25, -0.25, 0.25); - IHistogram1D toptrkPy = aida.histogram1D("Top Track Momentum (Py)", 25, -0.5, 0.5); - IHistogram1D toptrkPz = aida.histogram1D("Top Track Momentum (Pz)", 25, 0, 3.5); - IHistogram1D toptrkChi2 = aida.histogram1D("Top Track Chi2", 25, 0, 25.0); - - top1.region(0).plot(toptrkPx); - top1.region(1).plot(toptrkPy); - top1.region(2).plot(toptrkPz); - top1.region(3).plot(toptrkChi2); - - top1.show(); - - bot1 = fac.createPlotterFactory().create("Bottom Tracking Plots"); - bot1.setTitle("Bottom Momentum"); - IPlotterStyle sbot1 = bot1.style(); - sbot1.dataStyle().fillStyle().setColor("blue"); - sbot1.dataStyle().errorBarStyle().setVisible(false); - bot1.createRegions(2, 2); - //bottomFrame.addPlotter(bot1); - - IHistogram1D bottrkPx = aida.histogram1D("Bottom Track Momentum (Px)", 25, -0.25, 0.25); - IHistogram1D bottrkPy = aida.histogram1D("Bottom Track Momentum (Py)", 25, -0.5, 0.5); - IHistogram1D bottrkPz = aida.histogram1D("Bottom Track Momentum (Pz)", 25, 0, 3.5); - IHistogram1D bottrkChi2 = aida.histogram1D("Bottom Track Chi2", 25, 0, 25.0); - - bot1.region(0).plot(bottrkPx); - bot1.region(1).plot(bottrkPy); - bot1.region(2).plot(bottrkPz); - bot1.region(3).plot(bottrkChi2); - - bot1.show(); - -// ****************************************************************** - IHistogram1D trkd0 = aida.histogram1D("d0 ", 25, -100.0, 100.0); - IHistogram1D trkphi = aida.histogram1D("sinphi ", 25, -0.2, 0.2); - IHistogram1D trkomega = aida.histogram1D("omega ", 25, -0.0025, 0.0025); - IHistogram1D trklam = aida.histogram1D("tan(lambda) ", 25, -0.1, 0.1); - IHistogram1D trkz0 = aida.histogram1D("z0 ", 25, -100.0, 100.0); + nTracks = aida.histogram1D("Number of Tracks ", 7, 0, 7.0); + IHistogram1D trkd0 = aida.histogram1D("d0 ", 50, -5.0, 5.0); + IHistogram1D trkphi = aida.histogram1D("sinphi ", 50, -0.1, 0.15); + IHistogram1D trkomega = aida.histogram1D("omega ", 50, -0.0006, 0.0006); + IHistogram1D trklam = aida.histogram1D("tan(lambda) ", 50, -0.1, 0.1); + IHistogram1D trkz0 = aida.histogram1D("y0 ", 50, -1.0, 1.0); plotter22 = fac.createPlotterFactory().create("HPS Track Params"); plotter22.setTitle("Track parameters"); @@ -179,398 +79,18 @@ style22.dataStyle().fillStyle().setColor("yellow"); style22.dataStyle().errorBarStyle().setVisible(false); plotter22.createRegions(2, 3); - plotter22.region(0).plot(trkd0); - plotter22.region(1).plot(trkphi); - plotter22.region(2).plot(trkomega); - plotter22.region(3).plot(trklam); - plotter22.region(4).plot(trkz0); + plotter22.region(0).plot(nTracks); + plotter22.region(1).plot(trkd0); + plotter22.region(2).plot(trkphi); + plotter22.region(3).plot(trkomega); + plotter22.region(4).plot(trklam); + plotter22.region(5).plot(trkz0); - plotter2 = fac.createPlotterFactory().create("HPS Tracking Plots"); - plotter2.setTitle("Track extrapolation"); - //plotterFrame.addPlotter(plotter2); - IPlotterStyle style2 = plotter2.style(); - style2.dataStyle().fillStyle().setColor("yellow"); - style2.dataStyle().errorBarStyle().setVisible(false); - plotter2.createRegions(2, 4); - IHistogram1D xAtConverter = aida.histogram1D("X (mm) @ Z=-60cm", 50, -50, 50); - IHistogram1D yAtConverter = aida.histogram1D("Y (mm) @ Z=-60cm", 50, -20, 20); - IHistogram1D xAtColl = aida.histogram1D("X (mm) @ Z=-150cm", 50, -200, 200); - IHistogram1D yAtColl = aida.histogram1D("Y (mm) @ Z=-150cm", 50, -200, 200); - IHistogram1D xAtEcal = aida.histogram1D("X (mm) @ ECAL", 50, -500, 500); - IHistogram1D yAtEcal = aida.histogram1D("Y (mm) @ ECAL", 50, -100, 100); - IHistogram1D xAtEcal2 = aida.histogram1D("X (mm) @ ECAL (Pz>1)", 50, -500, 500); - IHistogram1D yAtEcal2 = aida.histogram1D("Y (mm) @ ECAL (Pz>1)", 50, -100, 100); - - plotter2.region(0).plot(xAtConverter); - plotter2.region(4).plot(yAtConverter); - plotter2.region(1).plot(xAtColl); - plotter2.region(5).plot(yAtColl); - plotter2.region(2).plot(xAtEcal); - plotter2.region(6).plot(yAtEcal); - plotter2.region(3).plot(xAtEcal2); - plotter2.region(7).plot(yAtEcal2); - - plotter222 = fac.createPlotterFactory().create("HPS Tracking Plots"); - plotter222.setTitle("Other"); - //plotterFrame.addPlotter(plotter222); - IPlotterStyle style222 = plotter222.style(); - style222.dataStyle().fillStyle().setColor("yellow"); - style222.dataStyle().errorBarStyle().setVisible(false); - plotter222.createRegions(2, 3); - - IHistogram1D nHits = aida.histogram1D("Hits per Track", 2, 4, 6); - IHistogram1D amp = aida.histogram1D("Amp (HitOnTrack)", 50, 0, 5000); - IHistogram1D ampcl = aida.histogram1D("Amp (CluOnTrack)", 50, 0, 5000); - IHistogram1D amp2 = aida.histogram1D("Amp Pz>1000 (HitOnTrack)", 50, 0, 5000); - IHistogram1D ampcl2 = aida.histogram1D("Amp Pz>1000 (CluOnTrack)", 50, 0, 5000); - nTracks = aida.histogram1D("Tracks per Event", 3, 0, 3); - - plotter222.region(0).plot(nHits); - plotter222.region(3).plot(nTracks); - plotter222.region(1).plot(amp); - plotter222.region(4).plot(amp2); - plotter222.region(2).plot(ampcl); - plotter222.region(5).plot(ampcl2); - - plotter3 = fac.createPlotterFactory().create("HPS Residual Plots"); - plotter3.setTitle("Residuals"); - //plotterFrame.addPlotter(plotter3); - IPlotterStyle style3 = plotter3.style(); - style3.dataStyle().fillStyle().setColor("yellow"); - style3.dataStyle().errorBarStyle().setVisible(false); - plotter3.createRegions(6, 2); - - double minResidY = -1.5; - double maxResidY = 1.5; - - double minResidX = -5; - double maxResidX = 5; - - IHistogram1D mod1ResX = aida.histogram1D("Module 1 Residual X(mm)", 25, minResidX, maxResidX); - IHistogram1D mod1ResY = aida.histogram1D("Module 1 Residual Y(mm)", 25, minResidY, maxResidY); - - IHistogram1D mod2ResX = aida.histogram1D("Module 2 Residual X(mm)", 25, minResidX, maxResidX); - IHistogram1D mod2ResY = aida.histogram1D("Module 2 Residual Y(mm)", 25, minResidY, maxResidY); - - IHistogram1D mod3ResX = aida.histogram1D("Module 3 Residual X(mm)", 25, minResidX, maxResidX); - IHistogram1D mod3ResY = aida.histogram1D("Module 3 Residual Y(mm)", 25, minResidY, maxResidY); - - IHistogram1D mod4ResX = aida.histogram1D("Module 4 Residual X(mm)", 25, minResidX, maxResidX); - IHistogram1D mod4ResY = aida.histogram1D("Module 4 Residual Y(mm)", 25, minResidY, maxResidY); - - IHistogram1D mod5ResX = aida.histogram1D("Module 5 Residual X(mm)", 25, minResidX, maxResidX); - IHistogram1D mod5ResY = aida.histogram1D("Module 5 Residual Y(mm)", 25, minResidY, maxResidY); - - IHistogram1D mod6ResX = aida.histogram1D("Module 6 Residual X(mm)", 25, minResidX, maxResidX); - IHistogram1D mod6ResY = aida.histogram1D("Module 6 Residual Y(mm)", 25, minResidY, maxResidY); - - plotter3.region(0).plot(mod1ResX); - plotter3.region(2).plot(mod2ResX); - plotter3.region(4).plot(mod3ResX); - plotter3.region(6).plot(mod4ResX); - plotter3.region(8).plot(mod5ResX); - plotter3.region(10).plot(mod6ResX); - - plotter3.region(1).plot(mod1ResY); - plotter3.region(3).plot(mod2ResY); - plotter3.region(5).plot(mod3ResY); - plotter3.region(7).plot(mod4ResY); - plotter3.region(9).plot(mod5ResY); - plotter3.region(11).plot(mod6ResY); - - plotter3_1 = fac.createPlotterFactory().create("HPS Residual Plots (Single hit per layer)"); - plotter3_1.setTitle("Residuals (Top)"); - //plotterFrame.addPlotter(plotter3_1); - IPlotterStyle style3_1 = plotter3_1.style(); - style3_1.dataStyle().fillStyle().setColor("yellow"); - style3_1.dataStyle().errorBarStyle().setVisible(false); - plotter3_1.createRegions(6, 2); - - IHistogram1D mod1ResX_Top = aida.histogram1D("Module 1 Residual X(mm) Top", 25, minResidX, maxResidX); - IHistogram1D mod1ResY_Top = aida.histogram1D("Module 1 Residual Y(mm) Top", 25, minResidY, maxResidY); - - IHistogram1D mod2ResX_Top = aida.histogram1D("Module 2 Residual X(mm) Top", 25, minResidX, maxResidX); - IHistogram1D mod2ResY_Top = aida.histogram1D("Module 2 Residual Y(mm) Top", 25, minResidY, maxResidY); - - IHistogram1D mod3ResX_Top = aida.histogram1D("Module 3 Residual X(mm) Top", 25, minResidX, maxResidX); - IHistogram1D mod3ResY_Top = aida.histogram1D("Module 3 Residual Y(mm) Top", 25, minResidY, maxResidY); - - IHistogram1D mod4ResX_Top = aida.histogram1D("Module 4 Residual X(mm) Top", 25, minResidX, maxResidX); - IHistogram1D mod4ResY_Top = aida.histogram1D("Module 4 Residual Y(mm) Top", 25, minResidY, maxResidY); - - IHistogram1D mod5ResX_Top = aida.histogram1D("Module 5 Residual X(mm) Top", 25, minResidX, maxResidX); - IHistogram1D mod5ResY_Top = aida.histogram1D("Module 5 Residual Y(mm) Top", 25, minResidY, maxResidY); - - IHistogram1D mod6ResX_Top = aida.histogram1D("Module 6 Residual X(mm) Top", 25, minResidX, maxResidX); - IHistogram1D mod6ResY_Top = aida.histogram1D("Module 6 Residual Y(mm) Top", 25, minResidY, maxResidY); - - plotter3_1.region(0).plot(mod1ResX_Top); - plotter3_1.region(2).plot(mod2ResX_Top); - plotter3_1.region(4).plot(mod3ResX_Top); - plotter3_1.region(6).plot(mod4ResX_Top); - plotter3_1.region(8).plot(mod5ResX_Top); - plotter3_1.region(10).plot(mod6ResX_Top); - - plotter3_1.region(1).plot(mod1ResY_Top); - plotter3_1.region(3).plot(mod2ResY_Top); - plotter3_1.region(5).plot(mod3ResY_Top); - plotter3_1.region(7).plot(mod4ResY_Top); - plotter3_1.region(9).plot(mod5ResY_Top); - plotter3_1.region(11).plot(mod6ResY_Top); - - plotter3_2 = fac.createPlotterFactory().create("HPS Residual Plots (Single strip cluster per layer)"); - plotter3_2.setTitle("Residuals (Bottom)"); - //plotterFrame.addPlotter(plotter3_2); - IPlotterStyle style3_2 = plotter3_2.style(); - style3_2.dataStyle().fillStyle().setColor("yellow"); - style3_2.dataStyle().errorBarStyle().setVisible(false); - plotter3_2.createRegions(6, 2); - - IHistogram1D mod1ResX_Bottom = aida.histogram1D("Module 1 Residual X(mm) Bottom", 25, minResidX, maxResidX); - IHistogram1D mod1ResY_Bottom = aida.histogram1D("Module 1 Residual Y(mm) Bottom", 25, minResidY, maxResidY); - - IHistogram1D mod2ResX_Bottom = aida.histogram1D("Module 2 Residual X(mm) Bottom", 25, minResidX, maxResidX); - IHistogram1D mod2ResY_Bottom = aida.histogram1D("Module 2 Residual Y(mm) Bottom", 25, minResidY, maxResidY); - - IHistogram1D mod3ResX_Bottom = aida.histogram1D("Module 3 Residual X(mm) Bottom", 25, minResidX, maxResidX); - IHistogram1D mod3ResY_Bottom = aida.histogram1D("Module 3 Residual Y(mm) Bottom", 25, minResidY, maxResidY); - - IHistogram1D mod4ResX_Bottom = aida.histogram1D("Module 4 Residual X(mm) Bottom", 25, minResidX, maxResidX); - IHistogram1D mod4ResY_Bottom = aida.histogram1D("Module 4 Residual Y(mm) Bottom", 25, minResidY, maxResidY); - - IHistogram1D mod5ResX_Bottom = aida.histogram1D("Module 5 Residual X(mm) Bottom", 25, minResidX, maxResidX); - IHistogram1D mod5ResY_Bottom = aida.histogram1D("Module 5 Residual Y(mm) Bottom", 25, minResidY, maxResidY); - - IHistogram1D mod6ResX_Bottom = aida.histogram1D("Module 6 Residual X(mm) Bottom", 25, minResidX, maxResidX); - IHistogram1D mod6ResY_Bottom = aida.histogram1D("Module 6 Residual Y(mm) Bottom", 25, minResidY, maxResidY); - - plotter3_2.region(0).plot(mod1ResX_Bottom); - plotter3_2.region(2).plot(mod2ResX_Bottom); - plotter3_2.region(4).plot(mod3ResX_Bottom); - plotter3_2.region(6).plot(mod4ResX_Bottom); - plotter3_2.region(8).plot(mod5ResX_Bottom); - plotter3_2.region(10).plot(mod6ResX_Bottom); - - plotter3_2.region(1).plot(mod1ResY_Bottom); - plotter3_2.region(3).plot(mod2ResY_Bottom); - plotter3_2.region(5).plot(mod3ResY_Bottom); - plotter3_2.region(7).plot(mod4ResY_Bottom); - plotter3_2.region(9).plot(mod5ResY_Bottom); - plotter3_2.region(11).plot(mod6ResY_Bottom); - - plotter4 = fac.createPlotterFactory().create("HPS Track and ECal Plots"); - plotter4.setTitle("Track and ECal Correlations"); - //plotterFrame.addPlotter(plotter4); - IPlotterStyle style4 = plotter4.style(); - style4.setParameter("hist2DStyle", "colorMap"); - style4.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style4.dataStyle().fillStyle().setColor("yellow"); - style4.dataStyle().errorBarStyle().setVisible(false); - plotter4.createRegions(2, 3); - - IHistogram2D eVsP = aida.histogram2D("Energy Vs Momentum", 50, 0, 500, 50, 0, 3000); - IHistogram1D eOverP = aida.histogram1D("Energy Over Momentum", 50, 0, 2); - - IHistogram1D distX = aida.histogram1D("deltaX", 50, -400, 400); - IHistogram1D distY = aida.histogram1D("deltaY", 50, -40, 40); - -// IHistogram1D distX2 = aida.histogram1D("deltaX (Pz>1)", 50, -400, 400); -// IHistogram1D distY2 = aida.histogram1D("deltaY (Pz>1)", 50, -40, 40); - IHistogram2D xEcalVsTrk = aida.histogram2D("X ECal Vs Track", 100, -400, 400, 100, -400, 400); - IHistogram2D yEcalVsTrk = aida.histogram2D("Y ECal Vs Track", 100, -100, 100, 100, -100, 100); - - plotter4.region(0).plot(eVsP); - plotter4.region(3).plot(eOverP); - plotter4.region(1).plot(distX); - plotter4.region(4).plot(distY); - plotter4.region(2).plot(xEcalVsTrk); - plotter4.region(5).plot(yEcalVsTrk); - - // ****************************************************************** - top2 = fac.createPlotterFactory().create("Top ECal Plots"); - top2.setTitle("Top ECal Correlations"); - IPlotterStyle stop2 = top2.style(); - stop2.dataStyle().fillStyle().setColor("green"); - stop2.dataStyle().errorBarStyle().setVisible(false); - stop2.setParameter("hist2DStyle", "colorMap"); - stop2.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - top2.createRegions(2, 3); - //topFrame.addPlotter(top2); - - IHistogram2D topeVsP = aida.histogram2D("Top Energy Vs Momentum", 50, 0, 500, 50, 0, 3000); - IHistogram1D topeOverP = aida.histogram1D("Top Energy Over Momentum", 50, 0, 2); - - IHistogram1D topdistX = aida.histogram1D("Top deltaX", 50, -400, 400); - IHistogram1D topdistY = aida.histogram1D("Top deltaY", 50, -40, 40); - - IHistogram2D topxEcalVsTrk = aida.histogram2D("Top X ECal Vs Track", 100, -400, 400, 100, -400, 400); - IHistogram2D topyEcalVsTrk = aida.histogram2D("Top Y ECal Vs Track", 100, 0, 100, 100, 0, 100); - - top2.region(0).plot(topeVsP); - top2.region(3).plot(topeOverP); - top2.region(1).plot(topdistX); - top2.region(4).plot(topdistY); - top2.region(2).plot(topxEcalVsTrk); - top2.region(5).plot(topyEcalVsTrk); - - bot2 = fac.createPlotterFactory().create("Bottom ECal Plots"); - bot2.setTitle("Bottom ECal Correlations"); - IPlotterStyle sbot2 = bot2.style(); - sbot2.dataStyle().fillStyle().setColor("green"); - sbot2.dataStyle().errorBarStyle().setVisible(false); - sbot2.setParameter("hist2DStyle", "colorMap"); - sbot2.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - bot2.createRegions(2, 3); - //bottomFrame.addPlotter(bot2); - - IHistogram2D BottomeVsP = aida.histogram2D("Bottom Energy Vs Momentum", 50, 0, 500, 50, 0, 3000); - IHistogram1D BottomeOverP = aida.histogram1D("Bottom Energy Over Momentum", 50, 0, 2); - - IHistogram1D BottomdistX = aida.histogram1D("Bottom deltaX", 50, -400, 400); - IHistogram1D BottomdistY = aida.histogram1D("Bottom deltaY", 50, -40, 40); - - IHistogram2D BottomxEcalVsTrk = aida.histogram2D("Bottom X ECal Vs Track", 100, -400, 400, 100, -400, 400); - IHistogram2D BottomyEcalVsTrk = aida.histogram2D("Bottom Y ECal Vs Track", 100, -100, 0, 100, -100, 0); - - bot2.region(0).plot(BottomeVsP); - bot2.region(3).plot(BottomeOverP); - bot2.region(1).plot(BottomdistX); - bot2.region(4).plot(BottomdistY); - bot2.region(2).plot(BottomxEcalVsTrk); - bot2.region(5).plot(BottomyEcalVsTrk); - -// ****************************************************************** - top3 = fac.createPlotterFactory().create("Top ECal Plots"); - top3.setTitle("Top ECal More Correlations"); - IPlotterStyle stop3 = top3.style(); - stop3.dataStyle().fillStyle().setColor("green"); - stop3.dataStyle().errorBarStyle().setVisible(false); - stop3.setParameter("hist2DStyle", "colorMap"); - stop3.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - top3.createRegions(1, 2); - //topFrame.addPlotter(top3); - - IHistogram2D topdistXvsX = aida.histogram2D("Top deltaX vs X", 51, -400, 400, 25, -400, 400); - IHistogram2D topdistYvsY = aida.histogram2D("Top deltaY vs Y", 51, 0, 100, 25, -40, 40); - - top3.region(0).plot(topdistXvsX); - top3.region(1).plot(topdistYvsY); - - bot3 = fac.createPlotterFactory().create("Bottom ECal Plots"); - bot3.setTitle("Bottom ECal More Correlations"); - IPlotterStyle sbot3 = bot3.style(); - sbot3.dataStyle().fillStyle().setColor("green"); - sbot3.dataStyle().errorBarStyle().setVisible(false); - sbot3.setParameter("hist2DStyle", "colorMap"); - sbot3.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - bot3.createRegions(1, 2); - //bottomFrame.addPlotter(bot3); - - IHistogram2D botdistXvsX = aida.histogram2D("Bottom deltaX vs X", 51, -400, 400, 25, -400, 400); - IHistogram2D botdistYvsY = aida.histogram2D("Bottom deltaY vs Y", 51, -100, 0, 25, -40, 40); - - bot3.region(0).plot(botdistXvsX); - bot3.region(1).plot(botdistYvsY); - -// ****************************************************************** - plotter5 = fac.createPlotterFactory().create("HPS Hit Positions"); - plotter5.setTitle("Hit Positions: Top"); - //plotterFrame.addPlotter(plotter5); - IPlotterStyle style5 = plotter5.style(); - style5.setParameter("hist2DStyle", "colorMap"); - style5.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style5.dataStyle().fillStyle().setColor("yellow"); - style5.dataStyle().errorBarStyle().setVisible(false); - plotter5.createRegions(1, 2); - - IHistogram1D charge = aida.histogram1D("Charge", 3, -1, 1); - - IHistogram2D l1Pos = aida.histogram2D("Layer 1 HTH Position: Top", 50, -55, 55, 55, -25, 25); - IHistogram2D l7Pos = aida.histogram2D("Layer 7 HTH Position: Top", 50, -55, 55, 55, -25, 25); - - plotter5.region(0).plot(l1Pos); - plotter5.region(1).plot(l7Pos); - - plotter5_1 = fac.createPlotterFactory().create("HPS Hit Positions"); - plotter5_1.setTitle("Hit Positions: Bottom"); - //plotterFrame.addPlotter(plotter5_1); - IPlotterStyle style5_1 = plotter5_1.style(); - style5_1.setParameter("hist2DStyle", "colorMap"); - style5_1.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style5_1.dataStyle().fillStyle().setColor("yellow"); - style5_1.dataStyle().errorBarStyle().setVisible(false); - plotter5_1.createRegions(1, 2); - - IHistogram2D l1PosBot = aida.histogram2D("Layer 1 HTH Position: Bottom", 50, -55, 55, 55, -25, 25); - IHistogram2D l7PosBot = aida.histogram2D("Layer 7 HTH Position: Bottom", 50, -55, 55, 55, -25, 25); - plotter5_1.region(0).plot(l1PosBot); - plotter5_1.region(1).plot(l7PosBot); - - plotter55 = fac.createPlotterFactory().create("HPS Hit Positions"); - plotter55.setTitle("Helical Track Hits"); - //plotterFrame.addPlotter(plotter55); - IPlotterStyle style55 = plotter55.style(); - style55.dataStyle().fillStyle().setColor("Green"); - style55.dataStyle().errorBarStyle().setVisible(false); - style55.dataStyle().markerStyle().setSize(20); - plotter55.createRegions(1, 2); - - IProfile avgLayersTopPlot = aida.profile1D("Number of Stereo Hits per layer in Top Half", 5, 1, 11); - IProfile avgLayersBottomPlot = aida.profile1D("Number of Stereo Hits per layer in Bottom Half", 5, 1, 11); - - plotter55.region(0).plot(avgLayersTopPlot); - plotter55.region(1).plot(avgLayersBottomPlot); - - plotter6 = fac.createPlotterFactory().create("HPS ECAL Hit Positions"); - plotter6.setTitle("ECAL Positions"); - //plotterFrame.addPlotter(plotter6); - IPlotterStyle style6 = plotter6.style(); - style6.setParameter("hist2DStyle", "colorMap"); - style6.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style6.dataStyle().fillStyle().setColor("yellow"); - style6.dataStyle().errorBarStyle().setVisible(false); - plotter6.createRegions(4, 2); - - IHistogram2D topECal = aida.histogram2D("Top ECal Cluster Position", 50, -400, 400, 10, 0, 100); - IHistogram2D botECal = aida.histogram2D("Bottom ECal Cluster Position", 50, -400, 400, 10, -100, 0); - IHistogram2D topECal1 = aida.histogram2D("Top ECal Cluster Position (>0 tracks)", 50, -400, 400, 10, 0, 100); - IHistogram2D botECal1 = aida.histogram2D("Bottom ECal Cluster Position (>0 tracks)", 50, -400, 400, 10, -100, 0); - IHistogram2D topECal2 = aida.histogram2D("Top ECal Cluster Position (E>100,>0 tracks)", 50, -400, 400, 10, 0, 100); - IHistogram2D botECal2 = aida.histogram2D("Bottom ECal Cluster Position (E>100,>0 tracks)", 50, -400, 400, 10, -100, 0); - IHistogram2D topECal3 = aida.histogram2D("Top ECal Cluster Position w_E (E>100,>0 tracks)", 50, -400, 400, 10, 0, 100); - IHistogram2D botECal3 = aida.histogram2D("Bottom ECal Cluster Position w_E (E>100,>0 tracks)", 50, -400, 400, 10, -100, 0); - - plotter6.region(0).plot(topECal); - plotter6.region(1).plot(botECal); - plotter6.region(2).plot(topECal1); - plotter6.region(3).plot(botECal1); - plotter6.region(4).plot(topECal2); - plotter6.region(5).plot(botECal2); - plotter6.region(6).plot(topECal3); - plotter6.region(7).plot(botECal3); - - //plotterFrame.pack(); - //plotterFrame.setVisible(true); - //topFrame.pack(); - //topFrame.setVisible(true); - //bottomFrame.pack(); - //bottomFrame.setVisible(true); - plotter7 = fac.createPlotterFactory().create("HPS ECAL Hit Positions"); - plotter7.setTitle("Basic Misc Stuff"); - //plotterFrame.addPlotter(plotter7); - IPlotterStyle style7 = plotter7.style(); - style7.setParameter("hist2DStyle", "colorMap"); - style7.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); - style7.dataStyle().fillStyle().setColor("yellow"); - style7.dataStyle().errorBarStyle().setVisible(false); - plotter7.createRegions(2, 2); - - IHistogram2D quadrants = aida.histogram2D("Charge vs Slope", 2, -1, 1, 2, -1, 1); - plotter7.region(0).plot(quadrants); - + plotter22.show(); + plotter.show(); } - public TrackingReconstructionPlots() { + public TrackingReconPlots() { } public void setOutputPlots(String output) { @@ -597,77 +117,18 @@ @Override public void process(EventHeader event) { aida.tree().cd("/"); - if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName)) { + if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName)) return; - } - - List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName); - int[] layersTop = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - int[] layersBot = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - - for (HelicalTrackHit hth : hthList) { - HelicalTrackCross htc = (HelicalTrackCross) hth; - HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()); - if (sensor.isTopLayer()) { - layersTop[htc.Layer() - 1]++; - } else { - layersBot[htc.Layer() - 1]++; - } - } - for (int i = 0; i < 12; i++) { - aida.profile1D("Number of Stereo Hits per layer in Top Half").fill(i + 1, layersTop[i]); - aida.profile1D("Number of Stereo Hits per layer in Bottom Half").fill(i + 1, layersBot[i]); - } if (!event.hasCollection(Track.class, trackCollectionName)) { - aida.histogram1D("Number Tracks/Event").fill(0); + nTracks.fill(0); return; } List<Track> tracks = event.get(Track.class, trackCollectionName); nTracks.fill(tracks.size()); - if (event.hasCollection(Cluster.class, ecalCollectionName)) { - List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName); - for (Cluster cluster : clusters) { - if (cluster.getPosition()[1] > 0) { - aida.histogram2D("Top ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]); - } - if (cluster.getPosition()[1] < 0) { - aida.histogram2D("Bottom ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]); - } - - if (tracks.size() > 0) { - if (cluster.getPosition()[1] > 0) { - aida.histogram2D("Top ECal Cluster Position (>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]); - } - if (cluster.getPosition()[1] < 0) { - aida.histogram2D("Bottom ECal Cluster Position (>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]); - } - - if (cluster.getEnergy() > 100) { - if (cluster.getPosition()[1] > 0) { - aida.histogram2D("Top ECal Cluster Position (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]); - aida.histogram2D("Top ECal Cluster Position w_E (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1], cluster.getEnergy()); - } - if (cluster.getPosition()[1] < 0) { - aida.histogram2D("Bottom ECal Cluster Position (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]); - aida.histogram2D("Bottom ECal Cluster Position w_E (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1], cluster.getEnergy()); - } - } - } - - } - } - - List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, "StripClusterer_SiTrackerHitStrip1D"); - int stripClustersPerLayerTop[] = getStripClustersPerLayer(stripHits, "up"); - //int stripClustersPerLayerBottom[] = getStripClustersPerLayer(stripHits,"down"); - - boolean hasSingleStripClusterPerLayer = singleStripClusterPerLayer(stripClustersPerLayerTop); for (Track trk : tracks) { - - boolean isSingleHitPerLayerTrack = singleTrackHitPerLayer(trk); aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]); aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]); @@ -675,364 +136,34 @@ aida.histogram1D("Track Chi2").fill(trk.getChi2()); aida.histogram1D("Hits per Track").fill(trk.getTrackerHits().size()); - SeedTrack stEle = (SeedTrack) trk; - SeedCandidate seedEle = stEle.getSeedCandidate(); - HelicalTrackFit ht = seedEle.getHelix(); - HelixConverter converter = new HelixConverter(0); - StraightLineTrack slt = converter.Convert(ht); - - Hep3Vector posAtEcal = TrackUtils.getTrackPositionAtEcal(trk); - - aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[0]); //this is y in the tracker frame - aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[1]); //this is z in the tracker frame - //double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0); - aida.histogram1D("X (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[0]); - aida.histogram1D("Y (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[1]); - - //Straight line after field-region??? - //HelixConverter converterEcal = new HelixConverter(zAtDownStrPairSpec); - //StraightLineTrack sltEcal = converterEcal.Convert(ht); -// double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0); -// Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sECAL);//position in tracker coordinates! - aida.histogram1D("X (mm) @ ECAL").fill(posAtEcal.x()); - aida.histogram1D("Y (mm) @ ECAL").fill(posAtEcal.y()); - if (trk.getTrackStates().get(0).getMomentum()[0] > 1.0) { - aida.histogram1D("X (mm) @ ECAL (Pz>1)").fill(posAtEcal.x()); - aida.histogram1D("Y (mm) @ ECAL (Pz>1)").fill(posAtEcal.y()); - } + aida.histogram1D("Track Charge").fill(-trk.getCharge()); aida.histogram1D("d0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.d0.ordinal())); aida.histogram1D("sinphi ").fill(Math.sin(trk.getTrackStates().get(0).getParameter(ParameterName.phi0.ordinal()))); aida.histogram1D("omega ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.omega.ordinal())); aida.histogram1D("tan(lambda) ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.tanLambda.ordinal())); - aida.histogram1D("z0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.z0.ordinal())); + aida.histogram1D("y0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.z0.ordinal())); - int isTop = -1; - if (trk.getTrackerHits().get(0).getPosition()[2] > 0) { - isTop = 0;//make plot look pretty - } - int charge = trk.getCharge(); - if (charge > 0) { - charge = 0;//make plot look pretty - }// System.out.println("Charge = " + charge + "; isTop = " + isTop); - aida.histogram2D("Charge vs Slope").fill(charge, isTop); - if (isTop == 0) { - aida.histogram1D("Top Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]); - aida.histogram1D("Top Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]); - aida.histogram1D("Top Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]); - aida.histogram1D("Top Track Chi2").fill(trk.getChi2()); - } else { - aida.histogram1D("Bottom Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]); - aida.histogram1D("Bottom Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]); - aida.histogram1D("Bottom Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]); - aida.histogram1D("Bottom Track Chi2").fill(trk.getChi2()); - } - List<TrackerHit> hitsOnTrack = trk.getTrackerHits(); - for (TrackerHit hit : hitsOnTrack) { - HelicalTrackHit htc = (HelicalTrackHit) hit; - HelicalTrackCross htcross = (HelicalTrackCross) htc; - double sHit = ht.PathMap().get(htc); - Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sHit); - - double yTr = posonhelix.y(); - double zTr = posonhelix.z(); - int layer = htc.Layer(); - String modNum = "Module X "; - if (layer == 1) { - modNum = "Module 1 "; - } - if (layer == 3) { - modNum = "Module 2 "; - } - if (layer == 5) { - modNum = "Module 3 "; - } - if (layer == 7) { - modNum = "Module 4 "; - } - if (layer == 9) { - modNum = "Module 5 "; - } - if (layer == 11) { - modNum = "Module 6 "; - } - SymmetricMatrix cov = htc.getCorrectedCovMatrix(); - - aida.histogram1D(modNum + "Residual X(mm)").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already - aida.histogram1D(modNum + "Residual Y(mm)").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already - if (hit.getPosition()[2] > 0) { - aida.histogram1D(modNum + "Residual X(mm) Top").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already - aida.histogram1D(modNum + "Residual Y(mm) Top").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already - - } - if (hit.getPosition()[2] < 0) { - aida.histogram1D(modNum + "Residual X(mm) Bottom").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already - aida.histogram1D(modNum + "Residual Y(mm) Bottom").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already - - } - HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()); - double x = htcross.getCorrectedPosition().y(); - double y = htcross.getCorrectedPosition().z(); - if (sensor.isTopLayer()) { - layersTop[htc.Layer() - 1]++; - Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition(); - if (htc.Layer() == 1) { -// System.out.println(sensorPos.toString()); -// System.out.println("Hit X = " + x + "; Hit Y = " + y); - aida.histogram2D("Layer 1 HTH Position: Top").fill(x - sensorPos.x(), y - sensorPos.y()); - } - if (htc.Layer() == 7) { - aida.histogram2D("Layer 7 HTH Position: Top").fill(x - sensorPos.x(), y - sensorPos.y()); - } - } else { - layersBot[htc.Layer() - 1]++; - Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition(); - if (htc.Layer() == 1) { -// System.out.println(sensorPos.toString()); -// System.out.println("Hit X = " + x + "; Hit Y = " + y); - aida.histogram2D("Layer 1 HTH Position: Bottom").fill(x - sensorPos.x(), y - sensorPos.y()); - } - if (htc.Layer() == 7) { - aida.histogram2D("Layer 7 HTH Position: Bottom").fill(x - sensorPos.x(), y - sensorPos.y()); - } - } - /* - List<RawTrackerHit> rawHits = hit.getRawHits(); - for (RawTrackerHit rawHit : rawHits) { - ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip")); - HPSShapeFitParameters fit = _shaper.fitShape(rawHit, constants); - double amp = fit.getAmp(); - - aida.histogram1D("Amp (HitOnTrack)").fill(amp); - if (trk.getTrackStates().get(0).getMomentum()[0] > 1) - aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp); - } - */ - if(isShapeFit()) { - for (HelicalTrackStrip hts : htcross.getStrips()) { - double clusterSum = 0; - for (RawTrackerHit rawHit : (List<RawTrackerHit>) hts.rawhits()) { - //===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip")); - //===>for (ShapeFitParameters fit : _shaper.fitShape(rawHit, constants)) { - for (ShapeFitParameters fit : _shaper.fitShape(rawHit)) { - double amp = fit.getAmp(); - clusterSum += amp; - aida.histogram1D("Amp (HitOnTrack)").fill(amp); - if (trk.getTrackStates().get(0).getMomentum()[0] > 1) { - aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp); - } - } - aida.histogram1D("Amp (CluOnTrack)").fill(clusterSum); - if (trk.getTrackStates().get(0).getMomentum()[0] > 1) { - aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(clusterSum); - } - } - } - } - } - if(event.hasCollection(Cluster.class,ecalCollectionName)) { - List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName); - - Cluster clust = findClosestCluster(posAtEcal, clusters); - - // if (clust != null) { - if (clust != null) { - - posAtEcal = TrackUtils.extrapolateTrack(trk, clust.getPosition()[2]);//.positionAtEcal(); - - aida.histogram2D("Energy Vs Momentum").fill(clust.getEnergy(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0); - aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getTrackStates().get(0).getMomentum()[0] * 1000.0)); - aida.histogram1D("deltaX").fill(clust.getPosition()[0] - posAtEcal.x()); - aida.histogram1D("deltaY").fill(clust.getPosition()[1] - posAtEcal.y()); - // if (trk.getTrackStates().get(0).getMomentum()[0] > 1.0) { - // aida.histogram1D("deltaX (Pz>1)").fill(clust.getPosition()[0] - posAtEcal.y()); - // aida.histogram1D("deltaY (Pz>1)").fill(clust.getPosition()[1] - posAtEcal.z()); - // } - aida.histogram2D("X ECal Vs Track").fill(clust.getPosition()[0], posAtEcal.x()); - aida.histogram2D("Y ECal Vs Track").fill(clust.getPosition()[1], posAtEcal.y()); - if (isTop == 0) { - aida.histogram2D("Top Energy Vs Momentum").fill(clust.getEnergy(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0); - // aida.histogram2D("Top Energy Vs Momentum").fill(posAtEcal.y(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0); - aida.histogram1D("Top Energy Over Momentum").fill(clust.getEnergy() / (trk.getTrackStates().get(0).getMomentum()[0] * 1000.0)); - aida.histogram1D("Top deltaX").fill(clust.getPosition()[0] - posAtEcal.x()); - aida.histogram1D("Top deltaY").fill(clust.getPosition()[1] - posAtEcal.y()); - aida.histogram2D("Top deltaX vs X").fill(clust.getPosition()[0], clust.getPosition()[0] - posAtEcal.x()); - aida.histogram2D("Top deltaY vs Y").fill(clust.getPosition()[1], clust.getPosition()[1] - posAtEcal.y()); - aida.histogram2D("Top X ECal Vs Track").fill(clust.getPosition()[0], posAtEcal.x()); - aida.histogram2D("Top Y ECal Vs Track").fill(clust.getPosition()[1], posAtEcal.y()); - } else { - aida.histogram2D("Bottom Energy Vs Momentum").fill(clust.getEnergy(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0); - aida.histogram1D("Bottom Energy Over Momentum").fill(clust.getEnergy() / (trk.getTrackStates().get(0).getMomentum()[0] * 1000.0)); - aida.histogram1D("Bottom deltaX").fill(clust.getPosition()[0] - posAtEcal.x()); - aida.histogram1D("Bottom deltaY").fill(clust.getPosition()[1] - posAtEcal.y()); - aida.histogram2D("Bottom deltaX vs X").fill(clust.getPosition()[0], clust.getPosition()[0] - posAtEcal.x()); - aida.histogram2D("Bottom deltaY vs Y").fill(clust.getPosition()[1], clust.getPosition()[1] - posAtEcal.y()); - aida.histogram2D("Bottom X ECal Vs Track").fill(clust.getPosition()[0], posAtEcal.x()); - aida.histogram2D("Bottom Y ECal Vs Track").fill(clust.getPosition()[1], posAtEcal.y()); - } - - } - } - } - } - - public int[] getTrackHitsPerLayer(Track trk) { - int n[] = {0, 0, 0, 0, 0, 0}; - List<TrackerHit> hitsOnTrack = trk.getTrackerHits(); - int layer; - for (TrackerHit hit : hitsOnTrack) { - HelicalTrackHit htc = (HelicalTrackHit) hit; -// if (htc.getPosition()[2] < 0) { - layer = htc.Layer(); - layer = (layer - 1) / 2; - n[layer] = n[layer] + 1; -// } +// SeedTrack stEle = (SeedTrack) trk; +// SeedCandidate seedEle = stEle.getSeedCandidate(); +// HelicalTrackFit ht = seedEle.getHelix(); +// HelixConverter converter = new HelixConverter(0); } - return n; - } - - public boolean singleTrackHitPerLayer(Track track) { - int hitsPerLayer[] = getTrackHitsPerLayer(track); - for (int i = 0; i < 6; ++i) { - if (hitsPerLayer[i] != 1) { - return false; - } - } - return true; - } - - public boolean singleStripClusterPerLayer(int hitsPerLayer[]) { - //This includes both axial and stereo separately - // so for a hit in each double layer we need 10 hits - for (int i = 0; i < 12; ++i) { - if (hitsPerLayer[i] != 1) { - return false; - } - } - return true; - } - - public int[] getStripClustersPerLayer(List<SiTrackerHitStrip1D> trackerHits, String side) { - String name; - int l; - int n[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - boolean ddd = false; - - if (ddd) { - System.out.println("Get # hits per layer on side \"" + side + "\""); - } - - for (SiTrackerHitStrip1D stripCluster : trackerHits) { - - if (ddd) { - System.out.println("Processing stripCluster " + stripCluster.toString()); - } - - if (!"".equals(side)) { - String s; - if (stripCluster.getPosition()[1] >= 0.0) { - s = "up"; - } else { - s = "down"; - } - if (!s.equals(side)) { - continue; - } - } - - name = stripCluster.getSensor().getName(); - if (name.length() < 14) { - System.err.println("This name is too short!!"); - throw new RuntimeException("SiSensor name " + name + " is invalid?"); - } - - if (ddd) { - System.out.println("sensor name " + name); - } - - if(name.contains("layer") && name.contains("_module")) { - //String str_l = name.substring(13); - String str_l = name.substring(name.indexOf("layer") + 5, name.indexOf("_module")); - l = Integer.parseInt(str_l); - } - else if(name.contains("module") && name.contains("_halfmodule")) { - int ll = HPSTrackerBuilder.getLayerFromVolumeName(name); - boolean isAxial = HPSTrackerBuilder.isAxialFromName(name); - boolean isTopLayer = HPSTrackerBuilder.getHalfFromName(name).equals("top") ? true : false; - if(isAxial) { - if(isTopLayer) { - l = 2*ll-1; - } - else { - l = 2*ll; - } - } else { - if(isTopLayer) { - l = 2*ll; - } else { - l = 2*ll-1; - } - } - - } else { - throw new RuntimeException("Cannot get layer from name " + name); - } - - if (ddd) { - System.out.println("sensor name " + name + " --> layer " + l); - } - - if (l < 1 || l > 12) { - System.out.println("This layer doesn't exist?"); - throw new RuntimeException("SiSensor name " + name + " is invalid?"); - } - - n[l - 1] = n[l - 1] + 1; - - } - - return n; } @Override public void endOfData() { - if (outputPlots != null) { + if (outputPlots != null) try { - aida.saveAs(outputPlots); + plotter.writeToFile(outputPlots+"-mom.gif"); + plotter22.writeToFile(outputPlots+"-trkparams.gif"); } catch (IOException ex) { - Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); } - } + //plotterFrame.dispose(); //topFrame.dispose(); //bottomFrame.dispose(); } - private Cluster findClosestCluster(Hep3Vector posonhelix, List<Cluster> clusters) { - Cluster closest = null; - double minDist = 9999; - for (Cluster cluster : clusters) { - double[] clPos = cluster.getPosition(); - double clEne = cluster.getEnergy(); - double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.x(), 2) + Math.pow(clPos[1] - posonhelix.y(), 2)); //coordinates!!! -// double dist = Math.sqrt(Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!! - if (dist < minDist && clEne > 50) { - closest = cluster; - minDist = dist; - } -// if(cluster.getEnergy()/10>500) - } -// System.out.println("Found a cluster..." + minDist); - - return closest; - - } - - public boolean isShapeFit() { - return shapeFit; - } - - public void setShapeFit(boolean shapeFit) { - this.shapeFit = shapeFit; - } } Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java (added) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java Thu Mar 5 10:58:18 2015 @@ -0,0 +1,155 @@ +package org.hps.monitoring.drivers.trackrecon; + +import hep.aida.IAnalysisFactory; +import hep.aida.IHistogram1D; +import hep.aida.IHistogram2D; +import hep.aida.IPlotter; +import hep.aida.IPlotterStyle; +import java.io.IOException; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.lcsim.event.EventHeader; +import org.lcsim.event.ReconstructedParticle; +import org.lcsim.event.Track; +import org.lcsim.event.Vertex; +import org.lcsim.geometry.Detector; +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; + +/** + * + * @author mgraham + */ +public class V0ReconPlots extends Driver { + + private AIDA aida = AIDA.defaultInstance(); + String finalStateParticlesColName = "FinalStateParticles"; + String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates"; + String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates"; + String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates"; + //some counters + int nRecoEvents = 0; + boolean debug = false; + + IPlotter plotterUncon; + IPlotter plotter2d; + String outputPlots; + + @Override + protected void detectorChanged(Detector detector) { + System.out.println("V0Monitoring::detectorChanged Setting up the plotter"); + + aida.tree().cd("/"); +// resetOccupancyMap(); // this is for calculating averages + IAnalysisFactory fac = aida.analysisFactory(); + + plotterUncon = fac.createPlotterFactory().create("HPS Tracking Plots"); + setupPlotter(plotterUncon, "Unconstrained V0s"); + plotterUncon.createRegions(2, 3); + + /* V0 Quantities */ + /* Mass, vertex, chi^2 of fit */ + /* beamspot constrained */ + IHistogram1D nV0 = aida.histogram1D("Number of V0 per event", 5, 0, 5); + IHistogram1D unconMass = aida.histogram1D("Unconstrained Mass (GeV)", 100, 0, 0.200); + IHistogram1D unconVx = aida.histogram1D("Unconstrained Vx (mm)", 50, -1, 1); + IHistogram1D unconVy = aida.histogram1D("Unconstrained Vy (mm)", 50, -0.6, 0.6); + IHistogram1D unconVz = aida.histogram1D("Unconstrained Vz (mm)", 50, -10, 10); + IHistogram1D unconChi2 = aida.histogram1D("Unconstrained Chi2", 25, 0, 25); + plotterUncon.region(0).plot(nV0); + plotterUncon.region(1).plot(unconMass); + plotterUncon.region(2).plot(unconChi2); + plotterUncon.region(3).plot(unconVx); + plotterUncon.region(4).plot(unconVy); + plotterUncon.region(5).plot(unconVz); + + plotter2d = fac.createPlotterFactory().create("HPS Tracking Plots"); + setupPlotter(plotter2d, "V0 2D Plots"); + plotter2d.createRegions(2, 2); + IPlotterStyle style = plotter2d.style(); + style.statisticsBoxStyle().setVisible(false); + style.setParameter("hist2DStyle", "colorMap"); + style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow"); + + IHistogram2D pEleVspPos = aida.histogram2D("P(e) vs P(p)", 50, 0, 2.5, 50, 0, 2.5); + IHistogram2D pyEleVspyPos = aida.histogram2D("Py(e) vs Py(p)", 50, -0.1, 0.1, 50, -0.1, 0.1); + IHistogram2D pxEleVspxPos = aida.histogram2D("Px(e) vs Px(p)", 50, -0.1, 0.1, 50, -0.1, 0.1); + IHistogram2D massVsVtxZ = aida.histogram2D("Mass vs Vz", 50, 0, 0.15, 50, -10, 10); + plotter2d.region(0).plot(pEleVspPos); + plotter2d.region(1).plot(pxEleVspxPos); + plotter2d.region(2).plot(massVsVtxZ); + plotter2d.region(3).plot(pyEleVspyPos); + } + + @Override + public void process(EventHeader event) { + /* make sure everything is there */ + if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)) + return; + if (!event.hasCollection(ReconstructedParticle.class, unconstrainedV0CandidatesColName)) + return; + if (!event.hasCollection(ReconstructedParticle.class, beamConV0CandidatesColName)) + return; + if (!event.hasCollection(ReconstructedParticle.class, targetV0ConCandidatesColName)) + return; + nRecoEvents++; + + List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName); + aida.histogram1D("Number of V0 per event").fill(unConstrainedV0List.size()); + for (ReconstructedParticle uncV0 : unConstrainedV0List) { + Vertex uncVert = uncV0.getStartVertex(); + aida.histogram1D("Unconstrained Vx (mm)").fill(uncVert.getPosition().x()); + aida.histogram1D("Unconstrained Vy (mm)").fill(uncVert.getPosition().y()); + aida.histogram1D("Unconstrained Vz (mm)").fill(uncVert.getPosition().z()); + aida.histogram1D("Unconstrained Mass (GeV)").fill(uncV0.getMass()); + aida.histogram1D("Unconstrained Chi2").fill(uncVert.getChi2()); + aida.histogram2D("Mass vs Vz").fill(uncV0.getMass(), uncVert.getPosition().z()); + //this always has 2 tracks. + List<ReconstructedParticle> trks = uncV0.getParticles(); + Track ele = trks.get(0).getTracks().get(0); + Track pos = trks.get(1).getTracks().get(0); + //if track #0 has charge>0 it's the electron! This seems mixed up, but remember the track + //charge is assigned assuming a positive B-field, while ours is negative + if (trks.get(0).getCharge() > 0) { + pos = trks.get(0).getTracks().get(0); + ele = trks.get(1).getTracks().get(0); + } + aida.histogram2D("P(e) vs P(p)").fill(getMomentum(ele), getMomentum(pos)); + aida.histogram2D("Px(e) vs Px(p)").fill(ele.getTrackStates().get(0).getMomentum()[1], pos.getTrackStates().get(0).getMomentum()[1]); + aida.histogram2D("Py(e) vs Py(p)").fill(ele.getTrackStates().get(0).getMomentum()[2], pos.getTrackStates().get(0).getMomentum()[2]); + } + } + + void setupPlotter(IPlotter plotter, String title) { + plotter.setTitle(title); + IPlotterStyle style = plotter.style(); + style.dataStyle().fillStyle().setColor("yellow"); + style.dataStyle().errorBarStyle().setVisible(false); + } + + public void setOutputPlots(String output) { + this.outputPlots = output; + } + + private double getMomentum(Track trk) { + + double px = trk.getTrackStates().get(0).getMomentum()[0]; + double py = trk.getTrackStates().get(0).getMomentum()[1]; + double pz = trk.getTrackStates().get(0).getMomentum()[2]; + return Math.sqrt(px * px + py * py + pz * pz); + } + + @Override + public void endOfData() { + if (outputPlots != null) + try { + plotterUncon.writeToFile(outputPlots + "-Unconstrained.gif"); + plotter2d.writeToFile(outputPlots + "-2d.gif"); + } catch (IOException ex) { + Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex); + } + + } + +} Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim Thu Mar 5 10:58:18 2015 @@ -5,32 +5,31 @@ <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd"> <execute> <driver name="EventMarkerDriver" /> - <driver name="ConditionsDriver" /> <driver name="SvtSensorSetup" /> <driver name="RawTrackerHitSensorSetup" /> <driver name="RawTrackerHitFitterDriver" /> <driver name="TrackerHitDriver" /> <driver name="HelicalTrackHitDriver" /> -<!-- <driver name="TrackerReconDriver"/> - <driver name="TrackDataDriver"/> --> - <driver name="AxialTrackReconDriver" /> + <driver name="TrackerReconDriver"/> + <driver name="TrackDataDriver"/> <driver name="EcalRawConverter" /> <driver name="EcalClusterer" /> <driver name="ReconParticle" /> - <driver name="TrackingMonitoring" /> - <driver name="TrackMCEfficiency" /> -<!-- <driver name="StraightTrackAnalysis"/> --> - <driver name="AidaSaveDriver" /> - <driver name="LCIOWriter" /> +<!-- <driver name="TrackingMonitoring" /> + <driver name="TrackingResiduals"/> + <driver name="V0Monitoring"/> --> + <driver name="TrackingDQM" /> + <driver name="TrackingResidualsDQM"/> + <driver name="FinalStateDQM"/> + <driver name="V0DQM"/> + <driver name="AidaSaveDriver"/> <driver name="CleanupDriver" /> </execute> <drivers> + <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" /> <driver name="ConditionsDriver" type="org.hps.conditions.ConditionsDriver" /> - <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" /> - <!-- Broken due to missing prop file. JM --> - <!-- <driver name="DQMDatabaseDriver" type="org.hps.analysis.dataquality.DQMDatabaseDriver" /> --> - <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> - <eventInterval>1</eventInterval> + <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> + <eventInterval>10</eventInterval> </driver> <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup" /> <driver name="BadChannelFilter" type="org.hps.recon.tracking.SVTBadChannelFilterDriver" /> @@ -49,7 +48,7 @@ <clusterTimeCut>16.0</clusterTimeCut> <maxSeperation>20.0</maxSeperation> <tolerance>1.0</tolerance> - <saveAxialHits>true</saveAxialHits> + <saveAxialHits>false</saveAxialHits> </driver> <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver"> <debug>false</debug> @@ -62,10 +61,6 @@ </driver> <driver name="EcalClusterer" type="org.hps.recon.ecal.cluster.ClusterDriver"> <clustererName>LegacyClusterer</clustererName> - </driver> - <driver name="AddBeamSpotToTrack" type="org.hps.users.mgraham.AddBeamSpotToTrack"> - </driver> - <driver name="BeamSpotTrackAnalysis" type="org.hps.users.mgraham.BeamSpotTrackAnalysis"> </driver> <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"> <debug>false</debug> @@ -81,50 +76,33 @@ <beamConV0VerticesColName>BSBeamspotConstrainedV0Vertices</beamConV0VerticesColName> <targetConV0VerticesColName>BSTargetConstrainedV0Vertices</targetConV0VerticesColName> </driver> - <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> - <outputFileName>./conditions_test_plots.root</outputFileName> + + <driver name="TrackingMonitoring" type="org.hps.monitoring.drivers.trackrecon.TrackingReconPlots"> + <outputPlots>tracking</outputPlots> </driver> - <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring"> - <runNumber>${runNumber}</runNumber> + <driver name="TrackingResiduals" type="org.hps.monitoring.drivers.trackrecon.TrackResiduals"> + <outputPlots>track-residuals</outputPlots> + </driver> + <driver name="V0Monitoring" type="org.hps.monitoring.drivers.trackrecon.V0ReconPlots"> + <outputPlots>v0recon</outputPlots> + </driver> + + + <driver name="TrackingDQM" type="org.hps.analysis.dataquality.TrackingMonitoring"> <overwriteDB>false</overwriteDB> </driver> - <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring"> - <runNumber>${runNumber}</runNumber> - <overwriteDB>false</overwriteDB> - <trackCollectionName>StraightTracks</trackCollectionName> - </driver> - <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals"> - <runNumber>${runNumber}</runNumber> + <driver name="TrackingResidualsDQM" type="org.hps.analysis.dataquality.TrackingResiduals"> <overwriteDB>false</overwriteDB> </driver> - <driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring"> - <runNumber>${runNumber}</runNumber> + <driver name="FinalStateDQM" type="org.hps.analysis.dataquality.FinalStateMonitoring"> <overwriteDB>false</overwriteDB> </driver> - <driver name="SVTHitMCEfficiency" type="org.hps.analysis.dataquality.SVTHitMCEfficiency"> - <overwriteDB>false</overwriteDB> - <printDQMStrings>false</printDQMStrings> - </driver> - <driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring"> - <runNumber>${runNumber}</runNumber> + <driver name="V0DQM" type="org.hps.analysis.dataquality.V0Monitoring"> <overwriteDB>false</overwriteDB> </driver> - <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver" /> - <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver"> - <outputFilePath>blah.slcio</outputFilePath> - </driver> - <driver name="AxialTrackReconDriver" type="org.hps.recon.tracking.axial.AxialTrackReconDriver"> - <debug>false</debug> - <strategyResource>/org/hps/recon/tracking/strategies/HPS-Axial.xml</strategyResource> - <trackCollectionName>StraightTracks</trackCollectionName> - </driver> - <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency"> - <overwriteDB>false</overwriteDB> - <trackCollectionName>StraightTracks</trackCollectionName> - <trackHitCollectionName>RotatedAxialTrackHits</trackHitCollectionName> - <trackHitMCRelationsCollectionName>RotatedAxialTrackHitsMCRelations</trackHitMCRelationsCollectionName> - </driver> - <driver name="StraightTrackAnalysis" type="org.hps.users.mgraham.StraightTrackAnalysis"> - </driver> + <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> + <outputFileName>./Test-DQM-Tracking-Recon.root</outputFileName> + </driver> + <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver" /> </drivers> </lcsim> Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim ============================================================================= --- java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim (original) +++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim Thu Mar 5 10:58:18 2015 @@ -5,33 +5,67 @@ <printDriversDetailed>true</printDriversDetailed> </control> <execute> - <driver name="EventMarkerDriver" /> - <driver name="TrackerDigiDriver" /> - <driver name="HelicalTrackHitDriver" /> - <driver name="AxialTrackReconDriver" /> - <!-- <driver name="TrackerReconDriver"/> <driver name="TrackDataDriver"/> --> - <!-- <driver name="StraightTrackReconDriver"/> --> - <driver name="StraightTrackAnalysis" /> - <driver name="SVTMonitoring" /> - <driver name="TrackingMonitoring" /> - <driver name="TrackingResiduals" /> - <driver name="AidaSaveDriver" /> - <driver name="LCIOWriter" /> - <driver name="CleanupDriver" /> + <driver name="EventMarkerDriver"/> + <driver name="SvtSensorSetup"/> + <driver name="TrackerDigiDriver"/> + <driver name="EcalEdepToTriggerConverterDriver"/> + <driver name="EcalReadoutConverterDriver"/> + <driver name="ReconClusterer"/> + <driver name="HelicalTrackHitDriver"/> + <driver name="TrackerReconDriver"/> + <driver name="TrackDataDriver"/> +<!-- <driver name="AxialTrackReconDriver"/> --> +<!-- <driver name="StraightTrackReconDriver"/> --> +<!-- <driver name="StraightTrackAnalysis"/> --> + <driver name="ReconParticle" /> + <driver name="SVTMonitoring"/> + <driver name="TrackingMonitoring"/> + <driver name="TrackMCEfficiency"/> + <driver name="TrackingResiduals"/> + <driver name="FinalStateMonitoring"/> + <driver name="V0Monitoring"/> + <driver name="AidaSaveDriver"/> + <driver name="LCIOWriter"/> + <driver name="CleanupDriver"/> </execute> <drivers> <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> - <eventInterval>1</eventInterval> + <eventInterval>100</eventInterval> </driver> + + <driver name="EcalEdepToTriggerConverterDriver" type="org.hps.recon.ecal.EcalEdepToTriggerConverterDriver"> + <readoutCollection>EcalCalHits</readoutCollection> + <applyBadCrystalMap>false</applyBadCrystalMap> + <truncateScale>1</truncateScale> + <constantGain>0.15</constantGain> + </driver> + <driver name="EcalReadoutConverterDriver" type="org.hps.recon.ecal.EcalRawConverterDriver"> + <runBackwards>true</runBackwards> + <rawCollectionName>EcalReadoutHits</rawCollectionName> + <ecalCollectionName>EcalCalHits</ecalCollectionName> + </driver> + + <driver name="ReconClusterer" type="org.hps.recon.ecal.cluster.ReconClusterDriver"> + <logLevel>WARNING</logLevel> + <outputClusterCollectionName>EcalClusters</outputClusterCollectionName> + <hitEnergyThreshold>0.01</hitEnergyThreshold> + <seedEnergyThreshold>0.100</seedEnergyThreshold> + <clusterEnergyThreshold>0.200</clusterEnergyThreshold> + <useTimeCut>false</useTimeCut> + <writeRejectedHitCollection>false</writeRejectedHitCollection> + </driver> + + <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" /> <driver name="TrackerDigiDriver" type="org.hps.recon.tracking.SimpleTrackerDigiDriver"> <!-- <dropBadChannels>true</dropBadChannels> --> + <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName> <debug>false</debug> </driver> <driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver"> <debug>false</debug> <maxSeperation>20.0</maxSeperation> <tolerance>1.0</tolerance> - <saveAxialHits>true</saveAxialHits> + <saveAxialHits>false</saveAxialHits> </driver> <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver"> <debug>false</debug> @@ -58,28 +92,41 @@ <runNumber>${runNumber}</runNumber> <overwriteDB>false</overwriteDB> </driver> - <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring"> - <runNumber>${runNumber}</runNumber> + <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring"> + <trackCollectionName>MatchedTracks</trackCollectionName> + <runNumber>${runNumber}</runNumber> <overwriteDB>false</overwriteDB> - </driver> - <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals"> - <runNumber>${runNumber}</runNumber> + </driver> + <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals"> + <runNumber>${runNumber}</runNumber> <overwriteDB>false</overwriteDB> </driver> <driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring"> <runNumber>${runNumber}</runNumber> <overwriteDB>false</overwriteDB> - </driver> - <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency"> + <debug>false</debug> + </driver> + <driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring"> + <runNumber>${runNumber}</runNumber> <overwriteDB>false</overwriteDB> </driver> <driver name="SVTHitMCEfficiency" type="org.hps.analysis.dataquality.SVTHitMCEfficiency"> <overwriteDB>false</overwriteDB> <printDQMStrings>false</printDQMStrings> + </driver> + + <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency"> + <overwriteDB>false</overwriteDB> + <debug>true</debug> + <debugTrackEfficiency>true</debugTrackEfficiency> + </driver> + <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> + <outputFileName>./HPSTracker2014-v0-ap75mev.root</outputFileName> + </driver> + <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"> + <debug>false</debug> </driver> - <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver"> - <outputFileName>./straight-tracks.root</outputFileName> - </driver> - <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver" /> + <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/> + </drivers> </lcsim>