lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.24 -r1.25
--- HelicalTrackHitDriver.java 3 Oct 2008 18:26:51 -0000 1.24
+++ HelicalTrackHitDriver.java 14 Oct 2008 23:11:48 -0000 1.25
@@ -88,7 +88,8 @@
private List<String> _bscol = new ArrayList<String>();
private List<String> _digcol = new ArrayList<String>();
private String _outname = "HelicalTrackHits";
- private String _relname = "HelicalTrackHitRelations";
+ private String _hitrelname = "HelicalTrackHitRelations";
+ private String _mcrelname = "HelicalTrackMCRelations";
private Hep3Vector _uloc = new BasicHep3Vector(1., 0., 0.);
private Hep3Vector _vloc = new BasicHep3Vector(0., 1., 0.);
private Hep3Vector _zhat = new BasicHep3Vector(0., 0., 1.);
@@ -178,7 +179,7 @@
if (_segman == null) _segman = (SegmentationManager) event.get("SegmentationManager");
// Make a mapping between the stereo strips and corresponding hits
- Map<HelicalTrackStrip, org.lcsim.contrib.onoprien.tracking.hit.TrackerHit> stripmap =
+ Map<HelicalTrackStrip, org.lcsim.contrib.onoprien.tracking.hit.TrackerHit> stripmap =
new HashMap<HelicalTrackStrip, org.lcsim.contrib.onoprien.tracking.hit.TrackerHit>();
// Get the hit map that gives the list of hits on a particular sensor
@@ -226,14 +227,14 @@
}
helhits.add(hit);
}
- }
+ }
for (String colname : _digcol) {
- List<SiTrackerHit> hitlist = (List<SiTrackerHit>) event.get(colname);
+ List<SiTrackerHit> hitlist = (List<SiTrackerHit>) event.get(colname);
List<HelicalTrackStrip> strips = new ArrayList<HelicalTrackStrip>();
- Map<HelicalTrackStrip, SiTrackerHitStrip1D> stripmap = new HashMap<HelicalTrackStrip, SiTrackerHitStrip1D>();
+ Map<HelicalTrackStrip, SiTrackerHitStrip1D> stripmap = new HashMap<HelicalTrackStrip, SiTrackerHitStrip1D>();
for (SiTrackerHit hit : hitlist) {
if (hit instanceof SiTrackerHitStrip1D) {
@@ -241,43 +242,51 @@
SiTrackerHitStrip1D h = (SiTrackerHitStrip1D) hit;
SiTrackerModule m = (SiTrackerModule) hit.getSensor().getParent();
- if (m.getChildren().size()==2) {//stereo hit
- HelicalTrackStrip strip = makeDigiStrip(h);
+ if (m.getChildren().size()==2) {//stereo hit
+ HelicalTrackStrip strip = makeDigiStrip(h);
strips.add(strip);
- stripmap.put(strip,h);
- }
- else {
- HelicalTrackHit dah = makeDigiAxialHit(h);
+ stripmap.put(strip,h);
+ } else {
+ HelicalTrackHit dah = makeDigiAxialHit(h);
helhits.add(dah); //isolated hit
hitrelations.add(new MyLCRelation(dah,hit));
}
}
//for other types, make 3d hits
else {
- HelicalTrackHit hit3d = makeDigi3DHit(hit);
+ HelicalTrackHit hit3d = makeDigi3DHit(hit);
helhits.add(hit3d);
- hitrelations.add(new MyLCRelation(hit3d, hit));
+ hitrelations.add(new MyLCRelation(hit3d, hit));
}
}
//generate Stereo hits
List<HelicalTrackCross> stereohits = _crosser.MakeHits(strips);
-
+
helhits.addAll(stereohits);
- //add LCRelation for strip hits
+ //add LCRelation for strip hits
for (HelicalTrackCross cross : stereohits) {
for (HelicalTrackStrip strip : cross.getStrips()) {
- hitrelations.add(new MyLCRelation(cross,stripmap.get(strip)));
+ hitrelations.add(new MyLCRelation(cross,stripmap.get(strip)));
}
}
}
+ // Create the LCRelations between HelicalTrackHits and MC particles
+ List<LCRelation> mcrelations = new ArrayList<LCRelation>();
+ for (HelicalTrackHit hit : helhits) {
+ for (MCParticle mcp : hit.getMCParticles()) {
+ mcrelations.add(new MyLCRelation(hit, mcp));
+ }
+ }
+
// Put the HelicalTrackHits back into the event
event.put(_outname, helhits, HelicalTrackHit.class, 0);
- event.put(_relname, hitrelations, LCRelation.class, 0);
+ event.put(_hitrelname, hitrelations, LCRelation.class, 0);
+ event.put(_mcrelname, mcrelations, LCRelation.class, 0);
return;
}
@@ -305,8 +314,13 @@
return;
}
- public void RelationCollection(String relname) {
- _relname = relname;
+ public void HitRelationName(String hitrelname) {
+ _hitrelname = hitrelname;
+ return;
+ }
+
+ public void MCRelationName(String mcrelname) {
+ _mcrelname = mcrelname;
return;
}