Objectives and timeline:
Timeline → TSG workshop at beginning of November (MUO POG)
- Need to have the new L3 reconstruction sequence implemented, following the previous work by Benjamin. DONE
- Once is implemented, it is needed to compare it with the current L3 sequence. Minimal set of the studies for old/new L3 comparisons: ON-GOING
- Efficiency versus eta, phi, pT, PU ON-GOING + vs dxy and dz in case of displaced muons ON-GOING
- Timing (using Neutrino gun or HLT physics data, depending of what is recommended by STEAM now ) ON-GOING
- Rate comparisons for tracks passing a given pT threshold (QCDMuEnriched, HLTPhysics or ZeroBias if enough stat… ) PENDING
- Track quality variable comparisons (Chi2, dxy, …) for DY and background like muons (QCDMuEnriched, HLTPhysics or ZeroBias if enough stat… ) PENDING
- Comparison of the new L3 tracking with the one used in the Tk muon reco ON-GOING
Timeline → end of the year (TSG)
- Optimize the new L3 reconstruction: ON-GOING
- IO algorithm – ROI DONE
- OI algorithm ON-GOING
- More complete set of studies on performance comparisons using MuXX OR TkMuXX as a FOM, different signal samples should be tested in order to have all possible phase spaces covered: DY, ttbar, close-by-muon , displaced muons, low pT muon (from JPsi) PENDING
- Efficiency versus eta, pT, PU, (for the early studies using DY and displaced muons) + vs dxy and dz in case of displaced muons PENDING
- Timing (using Neutrino gun or HLT physics data, depending of what is recommended by STEAM now ) PENDING
- Rate comparisons for tracks passing a given pT threshold (QCDMuEnriched, HLTPhysics or ZeroBias if enough stat… ) PENDING
- Track quality variable comparisons (Chi2, dxy, …) for DY and background like muons (QCDMuEnriched, HLTPhysics or ZeroBias if enough stat… ) PENDING
- Revise/design a smarter the combination of the out-in and in-out sequence. PENDING
- Ideas/prelim studies on the combination between new L3 and Tk muon reconstruction PENDING
- Have already in place in CMSSW the new L3 sequence using current geometry. PENDING
- Including the new module which runs the TkMu path if the New L3 does not reconstruct the muon successfully. PENDING
- List of unused classes that could be removed from CMSSW when switching to the new L3. PENDING
Final deadline for having integrated in CMSSW, March 2017.
- Switch to new geometry and test everything still works. PENDING
- Clean-up CMSSW by removing unused classes. PENDING
Task list for the next milestone:
Design:
1) Seeding: One inside-out seeding algorithm using
For now we will use 1 seed collection. When we need to know if the seed was IO or OI we can just ask for its direction. We need to think about how the ROI will be created for the seed finding.
The OI algorithm will be a combination of state based and hit based. For OI state based the errors are rescaled, including alignment. For OI hit based we need to consider how many layers should be used, especially in the overlap region.
For the IO hit based algorithm we will reuse all the current tracking code. We need to consider how the window size will be created and whether we use the error matrix when calculating the size.
2) Regional (track) reconstruction
3) Matching
4) Final fit and parameter assignment
5) Filter
In New Design 1 for the production part there are 2 modules (EDProducers). The first produces a collection of L3 Tracks given a L2 muon track collection. The second produces L3 Muon track links collection are matching a L3 track with the L2 track. The following diagram describes the process:
Compared to the current design, described below there are fewer calls to read/write from the event bus (described by the blue bar in these diagrams). One of the motivations to have this in 2 modules instead of one is to perform the check on whether a seed generation algorithm needs to be activated or not by checking the currently available L3 tracks.
OI design and testing
The ouside-in Started with understanding the ouside-in step.
Seed generation: TSGforOI.cc
TrajectoryCandidate: CkfTrackCandidateMaker.cc
TrackProducer: TrackProducer.cc
L3MuonProducer: L3MuonProducer.cc
The important step to optimise/study is the seed generation, the implementation allows for combining trajectory seeds with and without seeds
Comparing the distance between the hit from the seed and the real hit:
Several parameters can be tuned in the seed generation step:
run hybrid / hit seeds
number of seeds
range of TOB, TEC
hits/layers to try
adjust errors dynamically or not
rescaling factors
Optimization
Things to be checked:
- Test extreme cases to make sure things work Unknown User (sfolguer): large/tiny region using TTBar or WJets
- Produce a ROC curve efficiency vs timing
- Define the working point and close this topic.
IO design and testing
Taking all the parameters from the tracker community. Already in the current HLT menu, as it is used for the HLT_TkMu50 path:
fragment.HLTHighPt50TrackerMuonSequence = cms.Sequence( fragment.HLTDoLocalPixelSequence + fragment.HLTDoLocalStripSequence + fragment.hltL1MuonsPt15 + fragment.HLTIterativeTrackingHighPtTkMu + fragment.hltHighPtTkMu50TkFilt + fragment.hltHighPtTkMuons + fragment.hltHighPtTkMuonCands )
fragment.HLTIterativeTrackingHighPtTkMuIteration0 = cms.Sequence( fragment.hltPixelLayerTriplets + fragment.hltIter0HighPtTkMuPixelTracks + fragment.hltIter0HighPtTkMuPixelSeedsFromPixelTracks + fragment.hltIter0HighPtTkMuCkfTrackCandidates + fragment.hltIter0HighPtTkMuCtfWithMaterialTracks + fragment.hltIter0HighPtTkMuTrackSelectionHighPurity )
fragment.HLTIterativeTrackingHighPtTkMuIteration2 = cms.Sequence( fragment.hltIter2HighPtTkMuClustersRefRemoval + fragment.hltIter2HighPtTkMuMaskedMeasurementTrackerEvent + fragment.hltIter2HighPtTkMuPixelLayerPairs + fragment.hltIter2HighPtTkMuPixelSeeds + fragment.hltIter2HighPtTkMuCkfTrackCandidates + fragment.hltIter2HighPtTkMuCtfWithMaterialTracks + fragment.hltIter2HighPtTkMuTrackSelectionHighPurity )
fragment.HLTIterativeTrackingHighPtTkMu = cms.Sequence( fragment.HLTIterativeTrackingHighPtTkMuIteration0 + fragment.HLTIterativeTrackingHighPtTkMuIteration2 + fragment.hltIter2HighPtTkMuMerged )
Optimization
Things to be checked:
- Test extreme cases to make sure things work Unknown User (sfolguer): large/tiny region using TTBar or WJets
- Produce a ROC curve efficiency vs timing
- Define the working point and close this topic.
MasterMuonTrackingRegionBuilder = cms.PSet(
Rescale_eta = cms.double( 3.0 ),
Rescale_phi = cms.double( 3.0 ),
Rescale_Dz = cms.double( 4.0 ), #Normally 4
EscapePt = cms.double( 3.0 ), #Normally 1.5 but it should be at least 8 for us
EtaR_UpperLimit_Par1 = cms.double( 0.25 ), #Normally 0.25
EtaR_UpperLimit_Par2 = cms.double( 0.15 ), #Normally 0.15
PhiR_UpperLimit_Par1 = cms.double( 0.6 ), #Normally 0.6
PhiR_UpperLimit_Par2 = cms.double( 0.2 ), #Normally 0.2
UseVertex = cms.bool( False ), #Normally False
Pt_fixed = cms.bool( False ), #Normally True
Z_fixed = cms.bool( False ), #True for IOH
Phi_fixed = cms.bool( True ), #False for IOH
Eta_fixed = cms.bool( True ), #False for IOH
Pt_min = cms.double( 3.0 ), #Is 0.9 for Tau; normally 8 here
Phi_min = cms.double( 0.1 ),
Eta_min = cms.double( 0.1 ),
DeltaZ = cms.double( 24.2 ), #default for tau: 24.2, for old IOH: 15.9
DeltaR = cms.double( 0.025 ), #This changes for different iterations. for old IOH: ?
DeltaEta = cms.double( 0.04 ), #default 0.15
DeltaPhi = cms.double( 0.15 ), #default 0.2
maxRegions = cms.int32( 2 ),
precise = cms.bool( True ),
OnDemand = cms.int32( -1 ),
MeasurementTrackerName = cms.InputTag( "hltESPMeasurementTracker" ),
beamSpot = cms.InputTag( "hltOnlineBeamSpot" ),
vertexCollection = cms.InputTag( "pixelVertices" ), #Warning: I am not generating colleciton. Vertex is off anyway
input = cms.InputTag( 'hltL2Muons','UpdatedAtVtx' )
)
fragment.HLTPSetMuonTrackingRegionBuilder8356 = cms.PSet(
Rescale_eta = cms.double( 3.0 ), Rescale_phi = cms.double( 3.0 ), Rescale_Dz = cms.double( 3.0 ), EtaR_UpperLimit_Par1 = cms.double( 0.25 ), EtaR_UpperLimit_Par2 = cms.double( 0.15 ), PhiR_UpperLimit_Par1 = cms.double( 0.6 ), PhiR_UpperLimit_Par2 = cms.double( 0.2 ), UseVertex = cms.bool( False ), Pt_fixed = cms.bool( False ), Z_fixed = cms.bool( True ), Phi_fixed = cms.bool( False ), Eta_fixed = cms.bool( False ), Pt_min = cms.double( 1.5 ), Phi_min = cms.double( 0.1 ), Eta_min = cms.double( 0.1 ), DeltaZ = cms.double( 15.9 ), DeltaR = cms.double( 0.2 ), DeltaEta = cms.double( 0.2 ), DeltaPhi = cms.double( 0.2 ), maxRegions = cms.int32( 2 ), precise = cms.bool( True ), OnDemand = cms.int32( -1 ), MeasurementTrackerName = cms.InputTag( "hltESPMeasurementTracker" ), beamSpot = cms.InputTag( "hltOnlineBeamSpot" ), vertexCollection = cms.InputTag( "pixelVertices" ), input = cms.InputTag( 'hltL2Muons','UpdatedAtVtx' ) )
Making a ROC curve:
Efficiency (WJets) vs Timing (HLTPhysics)
## Eficiency:
ssh -X lxplus
/afs/cern.ch/user/f/folguera/workdir/MUO/CMSSW_8_0_19/src/MuonHLT/MuonHLTDebugger/test/ROI
cmsRun myHLT_Mu50_withL3_IO_0p6_0p6_0p6_Fix.py &>myHLT_Mu50_withL3_IO_0p6_0p6_0p6_Fix.log&
## Timing:
ssh -X vocms003
cd /data/user/folguera/CMSSW_8_0_19/src/TimingScripts/test/ROI
nohup taskset -c 1 cmsRun myHLT_Mu50_withL3_IO_0p2_0p2_0p2_Fix.py >& myHLT_Mu50_withL3_IO_0p2_0p2_0p2_Fix.log&
16/10/10 22:49 : picked dynamic 0p2 size, increasing pt_min to 3.0 GeV and improved timing, check if I can improve offs.
Performance studies
All the plots can be found here: https://folguera.web.cern.ch/folguera/private/MUO/161024/NewIOvsIOH/