Author: [log in to unmask] Date: Tue Dec 16 21:16:10 2014 New Revision: 3460 Log: Make modules ghosts. Fix printouts. Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.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/HPSTracker2014LCDDBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/JavaSurveyVolume.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDGhostSurveyVolume.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDSurveyVolume.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolumeImpl.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTracker2014Base.java Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTestRunTracker2014GeometryDefinition.java Tue Dec 16 21:16:10 2014 @@ -1736,9 +1736,6 @@ TestRunHalfModuleBundle(SurveyVolume hm) { super(hm); } - public void print() { - System.out.printf("%s: %s\n", this.getClass().getSimpleName(),halfModule.getName()); - } } 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 Tue Dec 16 21:16:10 2014 @@ -146,7 +146,7 @@ * @param bundle - module to be added * @param mother - mother LCDD geometry object */ - private void addTestRunHalfModule(HalfModuleBundle bundle2, LCDDSurveyVolume mother) { + protected void addTestRunHalfModule(HalfModuleBundle bundle2, LCDDSurveyVolume mother) { // This could perhaps be fixed if there is a relation with daughters in geometry definition? TestRunHalfModuleBundle bundle = (TestRunHalfModuleBundle) bundle2; 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 Tue Dec 16 21:16:10 2014 @@ -16,7 +16,6 @@ import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination; import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.Sensor; import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule; -import org.lcsim.geometry.compact.converter.HPSTrackerBuilder.HalfModuleBundle; /** @@ -120,10 +119,16 @@ if(isDebug()) { System.out.printf("%s: DONE constructing the geometry objects\n", this.getClass().getSimpleName()); - System.out.printf("%s: List of all the geometry objects built\n", this.getClass().getSimpleName()); + System.out.printf("%s: List of the survey volumes built\n", this.getClass().getSimpleName()); for(SurveyVolume bg : surveyVolumes) { System.out.printf("-------\n%s\n", bg.toString()); } + System.out.printf("%s: List of the module bundles built\n", this.getClass().getSimpleName()); + for(BaseModuleBundle bundle : this.modules) { + System.out.printf("-------\n%s\n", bundle.toString()); + + } + } } @@ -2039,7 +2044,7 @@ super(m); } public void print() { - if(module!=null) System.out.printf("%s: %s\n", this.getClass().getSimpleName(),module.getName()); + if(module!=null) System.out.printf("%s: %s\n", this.getClass().getSimpleName(),module.toString()); if(halfModuleAxialHole!=null) halfModuleAxialHole.print(); if(halfModuleAxialSlot!=null) halfModuleAxialSlot.print(); if(coldBlock!=null)System.out.printf("%s: %s\n", this.getClass().getSimpleName(),coldBlock.getName()); @@ -2059,9 +2064,6 @@ } public LongHalfModuleBundle(SurveyVolume hm) { super(hm); - } - public void print() { - System.out.printf("%s: %s\n", this.getClass().getSimpleName(),halfModule.getName()); } } 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 Tue Dec 16 21:16:10 2014 @@ -1,6 +1,7 @@ package org.lcsim.geometry.compact.converter; import org.jdom.Element; +import org.lcsim.geometry.compact.converter.HPSTestRunTracker2014GeometryDefinition.TestRunHalfModuleBundle; import org.lcsim.geometry.compact.converter.HPSTracker2014GeometryDefinition.LongHalfModuleBundle; import org.lcsim.geometry.compact.converter.HPSTracker2014GeometryDefinition.LongModuleBundle; import org.lcsim.geometry.compact.converter.HPSTracker2014GeometryDefinition.PSVacuumChamber; @@ -170,9 +171,8 @@ * @param mother - mother LCDD geometry object */ protected void addLongModule(LongModuleBundle bundle, LCDDSurveyVolume mother) { - // This could perhaps be fixed if there is a relation with daughters in geometry definition? - // create the module - LCDDSurveyVolume lcddM = new LCDDSurveyVolume(bundle.module, lcdd, mother); + LCDDSurveyVolume lcddM = new LCDDGhostSurveyVolume(bundle.module, mother); + //LCDDSurveyVolume lcddM = new LCDDSurveyVolume(bundle.module, lcdd, mother); add(lcddM); if(bundle.halfModuleAxialHole!=null) addLongHalfModule(bundle.halfModuleAxialHole,lcddM); if(bundle.halfModuleAxialSlot!=null) addLongHalfModule(bundle.halfModuleAxialSlot,lcddM); @@ -180,6 +180,25 @@ if(bundle.halfModuleStereoHole!=null) addLongHalfModule(bundle.halfModuleStereoHole,lcddM); if(bundle.halfModuleStereoSlot!=null) addLongHalfModule(bundle.halfModuleStereoSlot,lcddM); } + + + + /** + * Rules for adding the LCDD module geometry. + * @param bundle - module to be added + * @param mother - mother LCDD geometry object + */ + protected void addTestRunModule(TestRunModuleBundle bundle, LCDDSurveyVolume mother) { + // This could perhaps be fixed if there is a relation with daughters in geometry definition? + // create the module + LCDDSurveyVolume lcddM = new LCDDGhostSurveyVolume(bundle.module, mother); + //SurveyVolume(bundle.module, lcdd, mother); + add(lcddM); + if(bundle.halfModuleAxial!=null) addTestRunHalfModule(bundle.halfModuleAxial,lcddM); + if(bundle.coldBlock!=null) add(new LCDDSurveyVolume(bundle.coldBlock, lcdd, lcddM)); + if(bundle.halfModuleStereo!=null) addTestRunHalfModule((TestRunHalfModuleBundle)bundle.halfModuleStereo,lcddM); + } + /** Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java Tue Dec 16 21:16:10 2014 @@ -197,7 +197,10 @@ } public HalfModuleBundle() { } - abstract public void print(); + public void print() { + System.out.printf("%s: %s\n", this.getClass().getSimpleName(),halfModule.toString()); + System.out.printf("%s: %s\n", this.getClass().getSimpleName(),activeSensor.toString()); + } } @@ -440,7 +443,7 @@ * @return transformed vector. */ public static Hep3Vector transformToParent(Hep3Vector vec, SurveyVolume geometry, String targetName) { - int debug =0; + int debug = 0; if(debug>0) System.out.printf("\ntransformToParent: vec %s in local coordiantes of %s\n", vec.toString(), geometry.getName()); if(geometry.getMother()==null) { if(debug>0) System.out.printf("\ntransformToParent: no mother, return null\n", vec.toString(), geometry.getName()); Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerGeometryDefinition.java Tue Dec 16 21:16:10 2014 @@ -287,7 +287,7 @@ super(m); } public void print() { - if(module!=null) System.out.printf("%s: %s\n", this.getClass().getSimpleName(),module.getName()); + if(module!=null) System.out.printf("%s: %s\n", this.getClass().getSimpleName(),module.toString()); if(halfModuleAxial!=null) halfModuleAxial.print(); if(coldBlock!=null)System.out.printf("%s: %s\n", this.getClass().getSimpleName(),coldBlock.getName()); if(halfModuleStereo!=null) halfModuleStereo.print(); Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/JavaSurveyVolume.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/JavaSurveyVolume.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/JavaSurveyVolume.java Tue Dec 16 21:16:10 2014 @@ -26,7 +26,7 @@ * @author Per Hansson Adrian <[log in to unmask]> */ public class JavaSurveyVolume { - private boolean debug = false; + private boolean debug = true; private String name; private Box box= null; private ILogicalVolume volume = null; Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDGhostSurveyVolume.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDGhostSurveyVolume.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDGhostSurveyVolume.java Tue Dec 16 21:16:10 2014 @@ -23,6 +23,7 @@ if(isDebug()) System.out.printf("%s: constructing LCDD ghost object %s with mother %s\n", this.getClass().getSimpleName(),base.getName(),mother==null?"null":mother.getName()); setName(base.getName()); setMother(mother); + mother.addDaughter(this); if(isDebug()) System.out.printf("%s: DONE constructing LCDD object %s\n", this.getClass().getSimpleName(),base.getName()); } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDSurveyVolume.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDSurveyVolume.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/LCDDSurveyVolume.java Tue Dec 16 21:16:10 2014 @@ -9,6 +9,7 @@ import java.util.Map; import org.jdom.JDOMException; +import org.lcsim.detector.PhysicalVolume; import org.lcsim.detector.Transform3D; import org.lcsim.geometry.compact.converter.lcdd.util.Box; import org.lcsim.geometry.compact.converter.lcdd.util.LCDD; @@ -78,8 +79,12 @@ public void buildPhysVolume() { - if(isDebug()) System.out.printf("%s: build phys volume for %s\n", this.getClass().getSimpleName(),getName()); - setPhysVolume(new PhysVol(volume, getMother().getVolume(), getPos(), getRot())); + + if(isDebug()) System.out.printf("%s: build phys volume for %s with mother %s and physical mother %s\n", this.getClass().getSimpleName(),getName(),getMother().getName(),getPhysMother().getName()); + LCDDSurveyVolume physMother = getPhysMother(); + setPhysVolume(new PhysVol(volume, physMother.getVolume(), getPos(), getRot())); + //if(isDebug()) System.out.printf("%s: build phys volume for %s\n", this.getClass().getSimpleName(),getName()); + //setPhysVolume(new PhysVol(volume, getMother().getVolume(), getPos(), getRot())); } public void buildBox(SurveyVolume base) { if(isDebug()) System.out.printf("%s: build box for %s\n", this.getClass().getSimpleName(),getName()); Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolume.java Tue Dec 16 21:16:10 2014 @@ -2,6 +2,7 @@ import hep.physics.vec.BasicHep3Vector; import hep.physics.vec.Hep3Vector; +import hep.physics.vec.VecOp; import java.util.ArrayList; import java.util.List; @@ -18,7 +19,7 @@ protected boolean debug = true; private String name; private String material = "Vacuum"; - private SurveyVolume mother; + private SurveyVolume mother = null; protected List<SurveyVolume> referenceGeom = null; private SurveyCoordinateSystem coord; protected Hep3Vector ballPos; @@ -61,10 +62,14 @@ setBoxDim(); applyGenericCoordinateSystemCorrections(); applyLocalAlignmentCorrections(); - if(debug) System.out.printf("%s: init of SurveyVolume %s DONE\n",this.getClass().getSimpleName(),getName()); - } - - protected void applyGenericCoordinateSystemCorrections() { + if(debug) { + //printCoordInfo(); + System.out.printf("%s: init of SurveyVolume %s DONE\n",this.getClass().getSimpleName(),getName()); + } + } + + + protected void applyGenericCoordinateSystemCorrections() { //do nothing here unless overridden } @@ -295,11 +300,32 @@ this.material = material; } public String toString() { - String s = "==\n" + getName() + ":\n"; - if(getCenter()!=null) s += "Center of box: " + getCenter().toString() + "\n"; + String s = "==\n" + getName() + " with mother " + (getMother()==null?"<no mother>":getMother().getName()) + ":\n"; + if( getCenter()!=null) s += "Center of box: " + getCenter().toString() + "\n"; if( getBoxDim()!=null) s += "Box dimensions: " + getBoxDim().toString() + "\n"; - s += "Coordinate system:\n" + getCoord().toString() + "\n"; + if(this.coord==null) s += " No coord system \n"; + else s += "Coordinate system:" + getCoord().toString() + "\n"; + SurveyVolume m = getMother(); + while(m!=null) { + Hep3Vector origin_m = HPSTrackerBuilder.transformToParent(new BasicHep3Vector(0, 0, 0), this, m.getName()); + s += String.format("%s origin in %s : %s (mm)\n",getName(), m.getName(), origin_m.toString()); + origin_m = VecOp.mult(0.0393701, origin_m); + s += String.format("%s origin in %s : (%.4f %.4f %.4f) (inch)\n",getName(), m.getName(), origin_m.x(),origin_m.y(),origin_m.z()); + m = m.getMother(); + } + return s; } +// private void printCoordInfo() { +// if(debug) { +// SurveyVolume m = getMother(); +// while(m!=null) { +// Hep3Vector origin_m = HPSTrackerBuilder.transformToParent(getCoord().origin(), this, m.getName()); +// System.out.printf("%s: %s final coord system in %s : %s\n",this.getClass().getSimpleName(),getName(), getMother()==null?" <no mother> ":getMother().getName(),getCoord().toString()); +// } +// System.out.printf("%s: init of SurveyVolume %s DONE\n",this.getClass().getSimpleName(),getName()); +// } +// } + } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolumeImpl.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolumeImpl.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/SurveyVolumeImpl.java Tue Dec 16 21:16:10 2014 @@ -2,7 +2,7 @@ public abstract class SurveyVolumeImpl extends SurveyVolumeVisualization { - private boolean debug = false; + private boolean debug = true; private String name; public SurveyVolumeImpl() { 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 Tue Dec 16 21:16:10 2014 @@ -155,49 +155,57 @@ if(_debug) System.out.printf("%s: adding %s to LCDD\n", getClass().getSimpleName(),lcddObj.getName()); - boolean doAdd = true; - if(lcddObj.getName().contains("tracking")) doAdd=false; - - if(doAdd) { - - // only world/tracking volume can be ghost here?! - if(lcddObj instanceof LCDDGhostSurveyVolume ) { - System.out.printf("%s: trying to add a ghost volume: %s ??\n", getClass().getSimpleName(),lcddObj.getName()); - throw new RuntimeException("adding a ghost volume (" + lcddObj.getName() + ") to LCDD is not allowed."); + boolean validLCDD = true; + + if(lcddObj instanceof LCDDGhostSurveyVolume) { + + if(_debug) System.out.printf("%s: %s is a ghost volume, don't add to LCDD\n", getClass().getSimpleName(),lcddObj.getName()); + validLCDD = false; + + } else { + + // Special case for top level volume which is a non-ghost but is already there. + if(lcddObj.getName().contains("tracking")) { + + if(_debug) System.out.printf("%s: %s is the tracking volume, don't add to LCDD\n", getClass().getSimpleName(),lcddObj.getName()); + validLCDD = false; + + } else { + + //X-check + if(lcddObj instanceof LCDDGhostSurveyVolume ) + throw new RuntimeException("trying to add a ghost volume (" + lcddObj.getName() + ") to LCDD!?"); + + // add box, pos, rotation and create phys volume + lcdd.add(lcddObj.getBox()); + lcdd.add(lcddObj.getPos()); + lcdd.add(lcddObj.getRot()); + lcddObj.buildPhysVolume(); + + // setup the properties of the phys volume + try { + setPhysicalVolumeProperties(lcddObj, sd); + } catch (DataConversionException e) { + e.printStackTrace(); + } } - // add box, pos, rotation and create phys volume - lcdd.add(lcddObj.getBox()); - lcdd.add(lcddObj.getPos()); - lcdd.add(lcddObj.getRot()); - lcddObj.buildPhysVolume(); - // Set the phys volume Id's - // Since the builder don't have access to the system ID - // I keep the phys volume ID's outside. I think these - // should belong to the builder to avoid repeating it in - // the java converter - // TODO move this to the builder for each volume - try { - setPhysicalVolumeProperties(lcddObj, sd); - } catch (DataConversionException e) { - e.printStackTrace(); - } - } else { - if(_debug) System.out.printf("%s: skip building anything (name=%s)\n", getClass().getSimpleName(),lcddObj.getName()); - } - - // add daughters + } + + // add daughters to this volume + if(_debug) System.out.printf("%s: add %d daughters to %s\n", getClass().getSimpleName(),lcddObj.getDaughters().size(),lcddObj.getName()); + for(LCDDSurveyVolume daughter : lcddObj.getDaughters()) { setupPhysicalVolumes(daughter,lcdd, sd); } // finally add volume - if(doAdd) { + if(validLCDD) { if(_debug) System.out.printf("%s: adding volume %s\n", getClass().getSimpleName(),lcddObj.getName()); if(!lcddObj.getVisName().isEmpty()) lcddObj.getVolume().setVisAttributes(lcdd.getVisAttributes(lcddObj.getVisName())); lcdd.add(lcddObj.getVolume()); } else { - if(_debug) System.out.printf("%s: skip adding volume %s\n", getClass().getSimpleName(),lcddObj.getName()); + if(_debug) System.out.printf("%s: don't add volume %s\n", getClass().getSimpleName(),lcddObj.getName()); } if(_debug) System.out.printf("%s: DONE adding %s\n", getClass().getSimpleName(),lcddObj.getName()); } ######################################################################## 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