Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 process = cms.Process("TBDtest")
0004 
0005 # Messages
0006 process.load("FWCore.MessageService.MessageLogger_cfi")
0007 process.MessageLogger.cerr.FwkReport.reportEvery = 10000
0008 
0009 process.load("Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi")
0010 process.load("RecoTracker.FinalTrackSelectors.TrackerTrackHitFilter_cff")
0011 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0012 process.load("RecoTracker.Configuration.RecoTracker_cff")
0013 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0014 process.load("Configuration.StandardSequences.MagneticField_cff")
0015 process.load("Configuration.StandardSequences.Reconstruction_cff")
0016 process.load("Configuration.StandardSequences.Services_cff")
0017 process.load('Configuration.Geometry.GeometryRecoDB_cff')
0018 process.load("TrackingTools.TransientTrack.TransientTrackBuilder_cfi")
0019 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0020 
0021 #Tracker
0022 from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import *
0023 
0024 #Muon
0025 from Geometry.MuonNumbering.muonNumberingInitialization_cfi import *
0026 from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import *
0027 
0028 #  Alignment
0029 from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import *
0030 from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import *
0031 from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import *
0032 
0033 from Configuration.AlCa.GlobalTag import GlobalTag
0034 process.GlobalTag = GlobalTag(process.GlobalTag, "92X_dataRun2_Prompt_v2", '')
0035 
0036 
0037 
0038 ########### DATA FILES  ####################################
0039 import FWCore.PythonUtilities.LumiList as LumiList
0040 ## Some example files to test ##
0041 lumiSecs = cms.untracked.VLuminosityBlockRange()
0042 #goodLumiSecs = LumiList.LumiList(filename = '/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions16/13TeV/DCSOnly/json_DCSONLY.txt').getCMSSWString().split(',')
0043 #lumiSecs.extend(goodLumiSecs)
0044 readFiles = cms.untracked.vstring()
0045 readFiles.extend(
0046    [
0047    '/store/data/Run2017A/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/296/074/00000/22482926-304B-E711-802D-02163E011E07.root',
0048    '/store/data/Run2017A/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/296/116/00000/8E618859-214C-E711-80E5-02163E01A2CA.root',
0049    '/store/data/Run2017A/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v2/000/296/168/00000/6CD539ED-664C-E711-8ADB-02163E019B32.root',
0050    '/store/data/Run2017A/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v2/000/296/172/00000/4848F119-574C-E711-BECE-02163E01A6C9.root',
0051    '/store/data/Run2017A/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v2/000/296/173/00000/1C60AD2B-6B4C-E711-B956-02163E019D21.root',
0052    '/store/data/Run2017A/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v2/000/296/174/00000/B4CAA428-6F4C-E711-BE3A-02163E019CC4.root',
0053    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/292/00000/D6E5FC1A-2B59-E711-9CDD-02163E0120DD.root',
0054    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/293/00000/CCBA5DE5-2F59-E711-BE7E-02163E0143BC.root',
0055    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/296/00000/F8F2DBC5-2159-E711-94A0-02163E0127C7.root',
0056    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/308/00000/A4CA2410-1A59-E711-9FCC-02163E0129A2.root',
0057    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/316/00000/9CAAA3AC-0859-E711-9B38-02163E014310.root',
0058    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/359/00000/6EC237E0-8859-E711-A1A4-02163E011939.root',
0059    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/411/00000/64D101B3-185A-E711-98BF-02163E01375A.root',
0060    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/424/00000/C6F85109-525A-E711-878D-02163E014135.root',
0061    '/store/data/Run2017B/DoubleMuon/ALCARECO/TkAlZMuMu-PromptReco-v1/000/297/425/00000/D0C30579-4F5A-E711-A637-02163E01445D.root'
0062    ]
0063 )
0064 process.source = cms.Source("PoolSource",
0065                     lumisToProcess = lumiSecs,
0066                     fileNames = readFiles
0067                     )
0068 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(15500))
0069 #process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(-1))
0070 process.source.skipEvents=cms.untracked.uint32(0*-1/1)
0071 process.options = cms.untracked.PSet(
0072   SkipEvent = cms.untracked.vstring( "ProductNotFound" )
0073 )
0074 
0075 strflag="ZMuMu"
0076 strflaglower=strflag.lower()
0077 #strflagopts="TBDconstraint:momconstr"
0078 strflagopts="TBDconstraint:fullconstr"
0079 #strflagopts="NOOPTS"
0080 
0081 from Alignment.HIPAlignmentAlgorithm.OptionParser.HipPyOptionParser import HipPyOptionParser
0082 from Alignment.HIPAlignmentAlgorithm.OptionParser.HipPyOptionParser import matchPSetsByRecord
0083 from Alignment.HIPAlignmentAlgorithm.OptionParser.HipPyOptionParser import mergeVPSets
0084 optpy=HipPyOptionParser(strflag,strflagopts)
0085 
0086 # Track collection name is now interpreted from the flag and may be replaced if an option is specified
0087 # optpy.trkcoll is guaranteed to exist, else python should have already given an error.
0088 strtrackcollname=optpy.trkcoll
0089 
0090 # Replace GT specifics if a custom option is specified
0091 if hasattr(optpy, "GlobalTag"):
0092    process.GlobalTag.globaltag = optpy.GlobalTag
0093 if hasattr(optpy, "GTtoGet"):
0094    process.GlobalTag.toGet = mergeVPSets(process.GlobalTag.toGet, optpy.GTtoGet, matchPSetsByRecord)
0095 
0096 ###############################################################################
0097 # Setup common options
0098 strTTRHBuilder = "WithAngleAndTemplate"
0099 if "generic" in optpy.CPEtype: # CPE type is defaulted to "template" in HipPyOptionParser
0100   strTTRHBuilder = "WithTrackAngle"
0101 ###############################################################################
0102 
0103 import Alignment.CommonAlignment.tools.trackselectionRefitting as TrackRefitterSequencer
0104 
0105 strTBDConstrainer=None
0106 if hasattr(optpy, "TBDconstraint"):
0107    strtbdconstr=optpy.TBDconstraint
0108    if "momconstr" in strtbdconstr:
0109       process.load("RecoTracker.TrackProducer.TwoBodyDecayMomConstraintProducer_cff")
0110       process.TwoBodyDecayMomConstraint.src = "AlignmentTrackSelector"
0111       process.TwoBodyDecayMomConstraint.primaryMass = cms.double(91.1876)
0112       process.TwoBodyDecayMomConstraint.primaryWidth = cms.double(1.4)
0113       #process.TwoBodyDecayMomConstraint.primaryWidth = cms.double(2.4952)
0114       #process.TwoBodyDecayMomConstraint.sigmaPositionCut = cms.double(0.07)
0115       process.TwoBodyDecayMomConstraint.rescaleError = cms.double(1.0)
0116       process.TwoBodyDecayMomConstraint.chi2Cut = cms.double(99999.)
0117       #process.TwoBodyDecayMomConstraint.EstimatorParameters.RobustificationConstant = cms.double(1.0)
0118       strTBDConstrainer="TwoBodyDecayMomConstraint,momentum"
0119 
0120    elif "fullconstr" in strtbdconstr:
0121       process.load("RecoTracker.TrackProducer.TwoBodyDecayConstraintProducer_cff")
0122       process.TwoBodyDecayConstraint.src = "AlignmentTrackSelector"
0123       process.TwoBodyDecayConstraint.primaryMass = cms.double(91.1876)
0124       process.TwoBodyDecayConstraint.primaryWidth = cms.double(1.4)
0125       #process.TwoBodyDecayConstraint.primaryWidth = cms.double(2.4952)
0126       process.TwoBodyDecayConstraint.sigmaPositionCut = cms.double(0.5)
0127       process.TwoBodyDecayConstraint.rescaleError = cms.double(1.0)
0128       process.TwoBodyDecayConstraint.chi2Cut = cms.double(99999.)
0129       #process.TwoBodyDecayConstraint.EstimatorParameters.RobustificationConstant = cms.double(1.0)
0130       strTBDConstrainer="TwoBodyDecayConstraint,trackParameters"
0131 
0132 if strTBDConstrainer is not None:
0133    print("strTBDConstrainer=",strTBDConstrainer)
0134 
0135 process.TrackRefitterSequence = TrackRefitterSequencer.getSequence(
0136    process,
0137    strtrackcollname,
0138    TTRHBuilder = strTTRHBuilder,
0139    usePixelQualityFlag = None, # Keep default behavior ("WithAngleAndTemplate" -> True, "WithTrackAngle" -> False)
0140    openMassWindow = False,
0141    cosmicsDecoMode = False,
0142    cosmicsZeroTesla = False,
0143    #momentumConstraint = None, # Should be a momentum constraint object name or None
0144    momentumConstraint = strTBDConstrainer, # Should be a momentum constraint object name or None
0145    cosmicTrackSplitting = False,
0146    use_d0cut = True
0147    )
0148 
0149 # Override TrackRefitterSequencer defaults
0150 process.HighPurityTrackSelector.pMin   = 0.0
0151 process.AlignmentTrackSelector.pMin    = 0.0
0152 process.AlignmentTrackSelector.ptMin   = 15.0
0153 process.AlignmentTrackSelector.etaMin  = -3.0
0154 process.AlignmentTrackSelector.etaMax  = 3.0
0155 process.AlignmentTrackSelector.nHitMin  = 15
0156 process.AlignmentTrackSelector.minHitsPerSubDet.inPIXEL = cms.int32(1)
0157 process.AlignmentTrackSelector.TwoBodyDecaySelector.daughterMass = 0.105658
0158 process.AlignmentTrackSelector.TwoBodyDecaySelector.minXMass = 80.0
0159 process.AlignmentTrackSelector.TwoBodyDecaySelector.maxXMass = 100.0
0160 
0161 
0162 print(process.TrackRefitterSequence)
0163 subproc=[
0164    "offlineBeamSpot",
0165    "HighPurityTrackSelector",
0166    "FirstTrackRefitter",
0167    "TrackerTrackHitFilter",
0168    "HitFilteredTracksTrackFitter",
0169    "AlignmentTrackSelector",
0170    "TwoBodyDecayConstraint",
0171    "TwoBodyDecayMomConstraint",
0172    "FinalTrackRefitter"
0173    ]
0174 moduleSum=None
0175 for sp in subproc:
0176    if hasattr(process, sp):
0177       print("\n\tAttributes for process.{}".format(sp))
0178       if moduleSum is None:
0179          moduleSum=getattr(process,sp)
0180       else:
0181          moduleSum+=getattr(process,sp)
0182       for v in vars(getattr(process,sp)):
0183          print(v,":",getattr(getattr(process,sp),v))
0184 
0185 process.TrackRefitterSequence = cms.Sequence(moduleSum)
0186 print("Final process path:",process.TrackRefitterSequence)
0187 process.p = cms.Path(process.TrackRefitterSequence)
0188 
0189 
0190 TAG = strflag
0191 if strflagopts:
0192    TAG = TAG + "_" + strflagopts
0193 TAG = TAG.replace(':','_')
0194 TAG = TAG.strip()
0195 print("Output file:","analyzed_{0}.root".format(TAG))
0196 process.Analyzer = cms.EDAnalyzer(
0197    "HIPTwoBodyDecayAnalyzer",
0198    alcarecotracks = cms.InputTag(strtrackcollname),
0199    refit1tracks = cms.InputTag("FirstTrackRefitter"),
0200    refit2tracks = cms.InputTag("HitFilteredTracksTrackFitter"),
0201    finaltracks = cms.InputTag("FinalTrackRefitter")
0202 )
0203 
0204 process.options = cms.untracked.PSet(
0205    SkipEvent = cms.untracked.vstring( "ProductNotFound" )
0206 )
0207 process.TFileService = cms.Service('TFileService',
0208    fileName=cms.string("analyzed_{0}.root".format(TAG))
0209 )
0210 process.outpath = cms.EndPath(process.Analyzer)