lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.37 -r1.38
--- HelicalTrackHitDriver.java 25 Aug 2009 00:01:59 -0000 1.37
+++ HelicalTrackHitDriver.java 14 Dec 2010 21:45:55 -0000 1.38
@@ -32,6 +32,7 @@
import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.TrackerHit;
import org.lcsim.event.base.BaseTrackerHitMC;
+import org.lcsim.event.base.BaseHit;
import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
@@ -129,14 +130,15 @@
List<SimTrackerHit> thesehits = new ArrayList<SimTrackerHit>();
List<RawTrackerHit> rawhits = (List<RawTrackerHit>)hit.getRawHits();
for (RawTrackerHit raw : rawhits) {
- thesehits.addAll(raw.getSimTrackerHits());
+ if(raw.getSimTrackerHits() != null)
+ thesehits.addAll(raw.getSimTrackerHits());
}
hit = new BaseTrackerHitMC(hit.getPosition(), hit.getCovMatrix(),
hit.getTime(), hit.getdEdx(), hit.getType(), thesehits);
((BaseTrackerHitMC)hit).addRawTrackerHits(rawhits);
- }
-
+ if(thesehits.size() != 0)
+ {
SimTrackerHit simhit = ((BaseTrackerHitMC)hit).getSimHits().get(0);
HelicalTrackHit hthit = new HelicalTrack3DHit(pos, cov, hit.getdEdx(), hit.getTime(), hit.getRawHits(),
_ID.getName(simhit), _ID.getLayer(simhit), _ID.getBarrelEndcapFlag(simhit));
@@ -149,7 +151,22 @@
for (MCParticle p : ((BaseTrackerHitMC)hit).mcParticles()) hthit.addMCParticle(p);
hitrelations.add(new MyLCRelation(hthit, ohit));
helhits.add(hthit);
-// }
+ }
+ else
+ {
+ if(rawhits.size() != 0)
+ {
+ IDetectorElement de = ((BaseHit) rawhits.get(0)).getDetectorElement();
+ HelicalTrackHit hthit = new HelicalTrack3DHit(pos, cov, hit.getdEdx(), hit.getTime(), hit.getRawHits(),
+ _ID.getName(de), _ID.getLayer(de), _ID.getBarrelEndcapFlag(de));
+ hitrelations.add(new MyLCRelation(hthit, ohit));
+ helhits.add(hthit);
+
+ }
+ else throw new RuntimeException("No way to identify de");
+ }
+ }
+// }
//
// } catch(Exception e) {
// System.out.println("Warning, could not complete Identification for smeared hits. Reason: "+e.getMessage());