Print

Print


Author: [log in to unmask]
Date: Tue Feb 24 21:15:41 2015
New Revision: 2203

Log:
use millepede id in print of gbl input file

Modified:
    java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java

Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java	Tue Feb 24 21:15:41 2015
@@ -28,6 +28,8 @@
 import org.hps.recon.tracking.TrackUtils;
 import org.hps.recon.tracking.TrackerHitUtils;
 import org.lcsim.constants.Constants;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.SimTrackerHit;
@@ -43,15 +45,10 @@
 import org.lcsim.recon.tracking.seedtracker.SeedCandidate;
 import org.lcsim.recon.tracking.seedtracker.SeedTrack;
 
+
 /**
-
-* 
-* @author Per Hansson Adrian <[log in to unmask]>
-* @version $Id: GBLOutput.java,v 1.17 2013/11/07 03:30:18 phansson Exp $ $Date: 2013/11/07 03:30:18 $ $Author: phansson $  
-* 
-*/
-/**
- * @author phansson
+ * Calculate the input needed for Millepede minimization.
+ * @author Per Hansson Adrian <[log in to unmask]>
  *
  */
 public class GBLOutput {
@@ -258,14 +255,26 @@
             
             for(HelicalTrackStrip stripOld : strips) {
                 HelicalTrackStripGbl strip = new HelicalTrackStripGbl(stripOld, true);
-                if(_debug>0) System.out.printf("%s: layer %d\n",this.getClass().getSimpleName(),strip.layer());
+                
+                // find Millepede layer definition from DetectorElement
+                IDetectorElement de = ((RawTrackerHit) strip.getStrip().rawhits().get(0)).getDetectorElement();
+                HpsSiSensor sensor;
+                if( de instanceof HpsSiSensor) {
+                    sensor = (HpsSiSensor) de;
+                } else {
+                    throw new ClassCastException("Detector element " + de.getName() + " couldn't be casted to " + HpsSiSensor.class.getName());
+                }
+
+                int millepedeId = sensor.getMillepedeId();
+               
+                if(_debug>0) System.out.printf("%s: layer %d millepede %d (DE=\"%s\", origin %s) \n",this.getClass().getSimpleName(),strip.layer(), millepedeId, sensor.getName(), strip.origin().toString());
                 
                 if(textFile != null) {
-                	textFile.printStrip(istrip,strip.layer());
+                	textFile.printStrip(istrip,millepedeId);
                 }
                 
                 //GBLDATA
-                GBLStripClusterData stripData = new GBLStripClusterData(strip.layer());
+                GBLStripClusterData stripData = new GBLStripClusterData(millepedeId);
                 //Add to output list
                 stripClusterDataList.add(stripData);
                 
@@ -420,7 +429,7 @@
                 
                 
                 
-                if(_debug>0) System.out.printf("layer %d uRes %.10f\n",strip.layer(),res_meas.x());
+                if(_debug>0) System.out.printf("layer %d millePedeId %d uRes %.10f\n",strip.layer(), millepedeId ,res_meas.x());
                 
                 // sim hit residual