-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDetectorDescription.html
1 lines (1 loc) · 55.4 KB
/
DetectorDescription.html
1
<html><head><meta content="text/html; charset=UTF-8" http-equiv="content-type"><style type="text/css">ol.lst-kix_euygonypgce4-6.start{counter-reset:lst-ctn-kix_euygonypgce4-6 0}.lst-kix_vbh9m3fh1gq7-7>li:before{content:"\0025cb "}ol.lst-kix_4uglsyagtvkb-0.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-0 0}.lst-kix_vbh9m3fh1gq7-8>li:before{content:"\0025a0 "}.lst-kix_vbh9m3fh1gq7-2>li:before{content:"\0025a0 "}.lst-kix_vbh9m3fh1gq7-3>li:before{content:"\0025cf "}ol.lst-kix_kofjyojiv58w-3.start{counter-reset:lst-ctn-kix_kofjyojiv58w-3 0}ul.lst-kix_vbh9m3fh1gq7-8{list-style-type:none}ul.lst-kix_vbh9m3fh1gq7-7{list-style-type:none}.lst-kix_vbh9m3fh1gq7-6>li:before{content:"\0025cf "}ul.lst-kix_vbh9m3fh1gq7-6{list-style-type:none}ul.lst-kix_vbh9m3fh1gq7-5{list-style-type:none}ul.lst-kix_vbh9m3fh1gq7-4{list-style-type:none}ul.lst-kix_vbh9m3fh1gq7-3{list-style-type:none}ul.lst-kix_vbh9m3fh1gq7-2{list-style-type:none}.lst-kix_vbh9m3fh1gq7-4>li:before{content:"\0025cb "}.lst-kix_vbh9m3fh1gq7-5>li:before{content:"\0025a0 "}ol.lst-kix_ranfp1t4a0pv-0.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-0 0}ul.lst-kix_vbh9m3fh1gq7-1{list-style-type:none}.lst-kix_kofjyojiv58w-5>li{counter-increment:lst-ctn-kix_kofjyojiv58w-5}ul.lst-kix_vbh9m3fh1gq7-0{list-style-type:none}.lst-kix_ranfp1t4a0pv-7>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-7}.lst-kix_tsdhvlmz7gl8-7>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-7}.lst-kix_kofjyojiv58w-3>li{counter-increment:lst-ctn-kix_kofjyojiv58w-3}ol.lst-kix_euygonypgce4-0.start{counter-reset:lst-ctn-kix_euygonypgce4-0 0}ol.lst-kix_k3bw1mfw99t9-4.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-4 0}.lst-kix_45cgxxbiwmzj-7>li:before{content:"\0025cb "}.lst-kix_45cgxxbiwmzj-8>li:before{content:"\0025a0 "}ol.lst-kix_ranfp1t4a0pv-6.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-6 0}ol.lst-kix_tsdhvlmz7gl8-7.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-7 0}.lst-kix_euygonypgce4-0>li{counter-increment:lst-ctn-kix_euygonypgce4-0}.lst-kix_k3bw1mfw99t9-8>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-8}.lst-kix_4uglsyagtvkb-8>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-8}.lst-kix_k2afwmfu90yw-8>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-8}.lst-kix_kofjyojiv58w-1>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-1,lower-latin) ". "}.lst-kix_k2afwmfu90yw-8>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-8,lower-roman) ". "}.lst-kix_kofjyojiv58w-0>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-0,decimal) ". "}.lst-kix_kofjyojiv58w-2>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-2,lower-roman) ". "}.lst-kix_k2afwmfu90yw-6>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-6,decimal) ". "}ol.lst-kix_k2afwmfu90yw-5.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-5 0}.lst-kix_k2afwmfu90yw-7>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-7,lower-latin) ". "}.lst-kix_kofjyojiv58w-7>li{counter-increment:lst-ctn-kix_kofjyojiv58w-7}.lst-kix_kofjyojiv58w-5>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-5,lower-roman) ". "}.lst-kix_k2afwmfu90yw-4>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-4,lower-latin) ". "}.lst-kix_45cgxxbiwmzj-0>li:before{content:"\0025cf "}.lst-kix_kofjyojiv58w-6>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-6,decimal) ". "}ol.lst-kix_tsdhvlmz7gl8-0{list-style-type:none}ol.lst-kix_4uglsyagtvkb-5.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-5 0}.lst-kix_kofjyojiv58w-7>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-7,lower-latin) ". "}ol.lst-kix_tsdhvlmz7gl8-1{list-style-type:none}.lst-kix_45cgxxbiwmzj-1>li:before{content:"\0025cb "}ol.lst-kix_tsdhvlmz7gl8-2{list-style-type:none}.lst-kix_kofjyojiv58w-1>li{counter-increment:lst-ctn-kix_kofjyojiv58w-1}ol.lst-kix_kofjyojiv58w-8.start{counter-reset:lst-ctn-kix_kofjyojiv58w-8 0}ol.lst-kix_tsdhvlmz7gl8-3{list-style-type:none}.lst-kix_k2afwmfu90yw-5>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-5,lower-roman) ". "}ol.lst-kix_tsdhvlmz7gl8-4{list-style-type:none}ol.lst-kix_kofjyojiv58w-6{list-style-type:none}.lst-kix_k2afwmfu90yw-0>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-0,decimal) ". "}.lst-kix_45cgxxbiwmzj-3>li:before{content:"\0025cf "}.lst-kix_45cgxxbiwmzj-4>li:before{content:"\0025cb "}ol.lst-kix_kofjyojiv58w-7{list-style-type:none}.lst-kix_euygonypgce4-7>li{counter-increment:lst-ctn-kix_euygonypgce4-7}ol.lst-kix_kofjyojiv58w-4{list-style-type:none}.lst-kix_4uglsyagtvkb-1>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-1}ol.lst-kix_kofjyojiv58w-5{list-style-type:none}.lst-kix_k2afwmfu90yw-2>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-2,lower-roman) ". "}.lst-kix_4uglsyagtvkb-4>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-4,lower-latin) ". "}.lst-kix_45cgxxbiwmzj-2>li:before{content:"\0025a0 "}.lst-kix_45cgxxbiwmzj-6>li:before{content:"\0025cf "}.lst-kix_tsdhvlmz7gl8-3>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-3}ol.lst-kix_kofjyojiv58w-8{list-style-type:none}.lst-kix_k2afwmfu90yw-3>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-3,decimal) ". "}.lst-kix_ranfp1t4a0pv-3>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-3}.lst-kix_4uglsyagtvkb-2>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-2,lower-roman) ". "}.lst-kix_4uglsyagtvkb-3>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-3,decimal) ". "}.lst-kix_k2afwmfu90yw-3>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-3}.lst-kix_kofjyojiv58w-4>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-4,lower-latin) ". "}ol.lst-kix_kofjyojiv58w-2{list-style-type:none}.lst-kix_kofjyojiv58w-3>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-3,decimal) ". "}.lst-kix_4uglsyagtvkb-1>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-1,lower-latin) ". "}.lst-kix_45cgxxbiwmzj-5>li:before{content:"\0025a0 "}ol.lst-kix_kofjyojiv58w-3{list-style-type:none}ol.lst-kix_kofjyojiv58w-0{list-style-type:none}.lst-kix_k2afwmfu90yw-1>li:before{content:"" counter(lst-ctn-kix_k2afwmfu90yw-1,lower-latin) ". "}ol.lst-kix_kofjyojiv58w-1{list-style-type:none}ol.lst-kix_k2afwmfu90yw-4.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-4 0}.lst-kix_4uglsyagtvkb-0>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-0,decimal) ". "}.lst-kix_k2afwmfu90yw-6>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-6}ol.lst-kix_4uglsyagtvkb-6.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-6 0}.lst-kix_k3bw1mfw99t9-3>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-3}.lst-kix_k3bw1mfw99t9-6>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-6}ol.lst-kix_tsdhvlmz7gl8-5{list-style-type:none}ol.lst-kix_tsdhvlmz7gl8-6{list-style-type:none}ol.lst-kix_tsdhvlmz7gl8-7{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-7.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-7 0}ol.lst-kix_kofjyojiv58w-2.start{counter-reset:lst-ctn-kix_kofjyojiv58w-2 0}ol.lst-kix_tsdhvlmz7gl8-8{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-1.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-1 0}ol.lst-kix_euygonypgce4-5.start{counter-reset:lst-ctn-kix_euygonypgce4-5 0}ol.lst-kix_4uglsyagtvkb-7.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-7 0}ul.lst-kix_45cgxxbiwmzj-0{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-1{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-2{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-3{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-4{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-5{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-6{list-style-type:none}ol.lst-kix_k2afwmfu90yw-3.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-3 0}ul.lst-kix_45cgxxbiwmzj-7{list-style-type:none}ul.lst-kix_45cgxxbiwmzj-8{list-style-type:none}ol.lst-kix_k3bw1mfw99t9-5.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-5 0}ol.lst-kix_k2afwmfu90yw-0.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-0 0}ol.lst-kix_k2afwmfu90yw-0{list-style-type:none}ol.lst-kix_tsdhvlmz7gl8-0.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-0 0}ol.lst-kix_tsdhvlmz7gl8-3.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-3 0}ol.lst-kix_k3bw1mfw99t9-0{list-style-type:none}.lst-kix_kofjyojiv58w-0>li{counter-increment:lst-ctn-kix_kofjyojiv58w-0}ol.lst-kix_k3bw1mfw99t9-1{list-style-type:none}.lst-kix_tsdhvlmz7gl8-1>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-1}ol.lst-kix_k3bw1mfw99t9-2{list-style-type:none}ol.lst-kix_k3bw1mfw99t9-3{list-style-type:none}.lst-kix_ranfp1t4a0pv-1>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-1}ol.lst-kix_k3bw1mfw99t9-2.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-2 0}ol.lst-kix_k3bw1mfw99t9-4{list-style-type:none}ol.lst-kix_k3bw1mfw99t9-5{list-style-type:none}ol.lst-kix_k3bw1mfw99t9-6{list-style-type:none}ol.lst-kix_k3bw1mfw99t9-7{list-style-type:none}.lst-kix_4uglsyagtvkb-6>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-6,decimal) ". "}.lst-kix_k3bw1mfw99t9-2>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-2}.lst-kix_kofjyojiv58w-8>li:before{content:"" counter(lst-ctn-kix_kofjyojiv58w-8,lower-roman) ". "}.lst-kix_4uglsyagtvkb-8>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-8,lower-roman) ". "}ol.lst-kix_kofjyojiv58w-7.start{counter-reset:lst-ctn-kix_kofjyojiv58w-7 0}.lst-kix_4uglsyagtvkb-5>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-5}ol.lst-kix_k3bw1mfw99t9-8{list-style-type:none}.lst-kix_euygonypgce4-3>li{counter-increment:lst-ctn-kix_euygonypgce4-3}.lst-kix_k3bw1mfw99t9-7>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-7}.lst-kix_ranfp1t4a0pv-0>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-0,decimal) ". "}.lst-kix_k3bw1mfw99t9-1>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-1,lower-latin) ". "}.lst-kix_tsdhvlmz7gl8-8>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-8}.lst-kix_k3bw1mfw99t9-3>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-3,decimal) ". "}ol.lst-kix_kofjyojiv58w-4.start{counter-reset:lst-ctn-kix_kofjyojiv58w-4 0}.lst-kix_ranfp1t4a0pv-4>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-4,lower-latin) ". "}.lst-kix_k3bw1mfw99t9-1>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-1}ol.lst-kix_euygonypgce4-0{list-style-type:none}.lst-kix_k2afwmfu90yw-7>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-7}ol.lst-kix_euygonypgce4-1{list-style-type:none}.lst-kix_k3bw1mfw99t9-7>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-7,lower-latin) ". "}ol.lst-kix_tsdhvlmz7gl8-1.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-1 0}ol.lst-kix_k2afwmfu90yw-1.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-1 0}ol.lst-kix_euygonypgce4-2{list-style-type:none}ol.lst-kix_euygonypgce4-3{list-style-type:none}ol.lst-kix_euygonypgce4-4{list-style-type:none}ol.lst-kix_euygonypgce4-5{list-style-type:none}.lst-kix_k3bw1mfw99t9-5>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-5,lower-roman) ". "}ol.lst-kix_euygonypgce4-6{list-style-type:none}ol.lst-kix_euygonypgce4-7{list-style-type:none}.lst-kix_ranfp1t4a0pv-2>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-2,lower-roman) ". "}ol.lst-kix_euygonypgce4-1.start{counter-reset:lst-ctn-kix_euygonypgce4-1 0}.lst-kix_euygonypgce4-2>li{counter-increment:lst-ctn-kix_euygonypgce4-2}ol.lst-kix_4uglsyagtvkb-8.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-8 0}.lst-kix_euygonypgce4-8>li{counter-increment:lst-ctn-kix_euygonypgce4-8}ol.lst-kix_kofjyojiv58w-5.start{counter-reset:lst-ctn-kix_kofjyojiv58w-5 0}.lst-kix_4uglsyagtvkb-0>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-0}ol.lst-kix_euygonypgce4-8{list-style-type:none}.lst-kix_vbh9m3fh1gq7-1>li:before{content:"\0025cb "}.lst-kix_k2afwmfu90yw-1>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-1}.lst-kix_4uglsyagtvkb-6>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-6}.lst-kix_ranfp1t4a0pv-6>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-6,decimal) ". "}.lst-kix_ranfp1t4a0pv-8>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-8,lower-roman) ". "}ol.lst-kix_tsdhvlmz7gl8-2.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-2 0}.lst-kix_ranfp1t4a0pv-2>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-2}ol.lst-kix_euygonypgce4-2.start{counter-reset:lst-ctn-kix_euygonypgce4-2 0}.lst-kix_tsdhvlmz7gl8-2>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-2}ol.lst-kix_k3bw1mfw99t9-3.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-3 0}.lst-kix_ranfp1t4a0pv-8>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-8}ol.lst-kix_ranfp1t4a0pv-3.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-3 0}.lst-kix_kofjyojiv58w-4>li{counter-increment:lst-ctn-kix_kofjyojiv58w-4}ol.lst-kix_k3bw1mfw99t9-1.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-1 0}.lst-kix_tsdhvlmz7gl8-6>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-6}ol.lst-kix_euygonypgce4-3.start{counter-reset:lst-ctn-kix_euygonypgce4-3 0}.lst-kix_ranfp1t4a0pv-6>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-6}.lst-kix_k2afwmfu90yw-0>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-0}ol.lst-kix_kofjyojiv58w-6.start{counter-reset:lst-ctn-kix_kofjyojiv58w-6 0}ol.lst-kix_4uglsyagtvkb-3.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-3 0}ol.lst-kix_tsdhvlmz7gl8-4.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-4 0}ol.lst-kix_kofjyojiv58w-0.start{counter-reset:lst-ctn-kix_kofjyojiv58w-0 0}.lst-kix_kofjyojiv58w-6>li{counter-increment:lst-ctn-kix_kofjyojiv58w-6}.lst-kix_tsdhvlmz7gl8-4>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-4}.lst-kix_ranfp1t4a0pv-4>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-4}.lst-kix_tsdhvlmz7gl8-7>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-7,lower-latin) ". "}.lst-kix_tsdhvlmz7gl8-8>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-8,lower-roman) ". "}ol.lst-kix_k2afwmfu90yw-2.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-2 0}.lst-kix_tsdhvlmz7gl8-3>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-3,decimal) ". "}.lst-kix_tsdhvlmz7gl8-4>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-4,lower-latin) ". "}.lst-kix_tsdhvlmz7gl8-2>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-2,lower-roman) ". "}.lst-kix_tsdhvlmz7gl8-6>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-6,decimal) ". "}.lst-kix_k2afwmfu90yw-2>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-2}.lst-kix_tsdhvlmz7gl8-5>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-5,lower-roman) ". "}ol.lst-kix_tsdhvlmz7gl8-5.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-5 0}ol.lst-kix_euygonypgce4-4.start{counter-reset:lst-ctn-kix_euygonypgce4-4 0}ol.lst-kix_k3bw1mfw99t9-7.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-7 0}.lst-kix_tsdhvlmz7gl8-0>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-0,decimal) ". "}.lst-kix_k3bw1mfw99t9-0>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-0}ol.lst-kix_ranfp1t4a0pv-8.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-8 0}ol.lst-kix_kofjyojiv58w-1.start{counter-reset:lst-ctn-kix_kofjyojiv58w-1 0}.lst-kix_4uglsyagtvkb-7>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-7}.lst-kix_euygonypgce4-1>li{counter-increment:lst-ctn-kix_euygonypgce4-1}.lst-kix_tsdhvlmz7gl8-1>li:before{content:"" counter(lst-ctn-kix_tsdhvlmz7gl8-1,lower-latin) ". "}.lst-kix_euygonypgce4-8>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-8,lower-roman) ". "}.lst-kix_euygonypgce4-7>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-7,lower-latin) ". "}.lst-kix_euygonypgce4-6>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-6,decimal) ". "}ol.lst-kix_k2afwmfu90yw-2{list-style-type:none}ol.lst-kix_k3bw1mfw99t9-6.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-6 0}ol.lst-kix_k2afwmfu90yw-1{list-style-type:none}.lst-kix_euygonypgce4-1>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-1,lower-latin) ". "}ol.lst-kix_k3bw1mfw99t9-0.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-0 0}ol.lst-kix_k2afwmfu90yw-4{list-style-type:none}ol.lst-kix_k2afwmfu90yw-3{list-style-type:none}.lst-kix_euygonypgce4-2>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-2,lower-roman) ". "}ol.lst-kix_k2afwmfu90yw-6{list-style-type:none}ol.lst-kix_k2afwmfu90yw-5{list-style-type:none}ol.lst-kix_k2afwmfu90yw-8{list-style-type:none}ol.lst-kix_k2afwmfu90yw-7{list-style-type:none}.lst-kix_euygonypgce4-4>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-4,lower-latin) ". "}.lst-kix_euygonypgce4-3>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-3,decimal) ". "}.lst-kix_euygonypgce4-5>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-5,lower-roman) ". "}ol.lst-kix_k3bw1mfw99t9-8.start{counter-reset:lst-ctn-kix_k3bw1mfw99t9-8 0}.lst-kix_k3bw1mfw99t9-4>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-4}.lst-kix_euygonypgce4-0>li:before{content:"" counter(lst-ctn-kix_euygonypgce4-0,decimal) ". "}.lst-kix_k2afwmfu90yw-4>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-4}.lst-kix_euygonypgce4-4>li{counter-increment:lst-ctn-kix_euygonypgce4-4}ol.lst-kix_ranfp1t4a0pv-0{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-1{list-style-type:none}.lst-kix_tsdhvlmz7gl8-0>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-0}ol.lst-kix_tsdhvlmz7gl8-6.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-6 0}.lst-kix_4uglsyagtvkb-4>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-4}ol.lst-kix_ranfp1t4a0pv-4{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-5{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-2{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-3{list-style-type:none}ol.lst-kix_ranfp1t4a0pv-8{list-style-type:none}ol.lst-kix_k2afwmfu90yw-6.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-6 0}ol.lst-kix_ranfp1t4a0pv-6{list-style-type:none}.lst-kix_ranfp1t4a0pv-0>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-0}ol.lst-kix_ranfp1t4a0pv-7{list-style-type:none}ol.lst-kix_4uglsyagtvkb-1.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-1 0}ol.lst-kix_euygonypgce4-7.start{counter-reset:lst-ctn-kix_euygonypgce4-7 0}.lst-kix_4uglsyagtvkb-5>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-5,lower-roman) ". "}ol.lst-kix_ranfp1t4a0pv-2.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-2 0}.lst-kix_4uglsyagtvkb-7>li:before{content:"" counter(lst-ctn-kix_4uglsyagtvkb-7,lower-latin) ". "}ol.lst-kix_4uglsyagtvkb-4.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-4 0}.lst-kix_euygonypgce4-6>li{counter-increment:lst-ctn-kix_euygonypgce4-6}.lst-kix_k3bw1mfw99t9-0>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-0,decimal) ". "}.lst-kix_k3bw1mfw99t9-5>li{counter-increment:lst-ctn-kix_k3bw1mfw99t9-5}.lst-kix_k2afwmfu90yw-5>li{counter-increment:lst-ctn-kix_k2afwmfu90yw-5}.lst-kix_4uglsyagtvkb-2>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-2}ol.lst-kix_4uglsyagtvkb-8{list-style-type:none}ol.lst-kix_4uglsyagtvkb-7{list-style-type:none}ol.lst-kix_4uglsyagtvkb-2.start{counter-reset:lst-ctn-kix_4uglsyagtvkb-2 0}ol.lst-kix_4uglsyagtvkb-6{list-style-type:none}ol.lst-kix_4uglsyagtvkb-5{list-style-type:none}ol.lst-kix_4uglsyagtvkb-4{list-style-type:none}.lst-kix_ranfp1t4a0pv-3>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-3,decimal) ". "}ol.lst-kix_4uglsyagtvkb-3{list-style-type:none}ol.lst-kix_4uglsyagtvkb-2{list-style-type:none}ol.lst-kix_euygonypgce4-8.start{counter-reset:lst-ctn-kix_euygonypgce4-8 0}.lst-kix_k3bw1mfw99t9-2>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-2,lower-roman) ". "}ol.lst-kix_4uglsyagtvkb-1{list-style-type:none}ol.lst-kix_4uglsyagtvkb-0{list-style-type:none}ol.lst-kix_k2afwmfu90yw-8.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-8 0}.lst-kix_k3bw1mfw99t9-4>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-4,lower-latin) ". "}.lst-kix_ranfp1t4a0pv-5>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-5,lower-roman) ". "}.lst-kix_k3bw1mfw99t9-6>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-6,decimal) ". "}.lst-kix_kofjyojiv58w-8>li{counter-increment:lst-ctn-kix_kofjyojiv58w-8}.lst-kix_kofjyojiv58w-2>li{counter-increment:lst-ctn-kix_kofjyojiv58w-2}ol.lst-kix_ranfp1t4a0pv-5.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-5 0}ol.lst-kix_tsdhvlmz7gl8-8.start{counter-reset:lst-ctn-kix_tsdhvlmz7gl8-8 0}.lst-kix_k3bw1mfw99t9-8>li:before{content:"" counter(lst-ctn-kix_k3bw1mfw99t9-8,lower-roman) ". "}.lst-kix_ranfp1t4a0pv-1>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-1,lower-latin) ". "}ol.lst-kix_ranfp1t4a0pv-4.start{counter-reset:lst-ctn-kix_ranfp1t4a0pv-4 0}.lst-kix_euygonypgce4-5>li{counter-increment:lst-ctn-kix_euygonypgce4-5}.lst-kix_4uglsyagtvkb-3>li{counter-increment:lst-ctn-kix_4uglsyagtvkb-3}.lst-kix_vbh9m3fh1gq7-0>li:before{content:"\0025cf "}ol.lst-kix_k2afwmfu90yw-7.start{counter-reset:lst-ctn-kix_k2afwmfu90yw-7 0}.lst-kix_ranfp1t4a0pv-7>li:before{content:"" counter(lst-ctn-kix_ranfp1t4a0pv-7,lower-latin) ". "}.lst-kix_tsdhvlmz7gl8-5>li{counter-increment:lst-ctn-kix_tsdhvlmz7gl8-5}.lst-kix_ranfp1t4a0pv-5>li{counter-increment:lst-ctn-kix_ranfp1t4a0pv-5}ol{margin:0;padding:0}table td,table th{padding:0}.c4{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:225.7pt;border-top-color:#000000;border-bottom-style:solid}.c10{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:1pt;border-right-width:1pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:1pt;border-top-style:solid;border-left-style:solid;border-bottom-width:1pt;width:451.4pt;border-top-color:#000000;border-bottom-style:solid}.c8{margin-left:36pt;padding-top:0pt;padding-left:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:justify}.c3{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal}.c13{color:#666666;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:12pt;font-family:"Arial";font-style:normal}.c23{padding-top:12pt;padding-bottom:4pt;line-height:1.0;page-break-after:avoid;orphans:2;widows:2;text-align:left}.c15{margin-left:36pt;padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c26{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:20pt;font-family:"Arial";font-style:normal}.c17{color:#434343;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:14pt;font-family:"Arial";font-style:normal}.c2{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:16pt;font-family:"Arial";font-style:normal}.c27{color:#666666;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal}.c29{padding-top:20pt;padding-bottom:6pt;line-height:1.15;page-break-after:avoid;text-align:left;height:20pt}.c5{padding-top:0pt;padding-bottom:0pt;line-height:1.0;orphans:2;widows:2;text-align:left}.c18{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c11{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:justify}.c7{padding-top:14pt;padding-bottom:4pt;line-height:1.15;page-break-after:avoid;text-align:left}.c9{padding-top:16pt;padding-bottom:4pt;line-height:1.15;page-break-after:avoid;text-align:left}.c14{padding-top:18pt;padding-bottom:6pt;line-height:1.15;page-break-after:avoid;text-align:left}.c28{padding-top:18pt;padding-bottom:6pt;line-height:1.15;page-break-after:avoid;text-align:justify}.c30{padding-top:12pt;padding-bottom:4pt;line-height:1.0;page-break-after:avoid;text-align:left}.c16{padding-top:14pt;padding-bottom:4pt;line-height:1.15;page-break-after:avoid;text-align:justify}.c6{padding-top:0pt;padding-bottom:0pt;line-height:1.0;text-align:left}.c32{padding-top:20pt;padding-bottom:4pt;line-height:1.15;text-align:left}.c25{border-spacing:0;border-collapse:collapse;margin-right:auto}.c31{background-color:#ffffff;max-width:451.4pt;padding:72pt 72pt 72pt 72pt}.c22{padding:0;margin:0}.c20{font-weight:700}.c21{margin-left:72pt}.c24{height:11pt}.c1{font-style:italic}.c0{height:21pt}.c19{padding-left:0pt}.c12{height:0pt}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:11pt;font-family:"Arial"}p{margin:0;color:#000000;font-size:11pt;font-family:"Arial"}h1{padding-top:20pt;color:#000000;font-size:20pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:16pt;padding-bottom:6pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:14pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:"Arial";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}</style></head><body class="c31"><h1 class="c32" id="h.q2zanbat4lk3"><span class="c26">CMS Detector Description </span></h1><h2 class="c14" id="h.oa959090u3db"><span class="c2">Introduction</span></h2><p class="c11"><span class="c3">The Compact Muon Solenoid (CMS) Detector Description (DD) consists of a C++ Application Program Interface (API) and an Extensible Markup Language (XML) based detector description language.</span></p><p class="c18"><span class="c3"> </span></p><p class="c11"><span class="c3">The CMS Software project (CMSSW) requires that offline software for applications such as simulation, reconstruction, and visualization have a coherent common source for the geometrical properties of the detector.</span></p><p class="c18"><span class="c3"> </span></p><p class="c11"><span class="c3">These applications use the DD sources and API as the basis for this consistent view of the detector description. The offline applications have several common requirements, which the DD addresses in the DD Domain Model. Additionally the DD provides the ability to include application-specific information to be associated with detector parts.</span></p><hr style="page-break-before:always;display:none;"><h1 class="c29" id="h.f4ac8jpup13r"><span class="c26"></span></h1><h2 class="c14" id="h.jku9ebud8vh2"><span class="c2">Requirements</span></h2><h3 class="c9" id="h.r6gl5zashb0t"><span class="c17">Non-functional requirements </span></h3><ol class="c22 lst-kix_tsdhvlmz7gl8-0 start" start="1"><li class="c15 c19"><span class="c3">Must be thread safe</span></li></ol><h3 class="c9" id="h.6nuxqy1g99z1"><span class="c17">Functional requirements</span></h3><h4 class="c7" id="h.ydk9paepo6dh"><span class="c13">Detector Description</span></h4><ol class="c22 lst-kix_k2afwmfu90yw-0 start" start="1"><li class="c15 c19"><span class="c3">One Definition Rule</span></li></ol><ol class="c22 lst-kix_k2afwmfu90yw-1 start" start="1"><li class="c18 c21 c19"><span class="c3">Each identical part in the detector should only be defined once, but may be positioned multiple times.</span></li><li class="c18 c21 c19"><span class="c3">Each material, solid, rotation and any other DD object should be constrained by this rule.</span></li></ol><ol class="c22 lst-kix_k2afwmfu90yw-0" start="2"><li class="c15 c19"><span class="c3">The DD must provide a common API for CMS reconstruction, simulation and other CMS software, e.g. a Mediator</span></li><li class="c15 c19"><span class="c3">The DD should only define the ideal detector and not re-alignment or other conditions.</span></li><li class="c15 c19"><span class="c3">The DD must provide a generic way for client applications to extend the DD.</span></li><li class="c15 c19"><span class="c3">The DD must provide a hierarchical querying and filtering mechanism.</span></li><li class="c15 c19"><span class="c3">The DD must provide ease of access and portability of sources.</span></li><li class="c15 c19"><span class="c3">The DD must contain all information necessary to build up application specific internal representations of the detector.</span></li></ol><h4 class="c7" id="h.h30ngrvrhoky"><span class="c13">XML Schema</span></h4><ol class="c22 lst-kix_4uglsyagtvkb-0 start" start="1"><li class="c8"><span class="c3">The schema description should be simple and intuitive for physicists who are not familiar with XML or the XML schema of the detector description</span></li></ol><h4 class="c7" id="h.qog1x04o3f4p"><span class="c13">XML Parser</span></h4><ol class="c22 lst-kix_4uglsyagtvkb-0" start="2"><li class="c15 c19"><span class="c3">The Parser must use current CMS XML description as is:</span></li></ol><ol class="c22 lst-kix_4uglsyagtvkb-1 start" start="1"><li class="c18 c21 c19"><span class="c3">An important requirement from the physics community is a CMS DD format that is easy to understand and edit.</span></li></ol><ol class="c22 lst-kix_4uglsyagtvkb-0" start="3"><li class="c15 c19"><span class="c3">The Parser must allow injection of C++ code to define geometry, aka algorithms</span></li><li class="c15 c19"><span class="c3">The Parser should accept “:” as a namespace separator</span></li><li class="c15 c19"><span class="c3">The Parser lifetime must be defined by CMS framework</span></li></ol><h4 class="c7" id="h.qiz6vekmtqza"><span class="c13">Mediator</span></h4><ol class="c22 lst-kix_euygonypgce4-0 start" start="1"><li class="c15 c19"><span class="c3">Must allow more then one instance at runtime</span></li><li class="c15 c19"><span class="c3">Its lifetime must be defined by CMS framework</span></li></ol><ol class="c22 lst-kix_euygonypgce4-1 start" start="1"><li class="c18 c19 c21"><span class="c3">Must be instantiated and initialized on demand from an EDM Producer</span></li><li class="c18 c21 c19"><span class="c3">Must properly deallocate dynamically allocated resources</span></li></ol><ol class="c22 lst-kix_euygonypgce4-0" start="3"><li class="c15 c19"><span class="c3">Can be serialized as XML</span></li><li class="c8"><span class="c3">Provide generic services for effectively navigating the BOM.</span></li><li class="c8"><span class="c3">Selecting nodes and edges, applying filter operations on them.</span></li><li class="c8"><span class="c3">Performing common used calculations and transformations for derived data.</span></li><li class="c15 c19"><span class="c3">Merging non XML-based data and binding it to the BOMs nodes, edges and derived quantities thereof.</span></li><li class="c15 c19"><span class="c3">Providing a Factory for instantiating its objects. </span></li></ol><h2 class="c14" id="h.5fzpfu1rkisr"><span class="c2">Detector Description Language DDL</span></h2><p class="c18"><span class="c3">DDL provides generic XML constructs to describe materials (air, iron, etc.), shapes (or solids - box, cylinder, etc.), parts, compositions of parts, and specification of part specific data. Table 1 lists the DDL tags available for the specification of these items. DDL further defines structuring tags to allow a granular document decomposition (listed in Table 2). Additionally, a cross document referencing mechanism allows to split a description into multiple documents. DDL also supports named numerical constants and expressions. Together with the cross document referencing mechanism expressions enable scalable descriptions by explicitly defining the formulas used to calculate derived quantities from base quantities.</span></p><h3 class="c9" id="h.ago0behhykkq"><span class="c17">Partitioning of description data</span></h3><p class="c18"><span class="c3">To provide some structuring within the document the notion of sections is introduced. Every DDL document consists of several sections, each of which contains data of the same category (material section, shape section, etc.). </span></p><h4 class="c7" id="h.msj8kxas7ed3"><span class="c13">Layout of a DDL document</span></h4><p class="c18"><span>Each section of a given type may occur several times in an unordered sequence, including not being present at all, within the same document, provided the value of each </span><span class="c1">label</span><span class="c3"> attribute is unique among this set of sections.</span></p><p class="c18 c24"><span class="c3"></span></p><a id="t.8bb825fd0934aa4b6e28c624e977789dbf92f8cf"></a><a id="t.0"></a><table class="c25"><tbody><tr class="c0"><td class="c10" colspan="2" rowspan="1"><h5 class="c23" id="h.u7brnr552p9t"><span class="c27">named constants</span></h5></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Constant></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Assigns a value to a name, supports mathematical expressions</span></p></td></tr><tr class="c0"><td class="c10" colspan="2" rowspan="1"><h5 class="c30" id="h.umjfubma41jt"><span class="c27">materials</span></h5></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><ElementaryMaterial></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Material consisting only of one single chemical element</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><CompositeMaterial></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Material consisting of one or several elementary and / or composite materials</span></p></td></tr><tr class="c0"><td class="c10" colspan="2" rowspan="1"><h5 class="c23" id="h.qtc8uie5i8dc"><span class="c27">shapes</span></h5></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Box></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Simple box</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Trapezoid></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">General trapezoid</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Trd1></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Simplified trapezoid</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Tubs></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Tube or section thereof</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Tube></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3">Tube</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><CutTubs></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><TruncTubs></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Cone></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Cone or section thereof</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Polycone></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Along their axis concatenated cones</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Polyhedra></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Along their axis concatenated polygonical solids</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><ExtrudedPolygon></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Sphere></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><Torus></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><EllipticalTube></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><ShapelessSolid></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Conceptual shape used for hierarchical modelling to aggregate a set of components</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><UnionSolid></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Boolean solid consisting of the union of two shapes</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><IntersectionSolid></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Boolean solid consisting of the intersection of two shapes</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><PseudoTrap></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c6 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c6"><span class="c3"><SubtractionSolid></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Boolean solid consisting of the subtraction of two shapes</span></p></td></tr><tr class="c0"><td class="c10" colspan="2" rowspan="1"><h5 class="c23" id="h.nbfq5e6i4gby"><span class="c27">parts / components</span></h5></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><LogicalPart></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Assigns a material to a shape</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><PosPart>(*)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Defines a relative spatial position of a logical part in another logical part and thus defines a parent-child relation</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Algorithm></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Invokes a C++ algorithm (plugin)</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Rotation></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Rotation-matrix, defines a relative rotation between the two parts of a <PosPart></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><ReflectionRotation></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Reflection operation, defines a relative rotation and a reflection operation between the two parts of a <PosPart></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Translation>(*)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Translation-vector, defines a relative translation between the two parts of a <PosPart></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><RotationByAxis></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><RotationSequence></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Aggregates a set of <RotationByAxis>s</span></p></td></tr><tr class="c0"><td class="c10" colspan="2" rowspan="1"><h5 class="c23" id="h.ozfqnhg810nh"><span class="c27">specific data</span></h5></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><SpecPar></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Aggregates a set of <PartSelector>s and <Parameter>s</span></p><p class="c5 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><PartSelector>(*)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Specifies a selection of parts in the geometrical hierarchy</span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Parameter>(*)</span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3">Specifies data to be attached to parts selected by <PartSeletor></span></p></td></tr><tr class="c0"><td class="c10" colspan="2" rowspan="1"><h5 class="c23" id="h.r095ak5xfsfw"><span class="c27">named containers</span></h5></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Vector></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5 c24"><span class="c3"></span></p></td></tr><tr class="c12"><td class="c4" colspan="1" rowspan="1"><p class="c5"><span class="c3"><Map></span></p></td><td class="c4" colspan="1" rowspan="1"><p class="c5 c24"><span class="c3"></span></p></td></tr></tbody></table><p class="c11"><span class="c3">Table 1: Basic building blocks of DDL. The listed tags are used to describe materials, shapes, geometrical hierarchies of components, and specific data attached to nodes in the geometrical hierarchy. All tags except the ones marked (*) are subject to the cross referencing mechanism, i.e. they provide an attribute name which has to be unique within a single document. Additionally, the names of <ElementaryMaterial>s and <CompositeMaterial>s have to be unique within one document.</span></p><h4 class="c16" id="h.gjwkgf1axf8p"><span class="c13">Cross referencing</span></h4><p class="c11"><span class="c3">Items defined in the various sections can refer to items defined in different section - even if these sections are part of a different DDL document. The cross referencing mechanism is used to this purpose. It has only minimum syntactical overhead but fulfils exactly the desired requirements. Yet it needs appropriate capabilities of the processor to be interpreted correctly. </span></p><p class="c11"><span>A DDL item can only be referred to if it is uniquely identifiable. The tuple (namespace, element-name, value of attribute </span><span class="c1">name</span><span class="c3">) identifies an item uniquely within a given set of documents selected by a Python configuration fragment, whereas namespace denotes the document-name without its file extension ‘.xml’.</span></p><p class="c11"><span>A cross reference is expressed by special reference tags. The general syntax of a reference tag is: <</span><span class="c20">r(RoleName)</span><span> name=</span><span class="c1">”NameSpace:Name”</span><span>/>. Each data item which is subject to the cross referencing mechanism is implicitly assigned to the namespace of the document where it is defined. If </span><span class="c1">‘NameSpace:’</span><span> is omitted, the reference refers to an item defined in the same document. </span><span class="c1">Name</span><span> corresponds to the value of the attribute </span><span class="c1">name</span><span class="c3"> of the element being referred to. In the following example</span></p><p class="c15"><span><</span><span class="c20">rMaterial</span><span> name=”</span><span class="c1">materials:Air</span><span class="c3">”/></span></p><p class="c11"><span>the reference tag points to an element of type <</span><span class="c20">ElementaryMaterial</span><span>> or <</span><span class="c20">CompositeMaterial</span><span>> which has name=</span><span class="c1">’Air’</span><span> and is defined in document </span><span class="c1">materials.xml</span><span class="c3">. The processor has to verify the validity of a reference. A description is not complete unless all references are resolved.</span></p><p class="c11"><span class="c3">The cross referencing mechanism is further enhanced by supporting cross references of attribute values for floating point valued attributes in connection with named constants.</span></p><h4 class="c7" id="h.kqv9vwlktez2"><span class="c13">Splitting into multiple documents</span></h4><p class="c18"><span class="c3">It is advisable to choose a component oriented breakdown.</span></p><h4 class="c7" id="h.uwtxpovx5zxp"><span class="c13">Sequence of DDL definitions</span></h4><p class="c18"><span class="c3">DDL does not define rules which specify the sequence of definition.</span></p><h3 class="c9" id="h.btqhelp4gyum"><span class="c17">Named constants and mathematical expressions</span></h3><p class="c18"><span class="c3">A named constant assigns a floating point value to a name.</span></p><h3 class="c9" id="h.ycxzw1yzpfuv"><span class="c17">Physical units and quantities</span></h3><p class="c18"><span class="c3">The units are defined in the same way as in Geant4.</span></p><h3 class="c9" id="h.rmwu0hu0jgmf"><span class="c17">Materials</span></h3><p class="c18"><span class="c3">The materials are defined in the same way as their counterparts in Geant4.</span></p><h3 class="c9" id="h.homtu8e2jeg9"><span class="c17">Shapes</span></h3><p class="c11"><span class="c3">Shapes (or solids) are defined by specifying certain dimensions measured in the reference frame of these shapes. The origin of this reference system also serves as a handle when the solid is positioned in space. In the current schema implementation only solids needed to describe the CMS detector are taken into account.</span></p><h4 class="c16" id="h.89lh196b85m9"><span class="c13">Elementary Solids</span></h4><p class="c18"><span class="c3">DDL provides a set of elementary solids. They are defined in the same way as their counterparts in Geant4.</span></p><h4 class="c7" id="h.2glxdsalng60"><span class="c13">Boolean and reflection solids</span></h4><p class="c18"><span style="overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 602.00px; height: 165.33px;"><img alt="" src="images/image2.png" style="width: 602.00px; height: 165.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);" title=""></span></p><p class="c11"><span>Figure 1: Defining solids from other solids: Two boxes A and B are combined to three types of boolean solids. The reflection solid reflect an already defined solid in the </span><span class="c1">x - y </span><span class="c3">plane of the reference frame.</span></p><h4 class="c7" id="h.1ktw3mjsawj0"><span class="c13">Shapeless solid</span></h4><p class="c18"><span class="c3">A shapeless solid does not describe a shape.</span></p><h3 class="c9" id="h.um5jhzmhyf45"><span class="c17">Components - logical parts</span></h3><p class="c11"><span>A </span><span class="c1">LogicalPart</span><span class="c3"> describes a component. A component has a shape and a material and consists of sub-components. Within DDL sub-components are not explicitly listed in the specification of a component.</span></p><h3 class="c9" id="h.k218de37418"><span class="c17">Defining the geometry hierarchy</span></h3><p class="c11"><span>The parts of a detector are assembled and form a geometrical hierarchy. Components contain sub-components, and the sub-components are themselves components thus defining the hierarchy recursively down to the required detail. Sub-components have a “part-of” relationship to their components. In DDL a component (</span><span class="c1">LogicalPart</span><span>) takes the role of a parent while a sub-component has the role of a child. Using the <</span><span class="c20">PosPart</span><span>> and <</span><span class="c20">Algorithm</span><span class="c3">> tags this parent-child relation can be specified.</span></p><h4 class="c7" id="h.svay58wj4ew1"><span class="c13">Reference systems</span></h4><p class="c11"><span class="c3">When positioning child components into parent components, the relative orientation between children and their parents has to be specified. Furthermore, the relative orientation of the two shapes making up a boolean solid has to be defined.</span></p><p class="c11"><span>Every <</span><span class="c20">LogicalPart</span><span class="c3">> has its local coordinate system. It is the reference system of the shape which has been assigned to the logical part.</span></p><h4 class="c7" id="h.ldh5hvc48v5i"><span class="c13">Construction description</span></h4><p class="c18"><span style="overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 602.00px; height: 196.00px;"><img alt="" src="images/image4.png" style="width: 602.00px; height: 196.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);" title=""></span></p><p class="c18"><span>Figure 2: Description of the </span><span class="c1">construction view</span><span class="c3">.</span></p><h4 class="c7" id="h.kssnvuuox663"><span class="c13">Design description</span></h4><p class="c18"><span style="overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 559.00px; height: 536.00px;"><img alt="" src="images/image3.png" style="width: 559.00px; height: 536.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);" title=""></span></p><p class="c18"><span>Figure 3: Description of the </span><span class="c1">design view</span><span class="c3">.</span></p><h4 class="c7" id="h.mj8dphj36fpi"><span class="c13">Shapeless solids as subsidiary constructs</span></h4><p class="c18"><span>A logical part </span><span class="c20">D</span><span> which is described by a shapeless solid is t</span><span class="c3">reated as a special case: the assigned material is ignored. D is only used as a container for children parts, which it groups together, providing a common handle for further placements of this group.</span></p><h4 class="c7" id="h.wuvb05s06abo"><span class="c13">Attaching specific data: merging design and construction description</span></h4><p class="c18"><span>DDL provides a generic mechanism to attach data to paths in the design graph: the <</span><span class="c20">SpecPar</span><span>>, <</span><span class="c20">PartSelector</span><span>> and <</span><span class="c20">Parameter</span><span class="c3">> tags.</span></p><h2 class="c14" id="h.y66ct1w4c6eh"><span class="c2">Mediator</span></h2><p class="c11"><span class="c3">Clients of the DD use this description data to build up an internal representation to perform their specific task more effectively. They make use of the geometrical hierarchy as specified in the XML Bill of Materials (BOM).</span></p><p class="c11"><span class="c3">Figure 2 shows an example of a BOM. Within the XML description, part types have relative positions to other part types. A part type contains a geometry description and other information relevant for this part type. A requirement from the physics community was that data should not be duplicated if it is used within more than one XML node (one definition rule). Therefore the BOM provides one description for nominal equal parts. The references (arrows) between the XML descriptions are conceptual references. A requirement from the physics community was that the schema description should be simple and intuitive for physicists who are not familiar with XML or the XML schema of the detector description. Furthermore, the types of references between data are known in advance. The data for the detector description is too large to fit into one XML file. Therefore references are needed between data of XML files. Based on this description the mediator constructs a direct acyclic multi graph, and expanded view on demand. </span></p><p class="c18"><span style="overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 265.00px; height: 212.00px;"><img alt="" src="images/image1.png" style="width: 265.00px; height: 212.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);" title=""></span></p><p class="c18"><span class="c3">Figure 2: BOM</span></p><p class="c11"><span class="c3">To cover common requirements of the clients the mediator offers generic services to navigate and access data by:</span></p><p class="c11"><span class="c3"> </span></p><p class="c11"><span class="c1">One to one BOM navigation</span><span class="c3">. The mediators representation of the BOM can be navigated directly using the usual graph navigation possibilities.</span></p><p class="c11"><span class="c3"> </span></p><p class="c11"><span class="c1">Navigation in the expanded view</span><span class="c3">. In order to address individual parts of the detector (absolute positioned volumes) the BOM has to be expanded into a real tree. The BOM is expanded into a tree by first building its transposed graph and then unfolding it by transforming every possible path between two nodes into corresponding branches of the tree (expanded view Figure 1). The expansion to the tree is only done on demand. The mediator is used to navigate the expanded view using usual tree navigation where at each navigational step (first-child, next-sibling or parent) the corresponding node is calculated on demand from the BOM. In addition derived data such as the absolute spacial position of physical parts (nodes in the expanded view) can be calculated using the information of the relative positioning in the BOM edges.</span></p><p class="c11"><span class="c3"> </span></p><p class="c11"><span class="c1">Selecting nodes (the PartSelector</span><span class="c3">). The mediator offers also services concerning the XPath like expressions (PartSelectors) for selecting nodes in the expanded view. Given a PartSelector the mediator provides a list of expanded nodes corresponding to the selection. If the XML specification has defined a PartSelector with attached data, the mediator can provide this data for the appropriate nodes in the expanded view.</span></p><p class="c11"><span class="c3"> </span></p><p class="c11"><span class="c1">Constraints checking.</span><span class="c3"> The node selection capabilities are also used together with specified constraints among these selected nodes to validate against these constraints. The constraints are specified in the expanded view of the detector.</span></p><h2 class="c14" id="h.5x8wczcz26k9"><span class="c2">C++ and XML Data Model</span></h2><p class="c11"><span class="c3">Client software accesses the DD via an API. The API allows access to the Compact View and Expanded View representations of the detector. Nodes of the Expanded View are built on the fly, transparently to clients, by traversing paths in the Compact View for reasons of memory optimization. The Expanded View can be further filtered to allow the user to traverse a selected set of nodes from the tree.</span></p><h2 class="c28" id="h.nmfjzp30ze2z"><span class="c2">XML Schema</span></h2></body></html>