Skip to content

Commit 0266ec6

Browse files
authored
Merge pull request #46798 from bsunanda/Run3-gex181
Run3-gex181 Getting ready for preparing payload of 2025 Geometry
2 parents 3f4d840 + 94781ba commit 0266ec6

7 files changed

+431
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#!/bin/sh
2+
function die { echo $1: status $2 ; exit $2; }
3+
4+
if [ $# -ne 1 ]
5+
then
6+
echo Error: createExtended2025Payloads.sh requires exactly one argument which is the tag
7+
exit 1
8+
fi
9+
mytag=$1
10+
echo ${mytag}
11+
12+
# Set the tag in all the scripts and the metadata text files
13+
#sed -i {s/TagXX/${mytag}/g} *.py
14+
compgen -G "*.txt" > /dev/null && sed -i {s/TagXX/${mytag}/g} *.txt
15+
sed -i {s/TagXX/${mytag}/g} splitExtended2025Database.sh
16+
17+
# First read in the little XML files and create the
18+
# big XML file for the Extended2025DD4hep scenario.
19+
cmsRun geometryExtended2025DD4hep_xmlwriter.py || die 'failed geometryExtended2025DD4hep_xmlwriter.py' $?
20+
21+
# Now convert the content of the large XML file into
22+
# a "blob" and write it to the database.
23+
# Also reads in the little XML files again and fills
24+
# the DDCompactView. From the DDCompactView the
25+
# reco parts of the database are also filled.
26+
cmsRun geometryExtended2025DD4hep_writer.py --tag=${mytag} || die 'failed geometryExtended2025DD4hep_writer.py' $?
27+
28+
# Now put the other scenarios into the database.
29+
# Input the many XML files referenced by the cff file and
30+
# output a single big XML file.
31+
# This is repeated several times below. The sed commands
32+
# serve to give the correct sequence of input and output
33+
# files
34+
35+
#sed -i '{s/ExtendedGeometry2025/ExtendedGeometry2025ZeroMaterial/g}' geometryExtended2025DD4hep_xmlwriter.py
36+
#sed -i '{s/\/ge/\/gez/g}' geometryExtended2025DD4hep_xmlwriter.py
37+
cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025ZeroMaterial --out=gez || die 'failed geometryExtended2025DD4hep_xmlwriter.py ExtendedGeometry2025ZeroMaterial' $?
38+
39+
#sed -i '{s/ExtendedGeometry2025ZeroMaterial/ExtendedGeometry2025FlatMinus05Percent/g}' geometryExtended2025DD4hep_xmlwriter.py
40+
#sed -i '{s/\/gez/\/geFM05/g}' geometryExtended2025DD4hep_xmlwriter.py
41+
cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatMinus05Percent --out=geFM05 || die 'failed geometryExtended2025DD4hep_xmlwriter.py ExtendedGeometry2025FlatMinus05Percent' $?
42+
43+
#sed -i '{s/ExtendedGeometry2025FlatMinus05Percent/ExtendedGeometry2025FlatMinus10Percent/g}' geometryExtended2025DD4hep_xmlwriter.py
44+
#sed -i '{s/\/geFM05/\/geFM10/g}' geometryExtended2025DD4hep_xmlwriter.py
45+
cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatMinus10Percent --out=geFM10 || die 'failed geometryExtended2025DD4hep_xmlwriter.py' $?
46+
47+
#sed -i '{s/ExtendedGeometry2025FlatMinus10Percent/ExtendedGeometry2025FlatPlus05Percent/g}' geometryExtended2025DD4hep_xmlwriter.py
48+
#sed -i '{s/\/geFM10/\/geFP05/g}' geometryExtended2025DD4hep_xmlwriter.py
49+
cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatPlus05Percent --out=geFP05 || die 'failed geometryExtended2025DD4hep_xmlwriter.py ExtendedGeometry2025FlatPlus05Percent' $?
50+
51+
#sed -i '{s/ExtendedGeometry2025FlatPlus05Percent/ExtendedGeometry2025FlatPlus10Percent/g}' geometryExtended2025DD4hep_xmlwriter.py
52+
#sed -i '{s/\/geFP05/\/geFP10/g}' geometryExtended2025DD4hep_xmlwriter.py
53+
cmsRun geometryExtended2025DD4hep_xmlwriter.py --geom=ExtendedGeometry2025FlatPlus05Percent --out=geFP10 || die 'failed geometryExtended2025DD4hep_xmlwriter.py' $?
54+
55+
# Read the one big XML file and output a record to the
56+
# database with the an identifying tag
57+
# This is repeated several times below. The sed commands
58+
# serve to give the correct sequence of input file and output
59+
# tag
60+
# To start:
61+
# Input file Output tag
62+
# gezSingleBigFile.xml XMLFILE_Geometry_${mytag}_Extended2025ZeroMaterial_mc
63+
64+
#sed -i '{s/Extended/Extended2025ZeroMaterial/g}' xmlgeometrywriter.py
65+
#sed -i '{s/\/ge/\/gez/g}' xmlgeometrywriter.py
66+
cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025ZeroMaterial --inPre=gez|| die 'failed xmlgeometrywriter.py Extended2025ZeroMaterial' $?
67+
68+
#sed -i '{s/Extended2025ZeroMaterial/Extended2025FlatMinus05Percent/g}' xmlgeometrywriter.py
69+
#sed -i '{s/\/gez/\/geFM05/g}' xmlgeometrywriter.py
70+
cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatMinus05Percent --inPre=geFM05 || die 'failed xmlgeometrywriter.py Extended2025FlatMinus05Percent' $?
71+
72+
#sed -i '{s/Extended2025FlatMinus05Percent/Extended2025FlatMinus10Percent/g}' xmlgeometrywriter.py
73+
#sed -i '{s/\/geFM05/\/geFM10/g}' xmlgeometrywriter.py
74+
cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatMinus10Percent --inPre=geFM10 || die 'failed xmlgeometrywriter.py Extended2025FlatMinus10Percent' $?
75+
76+
#sed -i '{s/Extended2025FlatMinus10Percent/Extended2025FlatPlus05Percent/g}' xmlgeometrywriter.py
77+
#sed -i '{s/\/geFM10/\/geFP05/g}' xmlgeometrywriter.py
78+
cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatPlus05Percent --inPre=geFP05 || die 'failed xmlgeometrywriter.py Extended2025FlatPlus05Percent' $?
79+
80+
#sed -i '{s/Extended2025FlatPlus05Percent/Extended2025FlatPlus10Percent/g}' xmlgeometrywriter.py
81+
#sed -i '{s/\/geFP05/\/geFP10/g}' xmlgeometrywriter.py
82+
cmsRun xmlgeometrywriter.py --tag=${mytag} --out=Extended2025FlatPlus10Percent --inPre=geFP10 || die 'failed xmlgeometrywriter.py Extended2025FlatPlus10Percent' $?
83+
84+
# All the database objects were written into one database
85+
# (myfile.db) in the steps above. Extract the different
86+
# pieces into separate database files. These are the payloads
87+
# that get uploaded to the DB. There is one for each tag
88+
./splitExtended2025Database.sh
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/bin/sh
2+
3+
4+
if [ $# -ne 1 ]
5+
then
6+
echo Error: createExtended2025Payloads.sh requires exactly one argument which is the tag
7+
exit 1
8+
fi
9+
mytag=$1
10+
echo ${mytag}
11+
12+
# Set the tag in all the scripts and the metadata text files
13+
sed -i {s/TagXX/${mytag}/g} *.py
14+
compgen -G "*.txt" > /dev/null && sed -i {s/TagXX/${mytag}/g} *.txt
15+
sed -i {s/TagXX/${mytag}/g} splitExtended2025Database.sh
16+
17+
# First read in the little XML files and create the
18+
# large XML file for the Phase1_R30F12_HCal Ideal scenario.
19+
# Input cff Output file
20+
# GeometryExtended2025_cff geSingleBigFile.xml
21+
cmsRun geometryExtended2025_xmlwriter.py
22+
23+
# Now convert the content of the large XML file into
24+
# a "blob" and write it to the database.
25+
# Also reads in the little XML files again and fills
26+
# the DDCompactView. From the DDCompactView the
27+
# reco parts of the database are also filled.
28+
cmsRun geometryExtended2025_writer.py
29+
30+
# Now put the other scenarios into the database.
31+
# Input the many XML files referenced by the cff file and
32+
# output a single big XML file.
33+
# This is repeated several times below. The sed commands
34+
# serve to give the following sequence of input and output
35+
# files
36+
#
37+
# Input cff Output file
38+
# GeometryIdeal_cff giSingleBigFile.xml
39+
#
40+
sed -i '{s/Extended2025/Extended2025ZeroMaterial/g}' geometryExtended2025_xmlwriter.py
41+
sed -i '{s/\/ge/\/gez/g}' geometryExtended2025_xmlwriter.py
42+
cmsRun geometryExtended2025_xmlwriter.py
43+
44+
sed -i '{s/Extended2025ZeroMaterial/Extended2025FlatMinus05Percent/g}' geometryExtended2025_xmlwriter.py
45+
sed -i '{s/\/gez/\/geFM05/g}' geometryExtended2025_xmlwriter.py
46+
cmsRun geometryExtended2025_xmlwriter.py
47+
48+
sed -i '{s/Extended2025FlatMinus05Percent/Extended2025FlatMinus10Percent/g}' geometryExtended2025_xmlwriter.py
49+
sed -i '{s/\/geFM05/\/geFM10/g}' geometryExtended2025_xmlwriter.py
50+
cmsRun geometryExtended2025_xmlwriter.py
51+
52+
sed -i '{s/Extended2025FlatMinus10Percent/Extended2025FlatPlus05Percent/g}' geometryExtended2025_xmlwriter.py
53+
sed -i '{s/\/geFM10/\/geFP05/g}' geometryExtended2025_xmlwriter.py
54+
cmsRun geometryExtended2025_xmlwriter.py
55+
56+
sed -i '{s/Extended2025FlatPlus05Percent/Extended2025FlatPlus10Percent/g}' geometryExtended2025_xmlwriter.py
57+
sed -i '{s/\/geFP05/\/geFP10/g}' geometryExtended2025_xmlwriter.py
58+
cmsRun geometryExtended2025_xmlwriter.py
59+
60+
# Read the one big XML file and output a record to the
61+
# database with the an identifying tag
62+
# This is repeated several times below. The sed commands
63+
# serve to give the following sequence of input file and output
64+
# tag
65+
#
66+
# Input file Output tag
67+
# gezSingleBigFile.xml XMLFILE_Geometry_${mytag}_Extended2025ZeroMaterial_mc
68+
#
69+
sed -i '{s/Extended/Extended2025ZeroMaterial/g}' xmlgeometrywriter.py
70+
sed -i '{s/\/ge/\/gez/g}' xmlgeometrywriter.py
71+
cmsRun xmlgeometrywriter.py
72+
73+
sed -i '{s/Extended2025ZeroMaterial/Extended2025FlatMinus05Percent/g}' xmlgeometrywriter.py
74+
sed -i '{s/\/gez/\/geFM05/g}' xmlgeometrywriter.py
75+
cmsRun xmlgeometrywriter.py
76+
77+
sed -i '{s/Extended2025FlatMinus05Percent/Extended2025FlatMinus10Percent/g}' xmlgeometrywriter.py
78+
sed -i '{s/\/geFM05/\/geFM10/g}' xmlgeometrywriter.py
79+
cmsRun xmlgeometrywriter.py
80+
81+
sed -i '{s/Extended2025FlatMinus10Percent/Extended2025FlatPlus05Percent/g}' xmlgeometrywriter.py
82+
sed -i '{s/\/geFM10/\/geFP05/g}' xmlgeometrywriter.py
83+
cmsRun xmlgeometrywriter.py
84+
85+
sed -i '{s/Extended2025FlatPlus05Percent/Extended2025FlatPlus10Percent/g}' xmlgeometrywriter.py
86+
sed -i '{s/\/geFP05/\/geFP10/g}' xmlgeometrywriter.py
87+
cmsRun xmlgeometrywriter.py
88+
89+
# All the database objects were written into one database
90+
# (myfile.db) in the steps above. Extract the different
91+
# pieces into separate database files. These are the payloads
92+
# that get uploaded to the dropbox. There is one for each tag
93+
./splitExtended2025Database.sh
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import FWCore.ParameterSet.Config as cms
2+
import argparse
3+
import sys
4+
5+
parser = argparse.ArgumentParser(prog=sys.argv[0], description='Generate XML geometry.')
6+
parser.add_argument("--tag", help="global tag to use", type=str)
7+
args = parser.parse_args()
8+
9+
10+
import FWCore.ParameterSet.Config as cms
11+
from Configuration.Eras.Era_Run3_dd4hep_cff import Run3_dd4hep
12+
13+
process = cms.Process("GeometryWriter", Run3_dd4hep)
14+
15+
from Configuration.ProcessModifiers.dd4hep_cff import dd4hep
16+
17+
process.load('CondCore.CondDB.CondDB_cfi')
18+
19+
process.load('Configuration.Geometry.GeometryDD4hepExtended2025_cff')
20+
process.load('Geometry.CaloEventSetup.CaloGeometryDBWriter_cfi')
21+
process.load('CondTools.Geometry.HcalParametersWriter_cff')
22+
process.load("Geometry.MuonNumbering.muonGeometryConstants_cff")
23+
process.load("Geometry.ForwardGeometry.ZdcGeometry_cfi")
24+
25+
process.CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder",
26+
SelectedCalos = cms.vstring(
27+
'HCAL',
28+
'ZDC',
29+
'EcalBarrel',
30+
'EcalEndcap',
31+
'EcalPreshower',
32+
'TOWER'
33+
)
34+
)
35+
36+
process.source = cms.Source("EmptyIOVSource",
37+
lastValue = cms.uint64(1),
38+
timetype = cms.string('runnumber'),
39+
firstValue = cms.uint64(1),
40+
interval = cms.uint64(1)
41+
)
42+
43+
# This reads the big XML file and the only way to fill the
44+
# nonreco part of the database is to read this file.
45+
process.XMLGeometryWriter = cms.EDAnalyzer("XMLGeometryBuilder",
46+
XMLFileName = cms.untracked.string("./geSingleBigFile.xml"),
47+
ZIP = cms.untracked.bool(True)
48+
)
49+
50+
process.TrackerGeometryWriter = cms.EDAnalyzer("PGeometricDetBuilder",fromDD4hep=cms.bool(True))
51+
process.TrackerParametersWriter = cms.EDAnalyzer("PTrackerParametersDBBuilder",fromDD4hep=cms.bool(True))
52+
53+
process.CaloGeometryWriter = cms.EDAnalyzer("PCaloGeometryBuilder",fromDD4hep = cms.untracked.bool(True))
54+
55+
process.CSCGeometryWriter = cms.EDAnalyzer("CSCRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True))
56+
57+
process.DTGeometryWriter = cms.EDAnalyzer("DTRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True))
58+
59+
process.RPCGeometryWriter = cms.EDAnalyzer("RPCRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True))
60+
61+
process.GEMGeometryWriter = cms.EDAnalyzer("GEMRecoIdealDBLoader",fromDD4hep = cms.untracked.bool(True))
62+
63+
process.CondDB.timetype = cms.untracked.string('runnumber')
64+
process.CondDB.connect = cms.string('sqlite_file:myfile.db')
65+
process.PoolDBOutputService = cms.Service("PoolDBOutputService",
66+
process.CondDB,
67+
toPut = cms.VPSet(cms.PSet(record = cms.string('GeometryFileRcd'),tag = cms.string('XMLFILE_Geometry_'+args.tag+'_Extended2025_mc')),
68+
cms.PSet(record = cms.string('IdealGeometryRecord'),tag = cms.string('TKRECO_Geometry_'+args.tag)),
69+
cms.PSet(record = cms.string('PTrackerParametersRcd'),tag = cms.string('TKParameters_Geometry_'+args.tag)),
70+
cms.PSet(record = cms.string('PEcalBarrelRcd'), tag = cms.string('EBRECO_Geometry_'+args.tag)),
71+
cms.PSet(record = cms.string('PEcalEndcapRcd'), tag = cms.string('EERECO_Geometry_'+args.tag)),
72+
cms.PSet(record = cms.string('PEcalPreshowerRcd'),tag = cms.string('EPRECO_Geometry_'+args.tag)),
73+
cms.PSet(record = cms.string('PHcalRcd'), tag = cms.string('HCALRECO_Geometry_'+args.tag)),
74+
cms.PSet(record = cms.string('HcalParametersRcd'), tag = cms.string('HCALParameters_Geometry_'+args.tag)),
75+
cms.PSet(record = cms.string('PCaloTowerRcd'), tag = cms.string('CTRECO_Geometry_'+args.tag)),
76+
cms.PSet(record = cms.string('PZdcRcd'), tag = cms.string('ZDCRECO_Geometry_'+args.tag)),
77+
cms.PSet(record = cms.string('PCastorRcd'), tag = cms.string('CASTORRECO_Geometry_'+args.tag)),
78+
cms.PSet(record = cms.string('CSCRecoGeometryRcd'),tag = cms.string('CSCRECO_Geometry_'+args.tag)),
79+
cms.PSet(record = cms.string('CSCRecoDigiParametersRcd'),tag = cms.string('CSCRECODIGI_Geometry_'+args.tag)),
80+
cms.PSet(record = cms.string('DTRecoGeometryRcd'),tag = cms.string('DTRECO_Geometry_'+args.tag)),
81+
cms.PSet(record = cms.string('RPCRecoGeometryRcd'),tag = cms.string('RPCRECO_Geometry_'+args.tag)),
82+
cms.PSet(record = cms.string('GEMRecoGeometryRcd'),tag = cms.string('GEMRECO_Geometry_'+args.tag))
83+
)
84+
)
85+
86+
process.maxEvents = cms.untracked.PSet(
87+
input = cms.untracked.int32(1)
88+
)
89+
90+
process.p1 = cms.Path(process.XMLGeometryWriter+process.TrackerGeometryWriter+process.TrackerParametersWriter+process.CaloGeometryWriter+process.HcalParametersWriter+process.CSCGeometryWriter+process.DTGeometryWriter+process.RPCGeometryWriter+process.GEMGeometryWriter)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
import argparse
4+
import sys
5+
6+
parser = argparse.ArgumentParser(prog=sys.argv[0], description='Generate XML geometry.')
7+
parser.add_argument("--geom", help="Name of parameter", type=str, default='ExtendedGeometry2025')
8+
parser.add_argument("--out", help="Prefix for output file", type=str, default='ge')
9+
10+
args = parser.parse_args()
11+
12+
process = cms.Process("GeometryXMLWriter")
13+
14+
process.source = cms.Source("EmptyIOVSource",
15+
lastValue = cms.uint64(1),
16+
timetype = cms.string('runnumber'),
17+
firstValue = cms.uint64(1),
18+
interval = cms.uint64(1)
19+
)
20+
21+
process.DDDetectorESProducer = cms.ESSource("DDDetectorESProducer",
22+
confGeomXMLFiles = cms.FileInPath('Geometry/CMSCommonData/data/dd4hep/cms'+args.geom+'.xml'),
23+
appendToDataLabel = cms.string('make-payload')
24+
)
25+
26+
process.DDCompactViewESProducer = cms.ESProducer("DDCompactViewESProducer",
27+
appendToDataLabel = cms.string('make-payload')
28+
)
29+
30+
process.BigXMLWriter = cms.EDAnalyzer("OutputDD4hepToDDL",
31+
fileName = cms.untracked.string("./"+args.out+"SingleBigFile.xml")
32+
)
33+
34+
35+
process.maxEvents = cms.untracked.PSet(
36+
input = cms.untracked.int32(1)
37+
)
38+
39+
process.p1 = cms.Path(process.BigXMLWriter)
40+

0 commit comments

Comments
 (0)