Author: [log in to unmask]
Date: Thu Jun 9 19:36:52 2016
New Revision: 4401
Log:
Allow subdetector name to be set in TrackerReconDriver and the classes it uses; apply code formatting
Modified:
java/trunk/tracking/src/main/java/org/hps/recon/tracking/MaterialSupervisor.java
java/trunk/tracking/src/main/java/org/hps/recon/tracking/SeedTracker.java
java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java
Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/MaterialSupervisor.java
=============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/MaterialSupervisor.java (original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/MaterialSupervisor.java Thu Jun 9 19:36:52 2016
@@ -23,73 +23,75 @@
import org.lcsim.geometry.Detector;
/**
- * Material manager using the detector geometry.
- *
- * Uses a private class to set up detector volumes. This can probably make use
- * of the DetectorGeometry classes from lcsim instead for the model. Something
- * to consider in the future.
+ * Material manager using the detector geometry. Uses a private class to set up detector volumes. This can probably make
+ * use of the DetectorGeometry classes from lcsim instead for the model. Something to consider in the future.
*
* @author Per Hansson <[log in to unmask]>
*/
-public class MaterialSupervisor extends MaterialManager
-{
+public class MaterialSupervisor extends MaterialManager {
private List<ScatteringDetectorVolume> _detectorVolumes = new ArrayList<ScatteringDetectorVolume>();
-
- public MaterialSupervisor()
- {
+ private String subdetectorName = "Tracker";
+
+ public MaterialSupervisor() {
super();
this._includeMS = true;
- }
-
- public MaterialSupervisor(boolean includeMS)
- {
+ }
+
+ public MaterialSupervisor(boolean includeMS) {
super(includeMS);
}
@Override
- public void setDebug(boolean debug)
- {
+ public void setDebug(boolean debug) {
super.setDebug(debug);
}
-
- public List<ScatteringDetectorVolume> getMaterialVolumes()
- {
+
+ public void setSubdetectorName(String subdetectorName) {
+ this.subdetectorName = subdetectorName;
+ }
+
+ public List<ScatteringDetectorVolume> getMaterialVolumes() {
return _detectorVolumes;
}
@Override
- public void buildModel(Detector det)
- {
+ public void buildModel(Detector det) {
boolean local_debug = false;
// super.buildModel(det);
if (DEBUG || local_debug) {
- System.out.printf("%s: ###########################################################\n", this.getClass().getSimpleName());
+ System.out.printf("%s: ###########################################################\n", this.getClass()
+ .getSimpleName());
System.out.printf("%s: Build detector model\n", this.getClass().getSimpleName());
}
- List<SiSensor> sensors = det.getSubdetector("Tracker").getDetectorElement().findDescendants(SiSensor.class);
- // List<SiTrackerModule> modules =
- // det.getDetectorElement().findDescendants(SiTrackerModule.class);
+
+ List<SiSensor> sensors = det.getSubdetector(subdetectorName).getDetectorElement()
+ .findDescendants(SiSensor.class);
+
if (DEBUG || local_debug) {
System.out.printf("%s: %d SiSensors:\n", this.getClass().getSimpleName(), sensors.size());
- System.out.printf("%s: %45s %35s %35s %35s %35s\n", this.getClass().getSimpleName(), "DE", "Origin", "u", "v", "w");
+ System.out.printf("%s: %45s %35s %35s %35s %35s\n", this.getClass().getSimpleName(), "DE", "Origin", "u",
+ "v", "w");
}
for (SiSensor module : sensors) {
SiStripPlane plane = new SiStripPlane(module);
if (DEBUG || local_debug) {
- System.out.printf("%s: %45s %35s %35s %35s %35s\n", this.getClass().getSimpleName(), plane.getDetectorElement().getName(), plane.getGeometry().getPosition().toString(), plane.getMeasuredCoordinate().toString(), plane.getUnmeasuredCoordinate().toString(),plane.getPsidePlane().getNormal().toString());
+ System.out.printf("%s: %45s %35s %35s %35s %35s\n", this.getClass().getSimpleName(), plane
+ .getDetectorElement().getName(), plane.getGeometry().getPosition().toString(), plane
+ .getMeasuredCoordinate().toString(), plane.getUnmeasuredCoordinate().toString(), plane
+ .getPsidePlane().getNormal().toString());
}
_detectorVolumes.add(plane);
}
if (DEBUG || local_debug) {
- System.out.printf("%s: ###########################################################\n", this.getClass().getSimpleName());
- }
- }
-
- public interface ScatteringDetectorVolume
- {
+ System.out.printf("%s: ###########################################################\n", this.getClass()
+ .getSimpleName());
+ }
+ }
+
+ public interface ScatteringDetectorVolume {
public String getName();
@@ -103,8 +105,7 @@
}
// public abstract class DetectorPlane extends SiSensor {
- public interface DetectorPlane extends ScatteringDetectorVolume
- {
+ public interface DetectorPlane extends ScatteringDetectorVolume {
public double getThickness();
@@ -122,14 +123,12 @@
}
- private abstract class SiPlane implements DetectorPlane
- {
+ private abstract class SiPlane implements DetectorPlane {
abstract void addMaterial();
}
- public class SiStripPlane extends SiPlane
- {
+ public class SiStripPlane extends SiPlane {
private Hep3Vector _org = null; // origin
private Hep3Vector _w = null; // normal to plane
@@ -140,8 +139,7 @@
private double _length;
private double _width;
- public SiStripPlane(SiSensor module)
- {
+ public SiStripPlane(SiSensor module) {
_sensor = module;
setOrigin();
setNormal();
@@ -153,39 +151,32 @@
}
@Override
- public IDetectorElement getDetectorElement()
- {
+ public IDetectorElement getDetectorElement() {
return getSensor();
}
- private SiTrackerModule getModule()
- {
+ private SiTrackerModule getModule() {
return (SiTrackerModule) getGeometry().getDetectorElement().getParent();
}
- private IGeometryInfo getGeometry()
- {
+ private IGeometryInfo getGeometry() {
return getSensor().getGeometry();
}
- public SiSensor getSensor()
- {
+ public SiSensor getSensor() {
return _sensor;
}
- public Polygon3D getPsidePlane()
- {
+ public Polygon3D getPsidePlane() {
return getSensor().getBiasSurface(ChargeCarrier.HOLE);
}
- public Polygon3D getNsidePlane()
- {
+ public Polygon3D getNsidePlane() {
return getSensor().getBiasSurface(ChargeCarrier.ELECTRON);
}
@Override
- public double getMaterialTraversed(Hep3Vector dir)
- {
+ public double getMaterialTraversed(Hep3Vector dir) {
// the distance inside the plane (note I don't care about sign of unit vector only
// projection distance)
double cth = Math.abs(VecOp.dot(dir, _w));
@@ -194,8 +185,7 @@
}
@Override
- public double getMaterialTraversedInRL(Hep3Vector dir)
- {
+ public double getMaterialTraversedInRL(Hep3Vector dir) {
// the distance inside the plane (note I don't care about sign of unit vector only
// projection distance)
double cth = Math.abs(VecOp.dot(dir, _w));
@@ -204,8 +194,7 @@
}
@Override
- protected void addMaterial()
- {
+ protected void addMaterial() {
IPhysicalVolume parent = getModule().getGeometry().getPhysicalVolume();
IPhysicalVolumeContainer daughters = parent.getLogicalVolume().getDaughters();
@@ -222,25 +211,21 @@
}
}
- public void addMaterial(String type, double density, double radLen, double t)
- {
+ public void addMaterial(String type, double density, double radLen, double t) {
_materials.add(type, density, radLen, t);
}
@Override
- public double getThickness()
- {
+ public double getThickness() {
return _materials.getThickness();
}
@Override
- public double getThicknessInRL()
- {
+ public double getThicknessInRL() {
return _materials.getThicknessInRL();
}
- private void setDimensions()
- {
+ private void setDimensions() {
// The dimensions are taken from the full module
IPhysicalVolume physVol_parent = getModule().getGeometry().getPhysicalVolume();
ILogicalVolume logVol_parent = physVol_parent.getLogicalVolume();
@@ -257,176 +242,162 @@
}
@Override
- public Hep3Vector origin()
- {
+ public Hep3Vector origin() {
return _org;
}
- public void setOrigin(Hep3Vector org)
- {
+ public void setOrigin(Hep3Vector org) {
this._org = org;
}
- private void setOrigin()
- {
+ private void setOrigin() {
// Use origin of p-side surface
Hep3Vector origin = VecOp.mult(CoordinateTransformations.getMatrix(), _sensor.getGeometry().getPosition());
// transform to p-side
Polygon3D psidePlane = this.getPsidePlane();
- Translation3D transformToPside = new Translation3D(VecOp.mult(-1 * psidePlane.getDistance(), psidePlane.getNormal()));
+ Translation3D transformToPside = new Translation3D(VecOp.mult(-1 * psidePlane.getDistance(),
+ psidePlane.getNormal()));
this._org = transformToPside.translated(origin);
}
@Override
- public Hep3Vector normal()
- {
+ public Hep3Vector normal() {
if (_w == null) {
_w = this.getPsidePlane().getNormal();
System.out.printf("setting normal from pside normal %s\n", _w.toString());
- _w = VecOp.mult(VecOp.mult(CoordinateTransformations.getMatrix(), getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getLocalToGlobal().getRotation().getRotationMatrix()), _w);
+ _w = VecOp.mult(
+ VecOp.mult(CoordinateTransformations.getMatrix(),
+ getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getLocalToGlobal().getRotation()
+ .getRotationMatrix()), _w);
System.out.printf("normal after local to global to tracking rotation %s\n", _w.toString());
}
return this._w;
}
- private void setNormal()
- {
+ private void setNormal() {
_w = this.getPsidePlane().getNormal();
- _w = VecOp.mult(VecOp.mult(CoordinateTransformations.getMatrix(), getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getLocalToGlobal().getRotation().getRotationMatrix()), _w);
- }
-
- public void setNormal(Hep3Vector w)
- {
+ _w = VecOp.mult(
+ VecOp.mult(CoordinateTransformations.getMatrix(),
+ getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getLocalToGlobal().getRotation()
+ .getRotationMatrix()), _w);
+ }
+
+ public void setNormal(Hep3Vector w) {
this._w = w;
}
@Override
- public void print()
- {
- System.out.printf("DetectorPlane: org %s normal vector %s %.2fx%.2fmm thickness %f R.L. (%fmm)\n", origin().toString(), normal().toString(), getLength(), getWidth(), getThicknessInRL(), getThickness());
- }
-
- @Override
- public int getId()
- {
+ public void print() {
+ System.out.printf("DetectorPlane: org %s normal vector %s %.2fx%.2fmm thickness %f R.L. (%fmm)\n",
+ origin().toString(), normal().toString(), getLength(), getWidth(), getThicknessInRL(),
+ getThickness());
+ }
+
+ @Override
+ public int getId() {
return _sensor.getSensorID();
}
@Override
- public String getName()
- {
+ public String getName() {
return _sensor.getName();
}
@Override
- public double getLength()
- {
+ public double getLength() {
return _length;
}
@Override
- public double getWidth()
- {
+ public double getWidth() {
return _width;
}
- public double getMeasuredDimension()
- {
+ public double getMeasuredDimension() {
return getLength();
}
- public double getUnmeasuredDimension()
- {
+ public double getUnmeasuredDimension() {
return getWidth();
}
- public Hep3Vector getUnmeasuredCoordinate()
- {
+ public Hep3Vector getUnmeasuredCoordinate() {
return _v;
}
- public Hep3Vector getMeasuredCoordinate()
- {
+ public Hep3Vector getMeasuredCoordinate() {
return _u;
}
- private void setMeasuredCoordinate()
- {
+ private void setMeasuredCoordinate() {
// p-side unit vector
ITransform3D electrodes_to_global = getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getLocalToGlobal();
- Hep3Vector measuredCoordinate = getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getMeasuredCoordinate(0);
- measuredCoordinate = VecOp.mult(VecOp.mult(CoordinateTransformations.getMatrix(), electrodes_to_global.getRotation().getRotationMatrix()), measuredCoordinate);
+ Hep3Vector measuredCoordinate = getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getMeasuredCoordinate(
+ 0);
+ measuredCoordinate = VecOp.mult(VecOp.mult(CoordinateTransformations.getMatrix(), electrodes_to_global
+ .getRotation().getRotationMatrix()), measuredCoordinate);
_u = measuredCoordinate;
}
- private void setUnmeasuredCoordinate()
- {
+ private void setUnmeasuredCoordinate() {
// p-side unit vector
ITransform3D electrodes_to_global = getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getLocalToGlobal();
- Hep3Vector unmeasuredCoordinate = getSensor().getReadoutElectrodes(ChargeCarrier.HOLE).getUnmeasuredCoordinate(0);
- unmeasuredCoordinate = VecOp.mult(VecOp.mult(CoordinateTransformations.getMatrix(), electrodes_to_global.getRotation().getRotationMatrix()), unmeasuredCoordinate);
+ Hep3Vector unmeasuredCoordinate = getSensor().getReadoutElectrodes(ChargeCarrier.HOLE)
+ .getUnmeasuredCoordinate(0);
+ unmeasuredCoordinate = VecOp.mult(VecOp.mult(CoordinateTransformations.getMatrix(), electrodes_to_global
+ .getRotation().getRotationMatrix()), unmeasuredCoordinate);
_v = unmeasuredCoordinate;
}
}
- private static class Material
- {
+ private static class Material {
private String _name;
private double _X0;
private double _density;
private double _thickness;
- public Material(String _name, double _X0, double _density, double _thickness)
- {
+ public Material(String _name, double _X0, double _density, double _thickness) {
this._name = _name;
this._X0 = _X0;
this._density = _density;
this._thickness = _thickness;
}
- private void add(double t)
- {
+ private void add(double t) {
_thickness += t;
}
- public double getThickness()
- {
+ public double getThickness() {
return _thickness;
}
- public double getDensity()
- {
+ public double getDensity() {
return _density;
}
- public double getX0()
- {
+ public double getX0() {
return _X0;
}
}
- private static class Materials
- {
+ private static class Materials {
private List<Material> _materials = new ArrayList<Material>();
private double _tot_X0 = -1;
- public Materials()
- {
- }
-
- public int numberOfMaterials()
- {
+ public Materials() {
+ }
+
+ public int numberOfMaterials() {
return _materials.size();
}
- public void add(String mat, double density, double radLen, double t)
- {
+ public void add(String mat, double density, double radLen, double t) {
boolean found = false;
for (Material m : _materials) {
if (m._name == mat) {
@@ -442,8 +413,7 @@
}
- public double getThicknessInRL()
- {
+ public double getThicknessInRL() {
if (_materials.isEmpty()) {
return 0;
}
@@ -464,8 +434,7 @@
return _tot_X0;
}
- private double getThickness()
- {
+ private double getThickness() {
double t_tot = 0.;
for (Material m : _materials) {
t_tot += m.getThickness();
Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/SeedTracker.java
=============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/SeedTracker.java (original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/SeedTracker.java Thu Jun 9 19:36:52 2016
@@ -14,38 +14,40 @@
* @author Per Hansson Adrian <[log in to unmask]>
*/
public class SeedTracker extends org.lcsim.recon.tracking.seedtracker.SeedTracker {
-
+
public SeedTracker(List<SeedStrategy> strategylist) {
// use base class only if this constructor is called!
super(strategylist);
}
- public SeedTracker(List<SeedStrategy> strategylist,boolean includeMS) {
+ public SeedTracker(List<SeedStrategy> strategylist, boolean includeMS) {
super(strategylist);
initialize(strategylist, true, includeMS);
}
- public SeedTracker(List<SeedStrategy> strategylist,boolean useHPSMaterialManager, boolean includeMS) {
+ public SeedTracker(List<SeedStrategy> strategylist, boolean useHPSMaterialManager, boolean includeMS) {
super(strategylist);
initialize(strategylist, useHPSMaterialManager, includeMS);
}
- private void initialize(List<SeedStrategy> strategylist,boolean useHPSMaterialManager, boolean includeMS) {
+ private void initialize(List<SeedStrategy> strategylist, boolean useHPSMaterialManager, boolean includeMS) {
- // Explicitly only replace the objects that might change to avoid getting the lcsim versions
+ // Explicitly only replace the objects that might change to avoid getting the lcsim versions
- // Instantiate the material manager for HPS, the helix fitter and seed track finder as tey depends on the material manager
- if(useHPSMaterialManager) {
- MaterialSupervisor materialSupervisor = new MaterialSupervisor(includeMS);
- _materialmanager = materialSupervisor;
- _helixfitter = new HelixFitter(materialSupervisor);
- } else {
- MaterialManager materialmanager = new MaterialManager(includeMS);
- _materialmanager = materialmanager; //mess around with types here...
- _helixfitter = new HelixFitter(materialmanager);
- }
- // Instantiate the helix finder since it depends on the material manager
- _finder = new SeedTrackFinder(_hitmanager, _helixfitter);
+ // Instantiate the material manager for HPS, the helix fitter and seed track finder as tey depends on the material manager
+ if(useHPSMaterialManager) {
+ MaterialSupervisor materialSupervisor = new MaterialSupervisor(includeMS);
+ materialSupervisor.setDebug(true);
+ _materialmanager = materialSupervisor;
+ _helixfitter = new HelixFitter(materialSupervisor);
+ } else {
+ MaterialManager materialmanager = new MaterialManager(includeMS);
+ _materialmanager = materialmanager; //mess around with types here...
+ _helixfitter = new HelixFitter(materialmanager);
+ }
+
+ // Instantiate the helix finder since it depends on the material manager
+ _finder = new SeedTrackFinder(_hitmanager, _helixfitter);
}
/**
@@ -67,7 +69,10 @@
*/
public void setApplySectorBinning(boolean applySectorBinning) {
_finder.setApplySectorBinning(applySectorBinning);
- _finder.getConfirmer().setApplySectorBinning(applySectorBinning);
-
+ _finder.getConfirmer().setApplySectorBinning(applySectorBinning);
+ }
+
+ public void setSubdetectorName(String subdetectorName) {
+ ((MaterialSupervisor) this._materialmanager).setSubdetectorName(subdetectorName);
}
}
Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java
=============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java (original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackerReconDriver.java Thu Jun 9 19:36:52 2016
@@ -36,32 +36,48 @@
private static final Logger LOGGER = Logger.getLogger(TrackerReconDriver.class.getPackage().getName());
+ private String subdetectorName = "Tracker";
+
// Debug flag.
private boolean debug = false;
+
// Tracks found across all events.
int ntracks = 0;
+
// Number of events processed.
int nevents = 0;
+
// Cache detector object.
Detector detector = null;
+
// Default B-field value.
private double bfield = 0.5;
+
// Tracking strategies resource path.
private String strategyResource = "HPS-Test-4pt1.xml";
+
// Output track collection.
private String trackCollectionName = "MatchedTracks";
+
// HelicalTrackHit input collection.
private String stInputCollectionName = "RotatedHelicalTrackHits";
+
// Include MS (done by removing XPlanes from the material manager results)
private boolean includeMS = true;
+
// number of repetitive fits on confirmed/extended tracks
private int _iterativeConfirmed = 3;
+
// use HPS implementation of material manager
private boolean _useHPSMaterialManager = true;
+
// enable the use of sectoring using sector binning in SeedTracker
private boolean _applySectorBinning = true;
+
private double rmsTimeCut = -1;
+
private boolean rejectUncorrectedHits = true;
+
private boolean rejectSharedHits = false;
public TrackerReconDriver() {
@@ -69,6 +85,10 @@
public void setDebug(boolean debug) {
this.debug = debug;
+ }
+
+ public void setSubdetectorName(String subdetectorName) {
+ this.subdetectorName = subdetectorName;
}
/**
@@ -158,14 +178,14 @@
*/
private void initialize() {
- //
- // 1) Driver to run Seed Tracker.
- //
+ System.out.println("TrackerReconDriver: initializing");
+
if (!strategyResource.startsWith("/")) {
strategyResource = "/org/hps/recon/tracking/strategies/" + strategyResource;
}
List<SeedStrategy> sFinallist = StrategyXMLUtils.getStrategyListFromInputStream(this.getClass().getResourceAsStream(strategyResource));
SeedTracker stFinal = new SeedTracker(sFinallist, this._useHPSMaterialManager, this.includeMS);
+ stFinal.setSubdetectorName(subdetectorName);
stFinal.setApplySectorBinning(_applySectorBinning);
stFinal.setUseDefaultXPlane(false);
stFinal.setDebug(this.debug);
@@ -185,7 +205,7 @@
HitTimeTrackCheck timeCheck = new HitTimeTrackCheck(rmsTimeCut);
timeCheck.setDebug(debug);
stFinal.setTrackCheck(timeCheck);
- }
+ }
}
/**
|