1 package org.lcsim.recon.tracking.vsegment.clustering;
2
3 import java.util.*;
4
5 import org.lcsim.event.EventHeader;
6 import org.lcsim.recon.cat.util.NoSuchParameterException;
7 import org.lcsim.util.Driver;
8
9 import org.lcsim.recon.tracking.vsegment.geom.Sensor;
10 import org.lcsim.recon.tracking.vsegment.geom.SensorType;
11 import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
12 import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
13 import org.lcsim.recon.tracking.vsegment.hit.base.TrackerClusterBasic;
14 import org.lcsim.recon.tracking.vsegment.mctruth.MCTruth;
15
16
17
18
19
20
21
22
23
24 public class ClusteringDriver extends Driver {
25
26
27
28 public ClusteringDriver(Clusterer clusterer) {
29 _clusterer = clusterer;
30 _inMapName = "DigiTrackerHits";
31 _outMapName = "TrackerClusters";
32 }
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public void set(String name, String value) {
54 if (name.equalsIgnoreCase("INPUT_MAP_NAME")) {
55 _inMapName = value;
56 } else if (name.equalsIgnoreCase("OUTPUT_MAP_NAME")) {
57 _outMapName = value;
58 } else {
59 throw new NoSuchParameterException(name, this.getClass());
60 }
61 }
62
63
64
65 public void process(EventHeader event) {
66
67
68
69
70 super.process(event);
71
72 HashMap<Sensor, ArrayList<DigiTrackerHit>> inMap = (HashMap<Sensor, ArrayList<DigiTrackerHit>>) event.get(_inMapName);
73 HashMap<Sensor, ArrayList<TrackerCluster>> outMap = new HashMap<Sensor, ArrayList<TrackerCluster>>();
74
75 for (Sensor sensor : inMap.keySet()) {
76 ArrayList<TrackerCluster> clusterList = _clusterer.findClusters(sensor, inMap.get(sensor));
77 if ( ! clusterList.isEmpty()) outMap.put(sensor, clusterList);
78 }
79
80 MCTruth mcTruth = null;
81 try {
82 mcTruth = (MCTruth) event.get("MCTruth");
83 } catch (IllegalArgumentException x) {}
84 if (mcTruth != null) mcTruth.setTrackerClusters(outMap);
85
86 event.put(_outMapName, outMap);
87 }
88
89
90
91 protected String _inMapName;
92 protected String _outMapName;
93 protected Clusterer _clusterer;
94 }