Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-26 02:34:40

0001 # This customise file provides an example (in the form of holes in
0002 # BPix L1-L2 and L3-L3) on how to select a subset of generalTracks
0003 # (e.g. by phi and eta) and setup various MTV instances for those
0004 # (selected tracks, built tracks, and seeds in this case). The naming
0005 # of DQM folders is consistent with an example in trackingCompare.py
0006 import FWCore.ParameterSet.Config as cms
0007 
0008 def customiseMTVForBPix123Holes(process):
0009     from Validation.RecoTrack.cutsRecoTracks_cfi import cutsRecoTracks as _cutsRecoTracks
0010     import math
0011     _minPhi = process.trackValidatorTrackingOnly.histoProducerAlgoBlock.minPhi.value()
0012     _maxPhi = process.trackValidatorTrackingOnly.histoProducerAlgoBlock.maxPhi.value()
0013     _nPhi = process.trackValidatorTrackingOnly.histoProducerAlgoBlock.nintPhi.value()
0014     _binPhi = (_maxPhi - _minPhi) / _nPhi
0015     process.generalTracksL1L2 = _cutsRecoTracks.clone(
0016         minLayer = 0,
0017         quality = [],
0018         minRapidity = -1.0, # also eta < -1 is affected, but let's start with this
0019         minPhi=_minPhi+_binPhi*14, maxPhi=_minPhi+_binPhi*19) # ~0.7 .. ~0.2
0020     process.generalTracksL2L3 = process.generalTracksL1L2.clone(
0021         minRapidity = -0.9, maxRapidity = 2,
0022         minPhi=_minPhi+_binPhi*33, maxPhi=_minPhi+_binPhi + 2*math.pi) # ~2.6 .. ~3.3
0023     
0024     print("L1L2 %f %f" % (process.generalTracksL1L2.minPhi.value(), process.generalTracksL1L2.maxPhi.value()))
0025     print("L2L3 %f %f" % (process.generalTracksL2L3.minPhi.value(), process.generalTracksL2L3.maxPhi.value()))
0026     
0027     from CommonTools.RecoAlgos.trackingParticleRefSelector_cfi import trackingParticleRefSelector as _trackingParticleRefSelector
0028     process.trackingParticlesL1L2 = _trackingParticleRefSelector.clone(
0029         signalOnly = False,
0030         chargedOnly = False,
0031         tip = 1e5,
0032         lip = 1e5,
0033         minRapidity = process.generalTracksL1L2.minRapidity.value(),
0034         maxRapidity = process.generalTracksL1L2.maxRapidity.value(),
0035         ptMin = 0,
0036         minPhi = process.generalTracksL1L2.minPhi.value(),
0037         maxPhi = process.generalTracksL1L2.maxPhi.value(),
0038     )
0039     process.trackingParticlesL2L3 = process.trackingParticlesL1L2.clone(
0040         minRapidity = process.generalTracksL2L3.minRapidity.value(),
0041         maxRapidity = process.generalTracksL2L3.maxRapidity.value(),
0042         minPhi = process.generalTracksL2L3.minPhi.value(),
0043         maxPhi = process.generalTracksL2L3.maxPhi.value(),
0044     )
0045     process.tracksPreValidationTrackingOnly += (
0046         process.trackingParticlesL1L2 +
0047         process.trackingParticlesL2L3 +
0048         process.generalTracksL1L2 +
0049         process.generalTracksL2L3
0050     )
0051 
0052     process.trackValidatorTrackingOnlyL1L2 = process.trackValidatorTrackingOnly.clone(
0053         dirName = process.trackValidatorTrackingOnly.dirName.value().replace("Track/", "TrackL1L2/"),
0054         label_tp_effic = "trackingParticlesL1L2",
0055         label_tp_effic_refvector = True,
0056         label = ["generalTracksL1L2"],
0057     )
0058     process.trackValidatorTrackingOnlyL2L3 = process.trackValidatorTrackingOnlyL1L2.clone(
0059         dirName = process.trackValidatorTrackingOnlyL1L2.dirName.value().replace("L1L2", "L2L3"),
0060         label_tp_effic = "trackingParticlesL2L3",
0061         label = ["generalTracksL2L3"],
0062     )
0063     process.trackValidatorsTrackingOnly += (
0064         process.trackValidatorTrackingOnlyL1L2 +
0065         process.trackValidatorTrackingOnlyL2L3
0066     )
0067     for trkColl in process.trackValidatorTrackingOnly.label:
0068         if "ByAlgoMask" in trkColl: continue
0069         if "Pt09" in trkColl and not trkColl in ["generalTracksPt09", "cutsRecoTracksPt09Hp"]: continue
0070         if trkColl != "generalTracks":
0071             selL1L2 = getattr(process, trkColl).clone(src="generalTracksL1L2")
0072             selL2L3 = getattr(process, trkColl).clone(src="generalTracksL2L3")
0073             if "Pt09" in trkColl:
0074                 selL1L2Name = trkColl.replace("Pt09", "Pt09L1L2")
0075                 selL2L3Name = trkColl.replace("Pt09", "Pt09L2L3")
0076             else:
0077                 selL1L2Name = trkColl.replace("cutsRecoTracks", "cutsRecoTracksL1L2")
0078                 selL2L3Name = trkColl.replace("cutsRecoTracks", "cutsRecoTracksL2L3")
0079             setattr(process, selL1L2Name, selL1L2)
0080             setattr(process, selL2L3Name, selL2L3)
0081             process.tracksPreValidationTrackingOnly += (selL1L2+selL2L3)
0082             process.trackValidatorTrackingOnlyL1L2.label.append(selL1L2Name)
0083             process.trackValidatorTrackingOnlyL2L3.label.append(selL2L3Name)
0084             
0085     for midfix in ["Building", "Seeding"]:
0086         label = "trackValidator%sTrackingOnly" % midfix
0087         mtv = getattr(process, label)
0088         mtvL1L2 = mtv.clone(
0089             dirName = mtv.dirName.value()[:-1] + "L1L2/",
0090             label_tp_effic = "trackingParticlesL1L2",
0091             label_tp_effic_refvector = True,
0092             label = [],
0093             mvaLabels = cms.PSet(),
0094             doMVAPlots = False,
0095         )
0096         mtvL2L3 = mtvL1L2.clone(
0097             dirName = mtvL1L2.dirName.value().replace("L1L2", "L2L3"),
0098             label_tp_effic = "trackingParticlesL2L3",
0099         )
0100         setattr(process, label+"L1L2", mtvL1L2)
0101         setattr(process, label+"L2L3", mtvL2L3)
0102         process.trackValidatorsTrackingOnly += (
0103             mtvL1L2 +
0104             mtvL2L3
0105         )
0106         for trkColl in mtv.label:
0107             selL1L2 = process.generalTracksL1L2.clone(src=trkColl)
0108             selL2L3 = process.generalTracksL2L3.clone(src=trkColl)
0109             selL1L2Name = trkColl+"L1L2"
0110             selL2L3Name = trkColl+"L2L3"
0111             setattr(process, selL1L2Name, selL1L2)
0112             setattr(process, selL2L3Name, selL2L3)
0113             process.tracksPreValidationTrackingOnly += (selL1L2+selL2L3)
0114     
0115             mtvL1L2.label.append(selL1L2Name)
0116             mtvL2L3.label.append(selL2L3Name)
0117     
0118     return process