1 added + 6 modified, total 7 files
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.4 -r1.5
--- MaterialManager.java 18 Feb 2008 23:26:24 -0000 1.4
+++ MaterialManager.java 14 Mar 2008 17:49:09 -0000 1.5
@@ -271,7 +271,7 @@
double X0 = 10. * mat.getRadiationLength() / mat.getDensity();
double wgt = vol / X0;
zwgt += z0 * wgt;
- totwgt += wgt;
+ totwgt += wgt;
}
if (totwgt > 0.) zwgt /= totwgt;
lcsim/src/org/lcsim/contrib/seedtracker
diff -u -r1.2 -r1.3
--- HitIdentifier.java 4 Feb 2008 20:51:32 -0000 1.2
+++ HitIdentifier.java 14 Mar 2008 17:49:09 -0000 1.3
@@ -10,13 +10,11 @@
import java.util.ArrayList;
import java.util.List;
+import org.lcsim.contrib.SiStripSim.SiTrackerHit;
import org.lcsim.detector.IDetectorElement;
import org.lcsim.detector.DetectorIdentifierHelper;
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.detector.identifier.IExpandedIdentifier;
-import org.lcsim.detector.identifier.IIdentifierDictionary;
-import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.TrackerHit;
import org.lcsim.contrib.onoprien.tracking.hit.TrackerCluster;
import org.lcsim.contrib.onoprien.tracking.hitmaking.OldTrackerHit;
@@ -60,6 +58,11 @@
delist.add(cluster.getSensor().getDetectorElement());
}
}
+
+ if (thit instanceof SiTrackerHit){
+ SiTrackerHit sihit =(SiTrackerHit) thit;
+ delist.add(sihit.getSensor());
+ }
return delist;
}
lcsim/src/org/lcsim/util/heprep
diff -N HelicalTrackHitConverter.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ HelicalTrackHitConverter.java 14 Mar 2008 17:49:10 -0000 1.1
@@ -0,0 +1,97 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.util.heprep;
+
+import hep.graphics.heprep.HepRepFactory;
+import hep.graphics.heprep.HepRepInstance;
+import hep.graphics.heprep.HepRepInstanceTree;
+import hep.graphics.heprep.HepRepType;
+import hep.graphics.heprep.HepRepTypeTree;
+import java.awt.Color;
+import java.util.List;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
+import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+
+/**
+ * HepRepConverter for display of the hits of Richard Partridge's framework.
+ * @author cozzy
+ */
+public class HelicalTrackHitConverter implements HepRepCollectionConverter{
+
+ public boolean canHandle(Class k){
+ return HelicalTrackHit.class.isAssignableFrom(k);
+ }
+
+ public void convert (EventHeader event, List collection, HepRepFactory factory, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree){
+
+ LCMetaData meta = event.getMetaData(collection);
+ String name = meta.getName();
+
+ HepRepType type3d = factory.createHepRepType(typeTree,name+"3d");
+ type3d.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
+ type3d.addAttValue("drawAs","Point");
+ type3d.addAttValue("color",Color.ORANGE);
+ type3d.addAttValue("fill",true);
+ type3d.addAttValue("fillColor",Color.ORANGE);
+ type3d.addAttValue("MarkName","Box");
+ type3d.addAttDef("dEdx", "Hit dEdx", "physics", "");
+ type3d.addAttDef("time", "Hit time", "physics", "");
+ type3d.addAttDef("flagValue", "BarrelEndcapFlag value","physics","");
+
+ HepRepType type2d = factory.createHepRepType(typeTree,name+"2d");
+ type2d.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
+ type2d.addAttValue("drawAs","Line");
+ type2d.addAttValue("color",Color.ORANGE);
+ type2d.addAttDef("dEdx", "Hit dEdx", "physics", "");
+ type2d.addAttDef("time", "Hit time", "physics", "");
+
+ HepRepType typeCenter = factory.createHepRepType(typeTree,name+"2dSegmentCenters");
+ typeCenter.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
+ typeCenter.addAttValue("drawAs","Point");
+ typeCenter.addAttValue("color",Color.ORANGE);
+ typeCenter.addAttValue("fill",true);
+ typeCenter.addAttValue("fillColor",Color.ORANGE);
+ typeCenter.addAttValue("MarkName","Box");
+ typeCenter.addAttDef("dEdx", "Hit dEdx", "physics", "");
+ typeCenter.addAttDef("time", "Hit time", "physics", "");
+
+ for (HelicalTrackHit hit : (List<HelicalTrackHit>)collection){
+
+ double[] pos = hit.getPosition();
+
+ if (hit instanceof HelicalTrack3DHit) {
+ HepRepInstance instance = factory.createHepRepInstance(instanceTree,type3d);
+ instance.addAttValue("dEdx",hit.getdEdx());
+ instance.addAttValue("time",hit.getTime());
+ String flagValue=((HelicalTrack3DHit)hit).getBarrelEndcapFlag().toString();
+ instance.addAttValue("flagValue",flagValue);
+ factory.createHepRepPoint(instance, pos[0], pos[1], pos[2]);
+ }
+
+ else if (hit instanceof HelicalTrack2DHit){
+
+ HepRepInstance instance2d = factory.createHepRepInstance(instanceTree,type2d);
+ instance2d.addAttValue("dEdx",hit.getTrackerHit().getdEdx());
+ instance2d.addAttValue("time",hit.getTrackerHit().getTime());
+ HelicalTrack2DHit h = (HelicalTrack2DHit) hit;
+ factory.createHepRepPoint(instance2d, pos[0], pos[1], h.zmin());
+ factory.createHepRepPoint(instance2d, pos[0], pos[1], h.zmax());
+
+ HepRepInstance instanceCenter = factory.createHepRepInstance(instanceTree,typeCenter);
+ instanceCenter.addAttValue("dEdx",hit.getTrackerHit().getdEdx());
+ instanceCenter.addAttValue("time",hit.getTrackerHit().getTime());
+ factory.createHepRepPoint(instanceCenter,pos[0],pos[1],pos[2]);
+ }
+
+
+ }
+
+ }
+
+}
lcsim/src/org/lcsim/util/heprep
diff -u -r1.17 -r1.18
--- LCSimHepRepConverter.java 10 Jan 2008 00:57:58 -0000 1.17
+++ LCSimHepRepConverter.java 14 Mar 2008 17:49:10 -0000 1.18
@@ -49,6 +49,7 @@
register(new Hep3VectorConverter());
register(new DisplayHitModules());
register(new SiTrackerHitStrip1DConverter());
+ register(new HelicalTrackHitConverter());
}
catch (Exception x)
{
lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.4 -r1.5
--- HelicalTrackHit.java 7 Feb 2008 18:20:51 -0000 1.4
+++ HelicalTrackHit.java 14 Mar 2008 17:49:10 -0000 1.5
@@ -7,18 +7,24 @@
package org.lcsim.fit.helicaltrack;
-import hep.physics.vec.BasicHep3Vector;
import java.lang.Comparable;
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.contrib.onoprien.tracking.hit.DigiTrackerHit;
+import org.lcsim.contrib.onoprien.tracking.hit.TrackerCluster;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.OldTrackerHit;
+import org.lcsim.event.MCParticle;
import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrackerHitMC;
/**
* Encapsulate the hit information needed by HelicalTrackFitter
* @author Richard Partridge
* @version 1.0
*/
-public class HelicalTrackHit implements Comparable {
+public class HelicalTrackHit implements Comparable, TrackerHit {
private TrackerHit _trackerhit;
private double _x;
@@ -159,4 +165,64 @@
if (_phi < 0.) _phi += 2. * Math.PI;
return;
}
+
+ /**
+ * Returns a list of MCParticles belonging to this hit.
+ * null is returned if no list can be found.
+ *
+ * @return A list of MCParticles, or null if none can be retrieved.
+ */
+ public List<MCParticle> getMCParticles(){
+
+ //BaseTrackerHitMC has this method
+ if (_trackerhit instanceof BaseTrackerHitMC)
+ return ((BaseTrackerHitMC)_trackerhit).mcParticles();
+
+ //Any of the SiStripSip BaseTrackerHits return a set of MCParticles, which must be converted to a list
+ else if (_trackerhit instanceof org.lcsim.contrib.SiStripSim.BaseTrackerHit) {
+ List<MCParticle> out = new ArrayList<MCParticle>();
+ out.addAll(((org.lcsim.contrib.SiStripSim.BaseTrackerHit)_trackerhit).getMCParticles());
+ return out;
+ }
+
+ //Getting this out of OldTrackerHit is slightly more convoluted...
+ else if (_trackerhit instanceof OldTrackerHit){
+ OldTrackerHit h = (OldTrackerHit) _trackerhit;
+ List<MCParticle> out = new ArrayList<MCParticle>();
+ for (TrackerCluster cluster : h.getClusters()) {
+ for (DigiTrackerHit dhit : cluster.getDigiHits()){
+ for (DigiTrackerHit dhit2 : dhit.getElementalHits()){
+ MCParticle p = dhit2.getMCParticle();
+ if(!out.contains(p)) out.add(p);
+ }
+ }
+ }
+ return out;
+ }
+ return null;
+ }
+
+ public double[] getPosition() {
+ return _trackerhit.getPosition();
+ }
+
+ public double[] getCovMatrix() {
+ return _trackerhit.getCovMatrix();
+ }
+
+ public double getdEdx() {
+ return _trackerhit.getdEdx();
+ }
+
+ public double getTime() {
+ return _trackerhit.getTime();
+ }
+
+ public int getType() {
+ return _trackerhit.getType();
+ }
+
+ public List getRawHits() {
+ return _trackerhit.getRawHits();
+ }
}
\ No newline at end of file
lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.6 -r1.7
--- HelicalTrackHitDriver.java 29 Feb 2008 18:40:39 -0000 1.6
+++ HelicalTrackHitDriver.java 14 Mar 2008 17:49:10 -0000 1.7
@@ -25,6 +25,7 @@
import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.event.EventHeader;
import org.lcsim.event.TrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
import org.lcsim.util.Driver;
@@ -203,7 +204,7 @@
}
// Put the HelicalTrackHits back into the event
- event.put(_outname, helhits);
+ event.put(_outname, helhits,HelicalTrackHit.class,0);
}
/**
lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.2 -r1.3
--- HelicalTrack3DHit.java 6 Feb 2008 02:33:50 -0000 1.2
+++ HelicalTrack3DHit.java 14 Mar 2008 17:49:10 -0000 1.3
@@ -61,4 +61,10 @@
public boolean isBarrel() {
return _beflag == BarrelEndcapFlag.BARREL;
}
-}
\ No newline at end of file
+
+ public BarrelEndcapFlag getBarrelEndcapFlag(){
+ return _beflag;
+ }
+
+}
+
\ No newline at end of file
CVSspam 0.2.8