1 package org.lcsim.util.heprep;
2
3 import hep.graphics.heprep.HepRepFactory;
4 import hep.graphics.heprep.HepRepInstance;
5 import hep.graphics.heprep.HepRepPoint;
6 import hep.graphics.heprep.HepRepType;
7 import hep.graphics.heprep.HepRepTypeTree;
8 import hep.graphics.heprep.HepRepInstanceTree;
9 import java.awt.Color;
10 import java.util.List;
11 import org.lcsim.event.EventHeader;
12 import org.lcsim.event.EventHeader.LCMetaData;
13 import org.lcsim.event.MCParticle;
14 import org.lcsim.event.SimTrackerHit;
15
16
17
18
19
20
21 class SimTrackerHitConverter implements HepRepCollectionConverter
22 {
23 public boolean canHandle(Class k)
24 {
25 return SimTrackerHit.class.isAssignableFrom(k);
26 }
27 public void convert(EventHeader event, List collection, HepRepFactory factory, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree)
28 {
29 LCMetaData meta = event.getMetaData(collection);
30 String name = meta.getName();
31
32 HepRepType typeX = factory.createHepRepType(typeTree, name);
33 typeX.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
34 typeX.addAttValue("drawAs","Point");
35 typeX.addAttValue("color",Color.GREEN);
36 typeX.addAttValue("fill",true);
37 typeX.addAttValue("fillColor",Color.GREEN);
38 typeX.addAttValue("MarkName","Box");
39 typeX.addAttDef("dEdx", "Hit dEdx", "physics", "");
40 typeX.addAttDef("time", "Hit time", "physics", "");
41 typeX.addAttDef("mcEnergy", "MC Particle Energy", "physics", "");
42
43 for (SimTrackerHit hit : (List<SimTrackerHit>) collection)
44 {
45 double[] pos = hit.getPoint();
46 HepRepInstance instanceX = factory.createHepRepInstance(instanceTree, typeX);
47 instanceX.addAttValue("dEdx",hit.getdEdx());
48 instanceX.addAttValue("time",hit.getTime());
49 MCParticle particle = hit.getMCParticle();
50 if (particle != null) instanceX.addAttValue("mcEnergy",particle.getEnergy());
51 HepRepPoint pp = factory.createHepRepPoint(instanceX,pos[0],pos[1],pos[2]);
52 }
53 }
54 }