Print

Print


Commit in lcsim/src/org/lcsim/fit/helicaltrack on MAIN
HelicalTrackHitDriver.java+21-41.37 -> 1.38
fixed problem with handling noise hits (having no MC paren) for Base type of hit collection

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrackHitDriver.java 1.37 -> 1.38
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());
CVSspam 0.2.8