Author: phansson Date: Wed Dec 10 18:18:11 2014 New Revision: 1682 Log: started to clean up and adjusted so that I can use it for the new detector. Is someone actually looking at these? Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java Modified: 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/svt/TrackingReconstructionPlots.java Wed Dec 10 18:18:11 2014 @@ -40,6 +40,7 @@ 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; @@ -56,20 +57,12 @@ //private AIDAFrame topFrame; //private AIDAFrame bottomFrame; private AIDA aida = AIDA.defaultInstance(); - private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; - private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits"; - private String trackerHitCollectionName = "StripClusterer_SiTrackerHitStrip1D"; private String helicalTrackHitCollectionName = "HelicalTrackHits"; private String rotatedTrackHitCollectionName = "RotatedHelicalTrackHits"; - private String helicalTrackHitRelationsCollectionName = "HelicalTrackHitRelations"; private String trackCollectionName = "MatchedTracks"; - private String trackerName = "Tracker"; String ecalSubdetectorName = "Ecal"; String ecalCollectionName = "EcalClusters"; - private Detector detector = null; IDDecoder dec; - private int eventCount; - private List<SiSensor> sensors; private String outputPlots = null; IPlotter plotter; IPlotter plotter2; @@ -98,10 +91,10 @@ IHistogram1D trkPx; IHistogram1D nTracks; ShaperFitAlgorithm _shaper = new DumbShaperFit(); + private boolean shapeFit = false; @Override protected void detectorChanged(Detector detector) { - this.detector = detector; aida.tree().cd("/"); //plotterFrame = new AIDAFrame(); //plotterFrame.setTitle("HPS Tracking Plots"); @@ -110,8 +103,7 @@ //topFrame.setTitle("Top Tracking Plots"); //bottomFrame = new AIDAFrame(); //bottomFrame.setTitle("Bottom Tracking Plots"); - sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class); - + IAnalysisFactory fac = aida.analysisFactory(); plotter = fac.createPlotterFactory().create("HPS Tracking Plots"); plotter.setTitle("Momentum"); @@ -122,7 +114,7 @@ //plotterFrame.addPlotter(plotter); trkPx = aida.histogram1D("Track Momentum (Px)", 25, -0.25, 0.25); - IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 25, -0.1, 0.1); + 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); @@ -143,7 +135,7 @@ //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.1, 0.1); + 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); @@ -163,7 +155,7 @@ //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.1, 0.1); + 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); @@ -247,7 +239,7 @@ IPlotterStyle style3 = plotter3.style(); style3.dataStyle().fillStyle().setColor("yellow"); style3.dataStyle().errorBarStyle().setVisible(false); - plotter3.createRegions(5, 2); + plotter3.createRegions(6, 2); double minResidY = -1.5; double maxResidY = 1.5; @@ -269,18 +261,23 @@ 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)"); @@ -288,7 +285,7 @@ IPlotterStyle style3_1 = plotter3_1.style(); style3_1.dataStyle().fillStyle().setColor("yellow"); style3_1.dataStyle().errorBarStyle().setVisible(false); - plotter3_1.createRegions(5, 2); + 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); @@ -304,18 +301,23 @@ 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)"); @@ -323,7 +325,7 @@ IPlotterStyle style3_2 = plotter3_2.style(); style3_2.dataStyle().fillStyle().setColor("yellow"); style3_2.dataStyle().errorBarStyle().setVisible(false); - plotter3_2.createRegions(5, 2); + 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); @@ -339,18 +341,23 @@ 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"); @@ -572,15 +579,12 @@ } public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { - this.rawTrackerHitCollectionName = rawTrackerHitCollectionName; } public void setFittedTrackerHitCollectionName(String fittedTrackerHitCollectionName) { - this.fittedTrackerHitCollectionName = fittedTrackerHitCollectionName; } public void setTrackerHitCollectionName(String trackerHitCollectionName) { - this.trackerHitCollectionName = trackerHitCollectionName; } public void setHelicalTrackHitCollectionName(String helicalTrackHitCollectionName) { @@ -595,57 +599,28 @@ public void process(EventHeader event) { aida.tree().cd("/"); if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName)) { -// System.out.println(helicalTrackHitCollectionName + " does not exist; skipping event"); return; } - List<HelicalTrackHit> rotList = event.get(HelicalTrackHit.class, rotatedTrackHitCollectionName); - for (HelicalTrackHit hth : rotList) { - HelicalTrackCross htc = (HelicalTrackCross) hth; -// System.out.println("TrackingReconstructionPlots::original helical track position = "+hth.getPosition()[0]+","+hth.getPosition()[1]+","+hth.getPosition()[2]); -// System.out.println("TrackingReconstructionPlots::corrected helical track position = "+htc.getCorrectedPosition().toString()); - } + List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName); - int[] layersTop = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - int[] layersBot = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + 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; -// System.out.println("TrackingReconstructionPlots::original helical track position = "+hth.getPosition()[0]+","+hth.getPosition()[1]+","+hth.getPosition()[2]); -// System.out.println("TrackingReconstructionPlots::corrected helical track position = "+htc.getCorrectedPosition().toString()); - //These Helical Track Hits are in the JLAB frame -// htc.resetTrackDirection(); - double x = htc.getPosition()[0]; - double y = htc.getPosition()[1]; HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()); - //===> if (SvtUtils.getInstance().isTopLayer(sensor)) { 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()); - } - } - for (int i = 0; i < 10; i++) { + } + } + 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)) { -// System.out.println(trackCollectionName + " does not exist; skipping event"); aida.histogram1D("Number Tracks/Event").fill(0); return; } @@ -655,7 +630,6 @@ if (event.hasCollection(HPSEcalCluster.class, ecalCollectionName)) { List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName); for (HPSEcalCluster cluster : clusters) { - //System.out.println("cluser position = ("+cluster.getPosition()[0]+","+cluster.getPosition()[1]+") with energy = "+cluster.getEnergy()); if (cluster.getPosition()[1] > 0) { aida.histogram2D("Top ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]); } @@ -778,6 +752,9 @@ } if (layer == 9) { modNum = "Module 5 "; + } + if (layer == 11) { + modNum = "Module 6 "; } SymmetricMatrix cov = htc.getCorrectedCovMatrix(); @@ -831,73 +808,76 @@ aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp); } */ - - 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(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.getPX() > 1) { + aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp); + } + } + aida.histogram1D("Amp (CluOnTrack)").fill(clusterSum); if (trk.getPX() > 1) { - aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp); + aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(clusterSum); } } } - aida.histogram1D("Amp (CluOnTrack)").fill(clusterSum); - if (trk.getPX() > 1) { - aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(clusterSum); + } + } + if(event.hasCollection(HPSEcalCluster.class,ecalCollectionName)) { + List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName); + + HPSEcalCluster 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.getPX() * 1000.0); + aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0)); + aida.histogram1D("deltaX").fill(clust.getPosition()[0] - posAtEcal.x()); + aida.histogram1D("deltaY").fill(clust.getPosition()[1] - posAtEcal.y()); + // if (trk.getPX() > 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.getPX() * 1000.0); + // aida.histogram2D("Top Energy Vs Momentum").fill(posAtEcal.y(), trk.getPX() * 1000.0); + aida.histogram1D("Top Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 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.getPX() * 1000.0); + aida.histogram1D("Bottom Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 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()); } - } - } - List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName); - HPSEcalCluster 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.getPX() * 1000.0); - aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0)); - aida.histogram1D("deltaX").fill(clust.getPosition()[0] - posAtEcal.x()); - aida.histogram1D("deltaY").fill(clust.getPosition()[1] - posAtEcal.y()); -// if (trk.getPX() > 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.getPX() * 1000.0); -// aida.histogram2D("Top Energy Vs Momentum").fill(posAtEcal.y(), trk.getPX() * 1000.0); - aida.histogram1D("Top Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 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.getPX() * 1000.0); - aida.histogram1D("Bottom Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 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}; + int n[] = {0, 0, 0, 0, 0, 0}; List<TrackerHit> hitsOnTrack = trk.getTrackerHits(); int layer; for (TrackerHit hit : hitsOnTrack) { @@ -914,7 +894,7 @@ public boolean singleTrackHitPerLayer(Track track) { int hitsPerLayer[] = getTrackHitsPerLayer(track); - for (int i = 0; i < 5; ++i) { + for (int i = 0; i < 6; ++i) { if (hitsPerLayer[i] != 1) { return false; } @@ -925,7 +905,7 @@ 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 < 10; ++i) { + for (int i = 0; i < 12; ++i) { if (hitsPerLayer[i] != 1) { return false; } @@ -934,12 +914,10 @@ } public int[] getStripClustersPerLayer(List<SiTrackerHitStrip1D> trackerHits, String side) { - String si_side; String name; int l; - int i; - int n[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - boolean ddd = false; + int n[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + boolean ddd = true; if (ddd) { System.out.println("Get # hits per layer on side \"" + side + "\""); @@ -972,16 +950,40 @@ if (ddd) { System.out.println("sensor name " + name); } - - //String str_l = name.substring(13); - String str_l = name.substring(name.indexOf("layer") + 5, name.indexOf("_module")); - l = Integer.parseInt(str_l); - + + 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 > 10) { + if (l < 1 || l > 12) { System.out.println("This layer doesn't exist?"); throw new RuntimeException("SiSensor name " + name + " is invalid?"); } @@ -1047,6 +1049,8 @@ aida.histogram1D("Module 4 Residual Y(mm)").reset(); aida.histogram1D("Module 5 Residual X(mm)").reset(); aida.histogram1D("Module 5 Residual Y(mm)").reset(); + aida.histogram1D("Module 6 Residual X(mm)").reset(); + aida.histogram1D("Module 6 Residual Y(mm)").reset(); aida.histogram1D("Module 1 Residual X(mm) Top").reset(); aida.histogram1D("Module 1 Residual Y(mm) Top").reset(); aida.histogram1D("Module 2 Residual X(mm) Top").reset(); @@ -1057,6 +1061,8 @@ aida.histogram1D("Module 4 Residual Y(mm) Top").reset(); aida.histogram1D("Module 5 Residual X(mm) Top").reset(); aida.histogram1D("Module 5 Residual Y(mm) Top").reset(); + aida.histogram1D("Module 6 Residual X(mm) Top").reset(); + aida.histogram1D("Module 6 Residual Y(mm) Top").reset(); aida.histogram1D("Module 1 Residual X(mm) Bottom").reset(); aida.histogram1D("Module 1 Residual Y(mm) Bottom").reset(); aida.histogram1D("Module 2 Residual X(mm) Bottom").reset(); @@ -1067,6 +1073,8 @@ aida.histogram1D("Module 4 Residual Y(mm) Bottom").reset(); aida.histogram1D("Module 5 Residual X(mm) Bottom").reset(); aida.histogram1D("Module 5 Residual Y(mm) Bottom").reset(); + aida.histogram1D("Module 6 Residual X(mm) Bottom").reset(); + aida.histogram1D("Module 6 Residual Y(mm) Bottom").reset(); aida.histogram2D("Energy Vs Momentum").reset(); aida.histogram1D("Energy Over Momentum").reset(); @@ -1081,4 +1089,12 @@ aida.histogram1D("tan(lambda) ").reset(); aida.histogram1D("z0 ").reset(); } + + public boolean isShapeFit() { + return shapeFit; + } + + public void setShapeFit(boolean shapeFit) { + this.shapeFit = shapeFit; + } }