Commit in hps-java/src/main on MAIN | |||
resources/org/lcsim/hps/steering/MPAlignment.lcsim | +104 | -26 | 1.1 -> 1.2 |
java/org/lcsim/hps/users/phansson/RunMPAlignment.java | +3 | -3 | 1.12 -> 1.13 |
/MPAlignmentParameters.java | +13 | -87 | 1.17 -> 1.18 |
java/org/lcsim/hps/recon/tracking/TrackUtils.java | +2 | -2 | 1.9 -> 1.10 |
+122 | -118 |
Updates to alignment code.
diff -u -r1.1 -r1.2 --- MPAlignment.lcsim 7 Sep 2012 22:42:53 -0000 1.1 +++ MPAlignment.lcsim 14 Nov 2012 22:08:23 -0000 1.2 @@ -1,65 +1,70 @@
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+ <inputFiles> + <!--<fileRegExp baseDir="./../data/mc/v3" >egs.*filt.*recon.*</fileRegExp>--> + <!--<fileRegExp baseDir="./../data/mc/SVT-CF" >.*</fileRegExp>--> + <!--<fileRegExp baseDir="./../data/mc/SVT-CF-THINSI" >.*</fileRegExp>--> + </inputFiles>
<control>
- <numberOfEvents>-1</numberOfEvents> - <printInputFiles>false</printInputFiles>
+ <numberOfEvents>10000</numberOfEvents> + <printInputFiles>true</printInputFiles>
<printDriversDetailed>true</printDriversDetailed> </control> <execute>
- -
<driver name="EventMarkerDriver"/> <driver name="HPSCalibrationDriver"/>
- <driver name="RawTrackerHitSensorSetup"/>
+ <driver name="RawTrackerHitSensorSetup"/>
<driver name="RawTrackerHitFitterDriver" /> <driver name="TrackerHitDriver"/> <driver name="TrackerReconDriver"/> <driver name="EcalRawConverter" /> <driver name="EcalClusterer" />
- <!-- <driver name="TrackingReconstructionPlots"/> -->
+<!-- <driver name="TrackingReconstructionPlots"/> -->
+<!-- <driver name="MCParticlePlots"/> -->
+<!-- <driver name="TruthMomentumAnalysis"/> -->
+ <driver name="HelicalTrackHitResidualsDriver"/>
<driver name="MPAlignment"/>
- <driver name="ExtrapolatorAnalysis"/> - -<!-- - <driver name="LCIOWriter"/>
+<!-- <driver name="LCIOWriter"/> -->
<driver name="CleanupDriver"/>
--->
</execute> <drivers>
- - <driver name="MPAlignment"
+ <driver name="MPAlignment"
type="org.lcsim.hps.users.phansson.RunMPAlignment"> <residualLimitFileName>/Users/phansson/work/HPS/software/reco/hps-java/src/main/java/org/lcsim/hps/users/phansson/residualLimits.txt</residualLimitFileName> <debug>false</debug>
- <hideFrame>true</hideFrame> - <outputPlotFileName>mpalignment.aida</outputPlotFileName> - <resLayer1MinY>-1.0</resLayer1MinY>
+ <hideFrame>false</hideFrame> + <milleFile>${milleFile}</milleFile> + <outputPlotFileName></outputPlotFileName>
</driver>
+ <driver name="TruthMomentumAnalysis" + type="org.lcsim.hps.users.phansson.TruthMomentumResolutionDriver"> + <hideFrame>false</hideFrame> + <debug>false</debug> + </driver> + <driver name="MCParticlePlots" type="org.lcsim.hps.analysis.ecal.HPSMCParticlePlotsDriver" />
<driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots"> <outputPlots>trackingPlots.aida</outputPlots> </driver>
- <driver name="ExtrapolatorAnalysis" type="org.lcsim.hps.users.mgraham.TrackExtrapolationAnalysis"> - <hideFrame>true</hideFrame> - <outputPlotFileName>extrapolatoranalysis.aida</outputPlotFileName> - </driver>
<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"> <collectionNames>TrackerHits SVTRawTrackerHits SVTFittedRawTrackerHits</collectionNames> </driver>
- <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/> - <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver"> - <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName> - <eventRefreshRate>1</eventRefreshRate>
+ <driver name="HelicalTrackHitResidualsDriver" type="org.lcsim.hps.users.phansson.HelicalTrackHitResidualsDriver"> + <debug>false</debug> + <hideFrame>false</hideFrame>
</driver>
-
+
- <driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver"/>
+ + <driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver"> + <runNumber>1351</runNumber> + </driver>
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver"> <eventInterval>1000</eventInterval>
@@ -95,5 +100,78 @@
+ + + + + + + + + + + <driver name="EcalReadout" + type="org.lcsim.hps.recon.ecal.HPSEcalFADCReadoutDriver"> + <readoutPeriod>4.0</readoutPeriod> + <coincidenceWindow>2</coincidenceWindow> + <ecalName>Ecal</ecalName> + <ecalCollectionName>EcalHits</ecalCollectionName> + <ecalRawCollectionName>EcalRawHits</ecalRawCollectionName> + <triggerThreshold>80</triggerThreshold> + <readoutThreshold>50</readoutThreshold> + </driver> + + <driver name="EcalConverter" + type="org.lcsim.hps.recon.ecal.HPSEcalConverterDriver"> + <rawCollectionName>EcalRawHits</rawCollectionName> + <ecalCollectionName>EcalCorrectedHits</ecalCollectionName> + <scale>1</scale> + </driver> + + <driver name="EcalTriggerFilter" type="org.lcsim.hps.recon.ecal.HPSEcalTriggerFilterDriver"> + <inputCollection>EcalCorrectedHits</inputCollection> + <outputCollection>EcalFilteredHits</outputCollection> + </driver> + + <driver name="EcalCTPClusterer" + type="org.lcsim.hps.recon.ecal.HPSEcalCTPClusterer"> + <ecalName>Ecal</ecalName> + <clusterWindow>32.0</clusterWindow> + <ecalCollectionName>EcalFilteredHits</ecalCollectionName> + </driver> + + <driver name="EcalTrigger" + type="org.lcsim.hps.recon.ecal.TestRunTriggerDriver"> + <clusterCollectionName>EcalClusters</clusterCollectionName> + <deadTime>10</deadTime> + </driver> + <driver name="SimpleSVTReadout" type="org.lcsim.hps.recon.tracking.SimpleSvtReadout"> + </driver> + + <driver name="SVTReadout" type="org.lcsim.hps.recon.tracking.apv25.SvtReadout"> + <debug>false</debug> + <pedestalRun>false</pedestalRun> + <triggerLatencyTime>288</triggerLatencyTime> + </driver> + + <driver name="Digitization" type="org.lcsim.hps.recon.tracking.RearTransitionModule" /> + + <driver name="DataProcessing" type="org.lcsim.hps.recon.tracking.TestRunDataProcessingModule" > + <enablePileUpCut>true</enablePileUpCut> + <enableThresholdCut>true</enableThresholdCut> + <noiseThreshold>2</noiseThreshold> + <numberOfSamplesAboveTreshold>3</numberOfSamplesAboveTreshold> + <numberOfSamplesToReadOut>6</numberOfSamplesToReadOut> + </driver> + + <driver name="ClockDriver" + type="org.lcsim.hps.util.ClockDriver"> + </driver> + + <driver name="TestRunReconToLcio" type="org.lcsim.hps.evio.TestRunTriggeredReconToLcio"> + <!--<outputFile>${outputFile}</outputFile>--> + </driver> + +
</drivers> </lcsim>
\ No newline at end of file
diff -u -r1.12 -r1.13 --- RunMPAlignment.java 7 Nov 2012 20:55:50 -0000 1.12 +++ RunMPAlignment.java 14 Nov 2012 22:08:23 -0000 1.13 @@ -44,13 +44,13 @@
private String _type = "LOCAL"; //GLOBAL OR LOCAL RESIDUALS private String simTrackerHitCollectionName = "TrackerHits";
- private String outputMilleFile = "alignMP.txt";
+ private String milleFile = "alignMP.txt";
public void setDebug(boolean v) { this._debug = v; } public void setMilleFile(String filename) {
- outputMilleFile = filename;
+ milleFile = filename;
} public void setOutputPlotFileName(String filename) { outputPlotFileName = filename;
@@ -72,7 +72,7 @@
@Override public void detectorChanged(Detector detector) {
- ap = new MPAlignmentParameters(this.outputMilleFile);
+ ap = new MPAlignmentParameters(milleFile);
ap.setDebug(_debug); ap.setType(this._type); ap.setHideFrame(hideFrame);
diff -u -r1.17 -r1.18 --- MPAlignmentParameters.java 7 Nov 2012 20:55:23 -0000 1.17 +++ MPAlignmentParameters.java 14 Nov 2012 22:08:23 -0000 1.18 @@ -151,7 +151,8 @@
String half = hitsOnTrack.get(0).getPosition()[2]>0 ? "top" : "bottom"; pWriter.printf("TRACK %s (%d)\n",half,itrack); aida.cloud1D("Track Chi2 "+ half).fill(track.getChi2());
- if(_DEBUG) System.out.printf("%s: track %d has %d hits\n",this.getClass().getSimpleName(),itrack,hitsOnTrack.size());
+ aida.cloud1D("Track Chi2ndf "+ half).fill(track.getChi2()/track.getNDF()); + if(_DEBUG) System.out.printf("%s: track %d (chi2=%.2f ndf=%d) has %d hits\n",this.getClass().getSimpleName(),itrack,track.getChi2(),track.getNDF(),hitsOnTrack.size());
for (TrackerHit hit : hitsOnTrack) { HelicalTrackHit htc = (HelicalTrackHit) hit;
@@ -730,82 +731,6 @@
- /* - - - //**************************************************************************** - //Derivatives of the predicted hit position qp for a rotation alpha around the x-axis - - dqp_da_TRACK.setElement(0, 0, _alignUtils.dx_dalpha()); - dqp_da_TRACK.setElement(1, 0, _alignUtils.dy_dalpha()); - dqp_da_TRACK.setElement(2, 0, _alignUtils.dz_dalpha()); - - - //Put it into a matrix to be able to transform easily - //BasicMatrix _dqp_da_TRACK = FillMatrix(dqp_da_TRACK, 3, 1); - //Transform derivatives to sensor frame! - dfdp = (BasicMatrix) MatrixOp.mult(trkToStrip, dqp_da_TRACK); - //Add it to the global parameter object - GlobalParameter gp_ra = new GlobalParameter("Rotation alpha",side,layer,2000,100,true); - gp_ra.setDfDp(dfdp); - _glp.add(gp_ra); - if (_DEBUG) { - gp_ra.print(); - System.out.println("Track frame dfdp: " + dqp_da_TRACK); - //System.out.printf("dfdp = %5.5f %5.5f %5.5f GL%d name: %s\n", gp.dfdp(0), gp.dfdp(1), gp.dfdp(2), gp.getLabel(),gp.getName()); - } - - - //**************************************************************************** - //Calculate derivatives for a residual in x,y,z-direction for rotation beta (rotation around beamline direction y ) - - dqp_da_TRACK.setElement(0, 0, _alignUtils.dx_dbeta()); - dqp_da_TRACK.setElement(1, 0, _alignUtils.dy_dbeta()); - dqp_da_TRACK.setElement(2, 0, _alignUtils.dz_dbeta()); - - - //Put it into a matrix to be able to transform easily - //BasicMatrix _dqp_da_TRACK = FillMatrix(dqp_da_TRACK, 3, 1); - //Transform derivatives to sensor frame! - dfdp = (BasicMatrix) MatrixOp.mult(trkToStrip, dqp_da_TRACK); - //Add it to the global parameter object - GlobalParameter gp_rb = new GlobalParameter("Rotation beta",side,layer,2000,200,true); - gp_rb.setDfDp(dfdp); - _glp.add(gp_rb); - if (_DEBUG) { - gp_rb.print(); - System.out.println("Track frame dfdp: " + dqp_da_TRACK); - //System.out.printf("dfdp = %5.5f %5.5f %5.5f GL%d name: %s\n", gp.dfdp(0), gp.dfdp(1), gp.dfdp(2), gp.getLabel(),gp.getName()); - } - - - //**************************************************************************** - //Calculate derivatives for a residual in x,y,z-direction for rotation gamma (rotation around beamline direction z ) - - dqp_da_TRACK.setElement(0, 0, _alignUtils.dx_dgamma()); - dqp_da_TRACK.setElement(1, 0, _alignUtils.dy_dgamma()); - dqp_da_TRACK.setElement(2, 0, _alignUtils.dz_dgamma()); - - - //Put it into a matrix to be able to transform easily - //BasicMatrix _dqp_da_TRACK = FillMatrix(dqp_da_TRACK, 3, 1); - //Transform derivatives to sensor frame! - dfdp = (BasicMatrix) MatrixOp.mult(trkToStrip, dqp_da_TRACK); - //Add it to the global parameter object - GlobalParameter gp_rg = new GlobalParameter("Rotation gamma",side,layer,2000,300,true); - gp_rg.setDfDp(dfdp); - _glp.add(gp_rg); - if (_DEBUG) { - gp_rg.print(); - System.out.println("Track frame dfdp: " + dqp_da_TRACK); - //System.out.printf("dfdp = %5.5f %5.5f %5.5f GL%d name: %s\n", gp.dfdp(0), gp.dfdp(1), gp.dfdp(2), gp.getLabel(),gp.getName()); - } - - */ - - - -
}
@@ -947,10 +872,13 @@
private void PrintStripResiduals(HelicalTrackStrip strip) {
+ String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
if (_DEBUG) { System.out.printf("%s: --- Alignment Results for this Strip ---\n",this.getClass().getSimpleName());
- String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom"; - System.out.printf("%s: Strip layer %4d in %s at origin %s\n",this.getClass().getSimpleName(), strip.layer(), side, strip.origin().toString());
+ + String sensor_type = SvtUtils.getInstance().isAxial((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "axial" : "stereo"; + System.out.printf("%s: Strip layer %4d is %s in %s at origin %s\n",this.getClass().getSimpleName(), strip.layer(),sensor_type, side, strip.origin().toString()); + System.out.printf("%s: u=%s v=%s w=%s\n",this.getClass().getSimpleName(), strip.u().toString(),strip.v().toString(),strip.w().toString());
System.out.printf("%s: Residuals (u,v,w) : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _resid[0], _resid[1], _resid[2]); System.out.printf("%s: Errors (u,v,w) : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _error[0], _error[1], _error[2]); String[] q = {"d0", "z0", "slope", "phi0", "R"};
@@ -970,7 +898,7 @@
// Loop over the three directions u,v,w and print residuals and derivatives //String[] d = {"u","v","w"}; String[] d = {"u"}; //phansson use only u direction!
- String side;
+
int s; for(int j=0;j<1;++j){ side = "bottom";
@@ -1014,12 +942,6 @@
aida.histogram1D("reserr_"+d[j]+"_layer" + strip.layer() + "_" + side).fill(_error[j]); aida.histogram1D("respull_"+d[j]+"_layer" + strip.layer() + "_" + side).fill(_resid[j]/_error[j]);
-// double phi0 = _trk.phi0(); -// double R = _trk.R(); -// double xint = trackUtil.calculateHelixInterceptXPlane(_trk, strip); -// //double xint = strip.origin().x(); -// double pathLength = HelixUtils.PathToXPlane(_trk, xint, 0, 0).get(0); -// double phi = -s/R + phi0;
aida.histogram2D("respull_slope_"+d[j]+"_layer" + strip.layer() + "_" + side).fill(_trk.slope(),_resid[j]/_error[j]); }
@@ -1069,13 +991,17 @@
String[] side = {"top","bottom"}; IPlotter plotter_chi2 = af.createPlotterFactory().create();
- plotter_chi2.createRegions(2,1,0);
+ plotter_chi2.createRegions(2,2);
plotter_chi2.setTitle("Track Chi2"); plotterFrame.addPlotter(plotter_chi2); ICloud1D hchi2_top = aida.cloud1D("Track Chi2 top"); ICloud1D hchi2_bot = aida.cloud1D("Track Chi2 bottom");
+ ICloud1D hchi2ndf_top = aida.cloud1D("Track Chi2ndf top"); + ICloud1D hchi2ndf_bot = aida.cloud1D("Track Chi2ndf bottom");
plotter_chi2.region(0).plot(hchi2_top); plotter_chi2.region(1).plot(hchi2_bot);
+ plotter_chi2.region(2).plot(hchi2ndf_top); + plotter_chi2.region(3).plot(hchi2ndf_bot);
String[] direction = {"u"};
diff -u -r1.9 -r1.10 --- TrackUtils.java 7 Nov 2012 20:57:12 -0000 1.9 +++ TrackUtils.java 14 Nov 2012 22:08:23 -0000 1.10 @@ -24,7 +24,7 @@
/** * * @author Omar Moreno <[log in to unmask]>
- * @version $Id: TrackUtils.java,v 1.9 2012/11/07 20:57:12 phansson Exp $
+ * @version $Id: TrackUtils.java,v 1.10 2012/11/14 22:08:23 phansson Exp $
* TODO: Switch to JLab coordinates */
@@ -474,7 +474,7 @@
double s_wrong = track.PathMap().get(hth); //This is how I do it with HelicalTrackFits double s = HelixUtils.PathToXPlane(track, hth.x(), 0, 0).get(0);
- System.out.printf("x %f s %f smap %f\n",hth.x(),s,s_wrong);
+ //System.out.printf("x %f s %f smap %f\n",hth.x(),s,s_wrong);
Hep3Vector posOnHelix = HelixUtils.PointOnHelix(track, s); double resy = hth.y() - posOnHelix.y(); double erry = includeMS ? wrphi : drphi_res;
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1