Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
import FWCore.ParameterSet.Config as cms

from FastSimulation.SimplifiedGeometryPropagator.TrackerMaterial_cfi import TrackerMaterialBlock 

#############
### Hack to interface "old" calorimetry with "new" propagation in tracker
#############

CaloMaterialBlock = cms.PSet(
    CaloMaterial = cms.PSet(
        maxRadius = cms.untracked.double(500.),
        maxZ = cms.untracked.double(1200.),
        
        ######
        # The calorimetry
        # Positions used from old ParticlePropagator. Do not really agree with the CMS ECAL/HCAL TDR values...
        ######

        # Coverage usually provided as eta, e.g. barrel ECAL abs(eta) < 1.479
        # Use definition of pseurorapidity: theta = 2*arctan(e^-eta)
        # And theta = cos(z/sqrt(R^2+z^2))
        # Better: eta = -0.5*ln((1-cos(theta))/(1+cos(theta))) 
        BarrelLayers = cms.VPSet(
            ########### ECAL ###########
            cms.PSet(
                radius = cms.untracked.double(129.0),
                limits = cms.untracked.vdouble(0.0, 268.4),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("ECAL")
            ),
            ########### ECAL (barrel cut corner) ###########
            cms.PSet(
                radius = cms.untracked.double(152.6),
                limits = cms.untracked.vdouble(268.4, 320.9),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("ECAL")
            ),
            ########### HCAL ###########
            cms.PSet(
                radius = cms.untracked.double(177.5),
                limits = cms.untracked.vdouble(0.0, 335.0),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("HCAL")
            ),
            ########### HCAL (barrel cut corner) ###########
            cms.PSet(
                radius = cms.untracked.double(300.0),
                limits = cms.untracked.vdouble(335.0, 400.458),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("HCAL")
            ),
            ########### Acts as end of detector to speed up simulation ###########
            cms.PSet(
                radius = cms.untracked.double(400.0),
                limits = cms.untracked.vdouble(0., 1110.0),
                thickness = cms.untracked.vdouble(0.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("VFCAL")
            ),
        ),

        EndcapLayers = cms.VPSet(
            ########### PreShowerLayer1 ###########
            cms.PSet(
                z = cms.untracked.double(303.353),
                limits = cms.untracked.vdouble(45., 125.),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("PRESHOWER1")
            ),
            ########### PreShowerLayer2 ###########
            cms.PSet(
                z = cms.untracked.double(307.838),
                limits = cms.untracked.vdouble(45., 125.),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("PRESHOWER2")
            ),
            ########### ECAL ###########
            cms.PSet(
                z = cms.untracked.double(320.9),
                limits = cms.untracked.vdouble(32.0, 152.6),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("ECAL")
            ),
            ########### HCAL ###########
            cms.PSet(
                z = cms.untracked.double(400.458),
                limits = cms.untracked.vdouble(39.9, 300.),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("HCAL")
            ),
            ########### VFCAL ###########
            cms.PSet(
                z = cms.untracked.double(1110.0),
                limits = cms.untracked.vdouble(12.2, 110.9),
                thickness = cms.untracked.vdouble(1.),
                interactionModels = cms.untracked.vstring(),
                caloType = cms.untracked.string("VFCAL")
            ),
        )
    )
)
    
if hasattr(TrackerMaterialBlock.TrackerMaterial, 'magneticFieldZ'):
    CaloMaterialBlock.CaloMaterial.magneticFieldZ = TrackerMaterialBlock.TrackerMaterial.magneticFieldZ