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
|