Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN | |||
TwoTrackAnlysis.java | +184 | -83 | 1.6 -> 1.7 |
Fixed bugs and updated variables for txtfile
diff -u -r1.6 -r1.7 --- TwoTrackAnlysis.java 19 Jan 2013 00:55:04 -0000 1.6 +++ TwoTrackAnlysis.java 13 Feb 2013 18:52:10 -0000 1.7 @@ -33,6 +33,8 @@
import org.lcsim.hps.recon.vertexing.SimpleVertexer; import org.lcsim.hps.recon.vertexing.TwoParticleVertexer; import org.lcsim.hps.recon.vertexing.TwoTrackVertexer;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit; +import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
import org.lcsim.recon.tracking.seedtracker.SeedTrack; import org.lcsim.util.Driver; import org.lcsim.util.aida.AIDA;
@@ -46,6 +48,7 @@
private FileWriter fileWriter; private PrintWriter printWriter; private String outputNameTextTuple = "twotrackAnlysisTuple.txt";
+ private String trackCollectionName = "MatchedTracks";
private boolean doPrintBranchInfoLine = true; //firs tline in text file private AIDA aida = AIDA.defaultInstance(); private int totalEvents=0;
@@ -57,6 +60,8 @@
private String ecalClusterCollectionName = "EcalClusters"; private String stereoHitCollectionName = "RotatedHelicalTrackHits"; private String triggerDecisionCollectionName = "TriggerBank";
+ private String MCParticleCollectionName = "MCParticle"; + private String _stripClusterCollectionName = "HelicalTrackStrips";
private boolean _debug; private TwoTrackVertexer vertexer = new TwoTrackVertexer(); private TwoParticleVertexer particleVertexer = new TwoParticleVertexer();
@@ -110,6 +115,10 @@
hideFrame = hide; }
+ public void setTrackCollectionName(String name) { + trackCollectionName = name; + } +
public TwoTrackAnlysis() {
@@ -137,8 +146,9 @@
@Override public void process(EventHeader event) {
- if(this._debug) System.out.println(this.getClass().getSimpleName() + ": processing event "+totalEvents); -
+ //if(this._debug) + System.out.println(this.getClass().getSimpleName() + ": processing event " + totalEvents + " which has event nr " + event.getEventNumber()); +
@@ -156,40 +166,75 @@
List<Track> tracklist = null;
- if(event.hasCollection(Track.class,"MatchedTracks")) { - tracklist = event.get(Track.class, "MatchedTracks");
+ if(event.hasCollection(Track.class,trackCollectionName)) { + tracklist = event.get(Track.class, trackCollectionName);
if(_debug) { System.out.println(this.getClass().getSimpleName() + ": Number of Tracks = " + tracklist.size()); }
+ } else { + if(_debug) { + System.out.println(this.getClass().getSimpleName() + ": No track collection in event " + event.getEventNumber()); + } + return; + } + + + for(int i=0;i<tracklist.size();++i) { + Track trk = tracklist.get(i); + + System.out.printf("%s: trk momentum (%.3f,%.3f,%.3f) chi2=%.3f\n",this.getClass().getSimpleName(),trk.getTrackStates().get(0).getMomentum()[0],trk.getTrackStates().get(0).getMomentum()[1],trk.getTrackStates().get(0).getMomentum()[2],trk.getChi2()); +
}
+ if(tracklist.size()!=2) { + return; + } + + + for(int i=0;i<tracklist.size();++i) { + Track trk = tracklist.get(i); + if(trk.getTrackStates().get(0).getMomentum()[0]<0.1) { + if(_debug) { + System.out.println(this.getClass().getSimpleName() + ": trk failed momentum cut " + event.getEventNumber() + "\n" + trk.toString()); + } + return; + } + }
//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) {
+ //if(_debug) { + { + + if(_debug) { + System.out.println(this.getClass().getSimpleName() + ": fill some debug hists for event " + event.getEventNumber()); + } + for(int i=0;i<tracklist.size();++i) { + Track trk = tracklist.get(i); + SeedTrack st1 = (SeedTrack) trk; + HelicalTrackFit helix = st1.getSeedCandidate().getHelix(); + HashMap<Integer,HelicalTrackHit> hits = this.getHitMap(trk.getTrackerHits(),helix); + if(i==0) { + Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hits.get(1), helix, true);
_trk1_res1_z_all.fill(res.get("resz")); _trk1_res1_y_all.fill(res.get("resy"));
- } - if(hth.Layer()==3) {
+ res = TrackUtils.calculateTrackHitResidual(hits.get(3), helix, true);
_trk1_res2_z_all.fill(res.get("resz")); _trk1_res2_y_all.fill(res.get("resy")); }
+ if(i==1) { + Map<String,Double> res = TrackUtils.calculateTrackHitResidual(hits.get(1), helix, true); + _trk2_res1_z_all.fill(res.get("resz")); + _trk2_res1_y_all.fill(res.get("resy")); + res = TrackUtils.calculateTrackHitResidual(hits.get(3), helix, true); + _trk2_res2_z_all.fill(res.get("resz")); + _trk2_res2_y_all.fill(res.get("resy")); + }
} }
- }
+ //}
- if(tracklist.size()!=2) { - return; - }
Track trk1 = tracklist.get(0);
@@ -205,20 +250,31 @@
return; }
+ if(vtxPos.x()>50.) { + System.out.printf("%s: vtxPos_x = %.3f for event %d\n",this.getClass().getSimpleName(),vtxPos.x(),event.getEventNumber()); + }
-
+ + if(!event.hasCollection(HPSEcalCluster.class, ecalClusterCollectionName)) { + if(_debug) { + System.out.println(this.getClass().getSimpleName() + ": event doesn't have a ecal cluster collection "); + } + }
List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalClusterCollectionName);
+ if(_debug) { + System.out.println(this.getClass().getSimpleName() + ": found " + clusters.size() + " ecal clusters " + event.getEventNumber()); + }
Hep3Vector vtxPosMC = null; MCParticle electron=null; MCParticle positron=null;
- if(event.hasCollection(MCParticle.class)) {
+ if(event.hasCollection(MCParticle.class,this.MCParticleCollectionName)) {
totalMCEvents++;
- List<MCParticle> mcparticles = event.get(MCParticle.class).get(0);
+ List<MCParticle> mcparticles = event.get(MCParticle.class,this.MCParticleCollectionName);
List<MCParticle> fsParticles = HPSMCParticlePlotsDriver.makeGenFSParticleList(mcparticles); for(MCParticle part : fsParticles) {
@@ -240,17 +296,17 @@
} } }
- if(electron!=null && positron!=null) { - this.particleVertexer.setParticle(electron, positron); - vtxPosMC = this.particleVertexer.getVertex(); - if(this._debug) System.out.printf("%s: vtxPosMC=%s\n", this.getClass().getSimpleName(),vtxPosMC.toString()); - this._partvtxpos_xy.fill(vtxPosMC.x(), vtxPosMC.y()); - this._partvtxpos_x.fill(vtxPosMC.x()); - this._partvtxpos_y.fill(vtxPosMC.y()); - this._partvtxpos_z.fill(vtxPosMC.z()); - totalTwoTrackMCEvents++; - }
+ }
+ if(electron!=null && positron!=null) { + this.particleVertexer.setParticle(electron, positron); + vtxPosMC = this.particleVertexer.getVertex(); + if(this._debug) System.out.printf("%s: vtxPosMC=%s\n", this.getClass().getSimpleName(),vtxPosMC.toString()); + this._partvtxpos_xy.fill(vtxPosMC.x(), vtxPosMC.y()); + this._partvtxpos_x.fill(vtxPosMC.x()); + this._partvtxpos_y.fill(vtxPosMC.y()); + this._partvtxpos_z.fill(vtxPosMC.z()); + totalTwoTrackMCEvents++;
} }
@@ -340,22 +396,24 @@
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:"; -
+ br_line+="trk1_dz"+iLayer+"/F:"+"trk1_msdz"+iLayer+"/F:"; + //br_line+="trk1_ures"+iLayer+"/F:"+"trk1_ureserr"+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:";
+ for(int iLayer=1;iLayer<=10;++iLayer) br_line+="top_strip"+iLayer+"_n/F:";
+ for(int iLayer=1;iLayer<=10;++iLayer) br_line+="bot_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:"; 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:"; -
+ br_line+="trk2_dz"+iLayer+"/F:"+"trk2_msdz"+iLayer+"/F:"; + //br_line+="trk2_ures"+iLayer+"/F:"+"trk2_ureserr"+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:";
+ for(int iLayer=1;iLayer<=10;++iLayer) br_line+="top_stereo"+iLayer+"_n/F:";
+ for(int iLayer=1;iLayer<=10;++iLayer) br_line+="bot_stereo"+iLayer+"_n/F:";
br_line+="vtx_truth_x/F:vtx_truth_y/F:vtx_truth_z/F:"; br_line+="vtx_x/F:vtx_y/F:vtx_z/F:"; br_line+="trk1_conv_x/F:trk1_conv_y/F:trk1_conv_z/F:";
@@ -375,14 +433,14 @@
if(e!=null && p!=null) printWriter.format("%5.5f %5.5f %5.5f %5.5f %5.5f %5.5f ", e.getPX(),e.getPY(),e.getPZ(), p.getPX(),p.getPY(),p.getPZ() ); else printWriter.format("%5.5f %5.5f %5.5f %5.5f %5.5f %5.5f ", -9999999., -9999999., -9999999., -9999999., -9999999., -9999999. ); //Track properties
+ SeedTrack st1 = (SeedTrack) trk1; + HelicalTrackFit helix1 = st1.getSeedCandidate().getHelix();
List<TrackerHit> hitsOnTrack1 = trk1.getTrackerHits(); printWriter.format("%5d %5.5f %5.5f %5.5f %5.5f %5d ",trk1.getCharge(),trk1.getChi2(), trk1.getTrackStates().get(0).getMomentum()[0],trk1.getTrackStates().get(0).getMomentum()[1],trk1.getTrackStates().get(0).getMomentum()[2],hitsOnTrack1.size());
- HashMap<Integer,HelicalTrackHit> hits1 = this.getHitMap(hitsOnTrack1); - for(TrackerHit hit : hitsOnTrack1) { - HelicalTrackHit hth = (HelicalTrackHit) hit; - hits1.put(hth.Layer(), hth); - //System.out.println("hit on layer " + hth.Layer()); - }
+ HashMap<Integer,HelicalTrackHit> hits1 = this.getHitMap(hitsOnTrack1,helix1); + + //printWriter.format("\n%s\n","X1"); +
// stupid but I want to keep one line per event so default in case there is not hits in all layers for(int iLayer=0;iLayer<5;++iLayer) { HelicalTrackHit hitOnLayer = hits1.get(iLayer*2+1);// = this.getHitOnLayer(iLayer, hitsOnTrack);
@@ -390,16 +448,15 @@
else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9); } //Get the helix for residual calculation
- SeedTrack st1 = (SeedTrack) trk1; - HelicalTrackFit helix1 = st1.getSeedCandidate().getHelix();
for(int iLayer=0;iLayer<5;++iLayer) { HelicalTrackHit hitOnLayer = hits1.get(iLayer*2+1);// = this.getHitOnLayer(iLayer, hitsOnTrack); if (hitOnLayer != null) {
+ //printWriter.format("\n%s\n","X11");
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"));
+ printWriter.format("%5.5f %5.5f ", res.get("dz_res"),res.get("msdz"));
//DEBUG histos if(iLayer==0) {
@@ -418,9 +475,16 @@
printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9); } }
+ + //printWriter.format("\n%s\n","X2"); + +
List<HelicalTrackHit> stereoHits = new ArrayList<HelicalTrackHit>(); if(event.hasCollection(HelicalTrackHit.class, stereoHitCollectionName)) { stereoHits = event.get(HelicalTrackHit.class, stereoHitCollectionName);
+ } else { + System.out.printf("%s: no collection with stereo hits? \"%s\"\n",this.getClass().getSimpleName(),this.stereoHitCollectionName); +
} HashMap<Integer,List<HelicalTrackStrip>> striphits1 = this.getStripHitsMap(hitsOnTrack1); for(int iLayer=1;iLayer<=10;++iLayer) {
@@ -429,24 +493,31 @@
if(strip!=null) printWriter.format("%5.5f ", strip.umeas()); else printWriter.format("%5.5f ", -99999999.9); }
- HashMap<Integer,List<HelicalTrackStrip>> allstriphits1 = this.getAllStripHitsMap(stereoHits);
+ + HashMap<Integer,List<HelicalTrackStrip>> allstriphits = this.getAllStripHitsMap(event,true);
for(int iLayer=1;iLayer<=10;++iLayer) {
- if(striphits1.containsKey(iLayer)) printWriter.format("%5d ", allstriphits1.get(iLayer).size());
+ if(allstriphits.containsKey(iLayer)) printWriter.format("%5d ", allstriphits.get(iLayer).size());
else printWriter.format("%5d ", -99999999); }
-
+ allstriphits = this.getAllStripHitsMap(event,false); + for(int iLayer=1;iLayer<=10;++iLayer) { + if(allstriphits.containsKey(iLayer)) printWriter.format("%5d ", allstriphits.get(iLayer).size()); + else printWriter.format("%5d ", -99999999); + } + SeedTrack st2 = (SeedTrack) trk2; + HelicalTrackFit helix2 = st2.getSeedCandidate().getHelix();
List<TrackerHit> hitsOnTrack2 = trk2.getTrackerHits(); printWriter.format("%5d %5.5f %5.5f %5.5f %5.5f %5d ",trk2.getCharge(),trk2.getChi2(), trk2.getTrackStates().get(0).getMomentum()[0],trk2.getTrackStates().get(0).getMomentum()[1],trk2.getTrackStates().get(0).getMomentum()[2],hitsOnTrack2.size()); HashMap<Integer,List<HelicalTrackStrip>> striphits2 = this.getStripHitsMap(hitsOnTrack2);
- HashMap<Integer,HelicalTrackHit> hits2 = this.getHitMap(hitsOnTrack2);
+ HashMap<Integer,HelicalTrackHit> hits2 = this.getHitMap(hitsOnTrack2,helix2);
for(int iLayer=0;iLayer<5;++iLayer) { HelicalTrackHit hitOnLayer = hits2.get(iLayer*2+1);// = this.getHitOnLayer(iLayer, hitsOnTrack); if (hitOnLayer != null) printWriter.format("%5.5f %5.5f %5.5f ", hitOnLayer.getPosition()[0],hitOnLayer.getPosition()[1],hitOnLayer.getPosition()[2]); else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9); }
- //Get the helix for residual calculation - SeedTrack st2 = (SeedTrack) trk2; - HelicalTrackFit helix2 = st2.getSeedCandidate().getHelix();
+ + //printWriter.format("\n%s\n","X3"); +
for(int iLayer=0;iLayer<5;++iLayer) { HelicalTrackHit hitOnLayer = hits2.get(iLayer*2+1);// = this.getHitOnLayer(iLayer, hitsOnTrack); if (hitOnLayer != null) {
@@ -454,16 +525,21 @@
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")); -
+ printWriter.format("%5.5f %5.5f ", res.get("dz_res"),res.get("msdz")); + + + if(res.get("erry")>19.7) { + System.out.printf("%s: y residual error is too large = %f for run %d and event %d \n",this.getClass().getSimpleName(),res.get("erry"),event.getRunNumber(),event.getEventNumber()); + //System.exit(1); + }
//DEBUG histos if(iLayer==0) {
- _trk1_res1_z.fill(res.get("resz")); - _trk1_res1_y.fill(res.get("resy"));
+ _trk2_res1_z.fill(res.get("resz")); + _trk2_res1_y.fill(res.get("resy"));
} if(iLayer==1) {
- _trk1_res2_z.fill(res.get("resz")); - _trk1_res2_y.fill(res.get("resy"));
+ _trk2_res2_z.fill(res.get("resz")); + _trk2_res2_y.fill(res.get("resy"));
} }
@@ -480,11 +556,17 @@
if(strip!=null) printWriter.format("%5.5f ", strip.umeas()); else printWriter.format("%5.5f ", -99999999.9); }
- HashMap<Integer,List<HelicalTrackStrip>> allstriphits2 = this.getAllStripHitsMap(stereoHits);
+ HashMap<Integer,List<HelicalTrackHit>> allstereohits = getAllStereoHitsMap(stereoHits,true); + for(int iLayer=1;iLayer<=10;++iLayer) { + if(allstereohits.containsKey(iLayer)) printWriter.format("%5d ", allstereohits.get(iLayer).size()); + else printWriter.format("%5d ", -99999999); + } + allstereohits = getAllStereoHitsMap(stereoHits,false);
for(int iLayer=1;iLayer<=10;++iLayer) {
- if(striphits2.containsKey(iLayer)) printWriter.format("%5d ", striphits2.get(iLayer).size());
+ if(allstereohits.containsKey(iLayer)) printWriter.format("%5d ", allstereohits.get(iLayer).size());
else printWriter.format("%5d ", -99999999); }
+ //printWriter.format("\n%s\n","X4");
//Particle vtx if(vtxPosParticle!=null) printWriter.format("%5.5f %5.5f %5.5f ", vtxPosParticle.x(),vtxPosParticle.y(),vtxPosParticle.z() );
@@ -500,7 +582,10 @@
printWriter.format("%5.5f %5.5f %5.5f ", posAtConverter.z(),posAtConverter.x(),posAtConverter.y()); //note rotation from JLab->tracking int ncl_t=0; int ncl_b=0; for(int i=0;i<3;++i) {
- if(clusters.size()<=i) {
+ if(clusters==null) {
+ printWriter.format("%5.5f %5d %5d ",-999999.9,-999999,-999999);
+ }
+ else if(clusters.size()<=i) {
printWriter.format("%5.5f %5d %5d ",-999999.9,-999999,-999999); } else { //for(HPSEcalCluster cl : clusters) {
@@ -541,10 +626,12 @@
}
- private HashMap<Integer,HelicalTrackHit> getHitMap(List<TrackerHit> hits) {
+ private HashMap<Integer,HelicalTrackHit> getHitMap(List<TrackerHit> hits,HelicalTrackFit helix) {
HashMap<Integer,HelicalTrackHit> map = new HashMap<Integer,HelicalTrackHit>(); for(TrackerHit hit : hits) { HelicalTrackHit hth = (HelicalTrackHit) hit;
+ HelicalTrackCross htc = (HelicalTrackCross) hth; + htc.setTrackDirection(helix);
map.put(hth.Layer(), hth); } return map;
@@ -578,31 +665,45 @@
return map; }
- private HashMap<Integer,List<HelicalTrackStrip>> getAllStripHitsMap(List<HelicalTrackHit> stereoHits) {
+ private HashMap<Integer,List<HelicalTrackStrip>> getAllStripHitsMap(EventHeader event, boolean top) {
HashMap<Integer,List<HelicalTrackStrip>> map = new HashMap<Integer,List<HelicalTrackStrip>>();
- for(HelicalTrackHit hth : stereoHits) { - HelicalTrackCross htc = (HelicalTrackCross) hth; - HelicalTrackStrip s1 = htc.getStrips().get(0); - HelicalTrackStrip s2 = htc.getStrips().get(1); - if(!map.containsKey(s1.layer())) map.put(s1.layer(), new ArrayList<HelicalTrackStrip>()); - if(!map.containsKey(s2.layer())) map.put(s2.layer(), new ArrayList<HelicalTrackStrip>()); - map.get(s1.layer()).add(s1); - map.get(s2.layer()).add(s2); -
+ if(!event.hasCollection(HelicalTrackStrip.class, this._stripClusterCollectionName)) { + return map; + } + List<HelicalTrackStrip> strips = event.get(HelicalTrackStrip.class, this._stripClusterCollectionName); + if(this._debug) System.out.printf("%s: asking strips in the %s\n", this.getClass().getSimpleName(),(top?"top":"bottom")); + for(HelicalTrackStrip strip : strips) { + if(top && strip.origin().y()<0 ) continue; + else if(!top && strip.origin().y()>0) continue; + if(this._debug) System.out.printf("%s: strip at origin %s is selected\n", this.getClass().getSimpleName(),strip.origin().toString()); + if(!map.containsKey(strip.layer())) { + map.put(strip.layer(), new ArrayList<HelicalTrackStrip>()); + } + map.get(strip.layer()).add(strip);
}
+
return map; }
- - private HelicalTrackHit getHitOnLayer(int layer, List<TrackerHit> hits) { - HelicalTrackHit hitOnLayer = null; - for(TrackerHit hit : hits) { - HelicalTrackHit htc = (HelicalTrackHit) hit; - if( htc.Layer() == layer) { - hitOnLayer = htc; - }
+ + private HashMap<Integer,List<HelicalTrackHit>> getAllStereoHitsMap(List<HelicalTrackHit> stereoHits, boolean top) { + HashMap<Integer,List<HelicalTrackHit>> map = new HashMap<Integer,List<HelicalTrackHit>>(); + if(stereoHits==null) { + return map; + } + if(this._debug) System.out.printf("%s: asking for stereo hits in the %s\n", this.getClass().getSimpleName(),(top?"top":"bottom")); + for(HelicalTrackHit hit : stereoHits) { + if(top && hit.z()<0) continue; + if(!top && hit.z()>0) continue; + if(this._debug) System.out.printf("%s: hit at xyz=%.3f,%.3f,%.3f is selected\n", this.getClass().getSimpleName(),hit.x(),hit.y(),hit.z()); + if(!map.containsKey(hit.Layer())) { + map.put(hit.Layer(), new ArrayList<HelicalTrackHit>()); + } + map.get(hit.Layer()).add(hit);
}
- return hitOnLayer;
+ return map;
}
+ +
private void makePlots() { _vtxpos_x = aida.histogram1D("Vertex position X", 100, -1000, 1000);
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