Print

Print


Author: [log in to unmask]
Date: Tue Oct  6 16:33:57 2015
New Revision: 3779

Log:
hack to accomodate Sho's hack

Modified:
    java/trunk/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java

Modified: java/trunk/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java	Tue Oct  6 16:33:57 2015
@@ -54,6 +54,8 @@
 
 	private static String detectorName = "Tracker";
 	private static boolean replaceConstant = false;
+    private static boolean calcNewValue = true;
+
 
 
     private static Options createCmdLineOpts() {
@@ -61,6 +63,7 @@
 		options.addOption(new Option("c",true,"The path to the compact xml file."));
 		options.addOption(new Option("o",true,"The name of the new compact xml file."));
 		options.addOption(new Option("r", false, "Replace correction instead of adding to it."));
+        options.addOption(new Option("t", false, "Add a text string as a new value instead of adding to it."));
 		return options;
 	}
 	
@@ -99,11 +102,16 @@
 			compactFilenameNew = cl.getOptionValue("o");
 		}
 		
+		
+		
 		if(cl.hasOption("r")) {
 		    replaceConstant = true;
 		}
 
-		
+		if(cl.hasOption("t")) {
+            calcNewValue = false;
+        }
+
 		
 		File compactFile = new File(compactFilename);
 		
@@ -165,25 +173,45 @@
 		                    for(MilleParameter p : params) {
 		                        Element node = findMillepedeConstantNode(detector,Integer.toString(p.getId()));
 		                        if(node!=null) {
-		                            double correction = p.getValue();
-		                            double oldValue = 0;
-		                            try {
-		                                oldValue = node.getAttribute("value").getDoubleValue();
-		                            } catch (DataConversionException e) {
-		                                e.printStackTrace();
+
+                                    double correction = p.getValue();
+
+		                            // have the option of adding a text value to the compact instead of actually computing the new value
+		                            if(calcNewValue) {
+
+		                                double oldValue = 0;
+		                                try {
+		                                    oldValue = node.getAttribute("value").getDoubleValue();
+		                                } catch (DataConversionException e) {
+		                                    e.printStackTrace();
+		                                }
+		                                double newValue;
+		                                if(replaceConstant) {
+		                                    newValue = correction;
+		                                } else {
+		                                    if (p.getType() == MilleParameter.Type.ROTATION.getType()) {
+		                                        newValue = oldValue - correction;
+		                                    } else {
+		                                        newValue = oldValue + correction;
+		                                    }
+		                                }
+		                                System.out.println("Update " + p.getId() + ": " + oldValue + " (corr. " + correction + ") ->  "  + newValue );
+		                                node.setAttribute("value", String.format("%.6f",newValue));
+		                            
+		                            } else {
+		                                
+		                                String oldValue = node.getAttribute("value").getValue();
+		                                
+		                                if(replaceConstant)
+		                                    throw new RuntimeException("Doesn't make sense to try and replace with the string option?");
+
+		                                if( correction != 0.0) {
+		                                    String newValue = oldValue + " + " + String.format("%.6f",correction);
+		                                    System.out.println("Update " + p.getId() + ": " + oldValue + " (corr. " + correction + ") ->  "  + newValue );
+		                                    node.setAttribute("value", newValue);
+		                                }		                                
 		                            }
-		                            double newValue;
-		                            if(replaceConstant) {
-		                                newValue = correction;
-		                            } else {
-		                                if (p.getType() == MilleParameter.Type.ROTATION.getType()) {
-		                                    newValue = oldValue - correction;
-		                                } else {
-		                                    newValue = oldValue + correction;
-		                                }
-		                            }
-		                            System.out.println("Update " + p.getId() + ": " + oldValue + " (corr. " + correction + ") ->  "  + newValue );
-		                            node.setAttribute("value", String.format("%.6f",newValue));
+		                            
 		                        } else {
 		                            throw new RuntimeException("no element found for " + p.getId() + " check format of compact file");
 		                        }