Author: [log in to unmask] Date: Fri Apr 24 21:22:29 2015 New Revision: 3592 Log: New converter. Had to adjust some old structures to be able to override. Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014v1Converter.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1GeometryDefinition.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1JavaBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1LCDDBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/subdetector/HPSTracker2014v1.java projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1LCDDTest.java projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1.xml Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/DetectorConverter.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014JavaBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014LCDDBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014LCDDTest.java Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/DetectorConverter.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/DetectorConverter.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/DetectorConverter.java Fri Apr 24 21:22:29 2015 @@ -116,6 +116,7 @@ addSubdetectorConverter(new HPSMuonCalorimeterConverter()); addSubdetectorConverter(new HPSTestRunTracker2014Converter()); addSubdetectorConverter(new HPSTracker2014Converter()); + addSubdetectorConverter(new HPSTracker2014v1Converter()); // Support structures. addSubdetectorConverter(new PolyconeSupportConverter()); Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java Fri Apr 24 21:22:29 2015 @@ -339,6 +339,7 @@ // The sensorNumber is always 0 in the old geometry. Keep it that way. int sensorNumber = 0; expId.setValue(iddict.getFieldIndex("sensor"), sensorNumber); + // Packed identifier. IIdentifier sensorId = iddict.pack(expId); @@ -349,10 +350,13 @@ String sensorPath = modulePath.toString() + "/" + componentPhysVol.getName() + "/" + sensorPhysVol.getName(); String sensorName = moduleDe.getName() + "_sensor" + sensorNumber; - if(_debug) System.out.printf("%s: create HpsSiSensor with sensorNumber %d name %s moduleDe %s sensorPath %s sensor Id %d \n", getClass().getSimpleName(), - sensorNumber, sensorName, moduleDe.getName(), sensorPath, sensorNumber); - - + if(_debug) { + System.out.printf("%s: create HpsSiSensor with old layer id %d with sensorNumber %d name %s moduleDe %s sensorPath %s sensor Id %d \n", getClass().getSimpleName(), + layerDe.getIdentifier(),sensorNumber, sensorName, moduleDe.getName(), sensorPath, sensorNumber); + } + System.out.printf("%s: HpsSiSensor old layer id %d and module nr %d and sensor nr %d <-> DE name %s \n", getClass().getSimpleName(), + builder.getDetectorIdentifierHelper().getValue(layerDe.getIdentifier(), "layer"), ((SiTrackerModule) moduleDe).getModuleId(), sensorNumber,sensorName); + // Create the sensor. int millepedeLayer = builder._builder.getMillepedeLayer(sensorName); HpsSiSensor sensor = createSiSensor(sensorNumber, sensorName, moduleDe, sensorPath, sensorId); Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014v1Converter.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014v1Converter.java (added) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014v1Converter.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,29 @@ +package org.lcsim.detector.converter.compact; + +import org.jdom.Element; +import org.lcsim.geometry.compact.converter.HPSTracker2014v1JavaBuilder; +import org.lcsim.geometry.compact.converter.HPSTrackerJavaBuilder; +import org.lcsim.geometry.subdetector.HPSTracker2014v1; + +public class HPSTracker2014v1Converter extends HPSTracker2014Converter { + + public HPSTracker2014v1Converter() { + super(); + } + + /* (non-Javadoc) + * @see org.lcsim.detector.converter.compact.HPSTracker2014ConverterBase#initializeBuilder(org.jdom.Element) + */ + protected HPSTrackerJavaBuilder initializeBuilder(Element node) { + return new HPSTracker2014v1JavaBuilder(_debug, node); + } + + /* (non-Javadoc) + * @see org.lcsim.detector.converter.compact.AbstractSubdetectorConverter#getSubdetectorType() + */ + public Class getSubdetectorType() { + return HPSTracker2014v1.class; + } + + +} Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014JavaBuilder.java Fri Apr 24 21:22:29 2015 @@ -47,7 +47,7 @@ public void build(ILogicalVolume trackingVolume) { // build geometry - setBuilder(new HPSTestRunTracker2014GeometryDefinition(this._debug, node)); + setBuilder(createGeometryDefinition(_debug, node)); if(_builder==null) throw new RuntimeException("need to set builder class before calling build!"); @@ -199,6 +199,13 @@ } + + @Override + public HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, Element node) { + return new HPSTestRunTracker2014GeometryDefinition(debug, node); + } + + Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014LCDDBuilder.java Fri Apr 24 21:22:29 2015 @@ -32,13 +32,13 @@ public void setBuilder() { - setBuilder(new HPSTestRunTracker2014GeometryDefinition(_debug, node)); + setBuilder(); } public void build(Volume worldVolume) { // set and build geometry - setBuilder(); + setBuilder(createGeometryDefinition(_debug, node)); if(_builder==null) throw new RuntimeException("need to set builder class before calling build!"); @@ -169,33 +169,14 @@ LCDDSurveyVolume lcddH = new LCDDSurveyVolume(bundle.hybrid, lcdd, lcddHM); add(lcddH); - } + } -/* - public void setVisualization() { - if(isDebug()) System.out.printf("%s: Set LCDD visualization for %d LCDD geometry objects \n", getClass().getSimpleName(), lcddSurveyVolumes.size()); - for(SurveyVolumeImpl g : lcddSurveyVolumes) { - if(isDebug()) System.out.printf("%s: Set LCDD vis for %s \n", getClass().getSimpleName(), g.getName()); - if(g.getName().endsWith("baseplate")) g.setVisName("BasePlateVis"); - //else if(g.getName().contains("base")) g.setVisName("BaseVis"); - else if(g.getName().endsWith("support_bottom") || g.getName().contains("support_top")) g.setVisName("SupportVolumeVis"); - else if(g.getName().endsWith("support_plate_bottom") || g.getName().contains("support_plate_top")) g.setVisName("SupportPlateVis"); - else if(g.getName().endsWith("halfmodule_axial")) g.setVisName("HalfModuleVis"); - else if(g.getName().endsWith("halfmodule_stereo")) g.setVisName("HalfModuleVis"); - else if(g.getName().endsWith("module")) g.setVisName("ModuleVis"); - else if(g.getName().endsWith("cold")) g.setVisName("ColdBlockVis"); - else if(g.getName().endsWith("lamination")) g.setVisName("KaptonVis"); - else if(g.getName().endsWith("sensor")) g.setVisName("SensorVis"); - else if(g.getName().endsWith("sensor_active")) g.setVisName("SensorVis"); - else if(g.getName().endsWith("cf")) g.setVisName("CarbonFiberVis"); - else if(g.getName().endsWith("hybrid")) g.setVisName("HybridVis"); - else { - if(isDebug()) System.out.printf("%s: No LCDD vis for %s \n", getClass().getSimpleName(), g.getName()); - } - } - if(isDebug()) System.out.printf("%s: DONE Set LCDD vis \n", getClass().getSimpleName()); - } -*/ + @Override + public HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, + Element node) { + return new HPSTestRunTracker2014GeometryDefinition(_debug, node); + } + } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014GeometryDefinition.java Fri Apr 24 21:22:29 2015 @@ -24,7 +24,7 @@ * @author Per Hansson Adrian <[log in to unmask]> * */ -public class HPSTracker2014GeometryDefinition extends HPSTrackerGeometryDefinition { + public class HPSTracker2014GeometryDefinition extends HPSTrackerGeometryDefinition { @@ -1649,7 +1649,6 @@ - public static class LongAxialHoleHalfModule extends LongHalfModule { private final static double sensor_x = 1.382*inch; @@ -1671,8 +1670,8 @@ } - - + + public static class LongAxialSlotHalfModule extends LongHalfModule { private final static double sensor_x = 1.382*inch; @@ -2121,7 +2120,7 @@ halfModule = new LongAxialHoleHalfModule(volName, mother, alignmentCorrection, layer, half); bundle.halfModuleAxialHole = halfModuleBundle; } else { - halfModule = new LongAxialSlotHalfModule(volName, mother, alignmentCorrection, layer, half); + halfModule = createLongAxialSlotHalfModule(volName, mother, alignmentCorrection, layer, half); bundle.halfModuleAxialSlot = halfModuleBundle; } } else { @@ -2130,7 +2129,7 @@ halfModule = new LongStereoHoleHalfModule(volName, mother, alignmentCorrection, layer, half); bundle.halfModuleStereoHole = halfModuleBundle; } else { - halfModule = new LongStereoSlotHalfModule(volName, mother, alignmentCorrection, layer, half); + halfModule = createLongStereoSlotHalfModule(volName, mother, alignmentCorrection, layer, half); bundle.halfModuleStereoSlot = halfModuleBundle; } } @@ -2191,6 +2190,18 @@ int layer, String half) { return new HalfModuleStereo(volName, mother, alignmentCorrection, layer, half); + } + + protected LongHalfModule createLongAxialSlotHalfModule(String name, SurveyVolume mother, + AlignmentCorrection alignmentCorrection, int layer, + String half) { + return new LongAxialSlotHalfModule(name, mother, alignmentCorrection, layer, half); + } + + protected LongHalfModule createLongStereoSlotHalfModule(String name, SurveyVolume mother, + AlignmentCorrection alignmentCorrection, int layer, + String half) { + return new LongStereoSlotHalfModule(name, mother, alignmentCorrection, layer, half); } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014JavaBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014JavaBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014JavaBuilder.java Fri Apr 24 21:22:29 2015 @@ -40,6 +40,7 @@ + /** * Build the JAVA geometry objects from the geometry definition. * @param trackingVolume - the reference volume. @@ -47,7 +48,7 @@ public void build(ILogicalVolume trackingVolume) { // build geometry - setBuilder(new HPSTracker2014GeometryDefinition(this._debug, node)); + setBuilder(createGeometryDefinition(this._debug, node)); if(_builder==null) throw new RuntimeException("need to set builder class before calling build!"); @@ -191,8 +192,10 @@ } - - + @Override + public HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, Element node) { + return new HPSTracker2014GeometryDefinition(debug, node); + } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014LCDDBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014LCDDBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014LCDDBuilder.java Fri Apr 24 21:22:29 2015 @@ -37,7 +37,7 @@ * @see org.lcsim.geometry.compact.converter.HPSTestRunTracker2014LCDDBuilder#setBuilder() */ public void setBuilder() { - setBuilder(new HPSTracker2014GeometryDefinition(_debug, node)); + setBuilder(createGeometryDefinition(_debug, node)); } /* (non-Javadoc) @@ -236,5 +236,11 @@ add(lcddH); */ } + + @Override + public HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, + Element node) { + return new HPSTracker2014GeometryDefinition(_debug, node); + } } Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1GeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1GeometryDefinition.java (added) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1GeometryDefinition.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,88 @@ +package org.lcsim.geometry.compact.converter; + +import org.apache.commons.math3.geometry.euclidean.threed.Rotation; +import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; +import org.jdom.Element; + +/** + * + * Updated geometry information for the HPS tracker 2014 + + * @author Per Hansson Adrian <[log in to unmask]> + * + */ +public class HPSTracker2014v1GeometryDefinition extends HPSTracker2014GeometryDefinition { + + public HPSTracker2014v1GeometryDefinition(boolean debug, Element node) { + super(debug, node); + } + + public static class LongAxialSlotHalfModule extends HPSTracker2014GeometryDefinition.LongAxialSlotHalfModule { + + public LongAxialSlotHalfModule(String name, SurveyVolume mother, + AlignmentCorrection alignmentCorrection, int layer, + String half) { + super(name, mother, alignmentCorrection, layer, half); + } + + @Override + protected void applyGenericCoordinateSystemCorrections() { + super.applyGenericCoordinateSystemCorrections(); + // apply 180 degree rotation around w ~ normal to the sensor plane + if(debug) System.out.printf("%s: Coord before corrections\n%s\n", getClass().getSimpleName(),getCoord().toString()); + if(debug) System.out.printf("%s: box center before corrections\n%s\n", getClass().getSimpleName(),getBoxDim().toString()); + getCoord().rotateApache(getSlotRotation()); + if(debug) System.out.printf("%s: Coord after corrections\n%s\n", getClass().getSimpleName(),getCoord().toString()); + if(debug) System.out.printf("%s: box center after corrections\n%s\n", getClass().getSimpleName(),getBoxDim().toString()); + } + } + + public static class LongStereoSlotHalfModule extends HPSTracker2014GeometryDefinition.LongStereoSlotHalfModule { + + public LongStereoSlotHalfModule(String name, SurveyVolume mother, + AlignmentCorrection alignmentCorrection, int layer, String half) { + super(name, mother, alignmentCorrection, layer, half); + } + + @Override + protected void applyGenericCoordinateSystemCorrections() { + // TODO Auto-generated method stub + super.applyGenericCoordinateSystemCorrections(); + // apply 180 degree rotation around w ~ normal to the sensor plane + if(debug) System.out.printf("%s: Coord before corrections\n%s\n", getClass().getSimpleName(),getCoord().toString()); + if(debug) System.out.printf("%s: box center before corrections\n%s\n", getClass().getSimpleName(),getBoxDim().toString()); + getCoord().rotateApache(getSlotRotation()); + if(debug) System.out.printf("%s: Coord after corrections\n%s\n", getClass().getSimpleName(),getCoord().toString()); + if(debug) System.out.printf("%s: box center after corrections\n%s\n", getClass().getSimpleName(),getBoxDim().toString()); + } + } + + @Override + protected LongHalfModule createLongAxialSlotHalfModule(String name, SurveyVolume mother, + AlignmentCorrection alignmentCorrection, + int layer, String half) { + return new LongAxialSlotHalfModule(name, mother, alignmentCorrection, layer, half); + } + + @Override + protected LongHalfModule createLongStereoSlotHalfModule(String name, + SurveyVolume mother, AlignmentCorrection alignmentCorrection, + int layer, String half) { + + // TODO Auto-generated method stub + return super.createLongStereoSlotHalfModule(name, mother, alignmentCorrection, + layer, half); + } + + + /** + * PI rotation around generic z-axis + * @return + */ + private static Rotation getSlotRotation() { + return new Rotation(new Vector3D(0,0,1),Math.PI); + } + + + +} Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1JavaBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1JavaBuilder.java (added) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1JavaBuilder.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,17 @@ +package org.lcsim.geometry.compact.converter; + +import org.jdom.Element; + +public class HPSTracker2014v1JavaBuilder extends HPSTracker2014JavaBuilder { + + public HPSTracker2014v1JavaBuilder(boolean debugFlag, Element node) { + super(debugFlag, node); + } + + @Override + public HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, Element node) { + return new HPSTracker2014v1GeometryDefinition(debug, node); + } + + +} Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1LCDDBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1LCDDBuilder.java (added) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTracker2014v1LCDDBuilder.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,23 @@ +package org.lcsim.geometry.compact.converter; + +import org.jdom.Element; +import org.lcsim.geometry.compact.converter.lcdd.util.LCDD; +import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector; + +public class HPSTracker2014v1LCDDBuilder extends HPSTracker2014LCDDBuilder { + + public HPSTracker2014v1LCDDBuilder(boolean debugFlag, Element node, + LCDD lcdd, SensitiveDetector sens) { + super(debugFlag, node, lcdd, sens); + } + + public void setBuilder() { + setBuilder(createGeometryDefinition(_debug, node)); + } + + @Override + public HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, + Element node) { + return new HPSTracker2014v1GeometryDefinition(_debug, node); + } +} Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerJavaBuilder.java Fri Apr 24 21:22:29 2015 @@ -33,6 +33,7 @@ } public abstract void build(ILogicalVolume trackingVolume); + public abstract HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, Element node); /** Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerLCDDBuilder.java Fri Apr 24 21:22:29 2015 @@ -35,6 +35,8 @@ public abstract void setBuilder(); + + public abstract HPSTrackerGeometryDefinition createGeometryDefinition(boolean debug, Element node); public void setNode(Element node) { Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java Fri Apr 24 21:22:29 2015 @@ -32,7 +32,7 @@ */ public abstract class HPSTracker2014Base extends LCDDSubdetector { - protected boolean _debug = false; + protected boolean _debug = true; protected static HPSTrackerLCDDBuilder builder; private final boolean buildBeamPlane = false; private final double beamPlaneWidth = 385.00; Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1.java (added) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,26 @@ +package org.lcsim.geometry.compact.converter.lcdd; + +import org.jdom.Element; +import org.jdom.JDOMException; +import org.lcsim.geometry.compact.converter.HPSTracker2014v1LCDDBuilder; +import org.lcsim.geometry.compact.converter.HPSTrackerLCDDBuilder; +import org.lcsim.geometry.compact.converter.lcdd.util.LCDD; +import org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector; + +public class HPSTracker2014v1 extends HPSTracker2014 +{ + public HPSTracker2014v1(Element node) throws JDOMException + { + super(node); + } + + /* (non-Javadoc) + * @see org.lcsim.geometry.compact.converter.lcdd.HPSTracker2014Base#initializeBuilder(org.lcsim.geometry.compact.converter.lcdd.util.LCDD, org.lcsim.geometry.compact.converter.lcdd.util.SensitiveDetector) + */ + protected HPSTrackerLCDDBuilder initializeBuilder(LCDD lcdd, SensitiveDetector sens) { + return new HPSTracker2014v1LCDDBuilder(_debug,node,lcdd,sens); + } + + + +} Added: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/subdetector/HPSTracker2014v1.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/subdetector/HPSTracker2014v1.java (added) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/subdetector/HPSTracker2014v1.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,30 @@ +package org.lcsim.geometry.subdetector; + +import hep.graphics.heprep.HepRep; +import hep.graphics.heprep.HepRepFactory; + +import org.jdom.Element; +import org.jdom.JDOMException; +import org.lcsim.detector.converter.heprep.DetectorElementToHepRepConverter; + +public class HPSTracker2014v1 extends AbstractTracker { + + public HPSTracker2014v1(Element node) throws JDOMException + { + super(node); + } + + public void appendHepRep(HepRepFactory factory, HepRep heprep) + { + DetectorElementToHepRepConverter.convert(getDetectorElement(), factory, heprep, -1, false, getVisAttributes().getColor()); + } + + public boolean isEndcap() { + return false; + } + + public boolean isBarrel() { + return true; + } + +} Modified: projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014LCDDTest.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014LCDDTest.java (original) +++ projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014LCDDTest.java Fri Apr 24 21:22:29 2015 @@ -28,7 +28,7 @@ public void test_converter() throws Exception { - InputStream in = HPSTestRunTracker2014.class.getResourceAsStream("/org/lcsim/geometry/subdetector/HPSTracker2014.xml"); + InputStream in = HPSTracker2014.class.getResourceAsStream("/org/lcsim/geometry/subdetector/HPSTracker2014.xml"); OutputStream out = new BufferedOutputStream(new FileOutputStream(new TestOutputFile("HPSTracker2014.lcdd"))); new Main().convert("HPSTracker2014",in,out); } Added: projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1LCDDTest.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1LCDDTest.java (added) +++ projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014v1LCDDTest.java Fri Apr 24 21:22:29 2015 @@ -0,0 +1,35 @@ +package org.lcsim.geometry.compact.converter.lcdd; + +import java.io.BufferedOutputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; + +import org.lcsim.util.test.TestUtil.TestOutputFile; + +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** +* +* @author Per Hansson Adrian <[log in to unmask]> +*/ +public class HPSTracker2014v1LCDDTest extends TestCase +{ + public HPSTracker2014v1LCDDTest(String name) + { + super(name); + } + + public static TestSuite suite() + { + return new TestSuite(HPSTracker2014v1LCDDTest.class); + } + + public void test_converter() throws Exception + { + InputStream in = HPSTracker2014v1.class.getResourceAsStream("/org/lcsim/geometry/subdetector/HPSTracker2014v1.xml"); + OutputStream out = new BufferedOutputStream(new FileOutputStream(new TestOutputFile("HPSTracker2014v1.lcdd"))); + new Main().convert("HPSTracker2014v1",in,out); + } +} Added: projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1.xml ============================================================================= --- projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1.xml (added) +++ projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HPSTracker2014v1.xml Fri Apr 24 21:22:29 2015 @@ -0,0 +1,337 @@ +<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> + + <info name="HPSTracker2014v1"> + <comment>SVT survey-based geometry for 2014 proposal</comment> + </info> + + <define> + <!-- units --> + <constant name="mm" value="0.1*cm"/> + <constant name="inch" value="25.4*mm"/> + + <!-- world --> + <constant name="world_side" value="500.0*cm" /> + <constant name="world_x" value="world_side" /> + <constant name="world_y" value="world_side" /> + <constant name="world_z" value="world_side" /> + + <!-- tracking region --> + <constant name="tracking_region_radius" value="200.0*cm"/> + <constant name="tracking_region_min" value="5.0*cm"/> + <constant name="tracking_region_zmax" value="131.8*cm"/> + + + </define> + + <materials> + <!-- Set tracking material to vacuum. --> + <material name="TrackingMaterial"> + <D type="density" unit="g/cm3" value="0.0000000000000001" /> + <fraction n="1.0" ref="Vacuum" /> + </material> + </materials> + + <display> + <vis name="SvtBoxVis" alpha="1.0" r="1.0" g="1.0" b="0.0" drawingStyle="wireframe" lineStyle="unbroken" showDaughters="true" visible="true"/> + <vis name="SensorVis" alpha="1.0" r="1.0" g="0.0" b="0.0" drawingStyle="wireframe" lineStyle="unbroken" showDaughters="true" visible="true"/> + <vis name="ActiveSensorVis" alpha="1.0" r="1.0" g="0.0" b="0.0" drawingStyle="solid" lineStyle="unbroken" showDaughters="true" visible="true"/> + <vis name="CarbonFiberVis" alpha="1.0" r="0.88" g="0.88" b="0.88" drawingStyle="solid" lineStyle="unbroken" showDaughters="true" visible="true"/> + <vis name="KaptonVis" alpha="1.0" r="0.91" g="0.77" b="0.06" drawingStyle="solid" lineStyle="unbroken" showDaughters="true" visible="true"/> + <vis name="HybridVis" alpha="1.0" r="0.0" g="1.0" b="0" drawingStyle="solid" lineStyle="unbroken" showDaughters="true" visible="true"/> + <vis name="HalfModuleVis" alpha="1.0" r="1.0" g="1.0" b="1.0" drawingStyle="wireframe" lineStyle="dashed" showDaughters="true" visible="true"/> + <vis name="ColdBlockVis" alpha="1.0" r="0.75" g="0.73" b="0.75" drawingStyle="solid" lineStyle="dashed" showDaughters="true" visible="true"/> + <vis name="ModuleVis" alpha="1.0" r="1.0" g="1.0" b="1.0" drawingStyle="wireframe" lineStyle="dotted" showDaughters="true" visible="true"/> + <vis name="SupportPlateVis" alpha="1.0" r="0.45" g="0.45" b="0.45" drawingStyle="solid" lineStyle="dashed" showDaughters="true" visible="true"/> + <vis name="SupportVolumeVis" alpha="1.0" r="0.75" g="0.73" b="0.75" drawingStyle="wireframe" lineStyle="dashed" showDaughters="true" visible="true"/> + <vis name="BasePlateVis" alpha="1.0" r="0.35" g="0.35" b="0.35" drawingStyle="solid" lineStyle="dashed" showDaughters="true" visible="true"/> + <vis name="LayerVis" alpha="0.0" r="0.0" g="0.0" b="1.0" drawingStyle="wireframe" showDaughters="true" visible="false"/> + <vis name="ComponentVis" alpha="0.0" r="0.0" g="0.2" b="0.4" drawingStyle="solid" showDaughters="false" visible="false"/> + <vis name="BeamPlaneVis" alpha="1.0" r="1.0" g="1.0" b="1.0" drawingStyle="solid" lineStyle="unbroken" showDaughters="false" visible="true"/> + + </display> + + <detectors> + <detector id="1" name="Tracker" type="HPSTracker2014v1" readout="TrackerHits"> + <!-- + <SurveyVolumes> + <SurveyVolume name="base_plate"> + <SurveyPos> + <point name="ball" x="0.0" y="0.0" z="0.0"/> + <point name="vee" x="1.0" y="0.0" z="0.0"/> + <point name="flat" x="0.0" y="1.0" z="0.0"/> + </SurveyPos> + </SurveyVolume> + <SurveyCoord> + <origin x="" y="" z=""/> + <unitVec name="u" x="1.0" y="0.0" z="0.0"/> + <unitVec name="v" x="1.0" y="0.0" z="0.0"/> + <unitVec name="w" x="0.0" y="1.0" z="0.0"/> + </SurveyCoord> + </SurveyVolumes> + --> + <millepede_constants> + + <!-- top half-module translations --> + <millepede_constant name="11101" value="0.0"/> + <millepede_constant name="11102" value="0.0"/> + <millepede_constant name="11103" value="0.0"/> + <millepede_constant name="11104" value="0.0"/> + <millepede_constant name="11105" value="0.0"/> + <millepede_constant name="11106" value="0.0"/> + <millepede_constant name="11107" value="0.0"/> + <millepede_constant name="11108" value="0.0"/> + <millepede_constant name="11109" value="0.0"/> + <millepede_constant name="11110" value="0.0"/> + <millepede_constant name="11111" value="0.0"/> + <millepede_constant name="11112" value="0.0"/> + <millepede_constant name="11113" value="0.0"/> + <millepede_constant name="11114" value="0.0"/> + <millepede_constant name="11115" value="0.0"/> + <millepede_constant name="11116" value="0.0"/> + <millepede_constant name="11117" value="0.0"/> + <millepede_constant name="11118" value="0.0"/> + + <millepede_constant name="11201" value="0.0"/> + <millepede_constant name="11202" value="0.0"/> + <millepede_constant name="11203" value="0.0"/> + <millepede_constant name="11204" value="0.0"/> + <millepede_constant name="11205" value="0.0"/> + <millepede_constant name="11206" value="0.0"/> + <millepede_constant name="11207" value="0.0"/> + <millepede_constant name="11208" value="0.0"/> + <millepede_constant name="11209" value="0.0"/> + <millepede_constant name="11210" value="0.0"/> + <millepede_constant name="11211" value="0.0"/> + <millepede_constant name="11212" value="0.0"/> + <millepede_constant name="11213" value="0.0"/> + <millepede_constant name="11214" value="0.0"/> + <millepede_constant name="11215" value="0.0"/> + <millepede_constant name="11216" value="0.0"/> + <millepede_constant name="11217" value="0.0"/> + <millepede_constant name="11218" value="0.0"/> + + <millepede_constant name="11301" value="0.0"/> + <millepede_constant name="11302" value="0.0"/> + <millepede_constant name="11303" value="0.0"/> + <millepede_constant name="11304" value="0.0"/> + <millepede_constant name="11305" value="0.0"/> + <millepede_constant name="11306" value="0.0"/> + <millepede_constant name="11307" value="0.0"/> + <millepede_constant name="11308" value="0.0"/> + <millepede_constant name="11309" value="0.0"/> + <millepede_constant name="11310" value="0.0"/> + <millepede_constant name="11311" value="0.0"/> + <millepede_constant name="11312" value="0.0"/> + <millepede_constant name="11313" value="0.0"/> + <millepede_constant name="11314" value="0.0"/> + <millepede_constant name="11315" value="0.0"/> + <millepede_constant name="11316" value="0.0"/> + <millepede_constant name="11317" value="0.0"/> + <millepede_constant name="11318" value="0.0"/> + + + <!-- top half-module rotations --> + + <millepede_constant name="12101" value="0.0"/> + <millepede_constant name="12102" value="0.0"/> + <millepede_constant name="12103" value="0.0"/> + <millepede_constant name="12104" value="0.0"/> + <millepede_constant name="12105" value="0.0"/> + <millepede_constant name="12106" value="0.0"/> + <millepede_constant name="12107" value="0.0"/> + <millepede_constant name="12108" value="0.0"/> + <millepede_constant name="12109" value="0.0"/> + <millepede_constant name="12110" value="0.0"/> + <millepede_constant name="12111" value="0.0"/> + <millepede_constant name="12112" value="0.0"/> + <millepede_constant name="12113" value="0.0"/> + <millepede_constant name="12114" value="0.0"/> + <millepede_constant name="12115" value="0.0"/> + <millepede_constant name="12116" value="0.0"/> + <millepede_constant name="12117" value="0.0"/> + <millepede_constant name="12118" value="0.0"/> + + <millepede_constant name="12201" value="0.0"/> + <millepede_constant name="12202" value="0.0"/> + <millepede_constant name="12203" value="0.0"/> + <millepede_constant name="12204" value="0.0"/> + <millepede_constant name="12205" value="0.0"/> + <millepede_constant name="12206" value="0.0"/> + <millepede_constant name="12207" value="0.0"/> + <millepede_constant name="12208" value="0.0"/> + <millepede_constant name="12209" value="0.0"/> + <millepede_constant name="12210" value="0.0"/> + <millepede_constant name="12211" value="0.0"/> + <millepede_constant name="12212" value="0.0"/> + <millepede_constant name="12213" value="0.0"/> + <millepede_constant name="12214" value="0.0"/> + <millepede_constant name="12215" value="0.0"/> + <millepede_constant name="12216" value="0.0"/> + <millepede_constant name="12217" value="0.0"/> + <millepede_constant name="12218" value="0.0"/> + + <millepede_constant name="12301" value="0.0"/> + <millepede_constant name="12302" value="0.0"/> + <millepede_constant name="12303" value="0.0"/> + <millepede_constant name="12304" value="0.0"/> + <millepede_constant name="12305" value="0.0"/> + <millepede_constant name="12306" value="0.0"/> + <millepede_constant name="12307" value="0.0"/> + <millepede_constant name="12308" value="0.0"/> + <millepede_constant name="12309" value="0.0"/> + <millepede_constant name="12310" value="0.0"/> + <millepede_constant name="12311" value="0.0"/> + <millepede_constant name="12312" value="0.0"/> + <millepede_constant name="12313" value="0.0"/> + <millepede_constant name="12314" value="0.0"/> + <millepede_constant name="12315" value="0.0"/> + <millepede_constant name="12316" value="0.0"/> + <millepede_constant name="12317" value="0.0"/> + <millepede_constant name="12318" value="0.0"/> + + <!-- bottom half-module translations --> + + <millepede_constant name="21101" value="0.0"/> + <millepede_constant name="21102" value="0.0"/> + <millepede_constant name="21103" value="0.0"/> + <millepede_constant name="21104" value="0.0"/> + <millepede_constant name="21105" value="0.0"/> + <millepede_constant name="21106" value="0.0"/> + <millepede_constant name="21107" value="0.0"/> + <millepede_constant name="21108" value="0.0"/> + <millepede_constant name="21109" value="0.0"/> + <millepede_constant name="21110" value="0.0"/> + <millepede_constant name="21111" value="0.0"/> + <millepede_constant name="21112" value="0.0"/> + <millepede_constant name="21113" value="0.0"/> + <millepede_constant name="21114" value="0.0"/> + <millepede_constant name="21115" value="0.0"/> + <millepede_constant name="21116" value="0.0"/> + <millepede_constant name="21117" value="0.0"/> + <millepede_constant name="21118" value="0.0"/> + + <millepede_constant name="21201" value="0.0"/> + <millepede_constant name="21202" value="0.0"/> + <millepede_constant name="21203" value="0.0"/> + <millepede_constant name="21204" value="0.0"/> + <millepede_constant name="21205" value="0.0"/> + <millepede_constant name="21206" value="0.0"/> + <millepede_constant name="21207" value="0.0"/> + <millepede_constant name="21208" value="0.0"/> + <millepede_constant name="21209" value="0.0"/> + <millepede_constant name="21210" value="0.0"/> + <millepede_constant name="21211" value="0.0"/> + <millepede_constant name="21212" value="0.0"/> + <millepede_constant name="21213" value="0.0"/> + <millepede_constant name="21214" value="0.0"/> + <millepede_constant name="21215" value="0.0"/> + <millepede_constant name="21216" value="0.0"/> + <millepede_constant name="21217" value="0.0"/> + <millepede_constant name="21218" value="0.0"/> + + <millepede_constant name="21301" value="0.0"/> + <millepede_constant name="21302" value="0.0"/> + <millepede_constant name="21303" value="0.0"/> + <millepede_constant name="21304" value="0.0"/> + <millepede_constant name="21305" value="0.0"/> + <millepede_constant name="21306" value="0.0"/> + <millepede_constant name="21307" value="0.0"/> + <millepede_constant name="21308" value="0.0"/> + <millepede_constant name="21309" value="0.0"/> + <millepede_constant name="21310" value="0.0"/> + <millepede_constant name="21311" value="0.0"/> + <millepede_constant name="21312" value="0.0"/> + <millepede_constant name="21313" value="0.0"/> + <millepede_constant name="21314" value="0.0"/> + <millepede_constant name="21315" value="0.0"/> + <millepede_constant name="21316" value="0.0"/> + <millepede_constant name="21317" value="0.0"/> + <millepede_constant name="21318" value="0.0"/> + + <!-- bottom half-module rotations --> + + <millepede_constant name="22101" value="0.0"/> + <millepede_constant name="22102" value="0.0"/> + <millepede_constant name="22103" value="0.0"/> + <millepede_constant name="22104" value="0.0"/> + <millepede_constant name="22105" value="0.0"/> + <millepede_constant name="22106" value="0.0"/> + <millepede_constant name="22107" value="0.0"/> + <millepede_constant name="22108" value="0.0"/> + <millepede_constant name="22109" value="0.0"/> + <millepede_constant name="22110" value="0.0"/> + <millepede_constant name="22111" value="0.0"/> + <millepede_constant name="22112" value="0.0"/> + <millepede_constant name="22113" value="0.0"/> + <millepede_constant name="22114" value="0.0"/> + <millepede_constant name="22115" value="0.0"/> + <millepede_constant name="22116" value="0.0"/> + <millepede_constant name="22117" value="0.0"/> + <millepede_constant name="22118" value="0.0"/> + + <millepede_constant name="22201" value="0.0"/> + <millepede_constant name="22202" value="0.0"/> + <millepede_constant name="22203" value="0.0"/> + <millepede_constant name="22204" value="0.0"/> + <millepede_constant name="22205" value="0.0"/> + <millepede_constant name="22206" value="0.0"/> + <millepede_constant name="22207" value="0.0"/> + <millepede_constant name="22208" value="0.0"/> + <millepede_constant name="22209" value="0.0"/> + <millepede_constant name="22210" value="0.0"/> + <millepede_constant name="22211" value="0.0"/> + <millepede_constant name="22212" value="0.0"/> + <millepede_constant name="22213" value="0.0"/> + <millepede_constant name="22214" value="0.0"/> + <millepede_constant name="22215" value="0.0"/> + <millepede_constant name="22216" value="0.0"/> + <millepede_constant name="22217" value="0.0"/> + <millepede_constant name="22218" value="0.0"/> + + <millepede_constant name="22301" value="0.0"/> + <millepede_constant name="22302" value="0.0"/> + <millepede_constant name="22303" value="0.0"/> + <millepede_constant name="22304" value="0.0"/> + <millepede_constant name="22305" value="0.0"/> + <millepede_constant name="22306" value="0.0"/> + <millepede_constant name="22307" value="0.0"/> + <millepede_constant name="22308" value="0.0"/> + <millepede_constant name="22309" value="0.0"/> + <millepede_constant name="22310" value="0.0"/> + <millepede_constant name="22311" value="0.0"/> + <millepede_constant name="22312" value="0.0"/> + <millepede_constant name="22313" value="0.0"/> + <millepede_constant name="22314" value="0.0"/> + <millepede_constant name="22315" value="0.0"/> + <millepede_constant name="22316" value="0.0"/> + <millepede_constant name="22317" value="0.0"/> + <millepede_constant name="22318" value="0.0"/> + + + <!-- top support tilt angles --> + <millepede_constant name="13100" value="0.0"/> <!-- + means opening --> + <millepede_constant name="13200" value="0.0"/> + <millepede_constant name="13300" value="0.0"/> + + <!-- bottom support tilt angles --> + <millepede_constant name="23100" value="0.0"/> <!-- - means opening --> + <millepede_constant name="23200" value="0.0"/> + <millepede_constant name="23300" value="0.0"/> + + </millepede_constants> + </detector> + </detectors> + <readouts> + <readout name="TrackerHits"> + <id>system:6,barrel:3,layer:4,module:12,sensor:1,side:32:-2,strip:12</id> + </readout> + </readouts> + <fields> + <field type="BoxDipole" name="AnalyzingDipole" x="0*cm" y="0*cm" + z="45.22*cm" dx="22.86*cm" dy="7.62*cm" dz="46.22*cm" bx="0.0" by="-0.5" + bz="0.0"> + </field> + </fields> +</lccdd> ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the LCDET-SVN list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1