View Javadoc

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 }