Skip to content

VELO half local delta with DD4hep

I've noticed values for the local delta of the VELO halves when running the half alignment over 2023 data with VELO open with DD4hep, which look strange to me.

For example, I'm looking at a run with the motion system position

MotionVPLeft:    !alignment
    position: [29.799999237061, 0.45100000500679, 0]
MotionVPRight:    !alignment
    position: [-29.799999237061, 0.45100000500679, 0]

starting from the half constants.

VPLeft: !alignment
  position: [0.79585866, -0.001483600912, -0.3011788393]
  rotation: [0.0002041062504, 4.602410387e-05, 1.639347341e-06]
VPRight: !alignment
  position: [-0.7958345163, 0.001574055359, 0.2985878572]
  rotation: [-0.0002041063683, -4.602396117e-05, -1.627954134e-06]
VPSystem: !alignment
  position: [0.0, 0.0, 0.0]
  rotation: [0.0, 0.0, 0.0]

However, in the align log, I see

Alignable: VP/MotionVPLeft/VPLeft
Tx  : curtot= 30.6         cur= -29          delta= 2.794        +/- 0.04575      [ 0.07755      ]  gcc= 0
Ty  : curtot= 0.4496       cur= -0.4525      delta= 0.1966       +/- 0.01752      [ 0.03188      ]  gcc= 0
Tz  : curtot= -0.3025      cur= -0.2999      delta= -2.535       +/- 0.1231       [ 0.1758       ]  gcc= 0
Rx  : curtot= 0.0002041    cur= 0.0002041    delta= -0.0002108   +/- 4.734e-05    [ 7.511e-05    ]  gcc= 0
Ry  : curtot= 4.602e-05    cur= 4.602e-05    delta= 0.0007867    +/- 6.977e-05    [ 9.824e-05    ]  gcc= 0
Rz  : curtot= 1.639e-06    cur= 1.639e-06    delta= 5.699e-06    +/- 7.071e-05    [ 9.959e-05    ]  gcc= 0

Alignable: VP/MotionVPRight/VPRight
Tx  : curtot= -30.6        cur= 29           delta= -2.794       +/- 0.04575      [ 0.09189      ]  gcc= 0
Ty  : curtot= 0.4526       cur= -0.4495      delta= -0.1966      +/- 0.01752      [ 0.03192      ]  gcc= 0
Tz  : curtot= 0.2971       cur= 0.3001       delta= 2.535        +/- 0.1231       [ 0.1812       ]  gcc= 0
Rx  : curtot= -0.0002041   cur= -0.0002041   delta= 0.0002108    +/- 4.734e-05    [ 7.515e-05    ]  gcc= 0
Ry  : curtot= -4.602e-05   cur= -4.602e-05   delta= -0.0007867   +/- 6.977e-05    [ 9.905e-05    ]  gcc= 0
Rz  : curtot= -1.628e-06   cur= -1.628e-06   delta= -5.699e-06   +/- 7.071e-05    [ 9.957e-05    ]  gcc= 0

What is strange to me, is that "cur" seems to be the half constant minus the motion system position, instead of just the half constant.

I believe this is from the motion system transform here https://gitlab.cern.ch/lhcb/Alignment/-/blob/master/Alignment/TAlignment/src/AlignmentElement.cpp#L64

After commenting out that line, I get something like I would expect for "cur".

Tx  : curtot= 30.6         cur= 0.7959       delta= -0.2504      +/- 0.01374      [ 0.02317      ]  gcc= 0
Ty  : curtot= 0.4496       cur= -0.001484    delta= 0.0646       +/- 0.004665     [ 0.00815      ]  gcc= 0
Tz  : curtot= -0.3025      cur= -0.3012      delta= -0.1688      +/- 0.05899      [ 0.1008       ]  gcc= 0
Rx  : curtot= 0.0002041    cur= 0.0002041    delta= -9.034e-05   +/- 2.072e-05    [ 3.537e-05    ]  gcc= 0
Ry  : curtot= 4.602e-05    cur= 4.602e-05    delta= 4.57e-05     +/- 4.988e-05    [ 7.418e-05    ]  gcc= 0
Rz  : curtot= 1.639e-06    cur= 1.639e-06    delta= 5.086e-06    +/- 7.07e-05     [ 9.41e-05     ]  gcc= 0

Tx  : curtot= -30.6        cur= -0.7958      delta= 0.2504       +/- 0.01374      [ 0.0267       ]  gcc= 0
Ty  : curtot= 0.4526       cur= 0.001574     delta= -0.0646      +/- 0.004665     [ 0.008158     ]  gcc= 0
Tz  : curtot= 0.2971       cur= 0.2986       delta= 0.1688       +/- 0.05899      [ 0.1093       ]  gcc= 0
Rx  : curtot= -0.0002041   cur= -0.0002041   delta= 9.034e-05    +/- 2.072e-05    [ 3.535e-05    ]  gcc= 0
Ry  : curtot= -4.602e-05   cur= -4.602e-05   delta= -4.57e-05    +/- 4.988e-05    [ 7.68e-05     ]  gcc= 0
Rz  : curtot= -1.628e-06   cur= -1.628e-06   delta= -5.086e-06   +/- 7.07e-05     [ 9.377e-05    ]  gcc= 0

Now I'm wondering if this motionSystemTransform should be applied at all when using DD4hep.

cc @wouter @sborghi