View Javadoc

1   /*
2    * SeedLayer.java
3    *
4    * Created on March 29, 2006, 1:59 PM
5    *
6    */
7   
8   package org.lcsim.recon.tracking.seedtracker;
9   
10  import org.lcsim.fit.helicaltrack.HitIdentifier;
11  import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
12  
13  /**
14   * Encapsulates information about a tracker layer needed for the SeedTracker algorithm
15   * @author Richard Partridge
16   * @version 1.0
17   */
18  public class SeedLayer {
19      /**
20       * Enumeration of possible layer types
21       */
22      public enum SeedType {
23          /**
24           * Seed layer
25           */
26          Seed, 
27          /**
28           * Confirmation layer
29           */
30          Confirm, 
31          /**
32           * Track extension layer
33           */
34          Extend}
35  
36      private String _detname;
37      private int _layer;
38      private BarrelEndcapFlag _beflag;
39      private SeedType _type;
40      
41      /**
42       * Creates a new instance of SeedLayer
43       * @param detname Decector name
44       * @param layer Layer number
45       * @param beflag Barrel-endcap flag
46       * @param type Layer type
47       */
48      public SeedLayer(String detname, int layer, BarrelEndcapFlag beflag, SeedType type) {
49          _detname = detname;
50          _layer = layer;
51          _beflag = beflag;
52          _type = type;
53      }
54      
55      /**
56       * Return the detector name
57       * @return Detector name
58       */
59      public String getDetName() {
60          return _detname;
61      }
62      
63      /**
64       * Return the layer number
65       * @return Layer number
66       */
67      public int getLayer() {
68          return _layer;
69      }
70      
71      /**
72       * Return the BarrelEndcapFlag
73       * @return Barrel-endcap flag
74       */
75      public BarrelEndcapFlag getBarrelEndcapFlag() {
76          return _beflag;
77      }
78      
79      /**
80       * Retrun the layer type
81       * @return Layer type
82       */
83      public SeedType getType() {
84          return _type;
85      }
86  
87      public String LayerID() {
88          return HitIdentifier.Identifier(_detname, _layer, _beflag);
89      }
90      
91      @Override
92      public boolean equals(Object other) {
93          if (this == other) return true; 
94          if (!(other instanceof SeedLayer)) return false; 
95          SeedLayer lyr = (SeedLayer) other; 
96          
97          return (this._beflag.equals(lyr._beflag) && this._detname.equals(lyr.getDetName())
98                  && this._layer == lyr.getLayer() && this._type.equals(lyr.getType())); 
99      }
100     
101     @Override
102     public int hashCode(){
103         return (_detname + _beflag.toString() + _layer + _type.toString()).hashCode(); 
104     }
105 }