Print

Print


Commit in projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd on MAIN
HPSTestRunTracker2014Dev1Builder.java+5-1103340 -> 3341
HPSTestRunTracker2014Dev1GeometryDefinition.java+43-83340 -> 3341
HPSTestRunTracker2014Dev1LCDDBuilder.java+1-13340 -> 3341
HPSTestRunTracker2014GeometryDefinition.java+2-23340 -> 3341
HPSTrackerBuilder.java+1-13340 -> 3341
HPSTrackerJavaBuilder.java+34-203340 -> 3341
HPSTrackerLCDDBuilder.java+23-123340 -> 3341
+109-154
7 modified files
Added c-support to dev1 geometry. Changed extraction of Cardan angles which affect the input unit vectors when mother volume is a ghost volume.

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Dev1Builder.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1Builder.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1Builder.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -36,8 +36,10 @@
 		geometries.add(tracking);
 		HPSTestRunTracker2014Dev1GeometryDefinition.Base base = new HPSTestRunTracker2014Dev1GeometryDefinition.Base("base",tracking);
 		geometries.add(base);
+		HPSTestRunTracker2014Dev1GeometryDefinition.CSupport cSupport = new HPSTestRunTracker2014Dev1GeometryDefinition.CSupport("c_support", base);
+        geometries.add(cSupport);
+        
 		
-		
 
         if(isDebug()) System.out.printf("%s: build modules\n", getClass().getSimpleName());
  
@@ -48,7 +50,7 @@
         if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
         
         String moduleName = "module_L"+ layer + (half=="bottom"?"b":"t");      
-        BaseGeometry ref = null;
+        BaseGeometry ref = cSupport;
         BaseGeometry mother = base;
 
         //Create the module
@@ -67,8 +69,7 @@
 
 		if(isDebug()) System.out.printf("%s: makeHalfModule with name %s\n", this.getClass().getSimpleName(), volName);
 		
-		HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModule halfModule
-		= new HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial(volName, mother, layer, half);
+		HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModule halfModule = new HPSTestRunTracker2014Dev1GeometryDefinition.TestRunHalfModuleAxial(volName, mother, layer, half);
 
 		if(isDebug()) System.out.printf("%s: %s\n", this.getClass().getSimpleName(), halfModule.toString());
 		
@@ -117,120 +118,14 @@
 	
 
 	
-	
-	private void makeHalfModuleComponentHybrid(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
-		
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentHybrid for %s \n", this.getClass().getSimpleName(), mother.getName());
 
-		String volName = mother.getName() + "_hybrid";
 
-		// Build the half-module
-		
-		//  id is hard coded
-		int component_number = 3;
 
-		HPSTestRunTracker2014GeometryDefinition.Hybrid hybrid = new HPSTestRunTracker2014GeometryDefinition.Hybrid(volName,mother,component_number);
-		hybrid.setMaterial("G10");
-		
-		HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
-		hm.hybrid = hybrid;
 
-		if(isDebug()) System.out.printf("%s: added hybrid to half-module with name %s \n", this.getClass().getSimpleName(), hm.halfModule.getName());
 
-	
-	}
 
-
-
-	private void makeHalfModuleComponentCF(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
-
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentCF for %s \n", this.getClass().getSimpleName(), mother.getName());
-
-
-		String volName = mother.getName() + "_cf";
-
-		// Build the half-module
-		
-		//  id is hard coded
-		int component_number = 1;
-
-		HPSTestRunTracker2014GeometryDefinition.CarbonFiber cf = new HPSTestRunTracker2014GeometryDefinition.CarbonFiber(volName,mother,component_number);
-		cf.setMaterial("CarbonFiber");
-		
-		HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
-		hm.carbonFiber = cf;
-
-	}
-
-
-
-
-	private void makeHalfModuleComponentKapton(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
-
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentKapton for %s \n", this.getClass().getSimpleName(), mother.getName());
-
-		String volName = mother.getName() + "_lamination";
-
-		// Build the half-module
-
-		//  id is hard coded
-		int component_number = 2;
-
-		HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination lamination = new HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination(volName,mother,component_number);
-		lamination.setMaterial("Kapton");
-
-		
-		HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
-		hm.lamination = lamination;
-
-	}
-
-
-	private void makeHalfModuleComponentSensor(HPSTestRunTracker2014GeometryDefinition.TestRunHalfModule mother) {
-
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
-
-		String volName = mother.getName() + "_sensor";
-
-		// sensor id is hard coded in old geometry to be zero by counting over the components of the module
-		int component_number = 0;
-
-		//	
-		HPSTestRunTracker2014GeometryDefinition.Sensor sensor = new HPSTestRunTracker2014GeometryDefinition.Sensor(volName, mother, component_number);
-		sensor.setMaterial("Silicon");
-		
-		HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother(), mother.getName());
-		hm.sensor = sensor;
-		
-
-		makeHalfModuleComponentActiveSensor(sensor);
-
-
-	}
-
 	
-	private void makeHalfModuleComponentActiveSensor(HPSTestRunTracker2014GeometryDefinition.Sensor mother) {
-		
-		if(isDebug()) System.out.printf("%s: makeHalfModuleComponentActiveSensor for %s \n", this.getClass().getSimpleName(), mother.getName());
-		
-		String volName = mother.getName() + "_active";
 
-		HPSTestRunTracker2014GeometryDefinition.ActiveSensor active_sensor = new HPSTestRunTracker2014GeometryDefinition.ActiveSensor(volName, mother);
-		active_sensor.setMaterial("Silicon");
-		
-		HalfModuleBundle hm = getHalfModuleBundle((HPSTestRunTracker2014GeometryDefinition.TestRunModule) mother.getMother().getMother(), mother.getMother().getName());
-		hm.activeSensor = active_sensor;
-		
-	}
-
-
-
-
-
-
-
-	
-
     
     /*
 	public static Hep3Vector transformToMotherCoord(Hep3Vector vec, BaseGeometry mother, String targetMotherName) {

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Dev1GeometryDefinition.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1GeometryDefinition.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1GeometryDefinition.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -9,6 +9,7 @@
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.BaseGeometry;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.HalfModuleComponent;
 import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.HalfModuleLamination;
+import org.lcsim.geometry.compact.converter.lcdd.HPSTestRunTracker2014GeometryDefinition.Sensor;
 
 import hep.physics.vec.BasicHep3Vector;
 
@@ -147,9 +148,9 @@
 
 			protected void setPos() {
 				// using SiStrips convention
-				setBallPos(0,0,0);
-				setVeePos(ballPos.x(), ballPos.y(), ballPos.z() + getSensorWidth()/2.0);
-				setFlatPos(ballPos.x() + getSensorLength()/2.0,ballPos.y(), ballPos.z());		
+//				setBallPos(0,0,0);
+//				setVeePos(ballPos.x(), ballPos.y(), ballPos.z() + getSensorWidth()/2.0);
+//				setFlatPos(ballPos.x() + getSensorLength()/2.0,ballPos.y(), ballPos.z());		
 //				Rotation r = new Rotation(org.apache.commons.math3.geometry.euclidean.threed.RotationOrder.XYZ, Math.PI/4, 0, 0);
 //				Vector3D b = r.applyTo(new Vector3D(this.ballPos.v()));
 //				Vector3D v = r.applyTo(new Vector3D(this.veePos.v()));
@@ -159,22 +160,56 @@
 //                setFlatPos(f.getX(), f.getY(), f.getZ());
 //                
 				// default convention
-				//setBallPos(0,0,0);
-				//setVeePos(ballPos.x() + getSensorLength()/2.0, ballPos.y(), ballPos.z());
-				//setFlatPos(ballPos.x(),ballPos.y() + getSensorThickness()/2.0, ballPos.z());
+				setBallPos(0,0,0);
+				setVeePos(ballPos.x() + getSensorLength()/2.0, ballPos.y(), ballPos.z());
+				setFlatPos(ballPos.x(),ballPos.y() + getSensorThickness()/2.0, ballPos.z());
 
 			}
 
 			protected void setBoxDim() {
 				// using SiStrips convention
-				setBoxDim(getSensorWidth(),getSensorLength(),getSensorThickness());
+				//setBoxDim(getSensorWidth(),getSensorLength(),getSensorThickness());
 				// default convention
-				//setBoxDim(getSensorLength(),getSensorThickness(),getSensorWidth());
+				setBoxDim(getSensorLength(),getSensorThickness(),getSensorWidth());
 
 			}
 
 		}
+		
+		
+		public static class ActiveSensor extends HPSTestRunTracker2014GeometryDefinition.ActiveSensor {
+            public ActiveSensor(String name, BaseGeometry m) {
+                super(name, m);
+                init();
+            }
+            protected void setPos() {
+                if(HPSTestRunTracker2014GeometryDefinition.useSiStripsConvention) {
+                    ballPos = new BasicHep3Vector(0,0,0);
+                    veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
+                    flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
+                } else {
+                    ballPos = new BasicHep3Vector(0,0,0);
+                    veePos = new BasicHep3Vector(getActiveSensorWidth()/2.0,0,0);
+                    flatPos = new BasicHep3Vector(0,getActiveSensorLength()/2.0,0);
+                }
+            }
+            protected void setCoord() {
+                setCoord(null);
+            }
+            protected void setCenter() {
+                setCenter(0,0,0);
+            }
+            @Override
+            protected void setBoxDim() {
+                if(HPSTestRunTracker2014GeometryDefinition.useSiStripsConvention) {
+                    setBoxDim(getActiveSensorWidth(), getActiveSensorLength(), getActiveSensorThickness());
+                } else {
+                    setBoxDim(getActiveSensorLength(),getActiveSensorThickness(),getActiveSensorWidth());
+                }
+            }
+        }
 		*/
+		
 	
 }
 	

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014Dev1LCDDBuilder.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1LCDDBuilder.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014Dev1LCDDBuilder.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -56,7 +56,7 @@
         if(isDebug()) System.out.printf("%s: makeModule for layer %d %s \n", this.getClass().getSimpleName(), layer, half);
         
         LCDDBaseGeometry mother = baseTrackerGeometry;
-
+        
         //Create the module
         LCDDBaseGeometry lcddM = new LCDDBaseGeometry(_builder.getBaseGeometry(HPSTestRunTracker2014Dev1GeometryDefinition.TestRunModule.class), lcdd, mother);
         add(lcddM);

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTestRunTracker2014GeometryDefinition.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014GeometryDefinition.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTestRunTracker2014GeometryDefinition.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -29,7 +29,7 @@
 		//General
 		static final double inch = 25.4; //mm
 		protected static final boolean useSiStripsConvention = true;
-		protected static final boolean use30mradRotation = false;
+		protected static final boolean use30mradRotation = true;
 		protected static final boolean useFakeHalfModuleAxialPos = false;
 		
 		// Global position references	
@@ -46,7 +46,7 @@
 		 * 
 		 */
 		public static abstract class BaseGeometry {
-			protected boolean debug = false;
+			protected boolean debug = true;
 			private String name;
 			private String material = "Vacuum";
 			private BaseGeometry mother;

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTrackerBuilder.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerBuilder.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerBuilder.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -269,7 +269,7 @@
 	 * @return transform.
 	 */
 	public static Transform3D getTransform(Transform3D t, BaseGeometry mother, String targetMotherName) {
-		int debug=0;
+		int debug=1;
 		if(debug>0) System.out.printf("getTransform mother %s target %s with current transform\n%s\n", mother.getName(), targetMotherName,t.toString());
 		if(mother==null) throw new RuntimeException("Trying to get mother transform but there is no mother?!");
 		if(mother.getName().equals(targetMotherName)) {

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTrackerJavaBuilder.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerJavaBuilder.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerJavaBuilder.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -314,7 +314,7 @@
 			if(isDebug()) System.out.printf("%s: find center of box in physical mother coord %s \n", this.getClass().getSimpleName(),physMother.getName());
 			// hack since my getTransform function needs a mother TODO Fix this!
 			BaseGeometry gm = base;
-			if(isDebug()) System.out.printf("%s: look for physical mother %s starting from mother  \n", this.getClass().getSimpleName(),physMother.getName(),gm.getMother());
+			if(isDebug()) System.out.printf("%s: look for physical mother %s starting from mother %s \n", this.getClass().getSimpleName(),physMother.getName(),gm.getMother()!=null?gm.getMother().getName():"-- no mother --");
 			while((gm=gm.getMother()).getName()!=physMother.getName()) {
 				if(isDebug()) System.out.printf("%s: gm is %s \n", this.getClass().getSimpleName(),gm.getName());
 				//gm = gm.getMother();
@@ -331,26 +331,40 @@
 			//Use apache lib to get angles, but in principle I should already have it from the trf above
 			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().v(), base.getCoord().w(), new BasicHep3Vector(0,1,0),new BasicHep3Vector(0,0,1));
 			if(isDebug()) System.out.printf("%s: find LCDD Cardan rotation angles - need to find mother to physical mother transform \n", this.getClass().getSimpleName(),physMother.getName());
-			Hep3Vector unit_u = new BasicHep3Vector(1,0,0);
-			Hep3Vector unit_v = new BasicHep3Vector(0,1,0);
-			Hep3Vector unit_w = new BasicHep3Vector(0,0,1);
-			if(!base.getMother().getName().equals(physMother.getName())) {
-				Transform3D trf_mother = HPSTrackerBuilder.getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
-				unit_u = VecOp.unit(trf_mother.rotated(unit_u));
-				unit_v = VecOp.unit(trf_mother.rotated(unit_v));
-				unit_w = VecOp.unit(trf_mother.rotated(unit_w));
-				if(isDebug()) System.out.printf("%s: found transform from mother to physical mother \n%s\n", this.getClass().getSimpleName(),trf_mother.toString());
-			} else {
-				if(isDebug()) System.out.printf("%s: mother and physical mother is the same\n",getClass().getSimpleName());
-			}
-			
-			if(isDebug()) {
-				System.out.printf("%s: unit vectors to get Cardan angles from become unit_u %s unit_v %s unit_w %s\n", this.getClass().getSimpleName(),unit_u.toString(),unit_v.toString(),unit_w.toString());
-				System.out.printf("%s: unit vectors u %s v %s w %s\n", this.getClass().getSimpleName(),base.getCoord().u().toString(),base.getCoord().v().toString(),base.getCoord().w().toString());
-			}
+			Hep3Vector base_u = base.getCoord().u();
+            Hep3Vector base_v = base.getCoord().v();
+            Hep3Vector base_w = base.getCoord().w();
+            if(isDebug()) System.out.printf("%s: unit vectors in mother coord: %s, %s, %s\n", this.getClass().getSimpleName(),base_u.toString(),base_v.toString(),base_w.toString());
+            Hep3Vector unit_u = new BasicHep3Vector(1,0,0);
+            Hep3Vector unit_v = new BasicHep3Vector(0,1,0);
+            Hep3Vector unit_w = new BasicHep3Vector(0,0,1);
+            if(!base.getMother().getName().equals(physMother.getName())) {
+                if(isDebug()) System.out.printf("%s: Need to get unit vectors in physical mother %s coord system\n", this.getClass().getSimpleName(),physMother.getName());
+                Transform3D trf_mother = HPSTrackerBuilder.getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
+                if(isDebug()) System.out.printf("%s: found transform from mother to physical mother \n%s\n", this.getClass().getSimpleName(),trf_mother.toString());
+                //unit_u = VecOp.unit(trf_mother.rotated(unit_u));
+                //unit_v = VecOp.unit(trf_mother.rotated(unit_v));
+                //unit_w = VecOp.unit(trf_mother.rotated(unit_w));
+                base_u = VecOp.unit(trf_mother.rotated(base_u));
+                base_v = VecOp.unit(trf_mother.rotated(base_v));
+                base_w = VecOp.unit(trf_mother.rotated(base_w));
+                
+            } else {
+                if(isDebug()) System.out.printf("%s: mother and physical mother is the same so unit vectors didn't change\n",getClass().getSimpleName());
+            }
+            
+            if(isDebug()) {
+                if(isDebug()) System.out.printf("%s: final unit vectors to get Cardan angles from : \n%s, %s, %s -> %s, %s, %s \n", 
+                                                this.getClass().getSimpleName(),
+                                                base_u.toString(),base_v.toString(),base_w.toString(),              
+                                                unit_u.toString(),unit_v.toString(),unit_w.toString());
+                //System.out.printf("%s: unit vectors u %s v %s w %s\n", this.getClass().getSimpleName(),base.getCoord().u().toString(),base.getCoord().v().toString(),base.getCoord().w().toString());
+            }
+            
 			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(unit_u,unit_v,base.getCoord().u(), base.getCoord().v());
-			Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().u(), base.getCoord().v(), unit_u,unit_v);
-			//Hep3Vector lcdd_rot_angles_active = HPSTestRunTracker2014.getActiveEulerAngles(base.getCoord().v(), base.getCoord().w(), unit_v,unit_w);
+			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().u(), base.getCoord().v(), unit_u,unit_v);
+			Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base_u, base_v, unit_u,unit_v);
+            //Hep3Vector lcdd_rot_angles_active = HPSTestRunTracker2014.getActiveEulerAngles(base.getCoord().v(), base.getCoord().w(), unit_v,unit_w);
 //			double rot_mat[][] = HPSTestRunTracker2014.getActiveEulerAnglesMatrix(base.getCoord().v(), base.getCoord().w(), unit_v,unit_w);
 //			Rotation3D rot_xcheck = new Rotation3D();
 //			BasicHep3Matrix rot_mat_hep = new BasicHep3Matrix();

projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd
HPSTrackerLCDDBuilder.java 3340 -> 3341
--- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerLCDDBuilder.java	2014-09-23 08:28:40 UTC (rev 3340)
+++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/geometry/compact/converter/lcdd/HPSTrackerLCDDBuilder.java	2014-09-23 21:35:43 UTC (rev 3341)
@@ -178,29 +178,40 @@
 			
 			//Find LCDD Euler rotation angles from coordinate system unit vectors
 			//Note that this has to be rotation wrt to physical mother and not just mother as normally is the case
-			//Use apache lib to get angles, but in principle I should already have it from the trf above
-			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().v(), base.getCoord().w(), new BasicHep3Vector(0,1,0),new BasicHep3Vector(0,0,1));
 			if(isDebug()) System.out.printf("%s: find LCDD Cardan rotation angles - need to find mother to physical mother transform \n", this.getClass().getSimpleName(),physMother.getName());
+			Hep3Vector base_u = base.getCoord().u();
+			Hep3Vector base_v = base.getCoord().v();
+			Hep3Vector base_w = base.getCoord().w();
+            if(isDebug()) System.out.printf("%s: unit vectors in mother coord: %s, %s, %s\n", this.getClass().getSimpleName(),base_u.toString(),base_v.toString(),base_w.toString());
 			Hep3Vector unit_u = new BasicHep3Vector(1,0,0);
 			Hep3Vector unit_v = new BasicHep3Vector(0,1,0);
 			Hep3Vector unit_w = new BasicHep3Vector(0,0,1);
 			if(!base.getMother().getName().equals(physMother.getName())) {
-				Transform3D trf_mother = HPSTrackerBuilder.getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
-				unit_u = VecOp.unit(trf_mother.rotated(unit_u));
-				unit_v = VecOp.unit(trf_mother.rotated(unit_v));
-				unit_w = VecOp.unit(trf_mother.rotated(unit_w));
-				if(isDebug()) System.out.printf("%s: found transform from mother to physical mother \n%s\n", this.getClass().getSimpleName(),trf_mother.toString());
+			    if(isDebug()) System.out.printf("%s: Need to get unit vectors in physical mother %s coord system\n", this.getClass().getSimpleName(),physMother.getName());
+                Transform3D trf_mother = HPSTrackerBuilder.getTransform(base.getMother().getCoord().getTransformation(),base.getMother().getMother(),physMother.getName()); 
+                if(isDebug()) System.out.printf("%s: found transform from mother to physical mother \n%s\n", this.getClass().getSimpleName(),trf_mother.toString());
+				//unit_u = VecOp.unit(trf_mother.rotated(unit_u));
+				//unit_v = VecOp.unit(trf_mother.rotated(unit_v));
+				//unit_w = VecOp.unit(trf_mother.rotated(unit_w));
+				base_u = VecOp.unit(trf_mother.rotated(base_u));
+                base_v = VecOp.unit(trf_mother.rotated(base_v));
+                base_w = VecOp.unit(trf_mother.rotated(base_w));
+                
 			} else {
-				if(isDebug()) System.out.printf("%s: mother and physical mother is the same\n",getClass().getSimpleName());
+				if(isDebug()) System.out.printf("%s: mother and physical mother is the same so unit vectors didn't change\n",getClass().getSimpleName());
 			}
 			
 			if(isDebug()) {
-				System.out.printf("%s: unit vectors to get Cardan angles from become unit_u %s unit_v %s unit_w %s\n", this.getClass().getSimpleName(),unit_u.toString(),unit_v.toString(),unit_w.toString());
-				System.out.printf("%s: unit vectors u %s v %s w %s\n", this.getClass().getSimpleName(),base.getCoord().u().toString(),base.getCoord().v().toString(),base.getCoord().w().toString());
+			    if(isDebug()) System.out.printf("%s: final unit vectors to get Cardan angles from : \n%s, %s, %s -> %s, %s, %s \n", 
+			                                    this.getClass().getSimpleName(),
+			                                    base_u.toString(),base_v.toString(),base_w.toString(),	            
+			                                    unit_u.toString(),unit_v.toString(),unit_w.toString());
+				//System.out.printf("%s: unit vectors u %s v %s w %s\n", this.getClass().getSimpleName(),base.getCoord().u().toString(),base.getCoord().v().toString(),base.getCoord().w().toString());
 			}
 			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(unit_u,unit_v,base.getCoord().u(), base.getCoord().v());
-			Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().u(), base.getCoord().v(), unit_u,unit_v);
-			
+			//Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base.getCoord().u(), base.getCoord().v(), unit_u,unit_v);
+			Hep3Vector lcdd_rot_angles = HPSTestRunTracker2014.getEulerAngles(base_u, base_v, unit_u,unit_v);
+            
 			// Check if there are explicit rotations built into the object itself which overrides
 			// TODO this should be included in the definition of the coordinate system. Fix this for the affected components.
 			/*
SVNspam 0.1


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