diff --git a/Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalEEV17-algorithm.xml b/Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalEEV17-algorithm.xml new file mode 100644 index 0000000000000..8221935ede317 --- /dev/null +++ b/Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalEEV17-algorithm.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalHEsilV17-algorithm.xml b/Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalHEsilV17-algorithm.xml new file mode 100644 index 0000000000000..6efd5b5b0948e --- /dev/null +++ b/Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalHEsilV17-algorithm.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml b/Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml index a0efc36f840b6..c682234f95046 100644 --- a/Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml +++ b/Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml @@ -7,6 +7,7 @@ + @@ -2376,58 +2377,58 @@ 6042, 6372, 6678, 7020, 7362, 7716 - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm diff --git a/Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml b/Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml new file mode 100644 index 0000000000000..1fcca1fa6e58d --- /dev/null +++ b/Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml @@ -0,0 +1,890 @@ + + + + + + + + + + + + + + + + + + + +, + hgcalwafer:HGCalHEWafer06Fine, hgcalwafer:HGCalHEWafer07Fine, + hgcalwafer:HGCalHEWafer08Fine, hgcalwafer:HGCalHEWafer09Fine, + hgcalwafer:HGCalHEWafer10Fine, hgcalwafer:HGCalHEWafer11Fine, + hgcalwafer:HGCalHEWafer06Coarse1, hgcalwafer:HGCalHEWafer07Coarse1, + hgcalwafer:HGCalHEWafer08Coarse1, hgcalwafer:HGCalHEWafer09Coarse1, + hgcalwafer:HGCalHEWafer10Coarse1, hgcalwafer:HGCalHEWafer11Coarse1, + hgcalwafer:HGCalHEWafer06Coarse2, hgcalwafer:HGCalHEWafer07Coarse2, + hgcalwafer:HGCalHEWafer08Coarse2, hgcalwafer:HGCalHEWafer09Coarse2, + hgcalwafer:HGCalHEWafer10Coarse2, hgcalwafer:HGCalHEWafer11Coarse2 + + hgcalwafer:HGCalHEWafer06FineHD1, hgcalwafer:HGCalHEWafer07FineHD1, + hgcalwafer:HGCalHEWafer08FineHD1, hgcalwafer:HGCalHEWafer09FineHD1, + hgcalwafer:HGCalHEWafer10FineHD1, hgcalwafer:HGCalHEWafer11FineHD1, + hgcalwafer:HGCalHEWafer06FineHD2, hgcalwafer:HGCalHEWafer07FineHD2, + hgcalwafer:HGCalHEWafer08FineHD2, hgcalwafer:HGCalHEWafer09FineHD2, + hgcalwafer:HGCalHEWafer10FineHD2, hgcalwafer:HGCalHEWafer11FineHD2, + hgcalwafer:HGCalHEWafer06FineHD3, hgcalwafer:HGCalHEWafer07FineHD3, + hgcalwafer:HGCalHEWafer08FineHD3, hgcalwafer:HGCalHEWafer09FineHD3, + hgcalwafer:HGCalHEWafer10FineHD3, hgcalwafer:HGCalHEWafer11FineHD3, + hgcalwafer:HGCalHEWafer06FineHD4, hgcalwafer:HGCalHEWafer07FineHD4, + hgcalwafer:HGCalHEWafer08FineHD4, hgcalwafer:HGCalHEWafer09FineHD4, + hgcalwafer:HGCalHEWafer10FineHD4, hgcalwafer:HGCalHEWafer11FineHD4, + hgcalwafer:HGCalHEWafer06FineHD5, hgcalwafer:HGCalHEWafer07FineHD5, + hgcalwafer:HGCalHEWafer08FineHD5, hgcalwafer:HGCalHEWafer09FineHD5, + hgcalwafer:HGCalHEWafer10FineHD5, hgcalwafer:HGCalHEWafer11FineHD5, + hgcalwafer:HGCalHEWafer06Coarse1LD1, hgcalwafer:HGCalHEWafer07Coarse1LD1, + hgcalwafer:HGCalHEWafer08Coarse1LD1, hgcalwafer:HGCalHEWafer09Coarse1LD1, + hgcalwafer:HGCalHEWafer10Coarse1LD1, hgcalwafer:HGCalHEWafer11Coarse1LD1, + hgcalwafer:HGCalHEWafer06Coarse1LD2, hgcalwafer:HGCalHEWafer07Coarse1LD2, + hgcalwafer:HGCalHEWafer08Coarse1LD2, hgcalwafer:HGCalHEWafer09Coarse1LD2, + hgcalwafer:HGCalHEWafer10Coarse1LD2, hgcalwafer:HGCalHEWafer11Coarse1LD2, + hgcalwafer:HGCalHEWafer06Coarse1LD3, hgcalwafer:HGCalHEWafer07Coarse1LD3, + hgcalwafer:HGCalHEWafer08Coarse1LD3, hgcalwafer:HGCalHEWafer09Coarse1LD3, + hgcalwafer:HGCalHEWafer10Coarse1LD3, hgcalwafer:HGCalHEWafer11Coarse1LD3, + hgcalwafer:HGCalHEWafer06Coarse1LD4, hgcalwafer:HGCalHEWafer07Coarse1LD4, + hgcalwafer:HGCalHEWafer08Coarse1LD4, hgcalwafer:HGCalHEWafer09Coarse1LD4, + hgcalwafer:HGCalHEWafer10Coarse1LD4, hgcalwafer:HGCalHEWafer11Coarse1LD4, + hgcalwafer:HGCalHEWafer06Coarse1LD5, hgcalwafer:HGCalHEWafer07Coarse1LD5, + hgcalwafer:HGCalHEWafer08Coarse1LD5, hgcalwafer:HGCalHEWafer09Coarse1LD5, + hgcalwafer:HGCalHEWafer10Coarse1LD5, hgcalwafer:HGCalHEWafer11Coarse1LD5, + hgcalwafer:HGCalHEWafer06Coarse1LD6, hgcalwafer:HGCalHEWafer07Coarse1LD6, + hgcalwafer:HGCalHEWafer08Coarse1LD6, hgcalwafer:HGCalHEWafer09Coarse1LD6, + hgcalwafer:HGCalHEWafer10Coarse1LD6, hgcalwafer:HGCalHEWafer11Coarse1LD6, + hgcalwafer:HGCalHEWafer06Coarse2LD1, hgcalwafer:HGCalHEWafer07Coarse2LD1, + hgcalwafer:HGCalHEWafer08Coarse2LD1, hgcalwafer:HGCalHEWafer09Coarse2LD1, + hgcalwafer:HGCalHEWafer10Coarse2LD1, hgcalwafer:HGCalHEWafer11Coarse2LD1, + hgcalwafer:HGCalHEWafer06Coarse2LD2, hgcalwafer:HGCalHEWafer07Coarse2LD2, + hgcalwafer:HGCalHEWafer08Coarse2LD2, hgcalwafer:HGCalHEWafer09Coarse2LD2, + hgcalwafer:HGCalHEWafer10Coarse2LD2, hgcalwafer:HGCalHEWafer11Coarse2LD2, + hgcalwafer:HGCalHEWafer06Coarse2LD3, hgcalwafer:HGCalHEWafer07Coarse2LD3, + hgcalwafer:HGCalHEWafer08Coarse2LD3, hgcalwafer:HGCalHEWafer09Coarse2LD3, + hgcalwafer:HGCalHEWafer10Coarse2LD3, hgcalwafer:HGCalHEWafer11Coarse2LD3, + hgcalwafer:HGCalHEWafer06Coarse2LD4, hgcalwafer:HGCalHEWafer07Coarse2LD4, + hgcalwafer:HGCalHEWafer08Coarse2LD4, hgcalwafer:HGCalHEWafer09Coarse2LD4, + hgcalwafer:HGCalHEWafer10Coarse2LD4, hgcalwafer:HGCalHEWafer11Coarse2LD4, + hgcalwafer:HGCalHEWafer06Coarse2LD5, hgcalwafer:HGCalHEWafer07Coarse2LD5, + hgcalwafer:HGCalHEWafer08Coarse2LD5, hgcalwafer:HGCalHEWafer09Coarse2LD5, + hgcalwafer:HGCalHEWafer10Coarse2LD5, hgcalwafer:HGCalHEWafer11Coarse2LD5, + hgcalwafer:HGCalHEWafer06Coarse2LD6, hgcalwafer:HGCalHEWafer07Coarse2LD6, + hgcalwafer:HGCalHEWafer08Coarse2LD6, hgcalwafer:HGCalHEWafer09Coarse2LD6, + hgcalwafer:HGCalHEWafer10Coarse2LD6, hgcalwafer:HGCalHEWafer11Coarse2LD6 + + materials:StainlessSteel, materials:StainlessSteel, materials:Air, + materials:Air, materials:StainlessSteel, materials:Copper, + materials:Air + + HGCalHEAbsorber1, HGCalHEAbsorber2, HGCalHEAirGap0, HGCalHEAirGap1, + HGCalHESteelCover, HGCalHECoolingPlate, HGCalHESiliconLayer + + 45.0*mm, 41.5*mm, 1.25*mm, 4.00*mm, 2.50*mm, 6.35*mm, + [hgcal:ModuleThicknessHE] + + 6, 5, 5, 5, 5, 5, 5 + + 67.80*mm, 63.05*mm, 63.05*mm, 63.05*mm, 63.05*mm, 63.05*mm, 63.05*mm + + + 2, 0, 3, 4, 6, 5, + 1, 3, 4, 6, 5, + 1, 3, 4, 6, 5, + 1, 3, 4, 6, 5, + 1, 3, 4, 6, 5, + 1, 3, 4, 6, 5, + 1, 3, 4, 6, 5 + + 0, -1, 0, -2, 1, -2, + -1, 0, -2, 1, -2, + -1, 0, -2, 1, -2, + -1, 0, -2, 1, -2, + -1, 0, -2, 1, -2, + -1, 0, -2, 1, -2, + -1, 0, -2, 1, -2 + + 0, 0, 0, 0 + + [hgcal:zHGCal0], [hgcal:zHGCal2], [hgcal:zHGCal7], + [hgcal:zHGCal8] + + [hgcal:rMinHGCal2], [hgcal:rMinHGCal4], + [hgcal:rMinHGCal6], [hgcal:rMinHGCal8] + + [hgcal:slope1], [hgcal:slope3], 0, 0 + + [hgcal:zHGCal1], [hgcal:zHGCal5], [hgcal:zHGCal10], + [hgcal:zHGCal11] + + [hgcal:rMaxHGCal1], [hgcal:rMaxHGCal5], [hgcal:rMaxHGCal10], + [hgcal:rMaxHGCal11] + + 0, 4, 0, 4, 0, 4, 0 + + + 262146, 262147, 262148, 262149, 262150, 262151, 262152, + 262153, 262178, 262179, 262180, 262181, 262182, 262183, + 262184, 262185, 262211, 262212, 262213, 262214, 262215, + 262216, 262217, 262218, 262242, 262243, 262244, 262245, + 262246, 262247, 262248, 262249, 262272, 262274, 262275, + 262276, 262277, 262278, 262279, 262280, 262281, 262282, + 262305, 262306, 262307, 262308, 262309, 262310, 262311, + 262312, 262336, 262337, 262338, 262339, 262340, 262341, + 262342, 262343, 262344, 262345, 262346, 262347, 262369, + 262370, 262371, 262372, 262373, 262374, 262375, 262376, + 262400, 262401, 262402, 262403, 262404, 262405, 262406, + 262407, 262408, 262409, 262410, 262411, 262433, 262434, + 262435, 262436, 262437, 262438, 262439, 262464, 262465, + 262466, 262467, 262468, 262469, 262470, 262471, 262472, + 262473, 262474, 262475, 262497, 262498, 262499, 262500, + 262501, 262502, 262528, 262529, 262530, 262531, 262532, + 262533, 262534, 262535, 262536, 262537, 262538, 262539, + 262561, 262562, 262563, 262564, 262565, 262592, 262593, + 262594, 262595, 262596, 262597, 262598, 262599, 262600, + 262601, 262602, 262603, 262625, 262626, 262627, 262628, + 262656, 262657, 262658, 262659, 262660, 262661, 262662, + 262663, 262664, 262665, 262666, 262667, 262689, 262690, + 262691, 262720, 262721, 262722, 262723, 262724, 262725, + 262726, 262727, 262728, 262729, 262730, 262753, 262785, + 262786, 262787, 262788, 262789, 262790, 262791, 262792, + 262793, 262851, 262852, 262853, 262854, 262855, 262856, + 264258, 264259, 264260, 264261, 264262, 264263, 264264, + 264265, 264291, 264292, 264293, 264294, 264295, 264296, + 264297, 264298, 264320, 264321, 264322, 264323, 264324, + 264325, 264326, 264327, 264328, 264354, 264355, 264356, + 264357, 264358, 264359, 264360, 264361, 264362, 264384, + 264385, 264386, 264387, 264388, 264389, 264390, 264391, + 264392, 264417, 264418, 264419, 264420, 264421, 264422, + 264423, 264424, 264425, 264426, 264427, 264448, 264449, + 264450, 264451, 264452, 264453, 264454, 264455, 264481, + 264482, 264483, 264484, 264485, 264486, 264487, 264488, + 264489, 264490, 264491, 264512, 264513, 264514, 264515, + 264516, 264517, 264518, 264545, 264546, 264547, 264548, + 264549, 264550, 264551, 264552, 264553, 264554, 264555, + 264576, 264577, 264578, 264579, 264580, 264581, 264609, + 264610, 264611, 264612, 264613, 264614, 264615, 264616, + 264617, 264618, 264619, 264640, 264641, 264642, 264643, + 264644, 264673, 264674, 264675, 264676, 264677, 264678, + 264679, 264680, 264681, 264682, 264683, 264704, 264705, + 264706, 264707, 264737, 264738, 264739, 264740, 264741, + 264742, 264743, 264744, 264745, 264746, 264747, 264768, + 264769, 264801, 264802, 264803, 264804, 264805, 264806, + 264807, 264808, 264809, 264810, 264865, 264866, 264867, + 264868, 264869, 264870, 264871, 264872, 264873, 264931, + 264932, 264933, 264934, 264935, 264936, 524290, 524291, + 524292, 524293, 524294, 524295, 524296, 524297, 524322, + 524323, 524324, 524325, 524326, 524327, 524328, 524329, + 524355, 524356, 524357, 524358, 524359, 524360, 524361, + 524362, 524386, 524387, 524388, 524389, 524390, 524391, + 524392, 524393, 524416, 524418, 524419, 524420, 524421, + 524422, 524423, 524424, 524425, 524426, 524449, 524450, + 524451, 524452, 524453, 524454, 524455, 524456, 524480, + 524481, 524482, 524483, 524484, 524485, 524486, 524487, + 524488, 524489, 524490, 524491, 524513, 524514, 524515, + 524516, 524517, 524518, 524519, 524520, 524544, 524545, + 524546, 524547, 524548, 524549, 524550, 524551, 524552, + 524553, 524554, 524555, 524577, 524578, 524579, 524580, + 524581, 524582, 524583, 524608, 524609, 524610, 524611, + 524612, 524613, 524614, 524615, 524616, 524617, 524618, + 524619, 524641, 524642, 524643, 524644, 524645, 524646, + 524672, 524673, 524674, 524675, 524676, 524677, 524678, + 524679, 524680, 524681, 524682, 524683, 524705, 524706, + 524707, 524708, 524709, 524736, 524737, 524738, 524739, + 524740, 524741, 524742, 524743, 524744, 524745, 524746, + 524747, 524769, 524770, 524771, 524772, 524800, 524801, + 524802, 524803, 524804, 524805, 524806, 524807, 524808, + 524809, 524810, 524811, 524833, 524834, 524835, 524864, + 524865, 524866, 524867, 524868, 524869, 524870, 524871, + 524872, 524873, 524874, 524897, 524929, 524930, 524931, + 524932, 524933, 524934, 524935, 524936, 524937, 524995, + 524996, 524997, 524998, 524999, 525000, 526402, 526403, + 526404, 526405, 526406, 526407, 526408, 526409, 526435, + 526436, 526437, 526438, 526439, 526440, 526441, 526442, + 526464, 526465, 526466, 526467, 526468, 526469, 526470, + 526471, 526472, 526498, 526499, 526500, 526501, 526502, + 526503, 526504, 526505, 526506, 526528, 526529, 526530, + 526531, 526532, 526533, 526534, 526535, 526536, 526561, + 526562, 526563, 526564, 526565, 526566, 526567, 526568, + 526569, 526570, 526571, 526592, 526593, 526594, 526595, + 526596, 526597, 526598, 526599, 526625, 526626, 526627, + 526628, 526629, 526630, 526631, 526632, 526633, 526634, + 526635, 526656, 526657, 526658, 526659, 526660, 526661, + 526662, 526689, 526690, 526691, 526692, 526693, 526694, + 526695, 526696, 526697, 526698, 526699, 526720, 526721, + 526722, 526723, 526724, 526725, 526753, 526754, 526755, + 526756, 526757, 526758, 526759, 526760, 526761, 526762, + 526763, 526784, 526785, 526786, 526787, 526788, 526817, + 526818, 526819, 526820, 526821, 526822, 526823, 526824, + 526825, 526826, 526827, 526848, 526849, 526850, 526851, + 526881, 526882, 526883, 526884, 526885, 526886, 526887, + 526888, 526889, 526890, 526891, 526912, 526913, 526945, + 526946, 526947, 526948, 526949, 526950, 526951, 526952, + 526953, 526954, 527009, 527010, 527011, 527012, 527013, + 527014, 527015, 527016, 527017, 527075, 527076, 527077, + 527078, 527079, 527080, 786434, 786435, 786436, 786437, + 786438, 786439, 786440, 786441, 786466, 786467, 786468, + 786469, 786470, 786471, 786472, 786473, 786499, 786500, + 786501, 786502, 786503, 786504, 786505, 786506, 786530, + 786531, 786532, 786533, 786534, 786535, 786536, 786537, + 786560, 786562, 786563, 786564, 786565, 786566, 786567, + 786568, 786569, 786570, 786571, 786593, 786594, 786595, + 786596, 786597, 786598, 786599, 786600, 786601, 786624, + 786625, 786626, 786627, 786628, 786629, 786630, 786631, + 786632, 786633, 786634, 786635, 786657, 786658, 786659, + 786660, 786661, 786662, 786663, 786664, 786688, 786689, + 786690, 786691, 786692, 786693, 786694, 786695, 786696, + 786697, 786698, 786699, 786721, 786722, 786723, 786724, + 786725, 786726, 786727, 786752, 786753, 786754, 786755, + 786756, 786757, 786758, 786759, 786760, 786761, 786762, + 786763, 786785, 786786, 786787, 786788, 786789, 786790, + 786816, 786817, 786818, 786819, 786820, 786821, 786822, + 786823, 786824, 786825, 786826, 786827, 786849, 786850, + 786851, 786852, 786853, 786880, 786881, 786882, 786883, + 786884, 786885, 786886, 786887, 786888, 786889, 786890, + 786891, 786913, 786914, 786915, 786916, 786944, 786945, + 786946, 786947, 786948, 786949, 786950, 786951, 786952, + 786953, 786954, 786955, 786977, 786978, 786979, 787008, + 787009, 787010, 787011, 787012, 787013, 787014, 787015, + 787016, 787017, 787018, 787019, 787041, 787042, 787073, + 787074, 787075, 787076, 787077, 787078, 787079, 787080, + 787081, 787138, 787139, 787140, 787141, 787142, 787143, + 787144, 787145, 788546, 788547, 788548, 788549, 788550, + 788551, 788552, 788553, 788579, 788580, 788581, 788582, + 788583, 788584, 788585, 788586, 788608, 788609, 788610, + 788611, 788612, 788613, 788614, 788615, 788616, 788617, + 788642, 788643, 788644, 788645, 788646, 788647, 788648, + 788649, 788650, 788651, 788672, 788673, 788674, 788675, + 788676, 788677, 788678, 788679, 788680, 788705, 788706, + 788707, 788708, 788709, 788710, 788711, 788712, 788713, + 788714, 788715, 788736, 788737, 788738, 788739, 788740, + 788741, 788742, 788743, 788769, 788770, 788771, 788772, + 788773, 788774, 788775, 788776, 788777, 788778, 788779, + 788800, 788801, 788802, 788803, 788804, 788805, 788806, + 788833, 788834, 788835, 788836, 788837, 788838, 788839, + 788840, 788841, 788842, 788843, 788864, 788865, 788866, + 788867, 788868, 788869, 788897, 788898, 788899, 788900, + 788901, 788902, 788903, 788904, 788905, 788906, 788907, + 788928, 788929, 788930, 788931, 788932, 788961, 788962, + 788963, 788964, 788965, 788966, 788967, 788968, 788969, + 788970, 788971, 788992, 788993, 788994, 788995, 789025, + 789026, 789027, 789028, 789029, 789030, 789031, 789032, + 789033, 789034, 789035, 789056, 789057, 789058, 789089, + 789090, 789091, 789092, 789093, 789094, 789095, 789096, + 789097, 789098, 789099, 789153, 789154, 789155, 789156, + 789157, 789158, 789159, 789160, 789161, 789218, 789219, + 789220, 789221, 789222, 789223, 789224, 789225, 1048578, + 1048579, 1048580, 1048581, 1048582, 1048583, 1048584, 1048585, + 1048610, 1048611, 1048612, 1048613, 1048614, 1048615, 1048616, + 1048617, 1048643, 1048644, 1048645, 1048646, 1048647, 1048648, + 1048649, 1048650, 1048674, 1048675, 1048676, 1048677, 1048678, + 1048679, 1048680, 1048681, 1048704, 1048706, 1048707, 1048708, + 1048709, 1048710, 1048711, 1048712, 1048713, 1048714, 1048715, + 1048737, 1048738, 1048739, 1048740, 1048741, 1048742, 1048743, + 1048744, 1048745, 1048768, 1048769, 1048770, 1048771, 1048772, + 1048773, 1048774, 1048775, 1048776, 1048777, 1048778, 1048779, + 1048801, 1048802, 1048803, 1048804, 1048805, 1048806, 1048807, + 1048808, 1048832, 1048833, 1048834, 1048835, 1048836, 1048837, + 1048838, 1048839, 1048840, 1048841, 1048842, 1048843, 1048865, + 1048866, 1048867, 1048868, 1048869, 1048870, 1048871, 1048896, + 1048897, 1048898, 1048899, 1048900, 1048901, 1048902, 1048903, + 1048904, 1048905, 1048906, 1048907, 1048908, 1048929, 1048930, + 1048931, 1048932, 1048933, 1048934, 1048935, 1048960, 1048961, + 1048962, 1048963, 1048964, 1048965, 1048966, 1048967, 1048968, + 1048969, 1048970, 1048971, 1048993, 1048994, 1048995, 1048996, + 1048997, 1049024, 1049025, 1049026, 1049027, 1049028, 1049029, + 1049030, 1049031, 1049032, 1049033, 1049034, 1049035, 1049036, + 1049057, 1049058, 1049059, 1049060, 1049061, 1049088, 1049089, + 1049090, 1049091, 1049092, 1049093, 1049094, 1049095, 1049096, + 1049097, 1049098, 1049099, 1049121, 1049122, 1049123, 1049152, + 1049153, 1049154, 1049155, 1049156, 1049157, 1049158, 1049159, + 1049160, 1049161, 1049162, 1049163, 1049185, 1049186, 1049217, + 1049218, 1049219, 1049220, 1049221, 1049222, 1049223, 1049224, + 1049225, 1049282, 1049283, 1049284, 1049285, 1049286, 1049287, + 1049288, 1049289, 1049349, 1049351, 1050690, 1050691, 1050692, + 1050693, 1050694, 1050695, 1050696, 1050697, 1050723, 1050724, + 1050725, 1050726, 1050727, 1050728, 1050729, 1050730, 1050752, + 1050753, 1050754, 1050755, 1050756, 1050757, 1050758, 1050759, + 1050760, 1050761, 1050786, 1050787, 1050788, 1050789, 1050790, + 1050791, 1050792, 1050793, 1050794, 1050795, 1050816, 1050817, + 1050818, 1050819, 1050820, 1050821, 1050822, 1050823, 1050824, + 1050849, 1050850, 1050851, 1050852, 1050853, 1050854, 1050855, + 1050856, 1050857, 1050858, 1050859, 1050880, 1050881, 1050882, + 1050883, 1050884, 1050885, 1050886, 1050887, 1050913, 1050914, + 1050915, 1050916, 1050917, 1050918, 1050919, 1050920, 1050921, + 1050922, 1050923, 1050944, 1050945, 1050946, 1050947, 1050948, + 1050949, 1050950, 1050951, 1050977, 1050978, 1050979, 1050980, + 1050981, 1050982, 1050983, 1050984, 1050985, 1050986, 1050987, + 1050988, 1051008, 1051009, 1051010, 1051011, 1051012, 1051013, + 1051041, 1051042, 1051043, 1051044, 1051045, 1051046, 1051047, + 1051048, 1051049, 1051050, 1051051, 1051072, 1051073, 1051074, + 1051075, 1051076, 1051077, 1051105, 1051106, 1051107, 1051108, + 1051109, 1051110, 1051111, 1051112, 1051113, 1051114, 1051115, + 1051116, 1051136, 1051137, 1051138, 1051139, 1051169, 1051170, + 1051171, 1051172, 1051173, 1051174, 1051175, 1051176, 1051177, + 1051178, 1051179, 1051200, 1051201, 1051202, 1051233, 1051234, + 1051235, 1051236, 1051237, 1051238, 1051239, 1051240, 1051241, + 1051242, 1051243, 1051297, 1051298, 1051299, 1051300, 1051301, + 1051302, 1051303, 1051304, 1051305, 1051362, 1051363, 1051364, + 1051365, 1051366, 1051367, 1051368, 1051369, 1051429, 1051431, + 1310722, 1310723, 1310724, 1310725, 1310726, 1310727, 1310728, + 1310729, 1310754, 1310755, 1310756, 1310757, 1310758, 1310759, + 1310760, 1310761, 1310787, 1310788, 1310789, 1310790, 1310791, + 1310792, 1310793, 1310794, 1310818, 1310819, 1310820, 1310821, + 1310822, 1310823, 1310824, 1310825, 1310848, 1310850, 1310851, + 1310852, 1310853, 1310854, 1310855, 1310856, 1310857, 1310858, + 1310859, 1310881, 1310882, 1310883, 1310884, 1310885, 1310886, + 1310887, 1310888, 1310889, 1310912, 1310913, 1310914, 1310915, + 1310916, 1310917, 1310918, 1310919, 1310920, 1310921, 1310922, + 1310923, 1310945, 1310946, 1310947, 1310948, 1310949, 1310950, + 1310951, 1310952, 1310976, 1310977, 1310978, 1310979, 1310980, + 1310981, 1310982, 1310983, 1310984, 1310985, 1310986, 1310987, + 1310988, 1311009, 1311010, 1311011, 1311012, 1311013, 1311014, + 1311015, 1311016, 1311040, 1311041, 1311042, 1311043, 1311044, + 1311045, 1311046, 1311047, 1311048, 1311049, 1311050, 1311051, + 1311052, 1311073, 1311074, 1311075, 1311076, 1311077, 1311078, + 1311079, 1311104, 1311105, 1311106, 1311107, 1311108, 1311109, + 1311110, 1311111, 1311112, 1311113, 1311114, 1311115, 1311137, + 1311138, 1311139, 1311140, 1311141, 1311168, 1311169, 1311170, + 1311171, 1311172, 1311173, 1311174, 1311175, 1311176, 1311177, + 1311178, 1311179, 1311180, 1311201, 1311202, 1311203, 1311204, + 1311205, 1311232, 1311233, 1311234, 1311235, 1311236, 1311237, + 1311238, 1311239, 1311240, 1311241, 1311242, 1311243, 1311244, + 1311265, 1311266, 1311267, 1311268, 1311296, 1311297, 1311298, + 1311299, 1311300, 1311301, 1311302, 1311303, 1311304, 1311305, + 1311306, 1311307, 1311329, 1311330, 1311361, 1311362, 1311363, + 1311364, 1311365, 1311366, 1311367, 1311368, 1311369, 1311426, + 1311427, 1311428, 1311429, 1311430, 1311431, 1311432, 1311433, + 1311492, 1311493, 1311495, 1311496, 1312834, 1312835, 1312836, + 1312837, 1312838, 1312839, 1312840, 1312841, 1312867, 1312868, + 1312869, 1312870, 1312871, 1312872, 1312873, 1312874, 1312896, + 1312897, 1312898, 1312899, 1312900, 1312901, 1312902, 1312903, + 1312904, 1312905, 1312930, 1312931, 1312932, 1312933, 1312934, + 1312935, 1312936, 1312937, 1312938, 1312939, 1312960, 1312961, + 1312962, 1312963, 1312964, 1312965, 1312966, 1312967, 1312968, + 1312993, 1312994, 1312995, 1312996, 1312997, 1312998, 1312999, + 1313000, 1313001, 1313002, 1313003, 1313024, 1313025, 1313026, + 1313027, 1313028, 1313029, 1313030, 1313031, 1313032, 1313057, + 1313058, 1313059, 1313060, 1313061, 1313062, 1313063, 1313064, + 1313065, 1313066, 1313067, 1313068, 1313088, 1313089, 1313090, + 1313091, 1313092, 1313093, 1313094, 1313095, 1313121, 1313122, + 1313123, 1313124, 1313125, 1313126, 1313127, 1313128, 1313129, + 1313130, 1313131, 1313132, 1313152, 1313153, 1313154, 1313155, + 1313156, 1313157, 1313185, 1313186, 1313187, 1313188, 1313189, + 1313190, 1313191, 1313192, 1313193, 1313194, 1313195, 1313216, + 1313217, 1313218, 1313219, 1313220, 1313221, 1313249, 1313250, + 1313251, 1313252, 1313253, 1313254, 1313255, 1313256, 1313257, + 1313258, 1313259, 1313260, 1313280, 1313281, 1313282, 1313283, + 1313284, 1313313, 1313314, 1313315, 1313316, 1313317, 1313318, + 1313319, 1313320, 1313321, 1313322, 1313323, 1313324, 1313344, + 1313345, 1313346, 1313377, 1313378, 1313379, 1313380, 1313381, + 1313382, 1313383, 1313384, 1313385, 1313386, 1313387, 1313441, + 1313442, 1313443, 1313444, 1313445, 1313446, 1313447, 1313448, + 1313449, 1313506, 1313507, 1313508, 1313509, 1313510, 1313511, + 1313512, 1313513, 1313572, 1313573, 1313575, 1313576, 1572866, + 1572867, 1572868, 1572869, 1572870, 1572871, 1572872, 1572873, + 1572874, 1572898, 1572899, 1572900, 1572901, 1572902, 1572903, + 1572904, 1572905, 1572906, 1572931, 1572932, 1572933, 1572934, + 1572935, 1572936, 1572937, 1572938, 1572939, 1572962, 1572963, + 1572964, 1572965, 1572966, 1572967, 1572968, 1572969, 1572970, + 1572992, 1572994, 1572995, 1572996, 1572997, 1572998, 1572999, + 1573000, 1573001, 1573002, 1573003, 1573025, 1573026, 1573027, + 1573028, 1573029, 1573030, 1573031, 1573032, 1573033, 1573056, + 1573057, 1573058, 1573059, 1573060, 1573061, 1573062, 1573063, + 1573064, 1573065, 1573066, 1573067, 1573068, 1573089, 1573090, + 1573091, 1573092, 1573093, 1573094, 1573095, 1573096, 1573097, + 1573120, 1573121, 1573122, 1573123, 1573124, 1573125, 1573126, + 1573127, 1573128, 1573129, 1573130, 1573131, 1573132, 1573153, + 1573154, 1573155, 1573156, 1573157, 1573158, 1573159, 1573160, + 1573184, 1573185, 1573186, 1573187, 1573188, 1573189, 1573190, + 1573191, 1573192, 1573193, 1573194, 1573195, 1573196, 1573217, + 1573218, 1573219, 1573220, 1573221, 1573222, 1573223, 1573248, + 1573249, 1573250, 1573251, 1573252, 1573253, 1573254, 1573255, + 1573256, 1573257, 1573258, 1573259, 1573260, 1573281, 1573282, + 1573283, 1573284, 1573285, 1573286, 1573312, 1573313, 1573314, + 1573315, 1573316, 1573317, 1573318, 1573319, 1573320, 1573321, + 1573322, 1573323, 1573324, 1573345, 1573346, 1573347, 1573348, + 1573349, 1573376, 1573377, 1573378, 1573379, 1573380, 1573381, + 1573382, 1573383, 1573384, 1573385, 1573386, 1573387, 1573388, + 1573409, 1573410, 1573411, 1573412, 1573440, 1573441, 1573442, + 1573443, 1573444, 1573445, 1573446, 1573447, 1573448, 1573449, + 1573450, 1573451, 1573452, 1573473, 1573474, 1573475, 1573504, + 1573505, 1573506, 1573507, 1573508, 1573509, 1573510, 1573511, + 1573512, 1573513, 1573514, 1573515, 1573537, 1573569, 1573570, + 1573571, 1573572, 1573573, 1573574, 1573575, 1573576, 1573577, + 1573578, 1573635, 1573636, 1573637, 1573638, 1573639, 1573640, + 1573641, 1574978, 1574979, 1574980, 1574981, 1574982, 1574983, + 1574984, 1574985, 1574986, 1575011, 1575012, 1575013, 1575014, + 1575015, 1575016, 1575017, 1575018, 1575019, 1575040, 1575041, + 1575042, 1575043, 1575044, 1575045, 1575046, 1575047, 1575048, + 1575049, 1575074, 1575075, 1575076, 1575077, 1575078, 1575079, + 1575080, 1575081, 1575082, 1575083, 1575104, 1575105, 1575106, + 1575107, 1575108, 1575109, 1575110, 1575111, 1575112, 1575113, + 1575137, 1575138, 1575139, 1575140, 1575141, 1575142, 1575143, + 1575144, 1575145, 1575146, 1575147, 1575148, 1575168, 1575169, + 1575170, 1575171, 1575172, 1575173, 1575174, 1575175, 1575176, + 1575201, 1575202, 1575203, 1575204, 1575205, 1575206, 1575207, + 1575208, 1575209, 1575210, 1575211, 1575212, 1575232, 1575233, + 1575234, 1575235, 1575236, 1575237, 1575238, 1575239, 1575265, + 1575266, 1575267, 1575268, 1575269, 1575270, 1575271, 1575272, + 1575273, 1575274, 1575275, 1575276, 1575296, 1575297, 1575298, + 1575299, 1575300, 1575301, 1575302, 1575329, 1575330, 1575331, + 1575332, 1575333, 1575334, 1575335, 1575336, 1575337, 1575338, + 1575339, 1575340, 1575360, 1575361, 1575362, 1575363, 1575364, + 1575365, 1575393, 1575394, 1575395, 1575396, 1575397, 1575398, + 1575399, 1575400, 1575401, 1575402, 1575403, 1575404, 1575424, + 1575425, 1575426, 1575427, 1575428, 1575457, 1575458, 1575459, + 1575460, 1575461, 1575462, 1575463, 1575464, 1575465, 1575466, + 1575467, 1575468, 1575488, 1575489, 1575490, 1575491, 1575521, + 1575522, 1575523, 1575524, 1575525, 1575526, 1575527, 1575528, + 1575529, 1575530, 1575531, 1575532, 1575552, 1575553, 1575585, + 1575586, 1575587, 1575588, 1575589, 1575590, 1575591, 1575592, + 1575593, 1575594, 1575595, 1575649, 1575650, 1575651, 1575652, + 1575653, 1575654, 1575655, 1575656, 1575657, 1575658, 1575715, + 1575716, 1575717, 1575718, 1575719, 1575720, 1575721, 1835010, + 1835011, 1835012, 1835013, 1835014, 1835015, 1835016, 1835017, + 1835018, 1835042, 1835043, 1835044, 1835045, 1835046, 1835047, + 1835048, 1835049, 1835050, 1835075, 1835076, 1835077, 1835078, + 1835079, 1835080, 1835081, 1835082, 1835083, 1835106, 1835107, + 1835108, 1835109, 1835110, 1835111, 1835112, 1835113, 1835114, + 1835136, 1835138, 1835139, 1835140, 1835141, 1835142, 1835143, + 1835144, 1835145, 1835146, 1835147, 1835148, 1835169, 1835170, + 1835171, 1835172, 1835173, 1835174, 1835175, 1835176, 1835177, + 1835178, 1835200, 1835201, 1835202, 1835203, 1835204, 1835205, + 1835206, 1835207, 1835208, 1835209, 1835210, 1835211, 1835212, + 1835233, 1835234, 1835235, 1835236, 1835237, 1835238, 1835239, + 1835240, 1835241, 1835264, 1835265, 1835266, 1835267, 1835268, + 1835269, 1835270, 1835271, 1835272, 1835273, 1835274, 1835275, + 1835276, 1835297, 1835298, 1835299, 1835300, 1835301, 1835302, + 1835303, 1835304, 1835328, 1835329, 1835330, 1835331, 1835332, + 1835333, 1835334, 1835335, 1835336, 1835337, 1835338, 1835339, + 1835340, 1835341, 1835361, 1835362, 1835363, 1835364, 1835365, + 1835366, 1835367, 1835368, 1835392, 1835393, 1835394, 1835395, + 1835396, 1835397, 1835398, 1835399, 1835400, 1835401, 1835402, + 1835403, 1835404, 1835425, 1835426, 1835427, 1835428, 1835429, + 1835430, 1835456, 1835457, 1835458, 1835459, 1835460, 1835461, + 1835462, 1835463, 1835464, 1835465, 1835466, 1835467, 1835468, + 1835489, 1835490, 1835491, 1835492, 1835493, 1835520, 1835521, + 1835522, 1835523, 1835524, 1835525, 1835526, 1835527, 1835528, + 1835529, 1835530, 1835531, 1835532, 1835533, 1835553, 1835554, + 1835555, 1835556, 1835557, 1835584, 1835585, 1835586, 1835587, + 1835588, 1835589, 1835590, 1835591, 1835592, 1835593, 1835594, + 1835595, 1835596, 1835617, 1835618, 1835619, 1835648, 1835649, + 1835650, 1835651, 1835652, 1835653, 1835654, 1835655, 1835656, + 1835657, 1835658, 1835659, 1835660, 1835681, 1835682, 1835713, + 1835714, 1835715, 1835716, 1835717, 1835718, 1835719, 1835720, + 1835721, 1835722, 1835778, 1835779, 1835780, 1835781, 1835782, + 1835783, 1835784, 1835785, 1835786, 1835845, 1835848, 1837122, + 1837123, 1837124, 1837125, 1837126, 1837127, 1837128, 1837129, + 1837130, 1837155, 1837156, 1837157, 1837158, 1837159, 1837160, + 1837161, 1837162, 1837163, 1837184, 1837185, 1837186, 1837187, + 1837188, 1837189, 1837190, 1837191, 1837192, 1837193, 1837194, + 1837218, 1837219, 1837220, 1837221, 1837222, 1837223, 1837224, + 1837225, 1837226, 1837227, 1837228, 1837248, 1837249, 1837250, + 1837251, 1837252, 1837253, 1837254, 1837255, 1837256, 1837257, + 1837281, 1837282, 1837283, 1837284, 1837285, 1837286, 1837287, + 1837288, 1837289, 1837290, 1837291, 1837292, 1837312, 1837313, + 1837314, 1837315, 1837316, 1837317, 1837318, 1837319, 1837320, + 1837345, 1837346, 1837347, 1837348, 1837349, 1837350, 1837351, + 1837352, 1837353, 1837354, 1837355, 1837356, 1837376, 1837377, + 1837378, 1837379, 1837380, 1837381, 1837382, 1837383, 1837384, + 1837409, 1837410, 1837411, 1837412, 1837413, 1837414, 1837415, + 1837416, 1837417, 1837418, 1837419, 1837420, 1837421, 1837440, + 1837441, 1837442, 1837443, 1837444, 1837445, 1837446, 1837473, + 1837474, 1837475, 1837476, 1837477, 1837478, 1837479, 1837480, + 1837481, 1837482, 1837483, 1837484, 1837504, 1837505, 1837506, + 1837507, 1837508, 1837509, 1837537, 1837538, 1837539, 1837540, + 1837541, 1837542, 1837543, 1837544, 1837545, 1837546, 1837547, + 1837548, 1837568, 1837569, 1837570, 1837571, 1837572, 1837573, + 1837601, 1837602, 1837603, 1837604, 1837605, 1837606, 1837607, + 1837608, 1837609, 1837610, 1837611, 1837612, 1837613, 1837632, + 1837633, 1837634, 1837635, 1837665, 1837666, 1837667, 1837668, + 1837669, 1837670, 1837671, 1837672, 1837673, 1837674, 1837675, + 1837676, 1837696, 1837697, 1837698, 1837729, 1837730, 1837731, + 1837732, 1837733, 1837734, 1837735, 1837736, 1837737, 1837738, + 1837739, 1837740, 1837793, 1837794, 1837795, 1837796, 1837797, + 1837798, 1837799, 1837800, 1837801, 1837802, 1837858, 1837859, + 1837860, 1837861, 1837862, 1837863, 1837864, 1837865, 1837866, + 1837925, 1837928 + + + 12210, 12000, 12000, 12001, 12002, 12002, 12002, 14112, + 75210, 75000, 75000, 75001, 75002, 75002, 75002, 71112, + 12000, 12000, 12000, 12001, 12002, 12002, 12002, 15112, + 65000, 65000, 65000, 62001, 62002, 62002, 62002, 64162, + 54210, 33210, 23000, 23000, 12000, 12001, 12002, 12002, + 12002, 12002, 54000, 65000, 65000, 62001, 62002, 62002, + 62002, 62002, 54000, 44000, 33000, 33000, 23000, 23000, + 20001, 12002, 12002, 12002, 12002, 11162, 54000, 54000, + 62001, 62002, 62002, 62002, 62002, 63162, 54000, 44000, + 44000, 33000, 33000, 23000, 20001, 20002, 20002, 12002, + 12002, 15112, 54000, 54001, 54002, 62002, 62002, 62002, + 62112, 54001, 44000, 44000, 33000, 33000, 33001, 20001, + 20002, 20002, 20002, 22002, 10112, 54001, 54002, 54002, + 54002, 64002, 61112, 54002, 41001, 41001, 41001, 33001, + 33001, 33002, 20002, 20002, 20002, 20002, 25112, 54002, + 54002, 54002, 54002, 52112, 54002, 41002, 41002, 41002, + 33002, 33002, 33002, 33002, 20002, 20002, 20002, 20112, + 54002, 54002, 54002, 51112, 54002, 41002, 41002, 41002, + 41002, 33002, 33002, 33002, 33002, 20002, 20002, 21162, + 54002, 54002, 53162, 50112, 41002, 41002, 41002, 41002, + 33002, 33002, 33002, 33002, 35112, 22162, 51112, 43162, + 41002, 41002, 41002, 43002, 33002, 33002, 33002, 30112, + 42162, 41112, 40112, 31112, 30112, 32162, 122000, 122000, + 122000, 125001, 125002, 125002, 125002, 121162, 75000, 75000, + 75000, 75001, 75002, 75002, 75002, 72112, 111210, 111000, + 122000, 122000, 125001, 125002, 125002, 125002, 125002, 90210, + 80000, 80000, 75000, 75001, 75002, 75002, 75002, 75002, + 111000, 111000, 111000, 125001, 125002, 125002, 125002, 125002, + 120162, 101000, 90000, 90000, 80000, 80000, 83001, 75002, + 75002, 75002, 75002, 74162, 111000, 111000, 111001, 111002, + 125002, 125002, 125002, 125112, 101000, 101000, 90000, 90000, + 80000, 83001, 83002, 83002, 75002, 75002, 72112, 111001, + 111001, 111002, 111002, 111002, 121002, 124112, 101000, 101000, + 90000, 90000, 90001, 83001, 83002, 83002, 83002, 85002, + 73112, 111002, 111002, 111002, 111002, 111002, 115112, 104001, + 104001, 104001, 90001, 90001, 90002, 83002, 83002, 83002, + 83002, 82112, 111002, 111002, 111002, 111002, 114112, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 83002, 83002, + 83002, 83112, 111002, 111002, 111002, 110162, 104002, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 83002, 83002, + 84162, 113112, 114112, 104002, 104002, 104002, 104002, 90002, + 90002, 90002, 90002, 92112, 85162, 100162, 104002, 104002, + 104002, 100002, 90002, 90002, 90002, 93112, 105162, 104112, + 103112, 94112, 93112, 95162, 12210, 12000, 12000, 12001, + 12002, 12002, 12002, 14112, 75210, 75000, 75000, 75001, + 75002, 75002, 75002, 71112, 12000, 12000, 12000, 12001, + 12002, 12002, 12002, 15112, 65000, 65000, 65000, 62001, + 62002, 62002, 62002, 63112, 54210, 33210, 23000, 23000, + 12000, 12001, 12002, 12002, 12002, 12002, 54000, 65000, + 65000, 62001, 62002, 62002, 62002, 62002, 54000, 44000, + 33000, 33000, 23000, 23000, 20001, 12002, 12002, 12002, + 12002, 15112, 54000, 54000, 62001, 62002, 62002, 62002, + 62002, 62112, 54000, 44000, 44000, 33000, 33000, 23000, + 20001, 20002, 20002, 12002, 12002, 14152, 54000, 54001, + 54002, 62002, 62002, 62002, 60152, 54001, 44000, 44000, + 33000, 33000, 33001, 20001, 20002, 20002, 20002, 22002, + 10112, 54001, 54002, 54002, 54002, 64002, 61112, 54002, + 41001, 41001, 41001, 33001, 33001, 33002, 20002, 20002, + 20002, 20002, 25112, 54002, 54002, 54002, 54002, 52112, + 54002, 41002, 41002, 41002, 33002, 33002, 33002, 33002, + 20002, 20002, 20002, 24152, 54002, 54002, 54002, 50152, + 54002, 41002, 41002, 41002, 41002, 33002, 33002, 33002, + 33002, 20002, 20002, 20112, 54002, 54002, 51112, 50112, + 41002, 41002, 41002, 41002, 33002, 33002, 33002, 33002, + 35112, 21112, 51112, 42112, 41002, 41002, 41002, 43002, + 33002, 33002, 33002, 35152, 41112, 45152, 40112, 31112, + 35152, 30112, 122000, 122000, 122000, 125001, 125002, 125002, + 125002, 120112, 75000, 75000, 75000, 75001, 75002, 75002, + 75002, 71152, 111210, 111000, 122000, 122000, 125001, 125002, + 125002, 125002, 125002, 90210, 80000, 80000, 75000, 75001, + 75002, 75002, 75002, 75002, 111000, 111000, 111000, 125001, + 125002, 125002, 125002, 125002, 125112, 101000, 90000, 90000, + 80000, 80000, 83001, 75002, 75002, 75002, 75002, 72112, + 111000, 111000, 111001, 111002, 125002, 125002, 125002, 123152, + 101000, 101000, 90000, 90000, 80000, 83001, 83002, 83002, + 75002, 75002, 71152, 111001, 111001, 111002, 111002, 111002, + 121002, 124112, 101000, 101000, 90000, 90000, 90001, 83001, + 83002, 83002, 83002, 85002, 73112, 111002, 111002, 111002, + 111002, 111002, 115112, 104001, 104001, 104001, 90001, 90001, + 90002, 83002, 83002, 83002, 83002, 82112, 111002, 111002, + 111002, 111002, 113152, 104002, 104002, 104002, 90002, 90002, + 90002, 90002, 83002, 83002, 83002, 81152, 111002, 111002, + 111002, 114112, 104002, 104002, 104002, 104002, 90002, 90002, + 90002, 90002, 83002, 83002, 83112, 113112, 113152, 104002, + 104002, 104002, 104002, 90002, 90002, 90002, 90002, 92112, + 84112, 105112, 104002, 104002, 104002, 100002, 90002, 90002, + 90002, 93112, 104112, 102152, 103112, 94112, 92152, 93112, + 12210, 12000, 12000, 12001, 12002, 12002, 12002, 14112, + 75210, 75000, 75000, 75001, 75002, 75002, 75002, 71112, + 12000, 12000, 12000, 12002, 12002, 12002, 12002, 12002, + 65000, 65000, 65000, 62002, 62002, 62002, 62002, 62002, + 54210, 33210, 23000, 23000, 12000, 12001, 12002, 12002, + 12002, 12002, 11162, 54000, 65000, 65000, 62001, 62002, + 62002, 62002, 62002, 63162, 54000, 44000, 33000, 33000, + 23000, 23000, 20001, 12002, 12002, 12002, 12002, 15112, + 54000, 54000, 62001, 62002, 62002, 62002, 62002, 62112, + 54000, 44000, 44000, 33000, 33000, 23000, 20001, 20002, + 20002, 12002, 12002, 14152, 54000, 54001, 54002, 62002, + 62002, 62002, 60152, 54001, 44000, 44000, 33000, 33000, + 33001, 20002, 20002, 20002, 20002, 22002, 15152, 54002, + 54002, 54002, 54002, 64002, 65152, 54002, 41002, 41001, + 41001, 33001, 33002, 33002, 20002, 20002, 20002, 20002, + 23152, 54002, 54002, 54002, 54002, 51152, 54002, 41002, + 41002, 41002, 33002, 33002, 33002, 33002, 20002, 20002, + 20002, 24152, 54002, 54002, 54002, 50152, 54002, 41002, + 41002, 41002, 41002, 33002, 33002, 33002, 33002, 20002, + 20002, 20112, 54002, 54002, 51112, 50112, 41002, 41002, + 41002, 41002, 33002, 33002, 33002, 33002, 35112, 20002, + 21162, 54002, 53162, 41002, 41002, 41002, 41002, 43002, + 33002, 33002, 33002, 33002, 42162, 41112, 45152, 44152, + 30152, 35152, 30112, 32162, 122000, 122000, 122000, 125002, + 125002, 125002, 125002, 125002, 75000, 75000, 75000, 75002, + 75002, 75002, 75002, 75002, 111210, 111000, 122000, 122000, + 125001, 125002, 125002, 125002, 125002, 120162, 90210, 80000, + 80000, 75000, 75001, 75002, 75002, 75002, 75002, 74162, + 111000, 111000, 111000, 125001, 125002, 125002, 125002, 125002, + 125112, 101000, 90000, 90000, 80000, 80000, 83001, 75002, + 75002, 75002, 75002, 72112, 111000, 111000, 111001, 111002, + 125002, 125002, 125002, 123152, 101000, 101000, 90000, 90000, + 80000, 83001, 83002, 83002, 75002, 75002, 71152, 111001, + 111002, 111002, 111002, 111002, 121002, 122152, 101000, 101000, + 90000, 90000, 90001, 83002, 83002, 83002, 83002, 85002, + 72152, 111002, 111002, 111002, 111002, 111002, 114152, 104002, + 104001, 104001, 90001, 90002, 90002, 83002, 83002, 83002, + 83002, 80152, 111002, 111002, 111002, 111002, 113152, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 83002, 83002, + 83002, 81152, 111002, 111002, 111002, 114112, 104002, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 83002, 83002, + 83112, 113112, 111002, 110162, 104002, 104002, 104002, 104002, + 90002, 90002, 90002, 90002, 92112, 83002, 84162, 104002, + 104002, 104002, 104002, 100002, 90002, 90002, 90002, 90002, + 105162, 104112, 102152, 101152, 93152, 92152, 93112, 95162, + 12210, 12000, 12000, 12001, 12002, 12002, 12002, 14112, + 75210, 75000, 75000, 75001, 75002, 75002, 75002, 71112, + 12000, 12000, 12000, 12002, 12002, 12002, 12002, 12002, + 65000, 65000, 65000, 62002, 62002, 62002, 62002, 62002, + 54210, 33210, 23000, 23000, 12000, 12001, 12002, 12002, + 12002, 12002, 15112, 54000, 65000, 65000, 62001, 62002, + 62002, 62002, 62002, 62112, 54000, 44000, 33000, 33000, + 23000, 23000, 20001, 12002, 12002, 12002, 12002, 14152, + 54000, 54000, 62001, 62002, 62002, 62002, 62002, 60152, + 54000, 44000, 44000, 33000, 33000, 23000, 20001, 20002, + 20002, 12002, 12002, 12002, 54000, 54001, 54002, 62002, + 62002, 62002, 62002, 54001, 44000, 44000, 33000, 33000, + 33001, 20002, 20002, 20002, 20002, 22002, 15152, 11162, + 54002, 54002, 54002, 54002, 64002, 65152, 63162, 54002, + 41002, 41001, 41001, 33001, 33002, 33002, 20002, 20002, + 20002, 20002, 23152, 54002, 54002, 54002, 54002, 51152, + 54002, 41002, 41002, 41002, 33002, 33002, 33002, 33002, + 20002, 20002, 20002, 20002, 21162, 54002, 54002, 54002, + 54002, 53162, 54002, 41002, 41002, 41002, 41002, 33002, + 33002, 33002, 33002, 20002, 20002, 24152, 54002, 54002, + 50152, 50112, 41002, 41002, 41002, 41002, 33002, 33002, + 33002, 33002, 35112, 20002, 20112, 54002, 51112, 41002, + 41002, 41002, 41002, 43002, 33002, 33002, 33002, 33002, + 41112, 45152, 41002, 44152, 30152, 33002, 35152, 30112, + 42162, 32162, 122000, 122000, 122000, 125002, 125002, 125002, + 125002, 125002, 75000, 75000, 75000, 75002, 75002, 75002, + 75002, 75002, 111210, 111000, 122000, 122000, 125001, 125002, + 125002, 125002, 125002, 125112, 90210, 80000, 80000, 75000, + 75001, 75002, 75002, 75002, 75002, 72112, 111000, 111000, + 111000, 125001, 125002, 125002, 125002, 125002, 123152, 101000, + 90000, 90000, 80000, 80000, 83001, 75002, 75002, 75002, + 75002, 71152, 111000, 111000, 111001, 111002, 125002, 125002, + 125002, 125002, 101000, 101000, 90000, 90000, 80000, 83001, + 83002, 83002, 75002, 75002, 75002, 111001, 111002, 111002, + 111002, 111002, 121002, 122152, 120162, 101000, 101000, 90000, + 90000, 90001, 83002, 83002, 83002, 83002, 85002, 72152, + 74162, 111002, 111002, 111002, 111002, 111002, 114152, 104002, + 104001, 104001, 90001, 90002, 90002, 83002, 83002, 83002, + 83002, 80152, 111002, 111002, 111002, 111002, 111002, 110162, + 104002, 104002, 104002, 90002, 90002, 90002, 90002, 83002, + 83002, 83002, 83002, 84162, 111002, 111002, 111002, 113152, + 104002, 104002, 104002, 104002, 90002, 90002, 90002, 90002, + 83002, 83002, 81152, 113112, 111002, 114112, 104002, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 92112, 83002, + 83112, 104002, 104002, 104002, 104002, 100002, 90002, 90002, + 90002, 90002, 104112, 102152, 104002, 101152, 93152, 90002, + 92152, 93112, 105162, 95162, 12210, 12000, 12000, 12001, + 12002, 12002, 12002, 14112, 75210, 75000, 75000, 75001, + 75002, 75002, 75002, 71112, 12000, 12000, 12000, 12002, + 12002, 12002, 12002, 12002, 65000, 65000, 65000, 62002, + 62002, 62002, 62002, 62002, 54210, 33210, 23000, 23000, + 12000, 12002, 12002, 12002, 12002, 12002, 15112, 54000, + 65000, 65000, 62002, 62002, 62002, 62002, 62002, 62112, + 54000, 44000, 33000, 33000, 23000, 23000, 20001, 12002, + 12002, 12002, 12002, 12002, 54000, 54000, 62001, 62002, + 62002, 62002, 62002, 62002, 54000, 44000, 44000, 33000, + 33000, 23000, 20002, 20002, 20002, 12002, 12002, 12002, + 11162, 54000, 54002, 54002, 62002, 62002, 62002, 62002, + 63162, 54001, 44000, 44000, 33000, 33000, 33001, 20002, + 20002, 20002, 20002, 22002, 15152, 14132, 54002, 54002, + 54002, 54002, 64002, 65152, 60132, 54002, 41002, 41002, + 41001, 33002, 33002, 33002, 20002, 20002, 20002, 20002, + 23152, 54002, 54002, 54002, 54002, 51152, 54002, 41002, + 41002, 41002, 33002, 33002, 33002, 33002, 20002, 20002, + 20002, 20002, 24132, 54002, 54002, 54002, 54002, 50132, + 54002, 41002, 41002, 41002, 41002, 33002, 33002, 33002, + 33002, 20002, 20002, 20002, 21162, 54002, 54002, 54002, + 53162, 50112, 41002, 41002, 41002, 41002, 33002, 33002, + 33002, 33002, 35112, 20002, 20112, 54002, 51112, 41002, + 41002, 41002, 41002, 43002, 33002, 33002, 33002, 33002, + 41112, 41002, 41002, 44152, 30152, 33002, 33002, 30112, + 42162, 45132, 35132, 32162, 122000, 122000, 122000, 125002, + 125002, 125002, 125002, 125002, 75000, 75000, 75000, 75002, + 75002, 75002, 75002, 75002, 111210, 111000, 122000, 122000, + 125002, 125002, 125002, 125002, 125002, 125112, 90210, 80000, + 80000, 75000, 75002, 75002, 75002, 75002, 75002, 72112, + 111000, 111000, 111000, 125001, 125002, 125002, 125002, 125002, + 125002, 101000, 90000, 90000, 80000, 80000, 83001, 75002, + 75002, 75002, 75002, 75002, 111000, 111000, 111002, 111002, + 125002, 125002, 125002, 125002, 120162, 101000, 101000, 90000, + 90000, 80000, 83002, 83002, 83002, 75002, 75002, 75002, + 74162, 111001, 111002, 111002, 111002, 111002, 121002, 122152, + 123132, 101000, 101000, 90000, 90000, 90001, 83002, 83002, + 83002, 83002, 85002, 72152, 71132, 111002, 111002, 111002, + 111002, 111002, 114152, 104002, 104002, 104001, 90002, 90002, + 90002, 83002, 83002, 83002, 83002, 80152, 111002, 111002, + 111002, 111002, 111002, 113132, 104002, 104002, 104002, 90002, + 90002, 90002, 90002, 83002, 83002, 83002, 83002, 81132, + 111002, 111002, 111002, 111002, 110162, 104002, 104002, 104002, + 104002, 90002, 90002, 90002, 90002, 83002, 83002, 83002, + 84162, 113112, 111002, 114112, 104002, 104002, 104002, 104002, + 90002, 90002, 90002, 90002, 92112, 83002, 83112, 104002, + 104002, 104002, 104002, 100002, 90002, 90002, 90002, 90002, + 104112, 104002, 104002, 101152, 93152, 90002, 90002, 93112, + 105162, 102132, 92132, 95162, 12210, 12000, 12000, 12001, + 12002, 12002, 12002, 12002, 14112, 75210, 75000, 75000, + 75001, 75002, 75002, 75002, 75002, 71112, 12000, 12000, + 12000, 12002, 12002, 12002, 12002, 12002, 15112, 65000, + 65000, 65000, 62002, 62002, 62002, 62002, 62002, 64162, + 54210, 33210, 23000, 23000, 12000, 12002, 12002, 12002, + 12002, 12002, 12002, 54000, 65000, 65000, 62002, 62002, + 62002, 62002, 62002, 62002, 54000, 44000, 33000, 33000, + 23000, 23000, 20002, 12002, 12002, 12002, 12002, 12002, + 15112, 54000, 54000, 62002, 62002, 62002, 62002, 62002, + 62002, 62112, 54000, 44000, 44000, 33000, 33000, 23000, + 20002, 20002, 20002, 12002, 12002, 12002, 14152, 54000, + 54002, 54002, 62002, 62002, 62002, 62002, 60152, 54001, + 44000, 44000, 33000, 33000, 33001, 20002, 20002, 20002, + 20002, 20002, 10002, 14152, 54002, 54002, 54002, 54002, + 62002, 62002, 60152, 54002, 41002, 41002, 41002, 33002, + 33002, 33002, 20002, 20002, 20002, 20002, 20002, 21162, + 54002, 54002, 54002, 54002, 52002, 63162, 54002, 41002, + 41002, 41002, 33002, 33002, 33002, 33002, 20002, 20002, + 20002, 20002, 24152, 54002, 54002, 54002, 54002, 50152, + 54002, 41002, 41002, 41002, 41002, 33002, 33002, 33002, + 33002, 20002, 20002, 20002, 24152, 54002, 54002, 54002, + 50152, 54002, 41002, 41002, 41002, 41002, 33002, 33002, + 33002, 33002, 33002, 20002, 20002, 20112, 54002, 54002, + 51112, 50112, 41002, 41002, 41002, 41002, 41002, 33002, + 33002, 33002, 33002, 35112, 22162, 51112, 43162, 41002, + 41002, 41002, 41002, 31002, 33002, 33002, 33002, 30112, + 41112, 45152, 45152, 42162, 35152, 35152, 30112, 122000, + 122000, 122000, 125002, 125002, 125002, 125002, 125002, 121162, + 75000, 75000, 75000, 75002, 75002, 75002, 75002, 75002, + 72112, 111210, 111000, 122000, 122000, 125002, 125002, 125002, + 125002, 125002, 125002, 90210, 80000, 80000, 75000, 75002, + 75002, 75002, 75002, 75002, 75002, 111000, 111000, 111000, + 125002, 125002, 125002, 125002, 125002, 125002, 125112, 101000, + 90000, 90000, 80000, 80000, 83002, 75002, 75002, 75002, + 75002, 75002, 72112, 111000, 111000, 111002, 111002, 125002, + 125002, 125002, 125002, 123152, 101000, 101000, 90000, 90000, + 80000, 83002, 83002, 83002, 75002, 75002, 75002, 71152, + 111001, 111002, 111002, 111002, 111002, 125002, 125002, 123152, + 101000, 101000, 90000, 90000, 90001, 83002, 83002, 83002, + 83002, 83002, 73002, 71152, 111002, 111002, 111002, 111002, + 111002, 115002, 120162, 104002, 104002, 104002, 90002, 90002, + 90002, 83002, 83002, 83002, 83002, 83002, 84162, 111002, + 111002, 111002, 111002, 111002, 113152, 104002, 104002, 104002, + 90002, 90002, 90002, 90002, 83002, 83002, 83002, 83002, + 81152, 111002, 111002, 111002, 111002, 113152, 104002, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 83002, 83002, + 83002, 81152, 111002, 111002, 111002, 114112, 104002, 104002, + 104002, 104002, 90002, 90002, 90002, 90002, 90002, 83002, + 83002, 83112, 113112, 114112, 104002, 104002, 104002, 104002, + 104002, 90002, 90002, 90002, 90002, 92112, 85162, 100162, + 104002, 104002, 104002, 104002, 94002, 90002, 90002, 90002, + 93112, 104112, 102152, 102152, 105162, 92152, 92152, 93112, + 12210, 12000, 12000, 12002, 12002, 12002, 12002, 12002, + 14112, 75210, 75000, 75000, 75002, 75002, 75002, 75002, + 75002, 71112, 12000, 12000, 12000, 12002, 12002, 12002, + 12002, 12002, 12002, 65000, 65000, 65000, 62002, 62002, + 62002, 62002, 62002, 62002, 54210, 33210, 23000, 23000, + 12000, 12002, 12002, 12002, 12002, 12002, 12002, 15112, + 54000, 65000, 65000, 62002, 62002, 62002, 62002, 62002, + 62002, 62112, 54000, 44000, 33000, 33000, 23000, 23000, + 20002, 20002, 12002, 12002, 12002, 12002, 12002, 54000, + 54000, 62002, 62002, 62002, 62002, 62002, 62002, 62002, + 54000, 44000, 44000, 33000, 33000, 23000, 20002, 20002, + 20002, 20002, 12002, 12002, 12002, 54000, 54002, 62002, + 62002, 62002, 62002, 62002, 62002, 54002, 44000, 44000, + 33000, 33000, 33002, 20002, 20002, 20002, 20002, 20002, + 10002, 10002, 14132, 54002, 54002, 54002, 62002, 62002, + 62002, 62002, 60132, 54002, 41002, 41002, 41002, 33002, + 33002, 33002, 20002, 20002, 20002, 20002, 20002, 14152, + 54002, 54002, 54002, 54002, 52002, 50152, 54002, 41002, + 41002, 41002, 41002, 33002, 33002, 33002, 20002, 20002, + 20002, 20002, 20002, 54002, 54002, 54002, 54002, 52002, + 54002, 41002, 41002, 41002, 41002, 33002, 33002, 33002, + 33002, 20002, 20002, 20002, 20002, 24132, 54002, 54002, + 54002, 54002, 50132, 54002, 41002, 41002, 41002, 41002, + 41002, 33002, 33002, 33002, 33002, 20002, 20002, 20002, + 54002, 54002, 54002, 50112, 41002, 41002, 41002, 41002, + 41002, 33002, 33002, 33002, 33002, 35112, 20002, 20112, + 54002, 51112, 41002, 41002, 41002, 41002, 41002, 31002, + 33002, 33002, 33002, 33002, 41112, 41002, 41002, 41002, + 35152, 31002, 33002, 33002, 30112, 45132, 35132, 122000, + 122000, 122000, 125002, 125002, 125002, 125002, 125002, 125002, + 75000, 75000, 75000, 75002, 75002, 75002, 75002, 75002, + 75002, 111210, 111000, 122000, 122000, 125002, 125002, 125002, + 125002, 125002, 125002, 125112, 90210, 80000, 80000, 75000, + 75002, 75002, 75002, 75002, 75002, 75002, 72112, 111000, + 111000, 111000, 125002, 125002, 125002, 125002, 125002, 125002, + 125002, 101000, 90000, 90000, 80000, 80000, 83002, 83002, + 75002, 75002, 75002, 75002, 75002, 111000, 111000, 111002, + 125002, 125002, 125002, 125002, 125002, 125002, 101000, 101000, + 90000, 90000, 80000, 83002, 83002, 83002, 83002, 75002, + 75002, 75002, 111002, 111002, 111002, 111002, 125002, 125002, + 125002, 125002, 123132, 101000, 101000, 90000, 90000, 90002, + 83002, 83002, 83002, 83002, 83002, 73002, 73002, 71132, + 111002, 111002, 111002, 111002, 111002, 115002, 113152, 104002, + 104002, 104002, 90002, 90002, 90002, 83002, 83002, 83002, + 83002, 83002, 71152, 111002, 111002, 111002, 111002, 111002, + 115002, 104002, 104002, 104002, 104002, 90002, 90002, 90002, + 83002, 83002, 83002, 83002, 83002, 111002, 111002, 111002, + 111002, 111002, 113132, 104002, 104002, 104002, 104002, 90002, + 90002, 90002, 90002, 83002, 83002, 83002, 83002, 81132, + 111002, 111002, 111002, 111002, 104002, 104002, 104002, 104002, + 104002, 90002, 90002, 90002, 90002, 83002, 83002, 83002, + 113112, 111002, 114112, 104002, 104002, 104002, 104002, 104002, + 90002, 90002, 90002, 90002, 92112, 83002, 83112, 104002, + 104002, 104002, 104002, 104002, 94002, 90002, 90002, 90002, + 90002, 104112, 104002, 104002, 104002, 92152, 94002, 90002, + 90002, 93112, 102132, 92132 + + + 0, 348, 696, 1056, 1428, 1812, 2232 + + + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, + 0*mm, 0*mm, 0*mm, 0*mm, 0*mm, 0*mm + + + + + diff --git a/Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml b/Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml index 435fa14ec5a04..ceec4966f4389 100644 --- a/Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml +++ b/Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml @@ -316,6 +316,49 @@ HGCalHESiliconCellSensitiveCorner09Fine, HGCalHESiliconCellSensitiveCorner10Fine, HGCalHESiliconCellSensitiveCorner11Fine, HGCalHESiliconCellSensitiveCorner12Fine + + + + + + + + + + + + + + HGCalHECellTrunc21Fine, HGCalHECellTrunc22Fine, + HGCalHECellTrunc23Fine, HGCalHECellTrunc24Fine, + HGCalHECellTrunc25Fine, HGCalHECellTrunc26Fine + + HGCalHESiliconCellSensitiveTrunc21Fine, HGCalHESiliconCellSensitiveTrunc22Fine, + HGCalHESiliconCellSensitiveTrunc23Fine, HGCalHESiliconCellSensitiveTrunc24Fine, + HGCalHESiliconCellSensitiveTrunc25Fine, HGCalHESiliconCellSensitiveTrunc26Fine + + HGCalHECellExten21Fine, HGCalHECellExten22Fine, + HGCalHECellExten23Fine, HGCalHECellExten24Fine, + HGCalHECellExten25Fine, HGCalHECellExten26Fine + + HGCalHESiliconCellSensitiveExten21Fine, HGCalHESiliconCellSensitiveExten22Fine, + HGCalHESiliconCellSensitiveExten23Fine, HGCalHESiliconCellSensitiveExten24Fine, + HGCalHESiliconCellSensitiveExten25Fine, HGCalHESiliconCellSensitiveExten26Fine + + HGCalHECellCorner21Fine, HGCalHECellCorner22Fine, + HGCalHECellCorner23Fine, HGCalHECellCorner24Fine, + HGCalHECellCorner25Fine, HGCalHECellCorner26Fine, + HGCalHECellCorner27Fine, HGCalHECellCorner28Fine, + HGCalHECellCorner29Fine, HGCalHECellCorner30Fine, + HGCalHECellCorner31Fine, HGCalHECellCorner32Fine + + HGCalHESiliconCellSensitiveCorner21Fine, HGCalHESiliconCellSensitiveCorner22Fine, + HGCalHESiliconCellSensitiveCorner23Fine, HGCalHESiliconCellSensitiveCorner24Fine, + HGCalHESiliconCellSensitiveCorner25Fine, HGCalHESiliconCellSensitiveCorner26Fine, + HGCalHESiliconCellSensitiveCorner27Fine, HGCalHESiliconCellSensitiveCorner28Fine, + HGCalHESiliconCellSensitiveCorner29Fine, HGCalHESiliconCellSensitiveCorner30Fine, + HGCalHESiliconCellSensitiveCorner31Fine, HGCalHESiliconCellSensitiveCorner32Fine + @@ -359,6 +402,49 @@ HGCalHESiliconCellSensitiveCorner09Coarse1, HGCalHESiliconCellSensitiveCorner10Coarse1, HGCalHESiliconCellSensitiveCorner11Coarse1, HGCalHESiliconCellSensitiveCorner12Coarse1 + + + + + + + + + + + + + + HGCalHECellTrunc21Coarse1, HGCalHECellTrunc22Coarse1, + HGCalHECellTrunc23Coarse1, HGCalHECellTrunc24Coarse1, + HGCalHECellTrunc25Coarse1, HGCalHECellTrunc26Coarse1 + + HGCalHESiliconCellSensitiveTrunc21Coarse1, HGCalHESiliconCellSensitiveTrunc22Coarse1, + HGCalHESiliconCellSensitiveTrunc23Coarse1, HGCalHESiliconCellSensitiveTrunc24Coarse1, + HGCalHESiliconCellSensitiveTrunc25Coarse1, HGCalHESiliconCellSensitiveTrunc26Coarse1 + + HGCalHECellExten21Coarse1, HGCalHECellExten22Coarse1, + HGCalHECellExten23Coarse1, HGCalHECellExten24Coarse1, + HGCalHECellExten25Coarse1, HGCalHECellExten26Coarse1 + + HGCalHECellSiliconSensitiveExten21Coarse1, HGCalHESiliconCellSensitiveExten22Coarse1, + HGCalHECellSiliconSensitiveExten23Coarse1, HGCalHESiliconCellSensitiveExten24Coarse1, + HGCalHECellSiliconSensitiveExten25Coarse1, HGCalHESiliconCellSensitiveExten26Coarse1 + + HGCalHECellCorner21Coarse1, HGCalHECellCorner22Coarse1, + HGCalHECellCorner23Coarse1, HGCalHECellCorner24Coarse1, + HGCalHECellCorner25Coarse1, HGCalHECellCorner26Coarse1, + HGCalHECellCorner27Coarse1, HGCalHECellCorner28Coarse1, + HGCalHECellCorner29Coarse1, HGCalHECellCorner30Coarse1, + HGCalHECellCorner31Coarse1, HGCalHECellCorner32Coarse1 + + HGCalHESiliconCellSensitiveCorner21Coarse1, HGCalHESiliconCellSensitiveCorner22Coarse1, + HGCalHESiliconCellSensitiveCorner23Coarse1, HGCalHESiliconCellSensitiveCorner24Coarse1, + HGCalHESiliconCellSensitiveCorner25Coarse1, HGCalHESiliconCellSensitiveCorner26Coarse1, + HGCalHESiliconCellSensitiveCorner27Coarse1, HGCalHESiliconCellSensitiveCorner28Coarse1, + HGCalHESiliconCellSensitiveCorner29Coarse1, HGCalHESiliconCellSensitiveCorner30Coarse1, + HGCalHESiliconCellSensitiveCorner31Coarse1, HGCalHESiliconCellSensitiveCorner32Coarse1 + @@ -402,6 +488,49 @@ HGCalHESiliconCellSensitiveCorner09Coarse2, HGCalHESiliconCellSensitiveCorner10Coarse2, HGCalHESiliconCellSensitiveCorner11Coarse2, HGCalHESiliconCellSensitiveCorner12Coarse2 + + + + + + + + + + + + + + HGCalHECellTrunc21Coarse2, HGCalHECellTrunc22Coarse2, + HGCalHECellTrunc23Coarse2, HGCalHECellTrunc24Coarse2, + HGCalHECellTrunc25Coarse2, HGCalHECellTrunc26Coarse2 + + HGCalHESiliconCellSensitiveTrunc21Coarse2, HGCalHESiliconCellSensitiveTrunc22Coarse2, + HGCalHESiliconCellSensitiveTrunc23Coarse2, HGCalHESiliconCellSensitiveTrunc24Coarse2, + HGCalHESiliconCellSensitiveTrunc25Coarse2, HGCalHESiliconCellSensitiveTrunc26Coarse2 + + HGCalHECellExten21Coarse2, HGCalHECellExten22Coarse2, + HGCalHECellExten23Coarse2, HGCalHECellExten24Coarse2, + HGCalHECellExten25Coarse2, HGCalHECellExten26Coarse2 + + HGCalHESiliconCellSensitiveExten21Coarse2, HGCalHESiliconCellSensitiveExten22Coarse2, + HGCalHESiliconCellSensitiveExten23Coarse2, HGCalHESiliconCellSensitiveExten24Coarse2, + HGCalHESiliconCellSensitiveExten25Coarse2, HGCalHESiliconCellSensitiveExten26Coarse2 + + HGCalHECellCorner21Coarse2, HGCalHECellCorner22Coarse2, + HGCalHECellCorner23Coarse2, HGCalHECellCorner24Coarse2, + HGCalHECellCorner25Coarse2, HGCalHECellCorner26Coarse2, + HGCalHECellCorner27Coarse2, HGCalHECellCorner28Coarse2, + HGCalHECellCorner29Coarse2, HGCalHECellCorner30Coarse2, + HGCalHECellCorner31Coarse2, HGCalHECellCorner32Coarse2 + + HGCalHESiliconCellSensitiveCorner21Coarse2, HGCalHESiliconCellSensitiveCorner22Coarse2, + HGCalHESiliconCellSensitiveCorner23Coarse2, HGCalHESiliconCellSensitiveCorner24Coarse2, + HGCalHESiliconCellSensitiveCorner25Coarse2, HGCalHESiliconCellSensitiveCorner26Coarse2, + HGCalHESiliconCellSensitiveCorner27Coarse2, HGCalHESiliconCellSensitiveCorner28Coarse2, + HGCalHESiliconCellSensitiveCorner29Coarse2, HGCalHESiliconCellSensitiveCorner30Coarse2, + HGCalHESiliconCellSensitiveCorner31Coarse2, HGCalHESiliconCellSensitiveCorner32Coarse2 + diff --git a/Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml b/Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml index 4d59487fcdb0e..4b5e49a0822c4 100644 --- a/Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml +++ b/Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml @@ -26,12 +26,12 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 - 00, 01, 02, 03, 04, 05 + 06, 07, 08, 09, 10, 11 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -75,12 +75,12 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 - 06, 07, 08, 09, 10, 11 + 00, 01, 02, 03, 04, 05 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -124,12 +124,12 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 - 00, 01, 02, 03, 04, 05 + 06, 07, 08, 09, 10, 11 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -173,12 +173,12 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 - 06, 07, 08, 09, 10, 11 + 00, 01, 02, 03, 04, 05 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -222,12 +222,12 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 - 00, 01, 02, 03, 04, 05 + 06, 07, 08, 09, 10, 11 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -271,12 +271,12 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 - 06, 07, 08, 09, 10, 11 + 00, 01, 02, 03, 04, 05 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -320,12 +320,12 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 - 00, 01, 02, 03, 04, 05 + 06, 07, 08, 09, 10, 11 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -369,12 +369,12 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 - 06, 07, 08, 09, 10, 11 + 00, 01, 02, 03, 04, 05 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -418,12 +418,12 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 - 00, 01, 02, 03, 04, 05 + 06, 07, 08, 09, 10, 11 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -467,12 +467,12 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 - 06, 07, 08, 09, 10, 11 + 00, 01, 02, 03, 04, 05 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -516,12 +516,12 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 - 00, 01, 02, 03, 04, 05 + 06, 07, 08, 09, 10, 11 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -565,12 +565,12 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 - 06, 07, 08, 09, 10, 11 + 00, 01, 02, 03, 04, 05 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -637,7 +637,7 @@ 0, 0, 0, 0, 0, 0, 0, 1, 0 - 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 + 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 @@ -672,8 +672,8 @@ [WaferThickness], 1.40*mm 0, 0, 0, 0, 0, 0, 0, 1, 0 - - 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 + + 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 @@ -709,7 +709,7 @@ 0, 0, 0, 0, 0, 0, 0, 1, 0 - 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 + 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 @@ -745,7 +745,7 @@ 0, 0, 0, 0, 0, 0, 0, 1, 0 - 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 + 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 @@ -781,7 +781,7 @@ 0, 0, 0, 0, 0, 0, 0, 1, 0 - 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 + 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 @@ -817,7 +817,7 @@ 0, 0, 0, 0, 0, 0, 0, 1, 0 - 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 + 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 @@ -853,7 +853,7 @@ 0, 0, 0, 0, 0, 0, 1, 0 - 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 + 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 @@ -871,8 +871,8 @@ 21, 22, 23, 24, 25 - 1, 1, 1, 1, 1, 1 - + 6, 7, 8, 9, 10, 11 + 06, 07, 08, 09, 10, 11 HGCalHEAirGap, HGCalHEMotherBoard, @@ -889,7 +889,7 @@ 0, 0, 0, 0, 0, 0, 1, 0 - 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 + 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 @@ -925,7 +925,7 @@ 0, 0, 0, 0, 0, 0, 1, 0 - 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 + 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 @@ -943,9 +943,9 @@ 11, 12, 13, 14, 15, 16 - 1, 1, 1, 1, 1, 1 - - 06, 07, 08, 09, 10, 11 + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -961,7 +961,7 @@ 0, 0, 0, 0, 0, 0, 1, 0 - 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 + 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 @@ -997,7 +997,7 @@ 0, 0, 0, 0, 0, 0, 1, 0 - 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 + 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 @@ -1015,9 +1015,9 @@ 11, 12, 13, 14, 15, 16 - 1, 1, 1, 1, 1, 1 - - 06, 07, 08, 09, 10, 11 + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 HGCalHEAirGap, HGCalHEMotherBoard, HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, @@ -1033,7 +1033,7 @@ 0, 0, 0, 0, 0, 0, 1, 0 - 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 + 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 diff --git a/Geometry/HGCalCommonData/data/hgcalwafer/v17f/hgcalwafer.xml b/Geometry/HGCalCommonData/data/hgcalwafer/v17f/hgcalwafer.xml index 2bc793385c46a..5ce9a2ca8962f 100644 --- a/Geometry/HGCalCommonData/data/hgcalwafer/v17f/hgcalwafer.xml +++ b/Geometry/HGCalCommonData/data/hgcalwafer/v17f/hgcalwafer.xml @@ -26,7 +26,7 @@ - + 0, 1, 2, 3, 4, 5 0, 0, 0, 0, 0, 0 @@ -75,7 +75,7 @@ - + 0, 1, 2, 3, 4, 5 1, 1, 1, 1, 1, 1 diff --git a/Geometry/HGCalCommonData/data/hgcalwafer/v17p/hgcalwafer.xml b/Geometry/HGCalCommonData/data/hgcalwafer/v17p/hgcalwafer.xml index d1714738a8fed..86e340b6f926b 100644 --- a/Geometry/HGCalCommonData/data/hgcalwafer/v17p/hgcalwafer.xml +++ b/Geometry/HGCalCommonData/data/hgcalwafer/v17p/hgcalwafer.xml @@ -18,7 +18,7 @@ - + @@ -30,10 +30,10 @@ HD1, HD2, HD3, HD4, HD5 21, 22, 23, 24, 25 - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 - - 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11 + + 0, 1, 2, 3, 4, 5 + + 00, 01, 02, 03, 04, 05 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -49,6 +49,42 @@ 0, 0, 0, 0, 0, 0, 0, 1, 0 + 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 + + + + + + + + + + + + + + HD1, HD2, HD3, HD4, HD5 + + 21, 22, 23, 24, 25 + + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 + + HGCalEEAirGap, HGCalEEMotherBoard, + HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, + HGCalEEEpoxyT, HGCalEEKapton, HGCalEESensitive, + HGCalEEBasePlate + + materials:Air, hgcalMaterial:HGC_G10-FR4, hgcalMaterial:HGC_EEConnector, + hgcalMaterial:HGC_G10-FR4, materials:Epoxy, materials:Epoxy, + materials:Kapton, materials:Silicon, hgcalMaterial:WCu + + 0.225*mm, 1.60*mm, 3.73*mm, 1.60*mm, 0.075*mm, 0.065*mm, 0.265*mm, + [WaferThickness], 1.40*mm + + 0, 0, 0, 0, 0, 0, 0, 1, 0 + 0, 1, 2, 3, 4, 7, 5, 6, 5, 8 @@ -66,10 +102,46 @@ LD1, LD2, LD3, LD4, LD5, LD6 11, 12, 13, 14, 15, 16 - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 - - 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11 + + 0, 1, 2, 3, 4, 5 + + 00, 01, 02, 03, 04, 05 + + HGCalEEAirGap, HGCalEEMotherBoard, + HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, + HGCalEEEpoxyT, HGCalEEKapton, HGCalEESensitive, + HGCalEEBasePlate + + materials:Air, hgcalMaterial:HGC_G10-FR4, hgcalMaterial:HGC_EEConnector, + hgcalMaterial:HGC_G10-FR4, materials:Epoxy, materials:Epoxy, + materials:Kapton, materials:Silicon, hgcalMaterial:WCu + + 0.225*mm, 1.60*mm, 3.73*mm, 1.60*mm, 0.075*mm, 0.065*mm, 0.265*mm, + [WaferThickness], 1.40*mm + + 0, 0, 0, 0, 0, 0, 0, 1, 0 + + 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 + + + + + + + + + + + + + + LD1, LD2, LD3, LD4, LD5, LD6 + + 11, 12, 13, 14, 15, 16 + + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -102,10 +174,46 @@ LD1, LD2, LD3, LD4, LD5, LD6 11, 12, 13, 14, 15, 16 - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 - - 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11 + + 0, 1, 2, 3, 4, 5 + + 00, 01, 02, 03, 04, 05 + + HGCalEEAirGap, HGCalEEMotherBoard, + HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, + HGCalEEEpoxyT, HGCalEEKapton, HGCalEESensitive, + HGCalEEBasePlate + + materials:Air, hgcalMaterial:HGC_G10-FR4, hgcalMaterial:HGC_EEConnector, + hgcalMaterial:HGC_G10-FR4, materials:Epoxy, materials:Epoxy, + materials:Kapton, materials:Silicon, hgcalMaterial:WCu + + 0.225*mm, 1.60*mm, 3.73*mm, 1.60*mm, 0.075*mm, 0.065*mm, 0.265*mm, + [WaferThickness], 1.40*mm + + 0, 0, 0, 0, 0, 0, 0, 1, 0 + + 8, 5, 6, 5, 7, 4, 3, 2, 1, 0 + + + + + + + + + + + + + + LD1, LD2, LD3, LD4, LD5, LD6 + + 11, 12, 13, 14, 15, 16 + + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 HGCalEEAirGap, HGCalEEMotherBoard, HGCalEEConnector, HGCalEEPCB, HGCalEEEpoxy, @@ -156,6 +264,42 @@ [WaferThickness], 1.0*mm 0, 0, 0, 0, 0, 0, 1, 0 + + 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 + + + + + + + + + + + + + + HD1, HD2, HD3, HD4, HD5 + + 21, 22, 23, 24, 25 + + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 + + HGCalHEAirGap, HGCalHEMotherBoard, + HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, + HGCalHEKapton, HGCalHESiliconSensitive, + HGCalHEBasePlate + + materials:Air, hgcalMaterial:HGC_G10-FR4, hgcalMaterial:HGC_HEConnector, + hgcalMaterial:HGC_G10-FR4, materials:Epoxy, materials:Kapton, + materials:Silicon, hgcalMaterial:HGC_G10-FR4 + + 0.40*mm, 1.60*mm, 3.475*mm, 1.60*mm, 0.075*mm, 0.10*mm, + [WaferThickness], 1.0*mm + + 0, 0, 0, 0, 0, 0, 1, 0 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 @@ -192,6 +336,42 @@ [WaferThickness], 1.0*mm 0, 0, 0, 0, 0, 0, 1, 0 + + 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 + + + + + + + + + + + + + + LD1, LD2, LD3, LD4, LD5, LD6 + + 11, 12, 13, 14, 15, 16 + + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 + + HGCalHEAirGap, HGCalHEMotherBoard, + HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, + HGCalHEKapton, HGCalHESiliconSensitive, + HGCalHEBasePlate + + materials:Air, hgcalMaterial:HGC_G10-FR4, hgcalMaterial:HGC_HEConnector, + hgcalMaterial:HGC_G10-FR4, materials:Epoxy, materials:Kapton, + materials:Silicon, hgcalMaterial:HGC_G10-FR4 + + 0.40*mm, 1.60*mm, 3.475*mm, 1.60*mm, 0.075*mm, 0.10*mm, + [WaferThickness], 1.0*mm + + 0, 0, 0, 0, 0, 0, 1, 0 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 @@ -228,6 +408,42 @@ [WaferThickness], 1.0*mm 0, 0, 0, 0, 0, 0, 1, 0 + + 7, 4, 5, 4, 6, 4, 3, 2, 1, 0 + + + + + + + + + + + + + + LD1, LD2, LD3, LD4, LD5, LD6 + + 11, 12, 13, 14, 15, 16 + + 6, 7, 8, 9, 10, 11 + + 06, 07, 08, 09, 10, 11 + + HGCalHEAirGap, HGCalHEMotherBoard, + HGCalHEConnector, HGCalHEPCB, HGCalHEEpoxy, + HGCalHEKapton, HGCalHESiliconSensitive, + HGCalHEBasePlate + + materials:Air, hgcalMaterial:HGC_G10-FR4, hgcalMaterial:HGC_HEConnector, + hgcalMaterial:HGC_G10-FR4, materials:Epoxy, materials:Kapton, + materials:Silicon, hgcalMaterial:HGC_G10-FR4 + + 0.40*mm, 1.60*mm, 3.475*mm, 1.60*mm, 0.075*mm, 0.10*mm, + [WaferThickness], 1.0*mm + + 0, 0, 0, 0, 0, 0, 1, 0 0, 1, 2, 3, 4, 6, 4, 5, 4, 7 diff --git a/Geometry/HGCalCommonData/plugins/DDHGCalSiliconRotatedModule.cc b/Geometry/HGCalCommonData/plugins/DDHGCalSiliconRotatedModule.cc index 24d57280fce60..9fe8026193d92 100644 --- a/Geometry/HGCalCommonData/plugins/DDHGCalSiliconRotatedModule.cc +++ b/Geometry/HGCalCommonData/plugins/DDHGCalSiliconRotatedModule.cc @@ -60,6 +60,7 @@ class DDHGCalSiliconRotatedModule : public DDAlgorithm { int waferTypes_; // Number of wafer types int facingTypes_; // Types of facings of modules toward IP int orientationTypes_; // Number of wafer orienations + int placeOffset_; // Offset for placement int firstLayer_; // Copy # of the first sensitive layer int absorbMode_; // Absorber mode int sensitiveMode_; // Sensitive mode @@ -109,9 +110,10 @@ void DDHGCalSiliconRotatedModule::initialize(const DDNumericArguments& nArgs, waferTypes_ = static_cast(nArgs["WaferTypes"]); facingTypes_ = static_cast(nArgs["FacingTypes"]); orientationTypes_ = static_cast(nArgs["OrientationTypes"]); + placeOffset_ = static_cast(nArgs["PlaceOffset"]); #ifdef EDM_ML_DEBUG edm::LogVerbatim("HGCalGeom") << "Number of types of wafers: " << waferTypes_ << " facings: " << facingTypes_ - << " Orientations: " << orientationTypes_; + << " Orientations: " << orientationTypes_ << " PlaceOffset: " << placeOffset_; #endif firstLayer_ = static_cast(nArgs["FirstLayer"]); absorbMode_ = static_cast(nArgs["AbsorberMode"]); @@ -426,12 +428,12 @@ void DDHGCalSiliconRotatedModule::positionSensitive(const DDLogicalPart& glog, i std::string wafer; int i(999); if (part == HGCalTypes::WaferFull) { - i = type * facingTypes_ * orientationTypes_ + place; + i = type * facingTypes_ * orientationTypes_ + place - placeOffset_; wafer = waferFull_[i]; } else { int partoffset = (part >= HGCalTypes::WaferHDTop) ? HGCalTypes::WaferPartHDOffset : HGCalTypes::WaferPartLDOffset; i = (part - partoffset) * facingTypes_ * orientationTypes_ + - HGCalTypes::WaferTypeOffset[type] * facingTypes_ * orientationTypes_ + place; + HGCalTypes::WaferTypeOffset[type] * facingTypes_ * orientationTypes_ + place - placeOffset_; #ifdef EDM_ML_DEBUG edm::LogVerbatim("HGCalGeom") << " layertype:type:part:orien:cassette:place:offsets:ind " << layertype << ":" << type << ":" << part << ":" << orien << ":" << cassette << ":" << place << ":" diff --git a/Geometry/HGCalCommonData/plugins/DDHGCalWaferFullRotated.cc b/Geometry/HGCalCommonData/plugins/DDHGCalWaferFullRotated.cc index 5017f602db904..6cdb3bd312639 100644 --- a/Geometry/HGCalCommonData/plugins/DDHGCalWaferFullRotated.cc +++ b/Geometry/HGCalCommonData/plugins/DDHGCalWaferFullRotated.cc @@ -81,7 +81,7 @@ void DDHGCalWaferFullRotated::initialize(const DDNumericArguments& nArgs, << " T " << thick_ << " Wafer 2r " << waferSize_ << " Half Separation " << waferSepar_ << " T " << waferThick_; #endif - orient_ = dbl_to_int(vArgs["WaferOrinet"]); + orient_ = dbl_to_int(vArgs["WaferOrient"]); face_ = dbl_to_int(vArgs["WaferFace"]); tag_ = vsArgs["WaferPlacementIndex"]; layerNames_ = vsArgs["LayerNames"]; diff --git a/Geometry/HGCalCommonData/plugins/DDHGCalWaferPartialRotated.cc b/Geometry/HGCalCommonData/plugins/DDHGCalWaferPartialRotated.cc index 94aae1d14ce11..48ace76a71c8a 100644 --- a/Geometry/HGCalCommonData/plugins/DDHGCalWaferPartialRotated.cc +++ b/Geometry/HGCalCommonData/plugins/DDHGCalWaferPartialRotated.cc @@ -85,7 +85,7 @@ void DDHGCalWaferPartialRotated::initialize(const DDNumericArguments& nArgs, for (unsigned int k = 0; k < tags_.size(); ++k) { for (unsigned int m = 0; m < placementIndex_.size(); ++m) { edm::LogVerbatim("HGCalGeom") << "Type[" << k << "] " << tags_[k] << " Partial " << partialTypes_[k] - << " Plecement Index " << placementIndex_[m]; + << " Placement Index " << placementIndex_[m] << " Tag " << placementIndexTags_[m]; } } #endif @@ -211,7 +211,7 @@ void DDHGCalWaferPartialRotated::execute(DDCompactView& cpv) { edm::LogVerbatim("HGCalGeom") << "[" << j << "] " << xL[j] << ":" << yL[j]; #endif auto posSense = HGCalCell::cellOrient(placementIndex_[m]); - double zpos = (posSense.second < 0) ? -0.5 * (waferThick_ - senseT_) : 0.5 * (waferThick_ - senseT_); + double zpos = (posSense.second > 0) ? -0.5 * (waferThick_ - senseT_) : 0.5 * (waferThick_ - senseT_); DDTranslation tran(0, 0, zpos); int copy = 10 + senseType_; cpv.position(glog, glogs[i], copy, tran, rot); diff --git a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalSiliconRotatedModule.cc b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalSiliconRotatedModule.cc new file mode 100644 index 0000000000000..4ce3b0d3d9e0e --- /dev/null +++ b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalSiliconRotatedModule.cc @@ -0,0 +1,462 @@ +/////////////////////////////////////////////////////////////////////////////// +// File: DDHGCalSiliconRotatedModule.cc +// Description: Geometry factory class for HGCal (EE and HESil) using +// information from the file for dd4hep +/////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include + +#include "Geometry/HGCalCommonData/interface/HGCalCell.h" +#include "Geometry/HGCalCommonData/interface/HGCalCassette.h" +#include "Geometry/HGCalCommonData/interface/HGCalGeomTools.h" +#include "Geometry/HGCalCommonData/interface/HGCalParameters.h" +#include "Geometry/HGCalCommonData/interface/HGCalProperty.h" +#include "Geometry/HGCalCommonData/interface/HGCalTypes.h" +#include "Geometry/HGCalCommonData/interface/HGCalWaferIndex.h" +#include "Geometry/HGCalCommonData/interface/HGCalWaferType.h" +#include "DD4hep/DetFactoryHelper.h" +#include "DataFormats/Math/interface/angle_units.h" +#include "DetectorDescription/DDCMS/interface/DDPlugins.h" +#include "DetectorDescription/DDCMS/interface/DDutils.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +//#define EDM_ML_DEBUG +using namespace angle_units::operators; + +struct HGCalSiliconRotatedModule { + HGCalSiliconRotatedModule() { + throw cms::Exception("HGCalGeom") << "Wrong initialization to HGCalSiliconRotatedModule"; + } + HGCalSiliconRotatedModule(cms::DDParsingContext& ctxt, xml_h e) { + cms::DDNamespace ns(ctxt, e, true); + cms::DDAlgoArguments args(ctxt, e); + +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: Creating an instance"; +#endif + static constexpr double tol1 = 0.01 * dd4hep::mm; + static constexpr double tol2 = 0.00001 * dd4hep::mm; + + dd4hep::Volume mother = ns.volume(args.parentName()); + waferTypes_ = args.value("WaferTypes"); + facingTypes_ = args.value("FacingTypes"); + orientationTypes_ = args.value("OrientationTypes"); + placeOffset_ = args.value("PlaceOffset"); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "Number of types of wafers: " << waferTypes_ << " facings: " << facingTypes_ + << " Orientations: " << orientationTypes_ << " PlaceOffset: " << placeOffset_; +#endif + firstLayer_ = args.value("FirstLayer"); + absorbMode_ = args.value("AbsorberMode"); + sensitiveMode_ = args.value("SensitiveMode"); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "First Layer " << firstLayer_ << " and " + << "Absober:Sensitive mode " << absorbMode_ << ":" << sensitiveMode_; +#endif + zMinBlock_ = args.value("zMinBlock"); + waferSize_ = args.value("waferSize"); + waferSepar_ = args.value("SensorSeparation"); + sectors_ = args.value("Sectors"); + cassettes_ = args.value("Cassettes"); + alpha_ = (1._pi) / sectors_; + cosAlpha_ = cos(alpha_); + rotstr_ = args.value("LayerRotation"); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "zStart " << cms::convert2mm(zMinBlock_) << " wafer width " + << cms::convert2mm(waferSize_) << " separations " << cms::convert2mm(waferSepar_) + << " sectors " << sectors_ << ":" << convertRadToDeg(alpha_) << ":" << cosAlpha_ + << " rotation matrix " << rotstr_ << cassettes_ << " cassettes"; +#endif + waferFull_ = args.value>("WaferNamesFull"); + waferPart_ = args.value>("WaferNamesPartial"); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << waferFull_.size() << " full and " + << waferPart_.size() << " partial modules\nDDHGCalSiliconRotatedModule:Full Modules:"; + unsigned int i1max = static_cast(waferFull_.size()); + for (unsigned int i1 = 0; i1 < i1max; i1 += 2) { + std::ostringstream st1; + unsigned int i2 = std::min((i1 + 2), i1max); + for (unsigned int i = i1; i < i2; ++i) + st1 << " [" << i << "] " << waferFull_[i]; + edm::LogVerbatim("HGCalGeom") << st1.str(); + } + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: Partial Modules:"; + i1max = static_cast(waferPart_.size()); + for (unsigned int i1 = 0; i1 < i1max; i1 += 2) { + std::ostringstream st1; + unsigned int i2 = std::min((i1 + 2), i1max); + for (unsigned int i = i1; i < i2; ++i) + st1 << " [" << i << "] " << waferPart_[i]; + edm::LogVerbatim("HGCalGeom") << st1.str(); + } +#endif + materials_ = args.value>("MaterialNames"); + names_ = args.value>("VolumeNames"); + thick_ = args.value>("Thickness"); + copyNumber_.resize(materials_.size(), 1); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << materials_.size() << " types of volumes"; + for (unsigned int i = 0; i < names_.size(); ++i) + edm::LogVerbatim("HGCalGeom") << "Volume [" << i << "] " << names_[i] << " of thickness " + << cms::convert2mm(thick_[i]) << " filled with " << materials_[i] + << " first copy number " << copyNumber_[i]; +#endif + layers_ = args.value>("Layers"); + layerThick_ = args.value>("LayerThick"); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "There are " << layers_.size() << " blocks"; + for (unsigned int i = 0; i < layers_.size(); ++i) + edm::LogVerbatim("HGCalGeom") << "Block [" << i << "] of thickness " << cms::convert2mm(layerThick_[i]) + << " with " << layers_[i] << " layers"; +#endif + layerType_ = args.value>("LayerType"); + layerSense_ = args.value>("LayerSense"); + layerTypes_ = args.value>("LayerTypes"); +#ifdef EDM_ML_DEBUG + for (unsigned int i = 0; i < layerTypes_.size(); ++i) + edm::LogVerbatim("HGCalGeom") << "LayerTypes [" << i << "] " << layerTypes_[i]; +#endif + if (firstLayer_ > 0) { + for (unsigned int i = 0; i < layerType_.size(); ++i) { + if (layerSense_[i] > 0) { + int ii = layerType_[i]; + copyNumber_[ii] = (layerSense_[i] == 1) ? firstLayer_ : (firstLayer_ + 1); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "First copy number for layer type " << i << ":" << ii << " with " + << materials_[ii] << " changed to " << copyNumber_[ii]; +#endif + } + } + } else { + firstLayer_ = 1; + } +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "There are " << layerType_.size() << " layers"; + for (unsigned int i = 0; i < layerType_.size(); ++i) + edm::LogVerbatim("HGCalGeom") << "Layer [" << i << "] with material type " << layerType_[i] << " sensitive class " + << layerSense_[i]; +#endif + slopeB_ = args.value>("SlopeBottom"); + zFrontB_ = args.value>("ZFrontBottom"); + rMinFront_ = args.value>("RMinFront"); + slopeT_ = args.value>("SlopeTop"); + zFrontT_ = args.value>("ZFrontTop"); + rMaxFront_ = args.value>("RMaxFront"); +#ifdef EDM_ML_DEBUG + for (unsigned int i = 0; i < slopeB_.size(); ++i) + edm::LogVerbatim("HGCalGeom") << "Bottom Block [" << i << "] Zmin " << cms::convert2mm(zFrontB_[i]) << " Rmin " + << cms::convert2mm(rMinFront_[i]) << " Slope " << slopeB_[i]; + for (unsigned int i = 0; i < slopeT_.size(); ++i) + edm::LogVerbatim("HGCalGeom") << "Top Block [" << i << "] Zmin " << cms::convert2mm(zFrontT_[i]) << " Rmax " + << cms::convert2mm(rMaxFront_[i]) << " Slope " << slopeT_[i]; +#endif + waferIndex_ = args.value>("WaferIndex"); + waferProperty_ = args.value>("WaferProperties"); + waferLayerStart_ = args.value>("WaferLayerStart"); + cassetteShift_ = args.value>("CassetteShift"); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "waferProperties with " << waferIndex_.size() << " entries in " + << waferLayerStart_.size() << " layers"; + for (unsigned int k = 0; k < waferLayerStart_.size(); ++k) + edm::LogVerbatim("HGCalGeom") << "LayerStart[" << k << "] " << waferLayerStart_[k]; + for (unsigned int k = 0; k < waferIndex_.size(); ++k) + edm::LogVerbatim("HGCalGeom") << "Wafer[" << k << "] " << waferIndex_[k] << " (" + << HGCalWaferIndex::waferLayer(waferIndex_[k]) << ", " + << HGCalWaferIndex::waferU(waferIndex_[k]) << ", " + << HGCalWaferIndex::waferV(waferIndex_[k]) << ") : (" + << HGCalProperty::waferThick(waferProperty_[k]) << ":" + << HGCalProperty::waferPartial(waferProperty_[k]) << ":" + << HGCalProperty::waferOrient(waferProperty_[k]) << ")"; + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << cassetteShift_.size() + << " elements for cassette shifts"; + unsigned int j1max = cassetteShift_.size(); + for (unsigned int j1 = 0; j1 < j1max; j1 += 6) { + std::ostringstream st1; + unsigned int j2 = std::min((j1 + 6), j1max); + for (unsigned int j = j1; j < j2; ++j) + st1 << " [" << j << "] " << std::setw(9) << cassetteShift_[j]; + edm::LogVerbatim("HGCalGeom") << st1.str(); + } + + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: NameSpace " << ns.name(); +#endif + cassette_.setParameter(cassettes_, cassetteShift_); + +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "==>> Constructing DDHGCalSiliconRotatedModule..."; + copies_.clear(); +#endif + + double zi(zMinBlock_); + int laymin(0); + for (unsigned int i = 0; i < layers_.size(); ++i) { + double zo = zi + layerThick_[i]; + double routF = HGCalGeomTools::radius(zi, zFrontT_, rMaxFront_, slopeT_); + int laymax = laymin + layers_[i]; + double zz = zi; + double thickTot(0); + for (int ly = laymin; ly < laymax; ++ly) { + int ii = layerType_[ly]; + int copy = copyNumber_[ii]; + double hthick = 0.5 * thick_[ii]; + double rinB = HGCalGeomTools::radius(zo - tol1, zFrontB_, rMinFront_, slopeB_); + zz += hthick; + thickTot += thick_[ii]; + + std::string name = names_[ii] + std::to_string(copy); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: Layer " << ly << ":" << ii << " Front " + << cms::convert2mm(zi) << ", " << cms::convert2mm(routF) << " Back " + << cms::convert2mm(zo) << ", " << cms::convert2mm(rinB) + << " superlayer thickness " << cms::convert2mm(layerThick_[i]); +#endif + + dd4hep::Material matter = ns.material(materials_[ii]); + dd4hep::Volume glog; + + if (layerSense_[ly] < 1) { + std::vector pgonZ, pgonRin, pgonRout; + double rmax = routF * cosAlpha_ - tol1; + HGCalGeomTools::radius(zz - hthick, + zz + hthick, + zFrontB_, + rMinFront_, + slopeB_, + zFrontT_, + rMaxFront_, + slopeT_, + -layerSense_[ly], + pgonZ, + pgonRin, + pgonRout); + for (unsigned int isec = 0; isec < pgonZ.size(); ++isec) { + pgonZ[isec] -= zz; + if (layerSense_[ly] == 0 || absorbMode_ == 0) + pgonRout[isec] = rmax; + else + pgonRout[isec] = pgonRout[isec] * cosAlpha_ - tol1; + } + dd4hep::Solid solid = dd4hep::Polyhedra(sectors_, -alpha_, 2._pi, pgonZ, pgonRin, pgonRout); + ns.addSolidNS(ns.prepend(name), solid); + glog = dd4hep::Volume(solid.name(), solid, matter); + ns.addVolumeNS(glog); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << solid.name() << " polyhedra of " + << sectors_ << " sectors covering " << convertRadToDeg(-alpha_) << ":" + << convertRadToDeg(-alpha_ + 2._pi) << " with " << pgonZ.size() + << " sections and filled with " << matter.name(); + for (unsigned int k = 0; k < pgonZ.size(); ++k) + edm::LogVerbatim("HGCalGeom") << "[" << k << "] z " << cms::convert2mm(pgonZ[k]) << " R " + << cms::convert2mm(pgonRin[k]) << ":" << cms::convert2mm(pgonRout[k]); +#endif + } else { + double rins = + (sensitiveMode_ < 1) ? rinB : HGCalGeomTools::radius(zz + hthick - tol1, zFrontB_, rMinFront_, slopeB_); + double routs = + (sensitiveMode_ < 1) ? routF : HGCalGeomTools::radius(zz - hthick, zFrontT_, rMaxFront_, slopeT_); + dd4hep::Solid solid = dd4hep::Tube(rins, routs, hthick, 0.0, 2._pi); + ns.addSolidNS(ns.prepend(name), solid); + glog = dd4hep::Volume(solid.name(), solid, matter); + ns.addVolumeNS(glog); + +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << solid.name() << " Tubs made of " + << matter.name() << " of dimensions " << cms::convert2mm(rinB) << ":" + << cms::convert2mm(rins) << ", " << cms::convert2mm(routF) << ":" + << cms::convert2mm(routs) << ", " << cms::convert2mm(hthick) + << ", 0.0, 360.0 and position " << glog.name() << " number " << copy << ":" + << layerTypes_[copy - firstLayer_]; +#endif + positionSensitive(ctxt, e, glog, (copy - firstLayer_)); + } + + dd4hep::Position r1(0, 0, zz); + dd4hep::Rotation3D rot; +#ifdef EDM_ML_DEBUG + std::string rotName("Null"); +#endif + if ((layerSense_[ly] > 0) && (layerTypes_[copy - firstLayer_] == HGCalTypes::WaferCenteredRotated)) { + rot = ns.rotation(rotstr_); +#ifdef EDM_ML_DEBUG + rotName = rotstr_; +#endif + } + mother.placeVolume(glog, copy, dd4hep::Transform3D(rot, r1)); + int inc = ((layerSense_[ly] > 0) && (facingTypes_ > 1)) ? 2 : 1; + copyNumber_[ii] = copy + inc; +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << glog.name() << " number " << copy + << " positioned in " << mother.name() << " at (0,0," << cms::convert2mm(zz) + << ") with " << rotName << " rotation"; +#endif + zz += hthick; + } // End of loop over layers in a block + zi = zo; + laymin = laymax; + // Make consistency check of all the partitions of the block + if (std::abs(thickTot - layerThick_[i]) >= tol2) { + if (thickTot > layerThick_[i]) { + edm::LogError("HGCalGeom") << "Thickness of the partition " << cms::convert2mm(layerThick_[i]) + << " is smaller than " << cms::convert2mm(thickTot) + << ": thickness of all its components **** ERROR ****"; + } else { + edm::LogWarning("HGCalGeom") << "Thickness of the partition " << cms::convert2mm(layerThick_[i]) + << " does not match with " << cms::convert2mm(thickTot) << " of the components"; + } + } + } // End of loop over blocks + +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << copies_.size() + << " different wafer copy numbers"; + int k(0); + for (std::unordered_set::const_iterator itr = copies_.begin(); itr != copies_.end(); ++itr, ++k) { + edm::LogVerbatim("HGCalGeom") << "Copy [" << k << "] : " << (*itr); + } + copies_.clear(); + edm::LogVerbatim("HGCalGeom") << "<<== End of DDHGCalSiliconRotatedModule construction..."; +#endif + } + + void positionSensitive(cms::DDParsingContext& ctxt, xml_h e, const dd4hep::Volume& glog, int layer) { + cms::DDNamespace ns(ctxt, e, true); + static const double sqrt3 = std::sqrt(3.0); + int layercenter = (layerTypes_[layer] == HGCalTypes::CornerCenteredLambda) + ? HGCalTypes::CornerCenterYp + : ((layerTypes_[layer] == HGCalTypes::CornerCenteredY) ? HGCalTypes::CornerCenterYm + : HGCalTypes::WaferCenter); + int layertype = (layerTypes_[layer] == HGCalTypes::WaferCenteredBack) ? 1 : 0; + int firstWafer = waferLayerStart_[layer]; + int lastWafer = ((layer + 1 < static_cast(waferLayerStart_.size())) ? waferLayerStart_[layer + 1] + : static_cast(waferIndex_.size())); + double r = 0.5 * (waferSize_ + waferSepar_); + double R = 2.0 * r / sqrt3; + double dy = 0.75 * R; + const auto& xyoff = geomTools_.shiftXY(layercenter, (waferSize_ + waferSepar_)); +#ifdef EDM_ML_DEBUG + int ium(0), ivm(0), kount(0); + std::vector ntype(3, 0); + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: " << glog.name() << " r " << cms::convert2mm(r) + << " R " << cms::convert2mm(R) << " dy " << cms::convert2mm(dy) << " Shift " + << cms::convert2mm(xyoff.first) << ":" << cms::convert2mm(xyoff.second) + << " WaferSize " << cms::convert2mm((waferSize_ + waferSepar_)) << " index " + << firstWafer << ":" << (lastWafer - 1); +#endif + for (int k = firstWafer; k < lastWafer; ++k) { + int u = HGCalWaferIndex::waferU(waferIndex_[k]); + int v = HGCalWaferIndex::waferV(waferIndex_[k]); +#ifdef EDM_ML_DEBUG + int iu = std::abs(u); + int iv = std::abs(v); +#endif + int nr = 2 * v; + int nc = -2 * u + v; + int type = HGCalProperty::waferThick(waferProperty_[k]); + int part = HGCalProperty::waferPartial(waferProperty_[k]); + int orien = HGCalProperty::waferOrient(waferProperty_[k]); + int cassette = HGCalProperty::waferCassette(waferProperty_[k]); + int place = HGCalCell::cellPlacementIndex(1, layertype, orien); + auto cshift = cassette_.getShift(layer, 1, cassette); + double xpos = xyoff.first + cshift.first + nc * r; + double ypos = xyoff.second + cshift.second + nr * dy; + std::string wafer; + int i(999); + if (part == HGCalTypes::WaferFull) { + i = type * facingTypes_ * orientationTypes_ + place - placeOffset_; + wafer = waferFull_[i]; + } else { + int partoffset = + (part >= HGCalTypes::WaferHDTop) ? HGCalTypes::WaferPartHDOffset : HGCalTypes::WaferPartLDOffset; + i = (part - partoffset) * facingTypes_ * orientationTypes_ + + HGCalTypes::WaferTypeOffset[type] * facingTypes_ * orientationTypes_ + place - placeOffset_; +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << " layertype:type:part:orien:cassette:place:offsets:ind " << layertype << ":" + << type << ":" << part << ":" << orien << ":" << cassette << ":" << place << ":" + << partoffset << ":" << HGCalTypes::WaferTypeOffset[type] << ":" << i << ":" + << waferPart_.size(); +#endif + wafer = waferPart_[i]; + } + int copy = HGCalTypes::packTypeUV(type, u, v); +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << " DDHGCalSiliconRotatedModule: Layer" + << HGCalWaferIndex::waferLayer(waferIndex_[k]) << " Wafer " << wafer << " number " + << copy << " type:part:orien:ind " << type << ":" << part << ":" << orien << ":" + << i << " layer:u:v:indx " << (layer + firstLayer_) << ":" << u << ":" << v; + if (iu > ium) + ium = iu; + if (iv > ivm) + ivm = iv; + kount++; + if (copies_.count(copy) == 0) + copies_.insert(copy); +#endif + dd4hep::Position tran(xpos, ypos, 0.0); + glog.placeVolume(ns.volume(wafer), copy, tran); +#ifdef EDM_ML_DEBUG + ++ntype[type]; + edm::LogVerbatim("HGCalGeom") << " DDHGCalSiliconRotatedModule: " << wafer << " number " << copy << " type " + << layertype << ":" << type << " positioned in " << glog.name() << " at (" + << cms::convert2mm(xpos) << "," << cms::convert2mm(ypos) << ",0) with no rotation"; +#endif + } + +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("HGCalGeom") << "DDHGCalSiliconRotatedModule: Maximum # of u " << ium << " # of v " << ivm + << " and " << kount << " wafers (" << ntype[0] << ":" << ntype[1] << ":" << ntype[2] + << ") for " << glog.name(); +#endif + } + + //Required data members to cache the values from XML file + HGCalGeomTools geomTools_; + HGCalCassette cassette_; + + int waferTypes_; // Number of wafer types + int facingTypes_; // Types of facings of modules toward IP + int orientationTypes_; // Number of wafer orienations + int placeOffset_; // Offset for placement + int firstLayer_; // Copy # of the first sensitive layer + int absorbMode_; // Absorber mode + int sensitiveMode_; // Sensitive mode + double zMinBlock_; // Starting z-value of the block + double waferSize_; // Width of the wafer + double waferSepar_; // Sensor separation + int sectors_; // Sectors + int cassettes_; // Cassettes + std::string rotstr_; // Rotation matrix (if needed) + std::vector waferFull_; // Names of full wafer modules + std::vector waferPart_; // Names of partial wafer modules + std::vector materials_; // names of materials + std::vector names_; // Names of volumes + std::vector thick_; // Thickness of the material + std::vector copyNumber_; // Initial copy numbers + std::vector layers_; // Number of layers in a section + std::vector layerThick_; // Thickness of each section + std::vector layerType_; // Type of the layer + std::vector layerSense_; // Content of a layer (sensitive?) + std::vector slopeB_; // Slope at the lower R + std::vector zFrontB_; // Starting Z values for the slopes + std::vector rMinFront_; // Corresponding rMin's + std::vector slopeT_; // Slopes at the larger R + std::vector zFrontT_; // Starting Z values for the slopes + std::vector rMaxFront_; // Corresponding rMax's + std::vector layerTypes_; // Layer type (Centering, rotations..) + std::vector waferIndex_; // Wafer index for the types + std::vector waferProperty_; // Wafer property + std::vector waferLayerStart_; // Index of wafers in each layer + std::vector cassetteShift_; // Shifts of the cassetes + std::unordered_set copies_; // List of copy #'s + double alpha_, cosAlpha_; +}; + +static long algorithm(dd4hep::Detector& /* description */, cms::DDParsingContext& ctxt, xml_h e) { + HGCalSiliconRotatedModule eealgo(ctxt, e); + return cms::s_executed; +} + +DECLARE_DDCMS_DETELEMENT(DDCMS_hgcal_DDHGCalSiliconRotatedModule, algorithm) diff --git a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferFullRotated.cc b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferFullRotated.cc index 7df7a7bf4c79a..9263958e34be8 100644 --- a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferFullRotated.cc +++ b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferFullRotated.cc @@ -34,7 +34,7 @@ static long algorithm(dd4hep::Detector& /* description */, cms::DDParsingContext << " T " << thick << " Wafer 2r " << waferSize << " Half Separation " << waferSepar << " T " << waferThick; #endif - const auto& orient = args.value >("WaferOrinet"); + const auto& orient = args.value >("WaferOrient"); const auto& face = args.value >("WaferFace"); const auto& tag = args.value >("WaferPlacementIndex"); const auto& layerNames = args.value >("LayerNames"); diff --git a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferPartialRotated.cc b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferPartialRotated.cc index 2365c5654d463..db394e4b4559e 100644 --- a/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferPartialRotated.cc +++ b/Geometry/HGCalCommonData/plugins/dd4hep/DDHGCalWaferPartialRotated.cc @@ -44,7 +44,7 @@ static long algorithm(dd4hep::Detector& /* description */, cms::DDParsingContext for (unsigned int k = 0; k < tags.size(); ++k) { for (unsigned int m = 0; m < placementIndex.size(); ++m) { edm::LogVerbatim("HGCalGeom") << "Type[" << k << "] " << tags[k] << " Partial " << partialTypes[k] - << " Plecement Index " << placementIndex[m]; + << " Placement Index " << placementIndex[m] << " Tag " << placementIndexTags[m]; } } #endif @@ -172,7 +172,7 @@ static long algorithm(dd4hep::Detector& /* description */, cms::DDParsingContext << "[" << j << "] " << cms::convert2mm(xL[j]) << ":" << cms::convert2mm(yL[j]); #endif auto posSense = HGCalCell::cellOrient(placementIndex[m]); - double zpos = (posSense.second < 0) ? -0.5 * (waferThick - senseT) : 0.5 * (waferThick - senseT); + double zpos = (posSense.second > 0) ? -0.5 * (waferThick - senseT) : 0.5 * (waferThick - senseT); dd4hep::Position tran(0, 0, zpos); int copy = 10 + senseType; glogs[i].placeVolume(glog, copy, tran); diff --git a/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py b/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py new file mode 100644 index 0000000000000..800154e632edb --- /dev/null +++ b/Geometry/HGCalCommonData/python/testHGCalHEsilV17XML_cfi.py @@ -0,0 +1,22 @@ +import FWCore.ParameterSet.Config as cms + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2021/v1/materials.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/caloBase/2026/v6/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/HGCalCommonData/test/python/dumpHGCalEEV17DD4hep_cfg.py b/Geometry/HGCalCommonData/test/python/dumpHGCalEEV17DD4hep_cfg.py new file mode 100644 index 0000000000000..061d41106e900 --- /dev/null +++ b/Geometry/HGCalCommonData/test/python/dumpHGCalEEV17DD4hep_cfg.py @@ -0,0 +1,25 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("DDHGCalEETest") + +process.load('FWCore.MessageService.MessageLogger_cfi') +process.source = cms.Source("EmptySource") +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) + ) + +process.MessageLogger.cerr.FwkReport.reportEvery = 5 +if hasattr(process,'MessageLogger'): + process.MessageLogger.HGCalGeom=dict() + +process.DDDetectorESProducer = cms.ESSource("DDDetectorESProducer", + confGeomXMLFiles = cms.FileInPath('Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalEEV17-algorithm.xml'), + appendToDataLabel = cms.string('DDHGCalEE') + ) + +process.testDump = cms.EDAnalyzer("DDTestDumpFile", + outputFileName = cms.untracked.string('hgcalEEV17DD4hep.root'), + DDDetector = cms.ESInputTag('','DDHGCalEE') + ) + +process.p = cms.Path(process.testDump) diff --git a/Geometry/HGCalCommonData/test/python/dumpHGCalHEsilV17DD4hep_cfg.py b/Geometry/HGCalCommonData/test/python/dumpHGCalHEsilV17DD4hep_cfg.py new file mode 100644 index 0000000000000..2a0ce62506449 --- /dev/null +++ b/Geometry/HGCalCommonData/test/python/dumpHGCalHEsilV17DD4hep_cfg.py @@ -0,0 +1,25 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("DDHGCalHEsilV17Test") + +process.load('FWCore.MessageService.MessageLogger_cfi') +process.source = cms.Source("EmptySource") +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) + ) + +process.MessageLogger.cerr.FwkReport.reportEvery = 5 +if hasattr(process,'MessageLogger'): + process.MessageLogger.HGCalGeom=dict() + +process.DDDetectorESProducer = cms.ESSource("DDDetectorESProducer", + confGeomXMLFiles = cms.FileInPath('Geometry/HGCalCommonData/data/dd4hep/cms-test-ddhgcalHEsilV17-algorithm.xml'), + appendToDataLabel = cms.string('DDHGCalHEsilV17') + ) + +process.testDump = cms.EDAnalyzer("DDTestDumpFile", + outputFileName = cms.untracked.string('hgcalHEsilV17DD4hep.root'), + DDDetector = cms.ESInputTag('','DDHGCalHEsilV17') + ) + +process.p = cms.Path(process.testDump) diff --git a/Geometry/HGCalCommonData/test/python/dumpHGCalHEsilV17DDD_cfg.py b/Geometry/HGCalCommonData/test/python/dumpHGCalHEsilV17DDD_cfg.py new file mode 100644 index 0000000000000..cf2f201c808f5 --- /dev/null +++ b/Geometry/HGCalCommonData/test/python/dumpHGCalHEsilV17DDD_cfg.py @@ -0,0 +1,28 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process("DUMP") +process.load("Geometry.HGCalCommonData.testHGCalHEsilV17XML_cfi") +process.load('FWCore.MessageService.MessageLogger_cfi') + +if 'MessageLogger' in process.__dict__: + process.MessageLogger.G4cerr=dict() + process.MessageLogger.G4cout=dict() + process.MessageLogger.HGCalGeom=dict() +# process.MessageLogger.TGeoMgrFromDdd=dict() + +process.source = cms.Source("EmptySource") + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1) +) + +process.add_(cms.ESProducer("TGeoMgrFromDdd", + verbose = cms.untracked.bool(False), + level = cms.untracked.int32(14) +)) + + +process.dump = cms.EDAnalyzer("DumpSimGeometry", + outputFileName = cms.untracked.string('hgcalHEsilV17DDD.root')) + +process.p = cms.Path(process.dump)