hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.6 -r1.7
--- TrackingReconstructionPlots.java 14 May 2012 17:56:49 -0000 1.6
+++ TrackingReconstructionPlots.java 14 May 2012 22:51:35 -0000 1.7
@@ -10,6 +10,7 @@
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.lcsim.detector.tracker.silicon.DopedSilicon;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.*;
import org.lcsim.fit.helicaltrack.HelicalTrackCross;
@@ -61,13 +62,16 @@
IPlotter plotter;
IPlotter plotter2;
IPlotter plotter22;
+ IPlotter plotter222;
IPlotter plotter3;
IPlotter plotter3_1;
IPlotter plotter3_2;
IPlotter plotter4;
IPlotter plotter5;
IPlotter plotter6;
- double zEcal = 130;
+ double zEcal = 1500;
+ double zAtDownStrPairSpec = 914.0; //mm
+ double zAtColl = -1500;
IHistogram1D trkPx;
IHistogram1D nTracks;
@@ -123,22 +127,51 @@
plotter2 = fac.createPlotterFactory().create("HPS Tracking Plots");
- plotter2.setTitle("Other");
+ plotter2.setTitle("Track extrapolation");
plotterFrame.addPlotter(plotter2);
IPlotterStyle style2 = plotter2.style();
style2.dataStyle().fillStyle().setColor("yellow");
style2.dataStyle().errorBarStyle().setVisible(false);
- plotter2.createRegions(2, 3);
+ plotter2.createRegions(2, 4);
IHistogram1D xAtConverter = aida.histogram1D("X (mm) @ Z=-60cm", 25, -50, 50);
IHistogram1D yAtConverter = aida.histogram1D("Y (mm) @ Z=-60cm", 50, -50, 100);
+ 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) @ Z=150cm", 50, -700, 700);
+ IHistogram1D yAtEcal = aida.histogram1D("Y (mm) @ Z=150cm", 50, -50, 150);
+ IHistogram1D xAtEcal2 = aida.histogram1D("X (mm) @ Z=150cm (Pz>1)", 50, -50, 50);
+ IHistogram1D yAtEcal2 = aida.histogram1D("Y (mm) @ Z=150cm (Pz>1)", 50, -50, 150);
+
+ 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)", 35, 0, 3500);
+ 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);
- plotter2.region(0).plot(xAtConverter);
- plotter2.region(3).plot(yAtConverter);
- plotter2.region(1).plot(nHits);
- plotter2.region(4).plot(nTracks);
- plotter2.region(2).plot(amp);
+
+ 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");
@@ -265,18 +298,23 @@
style4.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
style4.dataStyle().fillStyle().setColor("yellow");
style4.dataStyle().errorBarStyle().setVisible(false);
- plotter4.createRegions(2, 2);
+ plotter4.createRegions(2, 3);
- IHistogram2D eVsP = aida.histogram2D("Energy Vs Momentum", 50, 0, 5000, 50, 0, 3500);
+ IHistogram2D eVsP = aida.histogram2D("Energy Vs Momentum", 50, 0, 3500, 50, 0, 3500);
IHistogram1D eOverP = aida.histogram1D("Energy Over Momentum", 50, 0, 5);
- IHistogram1D distX = aida.histogram1D("deltaX", 50, -50, 50);
- IHistogram1D distY = aida.histogram1D("deltaY", 50, -50, 50);
+ IHistogram1D distX = aida.histogram1D("deltaX", 50, -400, 400);
+ IHistogram1D distY = aida.histogram1D("deltaY", 50, -100, 100);
+ IHistogram1D distX2 = aida.histogram1D("deltaX (Pz>1)", 50, -400, 400);
+ IHistogram1D distY2 = aida.histogram1D("deltaY (Pz>1)", 50, -100, 100);
+
plotter4.region(0).plot(eVsP);
- plotter4.region(1).plot(eOverP);
- plotter4.region(2).plot(distX);
- plotter4.region(3).plot(distY);
+ plotter4.region(3).plot(eOverP);
+ plotter4.region(1).plot(distX);
+ plotter4.region(4).plot(distY);
+ plotter4.region(2).plot(distX2);
+ plotter4.region(5).plot(distY2);
@@ -461,8 +499,23 @@
aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[1]); //remember the tracker-->jlab
aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[0]); //coordinate swap...
+ //double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0);
+ aida.histogram1D("X (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[1]);
+ aida.histogram1D("Y (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[0]);
-
+
+ //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) @ Z=150cm").fill(posonhelix.y());
+ aida.histogram1D("Y (mm) @ Z=150cm").fill(posonhelix.z());
+ if(trk.getPX()>1.0) {
+ aida.histogram1D("X (mm) @ Z=150cm (Pz>1)").fill(slt.getYZAtX(zAtColl)[1]);
+ aida.histogram1D("Y (mm) @ Z=150cm (Pz>1)").fill(slt.getYZAtX(zAtColl)[0]);
+ }
aida.histogram1D("d0 ").fill(trk.getTrackParameter(ParameterName.d0.ordinal()));
aida.histogram1D("phi ").fill(trk.getTrackParameter(ParameterName.phi0.ordinal()));
aida.histogram1D("omega ").fill(trk.getTrackParameter(ParameterName.omega.ordinal()));
@@ -476,7 +529,8 @@
for (TrackerHit hit : hitsOnTrack) {
HelicalTrackHit htc = (HelicalTrackHit) hit;
double sHit = ht.PathMap().get(htc);
- Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sHit);
+ posonhelix = HelixUtils.PointOnHelix(ht, sHit);
+
double yTr = posonhelix.y();
double zTr = posonhelix.z();
int layer = htc.Layer();
@@ -513,17 +567,21 @@
}
-
-
- List<RawTrackerHit> rawHits = hit.getRawHits();
- for(RawTrackerHit rawHit : rawHits){
+ 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);
- }
+ 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.getPX()>1) aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
+ }
+ //Fill the cluster energy directly
+ //This should return energyin GeV but without gain I should get
+ // sum(ADC)*[energy of hole pair]
+ aida.histogram1D("Amp (CluOnTrack)").fill(hit.getdEdx()/DopedSilicon.ENERGY_EHPAIR);
+ if(trk.getPX()>1) aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(hit.getdEdx()/DopedSilicon.ENERGY_EHPAIR);
@@ -532,14 +590,20 @@
}
List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
// System.out.println("Number of ECAL clusters=" + clusters.size());
- double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0);
- Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sECAL);//position in tracker coordinates!
+// sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0);
+ posonhelix = HelixUtils.PointOnHelix(ht, sECAL);//position in tracker coordinates!
HPSEcalCluster clust = findClosestCluster(posonhelix, clusters);
if (clust != null) {
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] - posonhelix.y());
aida.histogram1D("deltaY").fill(clust.getPosition()[1] - posonhelix.z());
+ if(trk.getPX()>1.0) {
+ aida.histogram1D("deltaX (Pz>1)").fill(clust.getPosition()[0] - posonhelix.y());
+ aida.histogram1D("deltaY (Pz>1)").fill(clust.getPosition()[1] - posonhelix.z());
+
+ }
+
}
}
}