Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:57:20

0001 import FWCore.ParameterSet.Config as cms
0002 from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultData_Comissioning2022_Cosmics_string
0003 
0004 ###################################################################
0005 # Setup 'standard' options
0006 ###################################################################
0007 import FWCore.ParameterSet.VarParsing as VarParsing
0008 options = VarParsing.VarParsing()
0009 options.register('outFileName',
0010                  "CosmicTrackSplitterValidation.root", # default value
0011                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0012                  VarParsing.VarParsing.varType.string, # string, int, or float
0013                  "name of the output file (test.root is default)")
0014 
0015 options.register('trackCollection',
0016                  "ALCARECOTkAlCosmicsCTF0T", #"ctfWithMaterialTracksP5"
0017                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0018                  VarParsing.VarParsing.varType.string, # string, int, or float
0019                  "name of the input track collection")
0020 
0021 options.register('globalTag',
0022                  "auto:run3_data_prompt", # default value
0023                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0024                  VarParsing.VarParsing.varType.string, # string, int, or float
0025                  "name of the input Global Tag")
0026 
0027 options.register('unitTest',
0028                  False, # default value
0029                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0030                  VarParsing.VarParsing.varType.bool, # string, int, or float
0031                  "is it a unit test?")
0032 
0033 options.register('maxEvents',
0034                  -1,
0035                  VarParsing.VarParsing.multiplicity.singleton, # singleton or list
0036                  VarParsing.VarParsing.varType.int, # string, int, or float
0037                  "num. events to run")
0038 
0039 options.parseArguments()
0040 
0041 ###################################################################
0042 # process name: should be used in the CosmicSplitterValidation config!
0043 ###################################################################
0044 process = cms.Process("splitter")
0045 
0046 ###################################################################
0047 # message logger
0048 ###################################################################
0049 process.load("FWCore.MessageLogger.MessageLogger_cfi")
0050 ## report only every 100th record
0051 process.MessageLogger.cerr.FwkReport.reportEvery = 1 if (options.unitTest) else 100
0052 
0053 ###################################################################
0054 # magnetic field
0055 ###################################################################
0056 process.load("Configuration.StandardSequences.MagneticField_cff")
0057 process.load('Configuration.StandardSequences.Services_cff')
0058 process.load("Configuration.Geometry.GeometryRecoDB_cff")
0059 
0060 ###################################################################
0061 # including global tag
0062 ###################################################################
0063 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0064 from Configuration.AlCa.GlobalTag import GlobalTag
0065 process.GlobalTag = GlobalTag(process.GlobalTag,options.globalTag, '')
0066 
0067 ###################################################################
0068 # track selectors and refitting
0069 ###################################################################
0070 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
0071 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0072 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0073 
0074 ###################################################################
0075 # event source
0076 ###################################################################
0077 readFiles = cms.untracked.vstring()
0078 process.source = cms.Source("PoolSource",fileNames = readFiles)
0079 if(options.unitTest):
0080     ## fixed input for the unit test
0081     readFiles.extend([filesDefaultData_Comissioning2022_Cosmics_string])
0082 else :
0083     readFiles.extend([]) # put here your file list
0084     print('No input files specified!')
0085 
0086 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32((10 if (options.unitTest) else options.maxEvents)))
0087 
0088 ###################################################################
0089 # adding geometries
0090 ###################################################################
0091 from CondCore.CondDB.CondDB_cfi import *
0092 CondDBConnection = CondDB.clone(connect = 'frontier://FrontierProd/CMS_CONDITIONS')
0093 
0094 ###################################################################
0095 # CRAFT REPRO geom
0096 ###################################################################
0097 process.trackerAlignment = cms.ESSource("PoolDBESSource",
0098                                         CondDBConnection,
0099                                         toGet = cms.VPSet(cms.PSet(
0100                                             record = cms.string('TrackerAlignmentRcd'),
0101                                             tag = cms.string('TrackerAlignment_v30_offline')
0102                                         )))
0103 
0104 ###################################################################
0105 # APEs REPRO
0106 ###################################################################
0107 process.trackerAPE = cms.ESSource("PoolDBESSource",
0108                                   CondDBConnection,
0109                                   toGet = cms.VPSet(cms.PSet(
0110                                       record = cms.string('TrackerAlignmentErrorExtendedRcd'),
0111                                       tag = cms.string('TrackerAlignmentExtendedErrors_v16_offline_IOVs')
0112                                   )))
0113 
0114 ###################################################################
0115 # set prefer
0116 ###################################################################
0117 process.es_prefer_trackerAlignment = cms.ESPrefer("PoolDBESSource", "trackerAlignment")
0118 process.es_prefer_trackerAPE = cms.ESPrefer("PoolDBESSource", "trackerAPE")
0119 
0120 # # hit filter
0121 # process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
0122 # # parameters for TrackerTrackHitFilter
0123 # #process.TrackerTrackHitFilter.src = "cosmictrackfinderP5"
0124 # #process.TrackerTrackHitFilter.src = 'ALCARECOTkAlCosmicsCTF'
0125 # #process.TrackerTrackHitFilter.src = 'ALCARECOTkAlCosmicsCTF0T'
0126 # process.TrackerTrackHitFilter.src = options.trackCollection
0127 # process.TrackerTrackHitFilter.rejectBadStoNHits = True
0128 # process.TrackerTrackHitFilter.TrackAngleCut = 0.1
0129 
0130 # # re-build the track
0131 # import RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff   #TrackRefitters_cff
0132 # process.HitFilteredTracks = RecoTracker.TrackProducer.CTFFinalFitWithMaterialP5_cff.ctfWithMaterialTracksCosmics.clone(
0133 #     src = 'TrackerTrackHitFilter',
0134 #     TTRHBuilder = "WithAngleAndTemplate"
0135 # )
0136 
0137 # # refit tracks first
0138 # process.TrackRefitterP5.src = 'HitFilteredTracks'
0139 # #process.TrackRefitterP5.src = "ALCARECOTkAlCosmicsCosmicTF0T"
0140 # process.TrackRefitterP5.TTRHBuilder = "WithTrackAngle"
0141 # process.FittingSmootherRKP5.EstimateCut = -1
0142 
0143 # # module configuration
0144 # # alignment track selector
0145 # #process.AlignmentTrackSelector.src = "ALCARECOTkAlCosmicsCTF0T"
0146 # #process.AlignmentTrackSelector.src = "TrackerTrackHitFilter"
0147 # process.AlignmentTrackSelector.src = "TrackRefitterP5"
0148 # process.AlignmentTrackSelector.filter = True
0149 # process.AlignmentTrackSelector.applyBasicCuts = True
0150 # process.AlignmentTrackSelector.ptMin   = 0.
0151 # process.AlignmentTrackSelector.pMin   = 4.
0152 # process.AlignmentTrackSelector.ptMax   = 9999.
0153 # process.AlignmentTrackSelector.pMax   = 9999.
0154 # process.AlignmentTrackSelector.etaMin  = -9999.
0155 # process.AlignmentTrackSelector.etaMax  = 9999.
0156 # process.AlignmentTrackSelector.nHitMin = 10
0157 # process.AlignmentTrackSelector.nHitMin2D = 2
0158 # process.AlignmentTrackSelector.chi2nMax = 9999.
0159 # process.AlignmentTrackSelector.applyMultiplicityFilter = True
0160 # process.AlignmentTrackSelector.maxMultiplicity = 1
0161 # process.AlignmentTrackSelector.applyNHighestPt = False
0162 # process.AlignmentTrackSelector.nHighestPt = 1
0163 # process.AlignmentTrackSelector.seedOnlyFrom = 0
0164 # process.AlignmentTrackSelector.applyIsolationCut = False
0165 # process.AlignmentTrackSelector.minHitIsolation = 0.8
0166 # process.AlignmentTrackSelector.applyChargeCheck = False
0167 # process.AlignmentTrackSelector.minHitChargeStrip = 50.
0168 # process.AlignmentTrackSelector.minHitsPerSubDet.inBPIX = 2
0169 # process.KFFittingSmootherWithOutliersRejectionAndRK.EstimateCut=30.0
0170 # process.KFFittingSmootherWithOutliersRejectionAndRK.MinNumberOfHits=4
0171 
0172 # # configuration of the track spitting module
0173 # # new cuts allow for cutting on the impact parameter of the original track
0174 # process.load("RecoTracker.FinalTrackSelectors.cosmicTrackSplitter_cfi")
0175 # process.cosmicTrackSplitter.tracks='AlignmentTrackSelector'
0176 # process.cosmicTrackSplitter.tjTkAssociationMapTag='TrackRefitterP5'
0177 
0178 # #---------------------------------------------------------------------
0179 # # the output of the track hit filter are track candidates
0180 # # give them to the TrackProducer
0181 # process.ctfWithMaterialTracksP5.src = 'cosmicTrackSplitter'
0182 
0183 # # second refit
0184 # import RecoTracker.TrackProducer.TrackRefitters_cff
0185 # process.TrackRefitter2 = RecoTracker.TrackProducer.TrackRefitterP5_cfi.TrackRefitterP5.clone()
0186 # process.TrackRefitter2.src = 'ctfWithMaterialTracksP5'
0187 # process.TrackRefitter2.TTRHBuilder = "WithTrackAngle"
0188 
0189 # process.p = cms.Path(
0190 #     process.offlineBeamSpot *
0191 #     process.TrackerTrackHitFilter *
0192 #     process.HitFilteredTracks *
0193 #     process.TrackRefitterP5 *
0194 #     process.AlignmentTrackSelector *
0195 #     process.cosmicTrackSplitter *
0196 #     process.ctfWithMaterialTracksP5 *
0197 #     process.TrackRefitter2 *
0198 #     process.cosmicValidation)
0199 
0200 ###################################################################
0201 # common track selection / refitter sequence
0202 ###################################################################
0203 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
0204 process.seqTrackselRefit = trackselRefit.getSequence(process, options.trackCollection ,
0205                                                      isPVValidation=False,
0206                                                      TTRHBuilder='WithAngleAndTemplate',
0207                                                      usePixelQualityFlag=True,
0208                                                      openMassWindow=False,
0209                                                      cosmicsDecoMode=True,
0210                                                      cosmicsZeroTesla=False,
0211                                                      momentumConstraint=None,
0212                                                      cosmicTrackSplitting=True,
0213                                                      use_d0cut=False)
0214 
0215 ###################################################################
0216 # adding this ~doubles the efficiency of selection (!)
0217 ###################################################################
0218 process.FittingSmootherRKP5.EstimateCut = -1
0219 
0220 ###################################################################
0221 # the analysis module
0222 ###################################################################
0223 from Alignment.OfflineValidation.cosmicSplitterValidation_cfi import cosmicSplitterValidation as _cosmicSplitterValidation
0224 process.cosmicValidation = _cosmicSplitterValidation.clone(
0225     ifSplitMuons        = False,
0226     checkIfGolden       = False,
0227     splitTracks         = ("FinalTrackRefitter","","splitter"),  # important the 3rd argument should be the name of the process!
0228     splitGlobalMuons    = ("muons","","splitter"),               # important the 3rd argument should be the name of the process!
0229     originalTracks      = ("FirstTrackRefitter","","splitter"),  # important the 3rd argument should be the name of the process!
0230     originalGlobalMuons = ("muons","","Rec"))
0231 
0232 ###################################################################
0233 # Output file
0234 ###################################################################
0235 process.TFileService = cms.Service("TFileService",
0236                                    fileName = cms.string(options.outFileName))
0237 
0238 ###################################################################
0239 # path
0240 ###################################################################
0241 process.p = cms.Path(
0242     process.seqTrackselRefit *
0243     process.cosmicValidation)