Intra-Tower Tracker Alignment Instrument Analysis Workshop 4 Gamma-ray Large Area Space Telescope Intra-Tower Tracker Alignment Michael Kuss INFN Pisa Instrument Analysis Workshop 4 SLAC 15 July 2005
Towers … the ideal tower the real tower a rotation a horizontal shift a vertical shift
Class Residual Class Residual is used for alignment: Residual(const TString="MyRootFile.root", const TString="residual.root", const TString geo=""); ~Residual() { delete myEvent; delete myTracker; } void Go(int lastEntry=-1); // general for DrawXxx: residual is h_abs - h_abs_ext // *********** // draws the residual, top without fitting, bottom with gauss fit void DrawResidual(TString plane, TCut=""); // draws top the slope vs. residual, bottom the profile with pol1 fit void DrawResSlope(TString plane, TCut=""); // draws top the other coordinate vs. residual, bottom profile with pol1 fit void DrawResOrd(TString plane, TCut=""); // draws the slope profiles for all planes void DrawResSlopeAll(TCut="abs(h_abs_ext-h_abs)<1"); // draws the ordinate profiles for all planes void DrawResOrdAll(TCut="abs(h_abs_ext-h_abs)<1"); // attempt to do a "statistical" (not event be event) correction of rotZ of // planes. 2x3 histograms. Left uncorrected, right rotZ corrected. Top // ordinate vs. residual, middle profile of that, bottom residual. void DrawResOrdCorr(TString plane, TCut="");
What does it do? What does it not do? aligns planes horizontally, along the measured coordinate aligns planes vertically does an estimate of the rotation around z What does it not do? doesn’t align planes horizontally, parallel to the strips doesn’t determine rotations around x and y
General Procedure user> source cmt/setup.sh user> rh9_gcc32opt/runTreeMaker.exe digi.root recon.root ”” tree.root user> root root [0] .x compile.C root [1] Residual* r = new Residual(”tree.root”,”res.root”,”geo.txt”) … opens tree.root for reading, res.root for writing, and reads the geometry from geo.root. root [2] r->Go() ... reads events from the tree file. Fits a straight tracks, discarding the clusters of both planes of the tray to which the plane to be studied belongs. For each cluster(!), fills a small tree with plane name measured horizontal position of cluster (vertical to the strips) measured vertical position of cluster (i.e., elevation of the plane) extrapolated horizontal position of cluster vertical to the strips (track fit) extrapolated horizontal position of cluster parallel to the strips (track fit in the other view) inverse slope of track and saves the small tree in the residual file. root [3] r->Draw...() // e.g. r->DrawResSlopeAll() utilizes one of the Draw... methods. And saves a new geometry to disk.
selecting tracks
Residual r->DrawResidual(”X5”, ”abs(h_abs-h_abs_ext)<1”) horizontal displacement: 59m
Residuals vs. slope (horizontal and vertical alignment) r->DrawResSlope(”Y9”, ”abs(h_abs-h_abs_ext)<1&&abs(invSlope)<1”) X4 X3 X2 X1 X0 real position ideal res = x + z · cot(θ) θ horizontal displacement: 157m vertical displacement: 81m Aligns: horizontal ( to strips) vertical
Residuals vs. slope of track (all planes) r->DrawResSlopeAll()
Residuals vs. position in other view r->DrawResOrd(”Y9”, ”abs(h_abs-h_abs_ext)<1”) Y, real position Y, ideal position X horizontal displacement: 65m rotation around z: 0.54mrad
Residuals vs. position in other view (all planes) r->DrawResOrdAll() r->DrawResOrdCorr(”Y9”) res_x%y res_x-p0-y*p1%y
Alignment results
How To Align Alignment is an iterative process. Before RA v8r3p1: run with 10k events till convergence run with 20k events till convergence run with 50k events till convergence run with 100k events till convergence initially, convergence was defined as maximum deviation of any parameter of two consecutive geometries to be less than 10μm (but not more than 5 iterations) 1 iteration for 100k events takes about 1h CPU Since RA v8r3p1: run with 100k events till “real” convergence “reaI” convergence is achieved if a geometry repeats (but not more than 50 iterations) 1 iteration for 100k events takes about 6 min CPU result is “perfect” geometry
Alignment: 1st try
Intra-Tower Alignment Blindness Attention Intra-tower alignment is blind versus: translation shearing vertical scaling (horizontal is fixed by strip dimensions) rotation translation of the planes of one view vs. the other rotation of the planes of one view vs. the other After every iteration, separately in each view, I “correct” for: ∑posh = 0 (horizontal translation) ∑posh2 min. (shearing) ∑(posv-posv,ref) = 0 (vertical translation) ∑(posv-posv,ref)2 min. (vertical scaling) ∑rotz = 0 (rotation around z)
Alignment: 3rd try
1st 100k
1st 100k
2nd 100k
3rd 100k
4th 100k
5th 100k
Reproducibility: vertical absolute position / mm deviation / um plane #0 #1 #2 #3 #4 avg #0-avg #1-avg #2-avg #3-avg #4-avg Y0 42.610 42.581 42.587 42.612 42.605 42.599 11 -18 -12 13 6 X0 44.710 44.702 44.692 44.701 44.689 44.699 3 -7 2 -10 X1 74.402 74.383 74.373 74.394 74.377 74.386 16 -3 -13 8 -9 Y1 76.751 76.743 76.749 76.753 76.750 -6 4 1 Y2 106.519 106.523 106.528 106.515 106.522 X2 108.935 108.928 108.925 108.931 108.922 7 X3 139.620 139.630 139.617 139.627 139.619 139.623 -4 Y3 141.939 141.948 141.949 141.932 141.936 141.941 -2 -5 Y4 172.693 172.712 172.719 172.702 172.704 -11 15 X4 175.042 175.053 175.047 175.056 175.049 X5 205.807 205.818 205.819 205.816 205.822 Y5 208.114 208.117 208.107 Y6 238.896 238.890 238.899 238.897 X6 241.340 241.342 241.347 241.332 241.341 -1 X7 271.278 271.288 271.295 271.294 271.303 271.292 -14 Y7 273.549 273.548 273.543 273.544 273.546 Y8 303.407 303.417 303.408 303.418 303.413 5 X8 305.911 305.904 305.928 305.912 305.924 305.916 12 X9 335.807 335.809 335.823 335.813 335.822 335.815 -8 Y9 338.141 338.143 338.135 338.137 338.138 338.139 Y10 368.078 368.083 368.074 368.082 368.080 X10 370.465 370.464 370.479 370.458 370.467 X11 400.355 400.361 400.373 400.353 400.369 400.362 Y11 402.788 402.794 402.778 402.785 402.792 402.787 Y12 432.712 432.729 432.716 432.724 432.721 X12 435.026 435.023 435.031 435.018 435.032 X13 464.999 465.005 465.004 465.006 465.002 465.003 Y13 467.349 467.353 467.346 Y14 497.369 497.372 497.364 497.366 497.368 X14 499.649 499.647 499.648 499.640 499.646 X15 529.678 529.682 529.673 529.683 529.674 Y15 532.019 532.011 532.017 532.014 Y16 561.970 561.957 561.975 561.972 561.968 X16 564.241 564.234 564.215 564.232 564.218 564.228 X17 594.272 594.263 594.247 594.271 594.258 594.262 10 -15 9 Y17 596.707 596.691 596.712 596.704 596.701 596.703 STDEV:
Reproducibility: horizontal absolute position / mm deviation / um plane #0 #1 #2 #3 #4 avg #0-avg #1-avg #2-avg #3-avg #4-avg Y0 -0.064 -0.062 -0.054 -0.051 -0.053 -0.057 -7 -5 3 6 4 X0 -0.068 -0.072 -0.076 -0.070 -4 2 X1 -0.089 -0.087 -0.097 -0.092 5 Y1 -0.067 -2 1 Y2 -0.023 -0.025 -0.024 -1 X2 0.129 0.134 0.125 0.128 X3 0.124 0.126 0.122 Y3 0.153 0.147 0.149 0.148 Y4 0.151 0.150 -3 X4 0.132 0.133 0.130 X5 0.115 0.114 0.119 0.117 0.120 Y5 -0.078 -0.077 -0.080 -0.081 -0.082 Y6 -0.042 -0.040 -0.046 -0.047 -0.044 X6 -0.090 -0.086 X7 -0.075 -0.084 Y7 -0.052 -0.048 -0.055 Y8 -0.032 -0.031 -0.035 -0.033 X8 -0.071 -0.069 X9 -0.119 -0.121 -0.115 -0.118 -0.117 Y9 0.111 0.106 0.109 0.112 Y10 0.142 0.144 0.141 0.143 X10 -0.083 -0.085 X11 -0.108 -0.105 -0.102 -0.107 -0.104 Y11 -0.106 Y12 X12 0.045 0.043 0.046 X13 0.035 0.034 0.037 Y13 -0.018 -0.016 -0.015 -0.019 -0.017 Y14 -0.026 -0.029 X14 0.016 0.011 0.013 0.014 X15 0.005 0.004 0.000 0.002 0.003 Y15 0.017 0.019 0.018 Y16 0.023 0.025 0.024 X16 0.072 0.074 0.066 0.071 X17 0.041 0.038 0.036 Y17 0.020 STDEV:
The Future of LeaningTower can only analyze single tower runs introduces ambiguities for the resulting geometry doesn’t iterate on rotations people don’t like it anyway merge with AlignmentContainer
Intra-Tower Alignment Blindness (revisited) Intra-tower alignment is blind versus: translation shearing vertical scaling (horizontal is fixed by strip dimensions) rotation translation of the planes of one view vs. the other rotation of the planes of one view vs. the other
Translation SOLVED Intra-tower alignment: absolute position of a single tower is ambiguous Inter-tower alignment: tracks passing tower gaps fix the relative positions SOLVED
Rotation SOLVED Intra-tower alignment: rotation of a single tower with respect to some coordinate system is ambiguous Inter-tower alignment: tracks passing tower gaps fix the rotation of one tower vs. the others SOLVED
There is no way to correct for shearing from data! Metrology measurements? Average over all towers? Do we care? 50μm vs 554mm for a perpendicular track = 0.1 mrad
There is no way to correct the vertical scale from data! Vertical Scaling There is no way to correct the vertical scale from data! Metrology measurements? Average over all towers? Do we care? 70μm vs 554mm for a 45° track = 0.1 mrad