Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN
HPSStripMaker.java+38-481.1 -> 1.2
...change to HPSFittedRawTrackerHits....

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSStripMaker.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HPSStripMaker.java	24 Apr 2012 14:07:08 -0000	1.1
+++ HPSStripMaker.java	24 Apr 2012 17:45:44 -0000	1.2
@@ -17,7 +17,6 @@
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.tracker.silicon.*;
 import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.base.BaseTrackerHit;
 import org.lcsim.recon.tracking.digitization.sisim.*;
 
 /**
@@ -33,20 +32,20 @@
     int _max_noaverage_nstrips = 4;
     // Absolute maximum cluster size
     int _max_cluster_nstrips = 10;
-    // Readout chip needed to decode hit information
-    ReadoutChip _readout_chip;
-    // Sensor simulation needed to correct for Lorentz drift
-    SiSensorSim _simulation;
     // Identifier helper (reset once per sensor)
     SiTrackerIdentifierHelper _sid_helper;
     // Temporary map connecting hits to strip numbers for sake of speed (reset once per sensor)
-    Map<HPSTrackerHit, Integer> _strip_map = new HashMap<HPSTrackerHit, Integer>();
+    Map<HPSFittedRawTrackerHit, Integer> _strip_map = new HashMap<HPSFittedRawTrackerHit, Integer>();
     double _oneClusterErr = 1 / Math.sqrt(12);
     double _twoClusterErr = 1 / 5;
     double _threeClusterErr = 1 / 3;
     double _fourClusterErr = 1 / 2;
     double _fiveClusterErr = 1;
 
+    public HPSStripMaker(HPSClusteringAlgorithm algo){
+        _clustering=algo;
+    }
+    
     public String getName() {
         return _NAME;
     }
@@ -82,50 +81,50 @@
 
         // Get hits for this sensor
         IReadout ro = sensor.getReadout();
-        List<HPSTrackerHit> hps_hits = ro.getHits(HPSTrackerHit.class);
+        List<HPSFittedRawTrackerHit> hps_hits = ro.getHits(HPSFittedRawTrackerHit.class);
        
-        Map<SiSensorElectrodes, List<HPSTrackerHit>> electrode_hits = new HashMap<SiSensorElectrodes, List<HPSTrackerHit>>();
+        Map<SiSensorElectrodes, List<HPSFittedRawTrackerHit>> electrode_hits = new HashMap<SiSensorElectrodes, List<HPSFittedRawTrackerHit>>();
 
-        for (HPSTrackerHit hps_hit : hps_hits) {
+        for (HPSFittedRawTrackerHit hps_hit : hps_hits) {
 
             // get id and create strip map, get electrodes.
-            IIdentifier id = hps_hit.getIdentifier();
+            IIdentifier id = hps_hit.getRawTrackerHit().getIdentifier();
             _strip_map.put(hps_hit, _sid_helper.getElectrodeValue(id));
 
             // Get electrodes and check that they are strips
             //System.out.println("proc raw hit from: " + DetectorElementStore.getInstance().find(raw_hit.getIdentifier()).get(0).getName());
             ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(id));
-            SiSensorElectrodes electrodes = ((SiSensor) hps_hit.getDetectorElement()).getReadoutElectrodes(carrier);
+            SiSensorElectrodes electrodes = ((SiSensor) hps_hit.getRawTrackerHit().getDetectorElement()).getReadoutElectrodes(carrier);
             if (!(electrodes instanceof SiStrips)) {
                 continue;
             }
 
             if (electrode_hits.get(electrodes) == null) {
-                electrode_hits.put(electrodes, new ArrayList<HPSTrackerHit>());
+                electrode_hits.put(electrodes, new ArrayList<HPSFittedRawTrackerHit>());
             }
 
             electrode_hits.get(electrodes).add(hps_hit);
         }
 
         for (Map.Entry entry : electrode_hits.entrySet()) {
-            hits.addAll(makeHits(sensor, (SiStrips) entry.getKey(), (List<HPSTrackerHit>) entry.getValue()));
+            hits.addAll(makeHits(sensor, (SiStrips) entry.getKey(), (List<HPSFittedRawTrackerHit>) entry.getValue()));
         }
 
         return hits;
     }
 
-    public List<SiTrackerHit> makeHits(SiSensor sensor, SiSensorElectrodes electrodes,List<HPSTrackerHit> hps_hits) {
+    public List<SiTrackerHit> makeHits(SiSensor sensor, SiSensorElectrodes electrodes,List<HPSFittedRawTrackerHit> hps_hits) {
 
      
 
         //  Call the clustering algorithm to make clusters
-        List<List<HPSTrackerHit>> cluster_list = _clustering.findClusters(hps_hits);
+        List<List<HPSFittedRawTrackerHit>> cluster_list = _clustering.findClusters(hps_hits);
 
         //  Create an empty list for the pixel hits to be formed from clusters
         List<SiTrackerHit> hits = new ArrayList<SiTrackerHit>();
 
         //  Make a pixel hit from this cluster
-        for (List<HPSTrackerHit> cluster : cluster_list) {
+        for (List<HPSFittedRawTrackerHit> cluster : cluster_list) {
 
             // Make a TrackerHit from the cluster if it meets max cluster size requirement
             if (cluster.size() <= _max_cluster_nstrips) {
@@ -159,25 +158,34 @@
         _fiveClusterErr = err;
     }
 
-    private SiTrackerHitStrip1D makeTrackerHit(List<HPSTrackerHit> cluster, SiSensorElectrodes electrodes) {
+    
+    public void setCentralStripAveragingThreshold(int max_noaverage_nstrips) {
+        _max_noaverage_nstrips = max_noaverage_nstrips;
+    }
+
+    public void setMaxClusterSize(int max_cluster_nstrips) {
+        _max_cluster_nstrips = max_cluster_nstrips;
+    }
+    
+    private SiTrackerHitStrip1D makeTrackerHit(List<HPSFittedRawTrackerHit> cluster, SiSensorElectrodes electrodes) {
         Hep3Vector position = getPosition(cluster, electrodes);
         SymmetricMatrix covariance = getCovariance(cluster, electrodes);
         double time = getTime(cluster);
         double energy = getEnergy(cluster);
         TrackerHitType type = new TrackerHitType(TrackerHitType.CoordinateSystem.GLOBAL, TrackerHitType.MeasurementType.STRIP_1D);
         List<RawTrackerHit> rth_cluster = new ArrayList<RawTrackerHit>();
-        for (HPSTrackerHit bth : cluster) {
+        for (HPSFittedRawTrackerHit bth : cluster) {
             rth_cluster.add((RawTrackerHit) bth);
         }
         SiTrackerHitStrip1D hit = new SiTrackerHitStrip1D(position, covariance, energy, time, rth_cluster, type);
         return hit;
     }
 
-    private Hep3Vector getPosition(List<HPSTrackerHit> cluster, SiSensorElectrodes electrodes) {
+    private Hep3Vector getPosition(List<HPSFittedRawTrackerHit> cluster, SiSensorElectrodes electrodes) {
         List<Double> signals = new ArrayList<Double>();
         List<Hep3Vector> positions = new ArrayList<Hep3Vector>();
 
-        for (HPSTrackerHit hit : cluster) {
+        for (HPSFittedRawTrackerHit hit : cluster) {
             signals.add(hit.getAmp());
             positions.add(((SiStrips) electrodes).getStripCenter(_strip_map.get(hit)));
         }
@@ -209,29 +217,10 @@
             position = VecOp.add(position, VecOp.mult(signal, positions.get(istrip)));
         }
         position = VecOp.mult(1 / total_charge, position);
-
-//        double total_charge = 0;
-//        Hep3Vector position = new BasicHep3Vector(0,0,0);
-//        
-//        for (RawTrackerHit hit : cluster)
-//        {
-//            int strip_number = _strip_map.get(hit);
-//            double signal = _readout_chip.decodeCharge(hit);
-//            
-//            total_charge += signal;
-//            position = VecOp.add(position,VecOp.mult(signal,((SiStrips)electrodes).getStripCenter(strip_number)));
-//        }
-//        position = VecOp.mult(1/total_charge,position);
-
-        // Put position in sensor coordinates
         electrodes.getParentToLocal().inverse().transform(position);
 
 //        System.out.println("Position \n"+position);
 
-        // Swim position back through lorentz drift direction to midpoint between bias surfaces
-        _simulation.setSensor((SiSensor) electrodes.getDetectorElement());
-        _simulation.lorentzCorrect(position, electrodes.getChargeCarrier());
-
 //        System.out.println("Lorentz corrected position \n"+position);
 
         // return position in global coordinates
@@ -239,14 +228,14 @@
 //        return electrodes.getLocalToGlobal().transformed(position);
     }
 
-    private double getTime(List<HPSTrackerHit> cluster) {
+    private double getTime(List<HPSFittedRawTrackerHit> cluster) {
         int time_sum = 0;
         int signal_sum = 0;
 
-        for (HPSTrackerHit hit : cluster) {
+        for (HPSFittedRawTrackerHit hit : cluster) {
 
             double signal = hit.getAmp();
-            double time = hit.getTime();
+            double time = hit.getT0();
 
             time_sum += time * signal;
             signal_sum += signal;
@@ -255,7 +244,7 @@
         return (double) time_sum / (double) signal_sum;
     }
 
-    private SymmetricMatrix getCovariance(List<HPSTrackerHit> cluster, SiSensorElectrodes electrodes) {
+    private SymmetricMatrix getCovariance(List<HPSFittedRawTrackerHit> cluster, SiSensorElectrodes electrodes) {
         SymmetricMatrix covariance = new SymmetricMatrix(3);
         covariance.setElement(0, 0, Math.pow(getMeasuredResolution(cluster, electrodes), 2));
         covariance.setElement(1, 1, Math.pow(getUnmeasuredResolution(cluster, electrodes), 2));
@@ -282,7 +271,7 @@
 //        return new SymmetricMatrix((Matrix)covariance_global);
     }
 
-    private double getMeasuredResolution(List<HPSTrackerHit> cluster, SiSensorElectrodes electrodes) // should replace this by a ResolutionModel class that gives expected resolution.  This could be a big job.
+    private double getMeasuredResolution(List<HPSFittedRawTrackerHit> cluster, SiSensorElectrodes electrodes) // should replace this by a ResolutionModel class that gives expected resolution.  This could be a big job.
     {
         double measured_resolution;
 
@@ -308,21 +297,22 @@
         return measured_resolution;
     }
 
-    private double getUnmeasuredResolution(List<HPSTrackerHit> cluster, SiSensorElectrodes electrodes) {
+    private double getUnmeasuredResolution(List<HPSFittedRawTrackerHit> cluster, SiSensorElectrodes electrodes) {
         // Get length of longest strip in hit
         double hit_length = 0;
-        for (HPSTrackerHit hit : cluster) {
+        for (HPSFittedRawTrackerHit hit : cluster) {
             hit_length = Math.max(hit_length, ((SiStrips) electrodes).getStripLength(_strip_map.get(hit)));
         }
         return hit_length / Math.sqrt(12);
     }
 
-    private double getEnergy(List<HPSTrackerHit> cluster) {
+    private double getEnergy(List<HPSFittedRawTrackerHit> cluster) {
         double total_charge = 0.0;
-        for (HPSTrackerHit hit : cluster) {
+        for (HPSFittedRawTrackerHit hit : cluster) {
             double signal = hit.getAmp();
             total_charge += signal;
         }
         return total_charge * DopedSilicon.ENERGY_EHPAIR;
     }
+
 }
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1