Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-25 02:29:07

0001 import FWCore.ParameterSet.Config as cms
0002 import FWCore.ParameterSet.VarParsing as VarParsing
0003 import copy, sys, os
0004 
0005 process = cms.Process("Misaligner")
0006 
0007 ###################################################################
0008 # Setup 'standard' options
0009 ###################################################################
0010 options = VarParsing.VarParsing()
0011 
0012 options.register('myScenario',
0013                  "MisalignmentScenario_PhaseI_PseudoAsymptotic", # default value
0014                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0015                  VarParsing.VarParsing.varType.string, # string, int, or float
0016                  "scenario to apply")
0017 
0018 options.register('mySigma',
0019                  -1, # default value
0020                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0021                  VarParsing.VarParsing.varType.float, # string, int, or float
0022                  "sigma for random misalignment in um")
0023 
0024 options.register('inputDB',
0025                  None, # default value
0026                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0027                  VarParsing.VarParsing.varType.string, # string, int, or float
0028                  "input database file to override GT (optional)")
0029 
0030 options.parseArguments()
0031 
0032 ###################################################################
0033 # Message logger service
0034 ###################################################################
0035 process.load("FWCore.MessageService.MessageLogger_cfi")
0036 process.MessageLogger.cout = cms.untracked.PSet(
0037     threshold = cms.untracked.string('INFO'),
0038     default = cms.untracked.PSet(
0039         limit = cms.untracked.int32(10000000)
0040     )
0041 )
0042 # replace MessageLogger.debugModules = { "*" }
0043 # service = Tracer {}
0044 
0045 ###################################################################
0046 # Ideal geometry producer and standard includes
0047 ###################################################################
0048 process.load('Configuration.Geometry.GeometryRecoDB_cff')
0049 
0050 ###################################################################
0051 # Just state the Global Tag (and pick some run)
0052 ###################################################################
0053 process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0054 from Configuration.AlCa.GlobalTag import GlobalTag
0055 # process.GlobalTag = GlobalTag(process.GlobalTag, "auto:run2_design", "")
0056 process.GlobalTag = GlobalTag(process.GlobalTag, "auto:phase1_2017_design", "")
0057 print("Using global tag:", process.GlobalTag.globaltag.value())
0058 
0059 ###################################################################
0060 # This uses the object from the tag and applies the misalignment scenario on top of that object
0061 ###################################################################
0062 process.load("Alignment.CommonAlignmentProducer.AlignmentProducer_cff")
0063 process.AlignmentProducer.doMisalignmentScenario=True
0064 process.AlignmentProducer.applyDbAlignment=True
0065 process.AlignmentProducer.checkDbAlignmentValidity=False #otherwise error thrown for IOV dependent GTs
0066 import Alignment.TrackerAlignment.Scenarios_cff as scenarios
0067 
0068 if hasattr(scenarios, options.myScenario):
0069     print("Using scenario:", options.myScenario)
0070     print("    with sigma:", options.mySigma)
0071     print()
0072     process.AlignmentProducer.MisalignmentScenario = getattr(scenarios, options.myScenario)
0073 else:
0074     print("----- Begin Fatal Exception -----------------------------------------------")
0075     print("Unrecognized",options.myScenario,"misalignment scenario !!!!")
0076     print("Aborting cmsRun now, please check your input")
0077     print("----- End Fatal Exception -------------------------------------------------")
0078     sys.exit(1)
0079 
0080 sigma = options.mySigma
0081 if sigma > 0:
0082     process.AlignmentProducer.MisalignmentScenario.scale = cms.double(0.0001*sigma) # shifts are in cm
0083 
0084 if options.inputDB is not None:
0085     process.GlobalTag.toGet.extend([
0086             cms.PSet(
0087                 connect = cms.string("sqlite_file:"+options.inputDB),
0088                 record = cms.string("TrackerAlignmentRcd"),
0089                 tag = cms.string("Alignments")
0090                 ),
0091             cms.PSet(
0092                 connect = cms.string("sqlite_file:"+options.inputDB),
0093                 record = cms.string("TrackerAlignmentErrorExtendedRcd"),
0094                 tag = cms.string("AlignmentErrorsExtended")
0095                 )
0096             ])
0097 
0098 process.AlignmentProducer.saveToDB=True
0099 process.AlignmentProducer.saveApeToDB=True
0100 
0101 ###################################################################
0102 # Output name
0103 ###################################################################
0104 outputfilename = None
0105 scenariolabel = str(options.myScenario)
0106 if sigma > 0:
0107     scenariolabel = scenariolabel+str(sigma)
0108 outputfilename = "geometry_"+str(scenariolabel)+"__from_"
0109 if options.inputDB is None:
0110     outputfilename += process.GlobalTag.globaltag.value()+".db"
0111 else:
0112     outputfilename += options.inputDB
0113 
0114 ###################################################################
0115 # Source
0116 ###################################################################
0117 process.source = cms.Source("EmptySource")
0118 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(1))
0119 
0120 ###################################################################
0121 # Database output service
0122 ###################################################################
0123 from CondCore.CondDB.CondDB_cfi import *
0124 process.PoolDBOutputService = cms.Service(
0125     "PoolDBOutputService",
0126     CondDB,
0127     timetype = cms.untracked.string("runnumber"),
0128     toPut = cms.VPSet(
0129         cms.PSet(
0130             record = cms.string("TrackerAlignmentRcd"),
0131             tag = cms.string("Alignments")
0132             ),
0133         cms.PSet(
0134             record = cms.string("TrackerAlignmentErrorExtendedRcd"),
0135             tag = cms.string("AlignmentErrorsExtended")
0136             ),
0137         )
0138     )
0139 process.PoolDBOutputService.connect = "sqlite_file:"+outputfilename
0140 process.PoolDBOutputService.DBParameters.messageLevel = 2