View Javadoc

1   /*
2    * SiTrackerHit.java
3    *
4    * Created on November 19, 2007, 11:34 AM
5    *
6    * To change this template, choose Tools | Template Manager
7    * and open the template in the editor.
8    */
9   
10  package org.lcsim.recon.tracking.digitization.sisim;
11  
12  import hep.physics.matrix.SymmetricMatrix;
13  import hep.physics.vec.Hep3Vector;
14  import java.util.List;
15  import org.lcsim.detector.ITransform3D;
16  import org.lcsim.detector.tracker.silicon.ChargeCarrier;
17  import org.lcsim.detector.tracker.silicon.SiSensor;
18  import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
19  import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
20  import org.lcsim.event.RawTrackerHit;
21  import org.lcsim.event.TrackerHit;
22  
23  /**
24   *
25   * @author tknelson
26   */
27  public class SiTrackerHit extends TransformableTrackerHit
28  {
29      
30      // Cached derived quantities
31      private SiSensorElectrodes _electrodes;
32      
33      /** Creates a new instance of SiTrackerHit */
34      public SiTrackerHit(Hep3Vector position_vector, SymmetricMatrix covariance_matrix, double energy, double time, List<RawTrackerHit> raw_hits, TrackerHitType decoded_type)
35      {
36          super(position_vector, covariance_matrix, energy, time, raw_hits, decoded_type);
37      }
38      
39      public SiTrackerHit(TrackerHit hit)
40      {
41          super(hit);
42      }
43      
44      public SiTrackerHit(TrackerHit hit, TrackerHitType.CoordinateSystem coordinate_system)
45      {
46          super(hit,coordinate_system);
47      }
48      
49      public SiTrackerHit getTransformedHit(TrackerHitType.CoordinateSystem coordinate_system)
50      {
51          return new SiTrackerHit(super.getTransformedHit(coordinate_system));
52      }
53      
54      public SiTrackerHit getTransformedHit(ITransform3D global_to_local)
55      {
56          return new SiTrackerHit(super.getTransformedHit(global_to_local));
57      }
58      
59      // Additional information
60      public SiSensor getSensor()
61      {
62          return (SiSensor)super.getSensor();
63      }
64      
65      public SiSensorElectrodes getReadoutElectrodes()
66      {
67          if (_electrodes == null)
68          {
69              RawTrackerHit raw_hit = this.getRawHits().get(0);
70              SiTrackerIdentifierHelper id_helper = getIdentifierHelper();
71              _electrodes = getSensor().getReadoutElectrodes(ChargeCarrier.getCarrier(id_helper.getSideValue(raw_hit.getIdentifier())));
72          }
73          return _electrodes;
74      }
75      
76      public SiTrackerIdentifierHelper getIdentifierHelper()
77      {
78          return (SiTrackerIdentifierHelper)super.getIdentifierHelper();
79      }
80      
81  }