1 /*
2 * HitManager.java
3 *
4 * Created on August 4, 2007, 4:03 PM
5 *
6 */
7 package org.lcsim.recon.tracking.seedtracker;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12 import org.lcsim.event.EventHeader;
13 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
14
15 /**
16 * Organize tracker hits into lists of hits sorted by detector name, layer number, and barrel-endcap flag
17 * @author Richard Partridge
18 * @version 1.0
19 */
20 public class HitManager {
21
22 private SectorManager _smanager;
23 private boolean _doSectoring=true;
24 /** Creates a new instance of HitManager */
25 public HitManager() {
26
27 // Instantiate a default sector manager with coarse sectoring
28 _smanager = new SectorManager();
29 }
30
31 /**
32 * Sort the hits into distinct lists where each list has a unique detector name, layer number, and barrel endcap flag.
33 * Also calculate the minimum and maximum hit radius and z coordinate for each list.
34 * @param event EventHeader for the event to be organized
35 * @deprecated use OrganizeHits(List<HelicalTrackHit>) instead
36 */
37 public void OrganizeHits(EventHeader event) {
38
39 // Retrieve the HelicalTrackHits
40 List<HelicalTrackHit> hitcol = event.get(HelicalTrackHit.class, "HelicalTrackHits");
41
42 OrganizeHits(hitcol);
43 }
44
45 /**
46 * Sort the hits into distinct lists where each list has a unique detector name, layer number, and barrel endcap flag.
47 * Also calculate the minimum and maximum hit radius and z coordinate for each list.
48 * @param hitCol List of <code>HelicalTrackHits</code> to be organized
49 */
50 public void OrganizeHits(List<HelicalTrackHit> hitCol) {
51
52 // Initialize the sector manager
53 _smanager.Initialize();
54
55 // Loop over the hits and let the SectorManager keep track of them
56 for (HelicalTrackHit hit : hitCol) {
57 // Tell the sector manager about this hit
58 _smanager.AddHit(hit);
59 }
60 }
61
62 public SectorManager getSectorManager() {
63 return _smanager;
64 }
65
66 public void setSectorParams(int nphi, double dz) {
67 _smanager.setSectorParams(nphi, dz);
68 }
69
70 public void setSectorParams(List<SeedStrategy> slist, double bfield, double rtrk) {
71 _smanager.setSectorParams(slist, bfield, rtrk);
72 }
73
74 public List<Sector> getSectors(SeedLayer seedlayer) {
75 return _smanager.getSectors(seedlayer);
76 }
77
78 public void setDoSectoring(boolean doSectoring){
79 _doSectoring=doSectoring;
80 }
81
82 public boolean getDoSectoring(){
83 return _doSectoring;
84 }
85
86 /**
87 * Return the list of tracker hits associated with a specified SeedLayer
88 * @param seedlayer Seedlayer to look at
89 * @return List of TrackerHits
90 */
91 public List<HelicalTrackHit> getTrackerHits(SeedLayer seedlayer) {
92
93 // Get the list of sectors for this SeedLayer
94 List<Sector> sectorlist = getSectors(seedlayer);
95
96 // Make a list of all the hits in these sectors
97 List<HelicalTrackHit> hitlist = new ArrayList<HelicalTrackHit>();
98 for (Sector sector : sectorlist) {
99 hitlist.addAll(sector.Hits());
100 }
101
102 return hitlist;
103 }
104 }