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

Integrating VectorHits reconstruction for the Phase2 OT #28101

Closed
wants to merge 22 commits into from

Conversation

JanFSchulte
Copy link
Contributor

This PR integrates the possibility to reconstruct "Vector Hits" from the 2 hits of the 2S modules in the Phase 2 OT. These hits will have directional as well as positional information and are expected to help especially with seeding for displaced tracks in the OT in Phase 2. The concept is documented extensively in @ebrondol 's PhD thesis: http://cds.cern.ch/record/2308020

Current developments are going to be documented here: https://twiki.cern.ch/twiki/bin/view/CMSPublic/TrackingVectorHits

The strategy for integration of the VHs has been discussed during last week's TRK POG meeting: https://indico.cern.ch/event/847559/contributions/3572893/attachments/1914802/3165228/VectorHits_status_sept25.pdf.
This PR will leave the VH reconstruction deactivated and it not expected to result in any changes in Physics Performance. This has been validated using 1000 ttbar events from a Phase 2 RelVal sample using the D41 detector geometry and workflow 20434.1 in CMSSW_11_0_0_pre9. The output of the full track validation can be found here: https://jschulte.web.cern.ch/jschulte/VH/plots/

As can be seen here https://jschulte.web.cern.ch/jschulte/VH/plots/plots_highPurity/effandfakePtEtaPhi.pdf The performance using this branch is compared to 11_0_0_pre9 out of the box (red vs blue). Comparing the number of hits per track (https://jschulte.web.cern.ch/jschulte/VH/plots/plots_ootb/hitsAndPt.pdf) shows a significant reduction when VH are activated (black markers) as two hits in the 2S modules are merged into one VH. Note that out of the box this reduces the tracking performance.

A follow-up PR will add the necessary tuning of the iterative tracking, including a new pixelLess iteration which will enable displaced track reconstruction for Phase 2. This will include a new era modifier to allow toggling between the current and the proposed configuration. This tuning is in progress but a first version should be available in a couple of weeks.

@cmsbuild
Copy link
Contributor

cmsbuild commented Oct 1, 2019

The code-checks are being triggered in jenkins.

@JanFSchulte
Copy link
Contributor Author

@mtosi @ebrondol @jalimena fyi

@cmsbuild
Copy link
Contributor

cmsbuild commented Oct 1, 2019

-code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-28101/12096

Code check has found code style and quality issues which could be resolved by applying following patch(s)

@cmsbuild
Copy link
Contributor

cmsbuild commented Oct 1, 2019

The code-checks are being triggered in jenkins.

@cmsbuild
Copy link
Contributor

cmsbuild commented Oct 1, 2019

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-28101/12097

@cmsbuild
Copy link
Contributor

cmsbuild commented Oct 1, 2019

A new Pull Request was created by @JanFSchulte (Jan-Frederik Schulte) for master.

It involves the following packages:

CommonTools/RecoAlgos
DataFormats/TrackerRecHit2D
Geometry/TrackerGeometryBuilder
RecoLocalTracker/Configuration
RecoLocalTracker/Phase2TrackerRecHits
RecoLocalTracker/Records
RecoLocalTracker/SiPhase2VectorHitBuilder
RecoLocalTracker/SubCollectionProducers
RecoTracker/CkfPattern
RecoTracker/FinalTrackSelectors
RecoTracker/GeometryESProducer
RecoTracker/MeasurementDet
RecoTracker/Record
RecoTracker/TkDetLayers
RecoTracker/TkSeedGenerator
RecoTracker/TkSeedingLayers
RecoTracker/TrackProducer
RecoTracker/TransientTrackingRecHit
SimTracker/TrackAssociatorProducers
TrackingTools/Records

The following packages do not have a category, yet:

RecoLocalTracker/SiPhase2VectorHitBuilder
Please create a PR for https://github.com/cms-sw/cms-bot/blob/master/categories_map.py to assign category

@perrotta, @civanch, @Dr15Jones, @cvuosalo, @ianna, @mdhildreth, @cmsbuild, @kpedro88, @slava77 can you please review it and eventually sign? Thanks.
@echabert, @rappoccio, @felicepantaleo, @abbiendi, @alesaggio, @threus, @mmusich, @venturia, @makortel, @jhgoh, @jdolen, @yduhm, @pieterdavid, @GiacomoSguazzoni, @rovere, @VinInn, @bellan, @gkasieczka, @mschrode, @ebrondol, @dgulhan, @clelange, @riga, @gbenelli, @ahinzmann, @gpetruc this is something you requested to watch as well.
@davidlange6, @slava77, @fabiocos you are the release manager for this.

cms-bot commands are listed here

@kpedro88
Copy link
Contributor

kpedro88 commented Oct 1, 2019

please test

@cmsbuild
Copy link
Contributor

cmsbuild commented Oct 1, 2019

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-run-pr-tests/2741/console Started: 2019/10/01 20:53

Copy link
Contributor

@ianna ianna left a comment

Choose a reason for hiding this comment

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

Sorry, but I have to reject the class design where DataFormats become dependant on Geometry. It goes against CMS Event Data Model.

DataFormats/TrackerRecHit2D/BuildFile.xml Show resolved Hide resolved
@@ -257,9 +257,9 @@ void TrackerGeomBuilderFromGeometricDet::buildGeomDet(TrackerGeometry* tracker)

} else if (gduTypeName.find("Lower") != std::string::npos) {
//FIXME::ERICA: the plane builder is built in the middle...
PlaneBuilderForGluedDet::ResultType plane = gluedplaneBuilder.plane(composed);
Plane* plane = new Plane(dus->surface());
Copy link
Contributor

Choose a reason for hiding this comment

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

@JanFSchulte - who owns it and when it's cleaned up?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@ebrondol what is the status of this?

Copy link
Contributor

@ebrondol ebrondol Oct 2, 2019

Choose a reason for hiding this comment

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

Please change the FIXME with a comment

        //The plane is *not* built in the middle, but on the Lower surface

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks, I have updated it in the latest commit!

Copy link
Contributor

Choose a reason for hiding this comment

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

The ownership of this object still is not clear.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Would changing it to a unique_ptr solve this issue?

Copy link
Contributor

Choose a reason for hiding this comment

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

Probably

@ianna
Copy link
Contributor

ianna commented Oct 1, 2019

-1

@cmsbuild
Copy link
Contributor

Comparison is ready
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-0fa1e0/2992/summary.html

Comparison Summary:

  • No significant changes to the logs found
  • Reco comparison results: 0 differences found in the comparisons
  • DQMHistoTests: Total files compared: 34
  • DQMHistoTests: Total histograms compared: 2961064
  • DQMHistoTests: Total failures: 1
  • DQMHistoTests: Total nulls: 0
  • DQMHistoTests: Total successes: 2960722
  • DQMHistoTests: Total skipped: 341
  • DQMHistoTests: Total Missing objects: 0
  • DQMHistoSizes: Histogram memory added: 0.0 KiB( 33 files compared)
  • Checked 147 log files, 16 edm output root files, 34 DQM output files

Copy link
Contributor

@slava77 slava77 left a comment

Choose a reason for hiding this comment

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

@perrotta this was my "second look" at the data formats (mostly); with a few notes elsewhere

@@ -48,18 +50,17 @@ class BaseTrackerRecHit : public TrackingRecHit {
// verify that hits can share clusters...
inline bool sameDetModule(TrackingRecHit const& hit) const;

bool hasPositionAndError() const final;
bool hasPositionAndError() const override;
Copy link
Contributor

Choose a reason for hiding this comment

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

it looks like these are changed for the needs of a VectorHit.
Shouldn't the logic be roughly the same as with the strip tracker matched hits, which do not need a special treatment for this and other originally "finalized" methods?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@slava77
Looks like SiStripMatchedRecHit2D just does not have these functions. I can't think of a way to implement this without making the function to final here

float momentum(const MagneticField* magField);

ClusterRef lowerCluster() const { return theLowerCluster.cluster_phase2OT(); }
ClusterRef upperCluster() const { return theUpperCluster.cluster_phase2OT(); }
Copy link
Contributor

Choose a reason for hiding this comment

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

BTW, is the "lower" physically lower or is it e.g. P in PS?
A comment would be nice if it's not physically lower

Copy link
Contributor

Choose a reason for hiding this comment

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

The 'lower' is the definition given by the Phase 2 Tracker people to indicate the P of the PS module.

@perrotta
Copy link
Contributor

@JanFSchulte I see that you marked all comments received as "resolved", but there was no additional commit submitted here yet with the updates.
Let me check: are you still preparing/testing such a commit before pushing it in the PR, or parhaps you just forgot doing it?

@JanFSchulte
Copy link
Contributor Author

@perrotta Yes, I have commits pending to be pushed once I am done with the review. I have marked the issues I have ticked off as resolved mostly just for me to keep track on what I have already addressed. I can un=resolve them for further review once I push the changes.

composedDetId = theTopo->stack(gduId[i]);
StackGeomDet* stackDet = new StackGeomDet(&(*plane), dum, dus, composedDetId);
StackGeomDet* stackDet = new StackGeomDet(&(*plane), dus, dum, composedDetId);
Copy link
Contributor

Choose a reason for hiding this comment

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

Another question: Is there any point to the &(*plane) construction? Why not just write plane, which is a pointer? If there is a special side effect from this construction, it should be commented.

@perrotta
Copy link
Contributor

perrotta commented Nov 4, 2019

@JanFSchulte are there news or updates of the plans for this PR?

@JanFSchulte
Copy link
Contributor Author

@perrotta This is taking a back seat to some other commitments at the moment. I hope to continue the work on the code later this week for an update early next week.

@perrotta
Copy link
Contributor

@JanFSchulte , usual periodic check: is there any update in sight here?

@kpedro88
Copy link
Contributor

@JanFSchulte if this is desired for the HLT TDR release, it needs to be ready ASAP; otherwise, it will be delayed till 11_1_X

@perrotta
Copy link
Contributor

@JanFSchulte : should we "-1" this one, and get back to this PR when you have time to fix it?

@fabiocos
Copy link
Contributor

fabiocos commented Dec 3, 2019

@JanFSchulte what is the plan for this PR? Do you expect any activity in the coming days? Or is this moving to a longer timescale?

@JanFSchulte
Copy link
Contributor Author

@fabiocos it looks like this is taking me a bit longer to resolve, so it might be best to close this for the moment and I will come with a new PR in a few weeks.

@perrotta
Copy link
Contributor

perrotta commented Dec 3, 2019

-1
(Just to keep this PR out of the reco radar, while waiting for the needed fixes being implemented)

@fabiocos
Copy link
Contributor

Waiting for a new PR as mentioned by @JanFSchulte

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.