Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New KF (hand merged with L1TK-dev-12_0_0_pre4) #88

Merged
merged 32 commits into from
Oct 24, 2021

Conversation

tschuh
Copy link

@tschuh tschuh commented Jul 30, 2021

replaces #51
This PR contains my current code base and allows to run the KF after the Tracklet Pattern Reconstruction.

If you want to run the code check out

L1Trigger/TrackerDTC
L1Trigger/TrackerTFP
L1Trigger/TrackFindingTracklet
L1Trigger/TrackTrigger
DataFormats/L1TrackTrigger
SimTracker/TrackTriggerAssociation

from branch tschuh12 and run after compiling L1Trigger/TrackFindingTracklet/test/HybridTracksNewKF_cfg.py Events=10

Things that changed in DTC code:

  • some debugging of the hybrid stubs
  • some renaming and restructuring

@tschuh tschuh mentioned this pull request Jul 30, 2021
@tomalin
Copy link
Collaborator

tomalin commented Jul 30, 2021

If the comments from #51 describing this PR are still accurate please add them to the comment at the top of this PR.

@tomalin tomalin self-requested a review August 6, 2021 11:19
@@ -0,0 +1,117 @@
#include "L1Trigger/TrackerTFP/interface/LayerEncoding.h"
#include "L1Trigger/TrackerDTC/interface/SensorModule.h"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Is it intentional that a class named LayerEncoding should exist both in TrackerTFP/ and in TrackerDTC/
  2. The one in TrackerDTC/ does not compile, because it tries including the non-existant file L1Trigger/TrackerDTC/interface/SensorModule.h . A file of this name does exist in L1Trigger/TrackTrigger/ .

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, fixed it. When I shall change a name of a class please let me know to what.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The two versions of LayerEncoding are protected by different namespaces, so should be OK. You are best placed to judge if they deserve different names.

if (setup_->configurationSupported()) {
Handle<StreamsStub> handleStubs;
iEvent.getByToken<StreamsStub>(edGetTokenStubs_, handleStubs);
const StreamsStub& streamsStubs = *handleStubs.product();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The compiler says that variables streamsStubs, streamsTracks & ttTrackRefMap are defined, but never used. Can we delete them, or are they included as they might be useful in future?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That class is a skeleton for Chris, he has already started to fill the class in his branch but is not finished yet.

@@ -36,14 +39,33 @@ using TTTrackPtrT = edm::Ptr<TTTrack<T> >;
/// Specialized aliases
typedef edm::Ref<edm::DetSetVector<Phase2TrackerDigi>, Phase2TrackerDigi> Ref_Phase2TrackerDigi_;

typedef edmNew::DetSet<TTStub<Ref_Phase2TrackerDigi_> > TTStubDetSet;
typedef edmNew::DetSetVector<TTCluster<Ref_Phase2TrackerDigi_> > TTClusterDetSetVec;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There seems to be git problems here. Hopefully this is a one off error. Your new code is deleting improvements made by other people and restoring older versions of the code. e.g. The definitions of TTClusterDetSetVec, TTStubDetSetVec, TTClusterRef & TTStubRef are no longer using the more compact templated aliases.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@tomalin
Copy link
Collaborator

tomalin commented Sep 23, 2021

I've verified (by eye) that no other code has been lost due to git errors.

@@ -0,0 +1,10 @@
import FWCore.ParameterSet.Config as cms

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All cfi files should have a comment at start explaining what they are for. As we already have a TTStubAssociation_cfi.py, the comment here should make clear the difference between the two.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

import FWCore.ParameterSet.Config as cms

StubAssociator_params = cms.PSet (
UseTTStubAssMap = cms.bool ( False ), #
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The meaning of "UseTTStubAssMap" is not clear. A comment should make clear that either the association is taken from TTStubAssociation or from xyz, where xyz needs stating.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@tomalin
Copy link
Collaborator

tomalin commented Sep 23, 2021

Please do: "git cms-checkout-topic -u cms-L1TK:L1TK-dev-12_0_0_pre4; git cms-rebase-topic -u cms-L1TK:tschuh12" to update your branch with two small PRs made by other people.

@tomalin
Copy link
Collaborator

tomalin commented Sep 30, 2021

The job L1Trigger/TrackFinderTracklet/test/L1TrackNtupleMaker_cfg.py no longer runs, as it includes the line (L111) " process.load('L1Trigger.TrackerDTC.ProducerES_cff')", which attempts to access a non-existant file. I think this line can just be deleted.

# create options
import FWCore.ParameterSet.VarParsing as VarParsing
options = VarParsing.VarParsing( 'analysis' )
# specify input MC
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To avoid needing to list lots of MC samples here, copying style of L1TrackNtupleMaker_cfg.py, replace this by:

specify input MC

#--- To use MCsamples scripts, defining functions getdata() for easy MC access,
#--- follow instructions in https://github.com/cms-L1TK/MCsamples
#from MCsamples.Scripts.getCMSdata_cfi import *
#from MCsamples.Scripts.getCMSlocaldata_cfi import *

Read data from card files (defines getCMSdataFromCards()):

#from MCsamples.RelVal_1130_D76.PU200_TTbar_14TeV_cfi import *
#inputMC = getCMSdataFromCards()

Or read .root files from directory on local computer:

#dirName = "$myDir/whatever/"
#inputMC=getCMSlocaldata(dirName)

Or read specified dataset (accesses CMS DB, so use this method only occasionally):

#dataName="/RelValTTbar_14TeV/CMSSW_11_3_0_pre6-PU_113X_mcRun4_realistic_v6_2026D76PU200-v1/GEN-SIM-DIGI-RAW"
#inputMC=getCMSdata(dataName)

Or read specified .root file:

inputMC = [
'/store/relval/CMSSW_11_3_0_pre6/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_113X_mcRun4_realistic_v6_2026D76PU200-v1/00000/00026541-6200-4eed-b6f8-d3a1fd720e9c.root'
]
options.register( 'inputMC', inputMC, VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, "Files to be processed" )

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last time I put something into an official release the reviewers where not happy with me storing root files in a separate file and forced my to do it who it is done right now. Did you double check if using your MC samples script method will pass official cmssw code review?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does also not feel appealing that I have to additionally checkout something from somewhere. Is there a chance that these scripts will make it into a release?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This python fragment is already in the official CMSSW release in L1TrackNtupleMaker_cfg.py. The MCsamples code is commented out so that the job runs without needing to check anything out, but that it is as easy as possible to use the MCsamples tools. We can't commit the MCsamples tools to central CMSSW, as they contain lists of MC datasets, which are not allowed there.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@tomalin
Copy link
Collaborator

tomalin commented Sep 30, 2021

  1. L1TrackNtupleMaker_cfg.py run on 1k ttbar+200PU events says efficiency = 94.8%.
  2. HybridTracksNewKF_cfg.py on same MC says in end-of-job summary that efficiency = 95.0% after KFin, but this drops to 90.0% after KF and to 0% after KFout.
  3. HybridTracksNewKF_cfg.py rerun with "UseTTStubAssMap = False" says in end-of-job summary that efficiency = 94.8% after KFin, dropping to 94.6% after KF and to 0% after KFout.

Is the poor performance of (2) understood? And why do both (2) & (3) have zero efficiency after KFout? Both (2) & (3) also report zero tracks found after KFout.

@tschuh
Copy link
Author

tschuh commented Sep 30, 2021

Could you run L1TrackNtupleMaker_cfg.py with new KF so that we have a full picture? I never tested UseTTStubAssMap = True setting extensively, might be buggy. Efficiency after KFout is 0 because KFout is missing.

@tomalin
Copy link
Collaborator

tomalin commented Oct 1, 2021

If KFout is not run in Hybrid, then I recommend that the printout for it should be suppressed in the Hybrid end-of-job summary. Though if it is not run, how can the KFout FW module be validated?

@tomalin
Copy link
Collaborator

tomalin commented Oct 1, 2021

Please add a PoolOutputModule to HybridTracksNewKF_cfg.py, so that the TTTracks it makes can be studied on run through the L1TrackNtupleMaker. Either comment out the PoolOutputModule (so not run by default), or use a python boolean as in L1TrackNtupleMaker_cfg.py to enable/disable it.

@tomalin
Copy link
Collaborator

tomalin commented Oct 7, 2021

Are there somewhere READMEs for Trigger/TrackFindingTracklet or Trigger/TrackFindingTMTT which I could use as template?

I wouldn't advise using TrackFindingTMTT/README.md as a template. But your code is unusually complex, so your README.md should give people an indication of what its key ingredients are and where they can be found. #51 (comment) mentions some of these.

There are also a few details, that may be worth explaining. e.g. https://github.com/cms-L1TK/cmssw/blob/tschuh12/L1Trigger/TrackTrigger/python/ProducerSetup_cfi.py#L11 specifies the tracker geometry. When & how do these cfg params need updating as CMS releases new Tracker geometries?

@tomalin
Copy link
Collaborator

tomalin commented Oct 12, 2021

Update on tracking performance with L1TrackNtupleMaker_cfg.py on 1k ttbar+200PU, with performance obtained from L1TrackNtuplePlot.cc

  1. TMTT (old emulation): efficiency = 96.0%; no. reco tracks = 223
  2. Tracklet: efficiency = 95.5%; no. reco tracks = 175
  3. Hybrid (old KF): efficiency = 94.8%; no. reco tracks = 166
  4. Hybrid (new KF): efficiency = 95.5%; no. reco tracks = 165

This all seems good. And the New KF is performing better than the old one. However, if I look at the end-of-job summary of KF of (4), it says:

4a) Hybrid (new KF): efficiency = 94.9%, no. reco tracks per TFP = 21.4, so 21.4*9 = 192.6 in total

The reason that (4a) reports more tracks (4) is that L1TrackNtuplePlot.c doesn't count tracks with Pt < 2 GeV or eta > 2.4. (I'll investigate how to fix this).

The reason (4a) reports lower efficiency than (4) is that AnalyzerKF.cc doesn't allow up to 1 incorrect 2S stub on the track. If I remake the result (4) after configuring the association to allow 0 incorrect 2S stubs, its reported efficiency drops to 94.8%.

@tomalin
Copy link
Collaborator

tomalin commented Oct 12, 2021

On related topic: the KF end-of-job summary will go wrong if the New KF is modified in future to allow > 4 stubs per track. A suggestion to fix this #51 (comment) has not been addressed.

@tschuh
Copy link
Author

tschuh commented Oct 12, 2021

Could you please read my README and give me feedback?

@cms-L1TK cms-L1TK deleted a comment from tschuh Oct 13, 2021
@tomalin
Copy link
Collaborator

tomalin commented Oct 13, 2021

Could we make end-of-job printout configurable, so it could quote efficiencies either allowing 1 incorrect 2S stub (to give official numbers) or with 0 incorrect 2S stub (which I understand is helpful for debugging)?

@tschuh
Copy link
Author

tschuh commented Oct 15, 2021

I think that is not needed. It should now report the official number at the end and when I do a debug session I can change that to what I need for that time period.

English corrections
@tomalin
Copy link
Collaborator

tomalin commented Oct 15, 2021

Could you please read my README and give me feedback?

The README looks a good start. I committed to it a few English corrections. I also added a few "CHECK" statements. Please check these and fix them.

/*! \class tt::StubAssociator
* \brief Class to associate reconstrucable TrackingParticles with TTStubs and vice versa.
* It may associate multiple TPs with a TTStub and can therefore be used to associate
* TTTracks with TrackingParticles.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment should make clear that "This EDProducer creates two StubAssociation EDProducts, one using only TP that are "reconstructable" (produce stubs in a min. number of layers) & one using TP that are also "use for the tracking efficiency measurement" (also pass kinematic requirements).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

InputTagTTStubDetSetVec = cms.InputTag( "TTStubsFromPhase2TrackerDigis", "StubAccepted" ), #
InputTagTTClusterAssMap = cms.InputTag( "TTClusterAssociatorFromPixelDigis", "ClusterAccepted" ), #
InputTagTTStubAssMap = cms.InputTag( "TTStubAssociatorFromPixelDigis", "StubAccepted" ), #
BranchReconstructable = cms.string ( "Reconstructable" ), #
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add comment explaining that BranchReconstrucable & BranchSelection are the names of the two output StubAssociation collections, made with reconstruction and "used for tracking efficiency" TrackingParticles.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

EDGetTokenT<StreamsStub> edGetTokenLostStubs_;
// ED input token of lost Tracks
EDGetTokenT<StreamsTrack> edGetTokenLostTracks_;
// ED input token of TTStubRef to selected TPPtr association
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word "selected" here is not very informative. One needs "selected for tracking efficiency". Similar comment in other analyzers.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

MaxVertR = cms.double( 1. ), # cut on vertex pos r in cm
MaxVertZ = cms.double( 30. ), # cut on vertex pos z in cm
MaxD0 = cms.double( 5. ), # cut on impact parameter in cm
MinLayers = cms.int32 ( 4 ), # required number of associated layers to a TP to consider it reconstruct-able
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe MinLayers is used both (1) to decide which TP are used in the denominator of the tracking efficiency, and (2) to determine the minimum number of layers that a TP & L1 track must share stubs in for the L1 track to be considered as reconstructed. The comment should make this clear. (And also for the other params here if the same is true for them).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@tomalin
Copy link
Collaborator

tomalin commented Oct 17, 2021

With the latest code, the end-of-job number (4a) doesn't change, so still disagrees with the number (4) from the L1TrackNtupleMaker.cc. The reason for this is that (4a) requires the L1 track to share stubs in at least 4 layers with the TP, in order for it to be considered as reconstructed, and so count in the numerator of the tracking efficiency. This differs from (4), which will accept the TP in the numerator if it shares stubs in only 3 layers with the L1 track, and the L1 track had one additional fake 2S stub.
I suspect your definition of efficiency makes more sense. I'll arrange a discussion of this.

@tomalin
Copy link
Collaborator

tomalin commented Oct 18, 2021

After above fixes, L1Trigger/TrackFindingTMTT/test/test_cfg.py on 100 ttbar+200PU events gives for TMTT (New KF) algo end-of-job summary says KF has 91.1% efficiency (2.2% truncation), KFin has 94.5% efficiency (no truncation), ZHT has 94.8% efficiency (no truncation), MHT has 95.8% efficiency (no truncation), HT has 97.2% efficiency (no truncation), GP has 99.4% efficiency. Presumably due to not being optimised.

@tomalin
Copy link
Collaborator

tomalin commented Oct 20, 2021

Please indicate which of the comments above you have addressed.

@tomalin
Copy link
Collaborator

tomalin commented Oct 20, 2021

This comment about the tracker geometry #51 (comment) should be addressed. -- As the SupportedGeometry cfg paramin TrackTrigger/python/ProducerSetup_cfi.py refers to one specific geom, I'm concerned that the code may break when a new tracker geometry is released. We need a recipe to keep "SupportedGeometry" up to date.

Similarly, if the geometry changes, so that the geometrical constants in L1Trigger/TrackTrigger/python/ProducerSetup_cfi.py , such as Disk2SRsSet are incorrect, what will happen? Will the code go completely wrong, or just very slightly wrong? And will there be any warning messages? Where do these numbers come from?

tschuh and others added 2 commits October 20, 2021 12:09
* Initial Commit for Kfout emulator

* with ttTrackRefMap back in

* Correct link structure and eta routing

* No more print statements

* Remove print statements

* Merge changes in kfout producer

* Thomas' comments #1

* Thomas' comments #2

* Change dphi/dz LUT scaling to num of bits

* Fix bug to phi sector correction

* sync with FW fix

* Commit of distribution server for clock accuracy

* Fix to undefined operation on numLinkTracks

* Fix to numLinkTracks #2
elif (L1TRKALGO == 'HYBRID_NEWKF'):
process.load( 'L1Trigger.TrackFindingTracklet.ProducerKF_cff' )
NHELIXPAR = 4
L1TRK_NAME = process.TrackFindingTrackletProducerKF_params.LabelTT.value()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As the KFout module now produces tracks, I'd expect we need to change L1TRK_NAME to use "labelKFout" instead of "labelTT", to ensure the L1TrackNtuplePlot.cc tool runs on the KFout EDProduct. However, doing this crashes with error:

Principal::getByToken: Found zero products matching all criteria
Looking for type: std::vector<TTTrack<edm::Ref<edm::DetSetVector,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector > > >
Looking for module label: TrackFindingTrackletProducerKFout
Looking for productInstanceName: TrackAccepted

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you really want that we could add a TTTrackCollection as ED Product to the KFout EDProducer. Do you want this done for this PR?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand now that ProducerTT is the only module that outputs a TTTrackCollection, with the other KF modules outputting StreamsTrack. If the KFout module introduces any truncation, then I assume it would be necessary for KFout to produce the final TTTrack collection. But we can neglect this for now.

Copy link
Collaborator

@tomalin tomalin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've verified that the code gives good results, (aside from TMTT + NewKF combination, which is not yet tuned), and the code though complex, is well written.

Two minor issues to note for future:

  1. If KF cfg param MaxLayers is changed to 6, Hybrid gives poor performance. Bug.
  2. If KFout module causes any truncation, then TTTrack production should be added to KFout.

I also have the impression that some comments from #51 were neglected, so please recheck these as time allows.

@tomalin tomalin merged commit 0a352c8 into L1TK-dev-12_0_0_pre4 Oct 24, 2021
@tschuh tschuh deleted the tschuh12 branch December 8, 2021 17:26
tomalin pushed a commit that referenced this pull request Jul 8, 2022
Include commit from fw_synch_210611 (#86)

* Fixes to remove unused TPROJ memory and fix problem with VMR LUT in L6

* apply code-formats and code-checks

Co-authored-by: Anders <aryd@cern.ch>

Update Settings.h (#89)

TE truncation reduced from 108 to 107, as requested in #85

Update geometry and MC files (#91)

L1 tk dev 12 0 0 pre4 hph (#94)

* First Commit

* Code Format

* Fix Typo

* Naming Rule

* Chris' 2nd Comment

Co-authored-by: Jack Li <jingyan.li@cern.ch>

Reduced configuration (#87)

* Modified code to support a reduced config (the summer chain)

* Updates from running code checker.

* Reverted to standard configuration options.

* Reverted to standard configuration options.

* Settings used to make TV for event 1912

* Reverted to default settings for PR.

* Made some of the TV changes in issue 85, and created output TVs 2021-08-04-TTbar-SimpleFWHarmonization.

* Clarified comments

* Include commit from fw_synch_210611 (#86)

* Fixes to remove unused TPROJ memory and fix problem with VMR LUT in L6

* apply code-formats and code-checks

Co-authored-by: Anders <aryd@cern.ch>

* Returning to standard config.

* Returning to standard config.

* Returning to standard config.

* Update geometry and MC files (#91)

* Included reduced variable in non-reduced setups for consistency.

* Updated settings to match default configuration rather than HLS compatibility

* Added comment about reduced config files

Co-authored-by: Tova Holmes <tholmes@cern.ch>
Co-authored-by: Louise Skinnari <louise.skinnari@cern.ch>
Co-authored-by: Anders <aryd@cern.ch>
Co-authored-by: Ian Tomalin <ian.tomalin@stfc.ac.uk>

Revert "L1 tk dev 12 0 0 pre4 hph (#94)" (#95)

This reverts commit 3b2f139.

fix getPhiRes function (#97)

New KF (hand merged with L1TK-dev-12_0_0_pre4) (#88)

* initial commit.

* renamed KFout producer to TT producer

* KFout producer and analyzer added. Producer is so far only a skeleton.

* small includings fix.

* quick TTTypes fix

* comments for ian

* initial commit.

* renamed KFout producer to TT producer

* KFout producer and analyzer added. Producer is so far only a skeleton.

* small includings fix.

* quick TTTypes fix

* comments for ian

* small script modifications

* little ntuple maker mod.

* readding fake fit config interface.

* track tigger association added, not in the best way.

* tttrack associator added as it should be.

* option to use TTStubAssMap to associate TTTracks with TPs removed and output module cleaned up.

* Added Hybrid_NewKF

* Added comment

* Update L1TrackNtupleMaker_cfg.py

fix typo made by Ian

* added tmtt costumization and fakefit option to tracklet config

* data format fix

* README filled and Configuration.StandardSequences.L1TrackTrigger_cff removed from run scripts.

* associateFinal added to StubAssociation.

* Update README.md

English corrections

* minor changes in various comments.

* KF 7 layer tracking debugged and defaulted.

* turned supported geometry white list into a black list.

* Cbrown kfout (#93)

* Initial Commit for Kfout emulator

* with ttTrackRefMap back in

* Correct link structure and eta routing

* No more print statements

* Remove print statements

* Merge changes in kfout producer

* Thomas' comments #1

* Thomas' comments #2

* Change dphi/dz LUT scaling to num of bits

* Fix bug to phi sector correction

* sync with FW fix

* Commit of distribution server for clock accuracy

* Fix to undefined operation on numLinkTracks

* Fix to numLinkTracks #2

Co-authored-by: Ian Tomalin <ian.tomalin@stfc.ac.uk>
Co-authored-by: Chriisbrown <41648127+Chriisbrown@users.noreply.github.com>

fix of KFin EnableTruncation option. (#99)

* quick fix of KFin EnableTruncation option.

* both, enable and disabel truncation fixed.

Fix to KF out for multiple KF workers (#100)

code-format, llvm-ccdb and clang-tidy (#103)

Fixed clang errors (#104)

several bug fixes. (#108)

* bug fixes.

* code format

* GlobalTag update.

* forgot a bug fix in AnalyzerDemonstrator.

add number of TTCluster to DTC analzyer end job summary (#109)

* count of TTCluster added to endjob summary printout.

* rebase to L1TK-dev-12_0_0_pre4 and code format.

Added git CI (#106)

* Added git CI

* Run CI on PR to any branch

* Make L1TRKALGO configurable

* tweak

* Added script to skim MC datasets for git CI

* Remove L1TRKALGO option

* Gave CI more sensible name

Update github_CI.yml

temporary debug check

Memory cleanup (#98)

* Cleanup of writing leading 0x in memories

* Cleanup of obsolote comment

* Change order of input links to match VMRouter expectation

* Add support for debugging

* Remove one pipelining step to match HLS

* Determine the PS vs 2S in disks same way as we do in HLS

* Some cleanup

* Correction to LUT code

* Comment out printout

* Ran scram build code-format

* Update comment about IR steps

* Cleanup of obsolote comment

* Remove one pipelining step to match HLS

* Determine the PS vs 2S in disks same way as we do in HLS

* Correction to LUT code

* Ran scram build code-format

phiprojder bug fix (#116)

Channel Assignment TrackBuilder output Tracks + Stubs and InputRouter input Stubs (#110)

* track builder channel upgraded to assign stubs to channel.

* code format

* readded missing pieces.

* renamed TrackBuilderChannel to ChannelAssignment now also containing DTC to IR mapping

* name change in L1Trigger/TrackFindingTracklet/python/ProducerKF_cff.py

* bug fix

* name change of config parameter

* code-format

* namespace change and consitency check added.

* addressing ians comments

* addressing ians comments

TP_minPt and binning fix (#118)

Updated VMR maxstep to 107 (originally 108) to match firmware (#119)

Minor improvements (#120)

* Minor improvements

* Added comments

Dropped MC to 104 iterations (#123)

- Full agreement with HLS

Fixing integer range check in FPGAWord. (#125)

* fixing integer range check in FPGAWord.

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* Slight rewerite to use <= instead < and not do subtracktion

* Fix < to <= to avoid overflow by one

Co-authored-by: Brent R. Yates <brentRyates@gmail.com>
Co-authored-by: Anders <aryd@cern.ch>

Fix KF Track Parameter Digitization (#127)

* Fix KF Track Parameter Digitization

* Add comments to Track.h

summer chain demonstrator (#111)

* track builder channel upgraded to assign stubs to channel.

* renamed TrackBuilderChannel to ChannelAssignment now also containing DTC to IR mapping

* ProducerIRin and ProducerTBout added, Demonstrator configured by default to use them.

* rebase with tschuh_TrackBuilder and code format

* StreamsStub added as EDProduct of L1FPGATrackProducer

* code format.

* convert only finally accepted Tracklets to StreamsStub.

* undo last commit, adding trackword ed product and adding gaps to stubs and tracks to get clock accurate emulation.

* swap bugfix.

* rebased and name change of TrackBuilderChannel adopted.

* fixing rebase errors.

* fixing more rebase errors.

* fixing even more rebase errors.

* first comments from Ian.

* code format

* second comments from Ian.

* code format

* Ians third comments.

* Ians 4th comments.

* small merge error fix

* Added comment

* Refine comment

* miniscule comment change

Co-authored-by: Ian Tomalin <ian.tomalin@stfc.ac.uk>

Fixed comparisons to avoid overflow. (#128)

MP HLS agreement fixes (#126)

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* Fixes to get agreement with HLS code

* fixing integer range check in FPGAWord.

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* Slight rewerite to use <= instead < and not do subtracktion

Co-authored-by: Brent R. Yates <brentRyates@gmail.com>
Co-authored-by: Thomas Schuh <thomas.schuh@stfc.ac.uk>

Update Settings.h (#130)

Fix "storeTrackBuilderOutput_" typo

Update Setup.cc (#129)

Change trackerDTC::Setup to tt::Setup . (Bug fix)

Update LayerEncoding.h (#131)

* Update LayerEncoding.h

Add function to access layer corresponding to given DTC channel. (Needed by L1Trk Future CMSSW code).

* Update LayerEncoding.h

response to comment + fix to previous commit

* Update LayerEncoding.cc

Initialize data member numDTCsPerRegion_

* Update LayerEncoding.h

added comment

* Update LayerEncoding.h

clarified comment

Test vector fixes (#132)

* Made eventProcessor a member of the producer.

* Output TC tables in the reduced config.

MP cleanup 220208 + MC fix (#133)

* fixing integer range check in FPGAWord.

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* Slight rewerite to use <= instead < and not do subtracktion

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* Some updates to MP to converge with HLS code

* Further clenup of the MP code

* More cleanup -removal of hardcoded numbers

* Further cleanup

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* fixing integer range check in FPGAWord.

* Fixing `zmatchcut_` for L1 and L2

* Undo the -0.06 in Settings.h as there is a cleaner fix to the overflows

* Slight rewerite to use <= instead < and not do subtracktion

* Some updates to MP to converge with HLS code

* Further clenup of the MP code

* More cleanup -removal of hardcoded numbers

* Further cleanup

* Fixes to the MC to allow full agreement with HLS

* Added a comment header and pipeline description

* Added comment about MC iterations

Co-authored-by: Thomas Schuh <thomas.schuh@stfc.ac.uk>
Co-authored-by: Anders <aryd@cern.ch>

customize L1FPGATrackProducer (#112)

* track builder channel upgraded to assign stubs to channel.

* renamed TrackBuilderChannel to ChannelAssignment now also containing DTC to IR mapping

* StreamsStub added as EDProduct of L1FPGATrackProducer

* code format.

* convert only finally accepted Tracklets to StreamsStub.

* undo last commit, adding trackword ed product and adding gaps to stubs and tracks to get clock accurate emulation.

* swap bugfix.

* rebased and name change of TrackBuilderChannel adopted.

* fixing rebase errors.

* fixing more rebase errors.

* fixing even more rebase errors.

* track builder channel upgraded to assign stubs to channel.

* renamed TrackBuilderChannel to ChannelAssignment now also containing DTC to IR mapping

* StreamsStub added as EDProduct of L1FPGATrackProducer

* rebased and name change of TrackBuilderChannel adopted.

* criteria to build track updated, TBout works now for all seed types.

* StreamsStub added as EDProduct of L1FPGATrackProducer

* use customize function to manipulate L1FPGATrackProducer configuration

* rebase to tschuh_SummerChain, customize updated to set EmulateTB, demonstrator counts now the amount of passed events.

* initial counter values fixed.

* rebase and reduce config customize function extended

* fixing merge errors.

* Ians first comments.

* rebase and Ians secodn comments.

* Update ChannelAssignment_cfi.py

* Ians third comments.

* Ians fourth comments.

Co-authored-by: Ian Tomalin <ian.tomalin@stfc.ac.uk>

Update Customize_cff.py (#135)

TBout analyzer (#114)

* Reviewed.

* one merge error fixed, but a problem remains

* fixed second error.

* Update AnalyzerTBout.cc

Co-authored-by: Ian Tomalin <ian.tomalin@stfc.ac.uk>

Fix d0 bias (#124)

* Fix d0 bias

* Documented KF maths and variables

Ian tidy up (#137)

* Added function to convert ATCA slot to DTC name

* Moved dtcname to Settings.h and put underscore at end of settings

* Declared functions const if dont change data members

* Added comments to clarify params overridden by python cfg

* Added comment

* Removed duplicate function TCNAme

disable truncation for displaced tracking (#142)

DTC phi range hard-wired constants removed (#141)

* Added function to get num ATCA slots

* Added comment

* Automatically calc DTC phi ranges

* Improved comments

* Added comment

* Simplified phi offset calc

* Fixed missing half-sector rotation bug

* Added comments

* Changed dtcphirange.txt to numbers instead of C++ code

Displaced tracking phi fix (#147)

* usephiapprox on modify NtupleMaker cfg for grid jobs

* added displaced terms to phi calculation in TrackletCalculatorDisplaced

* reverting changes unrelated to phi correction

Jack hph (#146)

* First Commit

* Code Format

* Fix Typo

* Naming Rule

* Chris' 2nd Comment

* Fixing Bug

* Ian's 1st Comments

* Ian's 2nd Comment: Remove SensorModule Class

* Ian's 3rd comment: Get rid of magic numbers

* Ian's 4th Comment: Add more clarification

* Code-check

Co-authored-by: Jack Li <jingyan.li@cern.ch>

Adding new features to ntuplemaker (#148)

Co-authored-by: Jack Li <jingyan.li@cern.ch>

Update StubAssociation.cc (#145)

as requested a separate PR.

Update github_CI.yml

Fixed incorrect comment

KFin emulator (#143)

* initial commit.

* move ProducerTBout.cc from test to plugins

* KFin fully debugged.

* Producer TBout added to NTupleMaker

* chriss change to KFout

* Louises first comments.

* fixing rebase errors.

* KF reintegrated, stub residuals are not bit accurate yet.

* code format.

* added 1k ttbar@0PU events for internal kf maths tuning.

* Track builder r residual debug and KF digi function corrected.

* bug in z residual base fixed.

* Ians first comments.

* Ians secodn comments.

* recalculate z ressid from TTStubRefs, use TTStubRefs for seed stubs instead of fake stubs.

* Ians third comment.

* fixed comments TTDTC::Frames -> tt::Frames

* old stub uncertainty caclulation re-enabled.

* Ians 4th comments.

* code-checks.

* tilted stub z uncertainty fixed. not yet debugged against f/w.

* set max layers a kff adds to a track to 7 as we did in the past, no clue why it is 4 again ...

* agrrement with f/w, ready to merge.

Fix rare crash in KF (#151)

* Fix rare crash in KF

* Fixed line break

Removed obsolete parameter. (#152)

quick ntuple fix (#153)

* L1TrackNtupleMaker_cfg.py updated reduced workflow.

* further cleaning.

Update L1TrackNtupleMaker_cfg.py

fixed typo

Removal of dependencies of ChannelAssignement (#144)

* This code includes a new implementation of the Track and Stub Streams generation. The old code is still running in parallel.

* Remove code for old calculation of stream data - keeping the debug print out in this commit

* Remove debud printout

* added numSeedTypes function

* rebased Anders branch

* rebased Anders branch

* tidied up Anders branch

* tidied up Anders branch

* ran scram b code-format

* Thomas PR review comments

* max num of proj layers added to channel assignment.

* merge with Thomas commit

Co-authored-by: Ian Tomalin <ian.tomalin@stfc.ac.uk>
Co-authored-by: Thomas Schuh <thomas.schuh@stfc.ac.uk>

Ran second auto formatter tool (#154)

* Ran second auto formatter tool

* tweak

Update ProducerSetup_cfi.py

correct comment in code

Update Customize_cff.py

add comment in code

Tracklet Processor Displaced (#159)

* Tracklet Processor Displaced

* code-format

* code-format again

* remove unnecessary comments and add explanation for header file

* implement more comments

* remove more magic numbers

Update track quality chi2 bins (#161)

* update chi2 bins

* change chi2 variables to be per dof

Ian L1TStub bug fix (#160)

* Ran second auto formatter tool

* tweak

* Fixed bug in L1TStub::isTilted function

* Update L1TrackNtupleMaker_cfg.py

Removed unnecessary line

* Update L1FPGATrackProducer.cc

Fix incorrect tiltedBarrel variable in endcap

rebase and scram b code-format

ran formatter tool 2

tweak

Update chi2 tq bins (#165)

* change binning method used by track quality

* clean TrackQuality class to only create features used by default classifier

* ran scram b -j8 clang-format

Added tilted and endcap module ring no. to L1TStub (#166)

* Added tilted and endcap module ring no. to L1TStub

* auto formatting

Fix stub order bug (#164)

* fix to stub order bug

* fix to stub order bug

* Updated to one::EDAnalyzer

* ran scram b code format

* Fixed bug for combined modules

Update MatchCalculator.cc

Added comment.

rebase git conflict resolution

rebase git conflict resolution

rebase git conflict resolution

Remove obsolete FWCore functions (#168)

Updated data/ files

tweak

Reduce L1 tracking CPU (#172)

* Reduce CPU use

* Reduce CPU

* Reduce CPU

* Added track quality plots

* updated geom

* Trivial variable renames

* Moved RunTime call to constructor to save CPU

* Removed debug calcs from VarBase::calculate

* Optimised a bit more VarBase::calculate

* optimise CPU further

* auto format

Update L1TrackNtupleMaker.cc

Restored consumes<TrackingVertex>. Not required, but keeps CPU expensive loading of TrackingVertexCollection where it was to make CPU comparisons easier.

Removed CI .yml files & data/ directory to allow PR to central CMSSW
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants