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>
|