Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/Partridge/Occupancy on MAIN
TrackAnalysisDriver.java+80-21.3 -> 1.4
TrackReconstructionDriver.java+7-41.1 -> 1.2
TrackerHitDriver_sATLAS.java+17-51.1 -> 1.2
+104-11
3 modified files
Minor changes

lcsim-contrib/src/main/java/org/lcsim/contrib/Partridge/Occupancy
TrackAnalysisDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- TrackAnalysisDriver.java	8 May 2009 01:35:15 -0000	1.3
+++ TrackAnalysisDriver.java	21 May 2009 21:49:54 -0000	1.4
@@ -20,12 +20,17 @@
 
 import java.util.Set;
 import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IReadout;
 import org.lcsim.detector.tracker.silicon.ChargeCarrier;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
 import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.SimTrackerHit;
 import org.lcsim.geometry.Detector;
+import org.lcsim.recon.tracking.digitization.sisim.GenericReadoutChip;
+import org.lcsim.recon.tracking.digitization.sisim.ReadoutChip;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
@@ -65,11 +70,39 @@
         //  Increment the event counter
         nevt++;
 
+        System.out.println("B: "+event.getDetector().getFieldMap().getField(new BasicHep3Vector(0., 0.,0.)));
+
+        ReadoutChip chip = new GenericReadoutChip();
+
+        int hittot = 0;
         for (SiSensor sensor : _process_sensors) {
             SiSensorElectrodes electrodes = sensor.getReadoutElectrodes(ChargeCarrier.HOLE);
             int nchan = electrodes.getNCells();
-            int nhits = sensor.getReadout().getHits(RawTrackerHit.class).size();
-            double occ = (double) 40 * nhits / nchan;
+            IReadout readout = sensor.getReadout();
+
+            List<RawTrackerHit> raw_hits = readout.getHits(RawTrackerHit.class);
+            int nhits = raw_hits.size();
+            hittot += nhits;
+            Set<SimTrackerHit> simhits = new HashSet<SimTrackerHit>();
+/*
+            for (RawTrackerHit hit : raw_hits) {
+                double charge = chip.decodeCharge(hit);
+                aida.histogram1D("Hit charge", 100, 0., 100000.).fill(charge);
+                aida.cloud1D("Number of SimTrackerHits per raw hit").fill(hit.getSimTrackerHits().size());
+                double energy = 0.;
+                for (SimTrackerHit shit : hit.getSimTrackerHits()) {
+                    simhits.add(shit);
+                    energy += 1000 * shit.getdEdx();
+                }
+                aida.histogram1D("SimTrackerHit energy", 100, 0., 10.).fill(energy);
+//                aida.cloud2D("charge vs SimTrackerHit energy").fill(charge, energy);
+            }
+*/
+
+            double occ = 2. * ((double) nhits) / ((double) nchan);
+//            if (nhits > 0) {
+//                System.out.println("sensor "+sensor.getName()+" has nhits: " + nhits + " nchan: " + nchan + " occ: " + occ);
+//            }
             Hep3Vector pos = sensor.getGeometry().getPosition();
             double x = pos.x();
             double y = pos.y();
@@ -77,7 +110,9 @@
             double r = Math.sqrt(x * x + y * y);
             int ri = 2 * ((int) Math.round(r / 20));
             int zi = 2 * ((int) Math.round(Math.abs(z) / 20));
+
             boolean barrel = !sensor.getName().toUpperCase().contains("ENDCAP");
+            if (!barrel) continue;
             String identifier;
             if (barrel) {
                 identifier = "Barrel at r = " + ri;
@@ -96,6 +131,49 @@
             }
         }
 
+        System.out.println("Total number of hit channels: " + hittot);
+/*
+        List<List<SimTrackerHit>> simall =
+                (List<List<SimTrackerHit>>) event.get(SimTrackerHit.class);
+
+        for (List<SimTrackerHit> simcol : simall) {
+            for (SimTrackerHit hit : simcol) {
+                IDetectorElement de = hit.getDetectorElement();
+                Hep3Vector pos = hit.getPositionVec();
+                double x = pos.x();
+                double y = pos.y();
+                double z = pos.z();
+                double r = Math.sqrt(x * x + y * y);
+                Hep3Vector p = hit.getMCParticle().getMomentum();
+                double px = p.x();
+                double py = p.y();
+                double pz = p.z();
+                double pr = Math.sqrt(px * px + py * py);
+                double eta = -Math.log(Math.tan(0.5 * Math.atan2(pr, pz)));
+                String detname = hit.getSubdetector().getName();
+                int layer = hit.getLayer();
+                aida.histogram1D("MC eta for Layer " + detname + layer, 50, -2.5, 2.5).fill(eta);
+                aida.histogram1D("SimTracker Hi z for Layer " + detname + layer, 50, -120., 120.).fill(z / 10);
+//                de.
+            }
+        }
+
+        for (MCParticle mcp : event.getMCParticles()) {
+            if (mcp.getCharge() == 0) continue;
+            Hep3Vector p = mcp.getMomentum();
+            double px = p.x();
+            double py = p.y();
+            double pz = p.z();
+            double pr = Math.sqrt(px * px + py * py);
+            double eta = -Math.log(Math.tan(0.5 * Math.atan2(pr, pz)));
+            if (mcp.getGeneratorStatus() == mcp.FINAL_STATE) {
+                aida.histogram1D("MCP eta - final state",50,-2.5, 2.5).fill(eta);
+            }
+            if (mcp.getSimulatorStatus().isCreatedInSimulation()) {
+                aida.histogram1D("MCP eta - created in simulation",50, -2.5, 2.5).fill(eta);
+            }
+        }
+*/
         return;
     }
 

lcsim-contrib/src/main/java/org/lcsim/contrib/Partridge/Occupancy
TrackReconstructionDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TrackReconstructionDriver.java	7 May 2009 23:59:14 -0000	1.1
+++ TrackReconstructionDriver.java	21 May 2009 21:49:54 -0000	1.2
@@ -28,20 +28,23 @@
         //  Digitization and hit making driver for planar sensors
         TrackerHitDriver_sATLAS thd = new TrackerHitDriver_sATLAS();
         add(thd);
+        System.gc();
 
         //  Driver to make HelicalTrackHits for tracking
         HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
         hitdriver.addCollection(((TrackerHitDriver_sATLAS) thd).getStripHits1DName(), HitType.Digitized);
         hitdriver.addCollection(((TrackerHitDriver_sATLAS) thd).getPixelHitsName(), HitType.Digitized);
         hitdriver.OutputCollection("HelicalTrackHits");
+        hitdriver.setMaxSeperation(10.);
+        hitdriver.setTolerance(2.0);
         add(hitdriver);
 
         //  Tracking code
-//        String sfile = StrategyXMLUtils.getDefaultStrategiesPrefix() + "sATLASFull-JeffMarch26.xml";
-//        List<SeedStrategy> slist = StrategyXMLUtils.getStrategyListFromResource(sfile);
+        String sfile = StrategyXMLUtils.getDefaultStrategiesPrefix() + "sATLASFull-JeffMarch26.xml";
+        List<SeedStrategy> slist = StrategyXMLUtils.getStrategyListFromResource(sfile);
 
-//        SeedTracker st = new SeedTracker(slist);
-//        add(st);
+        SeedTracker st = new SeedTracker(slist);
+        add(st);
     }
 
 

lcsim-contrib/src/main/java/org/lcsim/contrib/Partridge/Occupancy
TrackerHitDriver_sATLAS.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TrackerHitDriver_sATLAS.java	7 May 2009 23:59:14 -0000	1.1
+++ TrackerHitDriver_sATLAS.java	21 May 2009 21:49:54 -0000	1.2
@@ -4,7 +4,6 @@
  */
 package org.lcsim.contrib.Partridge.Occupancy;
 
-import org.lcsim.contrib.sATLAS.*;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -46,6 +45,7 @@
     StripHitMaker _strip_clusterer;
     PixelHitMaker _pixel_clusterer;
     int _nev = 0;
+    long _tend;
 
     /**
      * Creates a new instance of TrackerHitDriver
@@ -60,8 +60,8 @@
         GenericReadoutChip strip_readout = new GenericReadoutChip();
         strip_readout.setNoiseIntercept(300.);
         strip_readout.setNoiseSlope(30.);
-        strip_readout.setNoiseThreshold(4000.);
-        strip_readout.setNeighborThreshold(4000.);
+        strip_readout.setNoiseThreshold(6000.);
+        strip_readout.setNeighborThreshold(6000.);
         GenericReadoutChip pixel_readout = new GenericReadoutChip();
         pixel_readout.setNoiseIntercept(300.);
         pixel_readout.setNoiseSlope(30.);
@@ -73,8 +73,8 @@
 
         //  Instantiate a nearest neighbor clustering algorithm for the pixels
         NearestNeighbor strip_clustering = new NearestNeighbor();
-        strip_clustering.setSeedThreshold(4000.);
-        strip_clustering.setNeighborThreshold(4000.);
+        strip_clustering.setSeedThreshold(6000.);
+        strip_clustering.setNeighborThreshold(6000.);
 
         //  Instantiate a nearest neighbor clustering algorithm for the pixels
         NearestNeighbor pixel_clustering = new NearestNeighbor();
@@ -156,10 +156,17 @@
     public void process(EventHeader event) {
         super.process(event);
 
+       long tbefore = System.currentTimeMillis();
+
+       if (_nev > 0) System.out.println("HelicalTrackHit construction + next event initialization time: "+(tbefore - _tend));
+       System.gc();
+
         //  Print out the event number
         System.out.println("TrackerHitDriver processing event "+_nev);
         _nev++;
 
+        long tstart = System.currentTimeMillis();
+
         // Lists of hits
         List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
         List<SiTrackerHit> hits_strip1D = new ArrayList<SiTrackerHit>();
@@ -184,6 +191,11 @@
         event.put(getStripHits1DName(), hits_strip1D, SiTrackerHitStrip1D.class, 0, toString());
         event.put(getPixelHitsName(), hits_pixel, SiTrackerHitPixel.class, 0, toString());
 
+        long tdigi = System.currentTimeMillis() - tstart;
+        System.out.println("Digitization time: "+tdigi);
+        System.gc();
+        
+        _tend = System.currentTimeMillis();
     }
 
     /**
CVSspam 0.2.8