-
Notifications
You must be signed in to change notification settings - Fork 628
[PWGJE,EMCAL-689] Implementation of EMCal cell-track-matcher #10894
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
Conversation
fjonasALICE
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey Marvin, you find here my first sets of comments. One other general question I had, can you explain why you opt to not construct a kdtree for faster lookup like we do for normal track matching?
| if (trackMinPt > 0 && track.pt() < trackMinPt) { | ||
| continue; | ||
| } | ||
| if ((track.dcaZ() / std::sqrt(track.cZZ()) > trackDCAzSigma) || (track.dcaXY() / std::sqrt(track.cYY()) > trackDCAxySigma)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this used? I think we do not apply this for normal track matching
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In AliPhysics for the Cell Track Matcher we had the option to only match "primary" tracks.
This was done by cutting on DCA_xy of 5 cm.
I was unsure how we want to do this, so I just implemented a version where one can cut on the DCA_z and DCA_xy but with the sigma instead of the values to account for the tracking precision.
This is just the way I have done it now and it is open for discussion how we want to have this done.
Hey @fjonasALICE |
|
O2 linter results: ❌ 21 errors, |
|
Updated the task. |
PWGJE/Core/JetUtilities.h
Outdated
| return std::make_tuple(matchIndexTrack, matchIndexCluster); | ||
| } | ||
|
|
||
| /** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should probably go in JetMatchingUtilities.h
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @nzardosh ,
Should the old matching code also migrate to JetMatchingUtilities.h as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe its even better to make an EMCALMatchingUtilities.h or something like that? Since these are not jets. Unless you plan to use some of the features in the JetMatchingUtilities
- Add `emcal-cell-track-matcher` task `emcalCellTrackMatcher.cxx` In this task we loop over all BCs since cells are mapped to BCs. Then we check that there is only a single collision associated to that BC since we need tracks which are only mapped to collisions not to BCs. Then we fill a map to get from geometrical cell ID to the table cell ID. After that one loops over all tracks in the current collision and tries to get the geometrical cell ID from the eta, phi values of the track on the EMCal surface. Followed up by a check if that cell has a hit in the current collision/BC. If there is a hit, we save the trackID mapped to the cellID. In the end a single cell can have multiple trackID mapped to it. - First simple options include `trackMinPt`, `trackDCAzSigma` and `trackDCAxySigma`. The first is to reduce the computing time since low pT tracks will never reach EMCal. The last two cuts are sigma based DCA cuts to select primary tracks. - Add new table `SortedTracks` with four column: BCID, TrackID, trackEtaOnEMCal, trackPhiOnEMCal - Add `emcal-track-sorting-task` which sorts selected tracks on the BCID instead of the collisionID, removing the need for the collision table in later EMCal tasks. - Add `processSorted` to `emcal-cell-track-matcher-task` which utilizes the new sorted track table - Open: - Do we want sigma or cm based DCA cuts? - Configurable to check if we want to select primary cuts - Further QA histograms
|
This PR has not been updated in the last 30 days. Is it still needed? Unless further action is taken, it will be closed in 5 days. |
Add
emcal-cell-track-matchertaskemcalCellTrackMatcher.cxxIn this task we loop over all BCs since cells are mapped to BCs. Then we check that there is only a single collision associated to that BC since we need tracks which are only mapped to collisions not to BCs.
From the BC we get the all the EMCal cells and from the collision all the tracks. We store the IDs and eta and phi values to vectors and perform the matching with a KDTree.
First simple options include
trackMinPt,trackDCAzSigmaandtrackDCAxySigma. The first is to reduce the computing time since low pT tracks will never reach EMCal. The last two cuts are sigma based DCA cuts to select primary tracks.Add new table
SortedTrackswith four column: BCID, TrackID, trackEtaOnEMCal, trackPhiOnEMCalAdd
emcal-track-sorting-taskwhich sorts selected tracks on the BCID instead of the collisionID, removing the need for the collision table in later EMCal tasks.Add
processSortedtoemcal-cell-track-matcher-taskwhich utilizes the new sorted track table. This allows to just loop over the new sorted track table and the cell table simultaneously without the need to loop over BCs or Collisions.Open:
processSortedandprocessFullfromemcal-cell-track-matcher-task