Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN | |||
TwoTrackAnlysis.java | +162 | -7 | 1.5 -> 1.6 |
Added new ntuple variables and debug histograms.
diff -u -r1.5 -r1.6 --- TwoTrackAnlysis.java 16 Jan 2013 22:24:40 -0000 1.5 +++ TwoTrackAnlysis.java 19 Jan 2013 00:55:04 -0000 1.6 @@ -63,6 +63,8 @@
private IPlotter _plotterParticleVertex; private IPlotter _plotterTrackVertex; private IPlotter _plotterNhits;
+ private IPlotter _plotterRes; + private IPlotter _plotterResAll;
private IHistogram2D _vtxpos_xy; private IHistogram1D _vtxpos_x; private IHistogram1D _vtxpos_y;
@@ -77,6 +79,23 @@
private IHistogram1D _layershit; private IHistogram1D _layershit_vtxpospos; private IHistogram1D _layershit_vtxposneg;
+ private IHistogram1D _trk1_res1_z; + private IHistogram1D _trk2_res1_z; + private IHistogram1D _trk1_res1_y; + private IHistogram1D _trk2_res1_y; + private IHistogram1D _trk1_res2_z; + private IHistogram1D _trk2_res2_z; + private IHistogram1D _trk1_res2_y; + private IHistogram1D _trk2_res2_y; + private IHistogram1D _trk1_res1_z_all; + private IHistogram1D _trk2_res1_z_all; + private IHistogram1D _trk1_res1_y_all; + private IHistogram1D _trk2_res1_y_all; + private IHistogram1D _trk1_res2_z_all; + private IHistogram1D _trk2_res2_z_all; + private IHistogram1D _trk1_res2_y_all; + private IHistogram1D _trk2_res2_y_all; +
@@ -145,6 +164,29 @@
}
+ + //DEBUG + { + for(Track trk : tracklist) { + SeedTrack st1 = (SeedTrack) trk; + HelicalTrackFit helix = st1.getSeedCandidate().getHelix(); + for(TrackerHit hit: trk.getTrackerHits()) { + HelicalTrackHit hth = (HelicalTrackHit) hit; + Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hth, helix, true); + //DEBUG histos + if(hth.Layer()==1) { + _trk1_res1_z_all.fill(res.get("resz")); + _trk1_res1_y_all.fill(res.get("resy")); + } + if(hth.Layer()==3) { + _trk1_res2_z_all.fill(res.get("resz")); + _trk1_res2_y_all.fill(res.get("resy")); + } + } + } + } + +
if(tracklist.size()!=2) { return; }
@@ -294,12 +336,24 @@
br_line+="e_px/F:e_py/F:e_pz/F:p_px/F:p_py/F:p_pz/F:"; br_line+="trk1_q/I:trk1_chi2/F:trk1_px/F:trk1_py/F:trk1_pz/F:trk1_nhits/I:"; for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk1_hit"+iLayer+"_x/F:"+"trk1_hit"+iLayer+"_y/F:"+"trk1_hit"+iLayer+"_z/F:";
- for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk1_res"+iLayer+"_x/F:"+"trk1_res"+iLayer+"_y/F:"+"trk1_res"+iLayer+"_z/F:";
+ for(int iLayer=1;iLayer<=5;++iLayer) { + br_line+="trk1_res"+iLayer+"_x/F:"+"trk1_res"+iLayer+"_y/F:"+"trk1_res"+iLayer+"_z/F:"; + br_line+="trk1_eres"+iLayer+"_x/F:"+"trk1_eres"+iLayer+"_y/F:"+"trk1_eres"+iLayer+"_z/F:"; + br_line+="trk1_drdphi"+iLayer+"/F:"+"trk1_msdrphi"+iLayer+"/F:"; + br_line+="trk1_dr"+iLayer+"/F:"+"trk1_slope"+iLayer+"/F:"; + + }
for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk1_strip"+iLayer+"_u/F:"; for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk1_strip"+iLayer+"_n/F:"; br_line+="trk2_q/I:trk2_chi2/F:trk2_px/F:trk2_py/F:trk2_pz/F:trk2_nhits/I:"; for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk2_hit"+iLayer+"_x/F:"+"trk2_hit"+iLayer+"_y/F:"+"trk2_hit"+iLayer+"_z/F:";
- for(int iLayer=1;iLayer<=5;++iLayer) br_line+="trk2_res"+iLayer+"_x/F:"+"trk2_res"+iLayer+"_y/F:"+"trk2_res"+iLayer+"_z/F:";
+ for(int iLayer=1;iLayer<=5;++iLayer) { + br_line+="trk2_res"+iLayer+"_x/F:"+"trk2_res"+iLayer+"_y/F:"+"trk2_res"+iLayer+"_z/F:"; + br_line+="trk2_eres"+iLayer+"_x/F:"+"trk2_eres"+iLayer+"_y/F:"+"trk2_eres"+iLayer+"_z/F:"; + br_line+="trk2_drdphi"+iLayer+"/F:"+"trk2_msdrphi"+iLayer+"/F:"; + br_line+="trk2_dr"+iLayer+"/F:"+"trk2_slope"+iLayer+"/F:"; + + }
for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk2_strip"+iLayer+"_u/F:"; for(int iLayer=1;iLayer<=10;++iLayer) br_line+="trk2_strip"+iLayer+"_n/F:"; br_line+="vtx_truth_x/F:vtx_truth_y/F:vtx_truth_z/F:";
@@ -343,8 +397,26 @@
if (hitOnLayer != null) { Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hitOnLayer, helix1, true); printWriter.format("%5.5f %5.5f %5.5f ", 0.0,res.get("resy"),res.get("resz"));
+ printWriter.format("%5.5f %5.5f %5.5f ", 0.0,res.get("erry"),res.get("errz")); + printWriter.format("%5.5f %5.5f ", res.get("drphi"),res.get("msdrphi")); + printWriter.format("%5.5f %5.5f ", res.get("dr"),res.get("slope")); + + //DEBUG histos + if(iLayer==0) { + _trk1_res1_z.fill(res.get("resz")); + _trk1_res1_y.fill(res.get("resy")); + } + if(iLayer==1) { + _trk1_res2_z.fill(res.get("resz")); + _trk1_res2_y.fill(res.get("resy")); + } + } + else { + printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9); + printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9); + printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9); + printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9);
}
- else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
} List<HelicalTrackHit> stereoHits = new ArrayList<HelicalTrackHit>(); if(event.hasCollection(HelicalTrackHit.class, stereoHitCollectionName)) {
@@ -380,8 +452,27 @@
if (hitOnLayer != null) { Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hitOnLayer, helix2, true); printWriter.format("%5.5f %5.5f %5.5f ", 0.0,res.get("resy"),res.get("resz"));
+ printWriter.format("%5.5f %5.5f %5.5f ", 0.0,res.get("erry"),res.get("errz")); + printWriter.format("%5.5f %5.5f ", res.get("drphi"),res.get("msdrphi")); + printWriter.format("%5.5f %5.5f ", res.get("dr"),res.get("slope")); + + //DEBUG histos + if(iLayer==0) { + _trk1_res1_z.fill(res.get("resz")); + _trk1_res1_y.fill(res.get("resy")); + } + if(iLayer==1) { + _trk1_res2_z.fill(res.get("resz")); + _trk1_res2_y.fill(res.get("resy")); + } + + } + else { + printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9); + printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9); + printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9); + printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9);
}
- else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
} for(int iLayer=1;iLayer<=10;++iLayer) { HelicalTrackStrip strip=null;
@@ -528,7 +619,23 @@
_layershit = aida.histogram1D("Layers hit", 5, 1, 6); _layershit_vtxpospos = aida.histogram1D("Layers hit pos vtx", 5, 1, 6); _layershit_vtxposneg = aida.histogram1D("Layers hit neg vtx", 5, 1, 6);
-
+ _trk1_res1_z = aida.histogram1D("Track1 layer1 residual z", 50,-20,20); + _trk2_res1_z = aida.histogram1D("Track2 layer1 residual z", 50,-20,20); + _trk1_res1_y = aida.histogram1D("Track1 layer1 residual y", 50,-20,20); + _trk2_res1_y = aida.histogram1D("Track2 layer1 residual y", 50,-20,20); + _trk1_res2_z = aida.histogram1D("Track1 layer2 residual z", 50,-20,20); + _trk2_res2_z = aida.histogram1D("Track2 layer2 residual z", 50,-20,20); + _trk1_res2_y = aida.histogram1D("Track1 layer2 residual y", 50,-20,20); + _trk2_res2_y = aida.histogram1D("Track2 layer2 residual y", 50,-20,20); + + _trk1_res1_z_all = aida.histogram1D("Track1 layer1 residual z all", 50,-20,20); + _trk2_res1_z_all = aida.histogram1D("Track2 layer1 residual z all", 50,-20,20); + _trk1_res1_y_all = aida.histogram1D("Track1 layer1 residual y all", 50,-20,20); + _trk2_res1_y_all = aida.histogram1D("Track2 layer1 residual y all", 50,-20,20); + _trk1_res2_z_all = aida.histogram1D("Track1 layer2 residual z all", 50,-20,20); + _trk2_res2_z_all = aida.histogram1D("Track2 layer2 residual z all", 50,-20,20); + _trk1_res2_y_all = aida.histogram1D("Track1 layer2 residual y all", 50,-20,20); + _trk2_res2_y_all = aida.histogram1D("Track2 layer2 residual y all", 50,-20,20);
_plotterTrackVertex = aida.analysisFactory().createPlotterFactory().create(); _plotterTrackVertex.createRegions(2,2);
@@ -556,26 +663,74 @@
_plotterNhits.region(1).plot(this._layershit_vtxposneg,"mode=overlay"); _plotterNhits.region(1).plot(this._layershit_vtxpospos,"mode=overlay"); _plotterNhits.region(1).style().dataStyle().fillStyle().setVisible(false);
+ _plotterRes = aida.analysisFactory().createPlotterFactory().create(); + _plotterRes.createRegions(2,2); + _plotterRes.region(0).plot(this._trk1_res1_z); + _plotterRes.region(0).plot(this._trk2_res1_z,"mode=overlay"); + _plotterRes.region(1).plot(this._trk1_res2_z); + _plotterRes.region(1).plot(this._trk2_res2_z,"mode=overlay"); + _plotterRes.region(2).plot(this._trk1_res1_y); + _plotterRes.region(2).plot(this._trk2_res1_y,"mode=overlay"); + _plotterRes.region(3).plot(this._trk1_res2_y); + _plotterRes.region(3).plot(this._trk2_res2_y,"mode=overlay"); + _plotterResAll = aida.analysisFactory().createPlotterFactory().create(); + _plotterResAll.createRegions(2,2); + _plotterResAll.region(0).plot(this._trk1_res1_z_all); + _plotterResAll.region(0).plot(this._trk2_res1_z_all,"mode=overlay"); + _plotterResAll.region(1).plot(this._trk1_res2_z_all); + _plotterResAll.region(1).plot(this._trk2_res2_z_all,"mode=overlay"); + _plotterResAll.region(2).plot(this._trk1_res1_y_all); + _plotterResAll.region(2).plot(this._trk2_res1_y_all,"mode=overlay"); + _plotterResAll.region(3).plot(this._trk1_res2_y_all); + _plotterResAll.region(3).plot(this._trk2_res2_y_all,"mode=overlay");
_plotterParticleVertex.setTitle("MC particle Vertex"); _plotterTrackVertex.setTitle("Two Track Vertex"); _plotterNhits.setTitle("Hits on track");
+ _plotterRes.setTitle("Track Residuals"); + _plotterRes.setTitle("Track Residuals All");
- for(int i=0;i<3;++i) {
+ for(int i=0;i<4;++i) {
((PlotterRegion) _plotterParticleVertex.region(i)).getPlot().setAllowUserInteraction(true); ((PlotterRegion) _plotterParticleVertex.region(i)).getPlot().setAllowPopupMenus(true); ((PlotterRegion) _plotterTrackVertex.region(i)).getPlot().setAllowUserInteraction(true); ((PlotterRegion) _plotterTrackVertex.region(i)).getPlot().setAllowPopupMenus(true);
-
+ ((PlotterRegion) _plotterRes.region(i)).getPlot().setAllowUserInteraction(true); + ((PlotterRegion) _plotterRes.region(i)).getPlot().setAllowPopupMenus(true); + ((PlotterRegion) _plotterResAll.region(i)).getPlot().setAllowUserInteraction(true); + ((PlotterRegion) _plotterResAll.region(i)).getPlot().setAllowPopupMenus(true);
} if(!this.hideFrame) { this._plotterParticleVertex.show(); this._plotterTrackVertex.show(); this._plotterNhits.show();
+ this._plotterRes.show(); + this._plotterResAll.show();
} }
+ + + + void fillResidualPlots(Track track) { + SeedTrack st2 = (SeedTrack) track; + HelicalTrackFit helix2 = st2.getSeedCandidate().getHelix(); + for(TrackerHit hit: track.getTrackerHits()) { + HelicalTrackHit hth = (HelicalTrackHit) hit; + Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hth, helix2, true); + //DEBUG histos + if(hth.Layer()==1) { + _trk1_res1_z.fill(res.get("resz")); + _trk1_res1_y.fill(res.get("resy")); + } + if(hth.Layer()==3) { + _trk1_res2_z.fill(res.get("resz")); + _trk1_res2_y.fill(res.get("resy")); + } + } + } +
}
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1