3 modified files
lcsim-contrib/src/main/java/org/lcsim/contrib/Partridge/Occupancy
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
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
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