Skip to content

Update ZmaxForStoring plane to include Neutron Shielding and Tilt

Michal Mazurek requested to merge mimazure-move-zMaxToStore into master

@gcorti @kreps @adavis

needs: lhcb-conddb/DDDB!84 (merged)


This will update the default value of ZmaxForStoring in GaussPostTrackAction to include Neutron Shielding. The new plane will be tangent to the front cover of the inner region. There's no tilt in Neutron Shielding.

Update: There should be a tilt in Neutron Shielding, but it's missing in the description. See lhcb-conddb/DDDB!84 (merged)

I am adding here a generic way of tilting zMax plane that will also help when one would like to push it further and make it tangent with the electromagnetic calorimeter.

New value of ZmaxForStoring

The new value of ZmaxForStoring was generated using geometry described in DDDB:

NeutronShieldingCenter = 12110.
SupportGap = 20.
SupportSizeZ = 1.5
PlasticInnerSizeZ = 100.
CoverSizeZ = .5
zSupport = .5 * (SupportGap + SupportSizeZ)
PlasticOuterSizeZ = 50.
zPlasticOuter = .5 * (SupportSizeZ + PlasticOuterSizeZ) + zSupport
zPlasticInner = .5 * (PlasticOuterSizeZ + PlasticInnerSizeZ) + zPlasticOuter
zCoverInner = zPlasticInner + .5 * (PlasticInnerSizeZ + CoverSizeZ)
NeutronShieldingCoverInnerFront = NeutronShieldingCenter - zCoverInner
print("NeutronShieldingCoverInnerFront: ", NeutronShieldingCoverInnerFront)
NeutronShieldingCoverInnerFront:  11948.25

Update 20/07/21: There's a small mistake. Value 11948.25 is in the centre of the zCoverInner, so half of its thickness has to be subtracted. So the new value is:

NeutronShieldingCoverInnerFront = NeutronShieldingCenter - zCoverInner - .5 * CoverSizeZ
print("NeutronShieldingCoverInnerFront: ", NeutronShieldingCoverInnerFront)
NeutronShieldingCoverInnerFront:  11948

Adding tilt to ZMax plane

Tilt around x-axis and y shift (visible in ECAL, see: can be configured via:

from Configurables import GaussPostTrackAction
from GaudiKernel.SystemOfUnits import mm, degree
gpta = GaussPostTrackAction("PostTrack")
gpta.ZmaxForStoring       = 11948.25 * mm  # new default
gpta.ZmaxForStoringYShift = -0. * mm       # new default
gpta.ZmaxForStoringTilt   = 0.207 * degree # new default


Below you will find plots where the dots represent vertices of MCParticles. I temporarily allowed to store all the MCParticles, but for the optical photons. I'm adding one more threshold z=12628.5 in the middle of an active layer in ECAL in order to show the alignment.

Note: there might be some vertices "leaking" (>zMax threshold). I think this is a bug that allows intermediate MCParticles (-99000000) to be stored, but I'm not entirely sure.





Update (07/07/21)

I'm attaching a few more plots that help to compare Upgrade and 2018 geometry.

Upgrade geometry

Steering options:

from Gaudi.Configuration import importOptions
from Configurables import LHCbApp
LHCbApp().DDDBtag    = "upgrade/dddb-20210617"
LHCbApp().CondDBtag  = "upgrade/sim-20210617-vc-mu100"



2018 geometry

Steering options:




Edited by Michal Mazurek

Merge request reports