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

CTPPS: new DataFormats for local TOTEM RP reconstruction #14134

Merged
merged 1 commit into from Apr 22, 2016

Conversation

jan-kaspar
Copy link
Contributor

This pull request will be followed with another one containing the corresponding producers which are, for the moment, available here:
https://github.com/CTPPS/ctpps-offline/tree/develop/RecoLocalCTPPS/TotemRP

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @jan-kaspar for CMSSW_8_1_X.

It involves the following packages:

DataFormats/CTPPSReco

The following packages do not have a category, yet:

DataFormats/CTPPSReco

@cmsbuild, @davidlange6 can you please review it and eventually sign? Thanks.
@slava77, @Degano, @smuzaffar you are the release manager for this.

cms-bot commands are list here #13028

@slava77
Copy link
Contributor

slava77 commented Apr 19, 2016

@cmsbuild please test

@cmsbuild
Copy link
Contributor

The tests are being triggered in jenkins.
https://cmssdt.cern.ch/jenkins/job/ib-any-integration/12475/console

@cmsbuild
Copy link
Contributor

Pull request #14134 was updated. @cvuosalo, @slava77, @davidlange6 can you please check and sign again.

@cmsbuild
Copy link
Contributor

@cmsbuild
Copy link
Contributor


virtual ~FittedRecHit() {}

inline const TVector3 & getGlobalCoordinates() const { return space_point_on_det_; }
Copy link
Contributor

Choose a reason for hiding this comment

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

We have rather limited use of TVector* classes.
math::XYZPoint (for generically globally defined cases) or GlobalPoint (for interfaces with global<->local transformations)

if (l.getPosition() > r.getPosition())
return false;

if (l.getSigma() < r.getSigma())
Copy link
Contributor

Choose a reason for hiding this comment

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

can you really have multiple hits in the same detector that start at the same position?

@slava77
Copy link
Contributor

slava77 commented Apr 20, 2016

I don't see anything particularly egregious, mainly from a perspective that for some time digis are expected to be saved and that all hit reco and tracking can be redone very quickly.
So, the current classes can be expected to be reorganized at little cost to the past saved data to move to something more common with other CMS classes where appropriate.

@jan-kaspar
Copy link
Contributor Author

@slava77 What you suggest often makes sense however it is quite complete redesign. We don't have time for it now but I am happy to do it when we put in place the SW infrastructure for all detectors of CTPPS (pixels, timing, ...). I've noted

  • do not use TVector*
  • use cm instead of mm
  • use TrackingRecHit, TrackBase

Regarding DetSetVector<FittedRecHit> track_hits_vector_ it was a misunderstanding. I had a feeling that you had a preference for DetSetVectors which you supported at the last meeting. We actually had DetIds stored in RecHits and I had to remove it and switch to a DetSetVector-compatible structure.

It is very rare to have multiple hits from one sensors associated with a track. It can only happen when, for some reason, there is active-inactive-active strip pattern. Then the two active strips may contribute to one track.

@slava77
Copy link
Contributor

slava77 commented Apr 21, 2016

On 4/21/16 12:48 PM, jan-kaspar wrote:

@slava77 https://github.com/slava77 What you suggest often makes sense
however it is quite complete redesign. We don't have time for it now but
I am happy to do it when we put in place the SW infrastructure for all
detectors of CTPPS (pixels, timing, ...). I've noted

  • do not use TVector*

This should be the easiest

  • use cm instead of mm

a bit more work, maybe

  • use TrackingRecHit, TrackBase

This will indeed need quite a bit of work.

Regarding |DetSetVector track_hits_vector_| it was a
misunderstanding. I had a feeling that you had a preference for
DetSetVectors which you supported at the last meeting.

This is true only where it is important: inclusive collections of digis
or hits
when multiple entries per Det are expected make sense.

Using DetSetVector to keep hits on a track trajectory is not practical
and can lead to loss of information about hit order in the fit.

We actually had
DetIds stored in RecHits and I had to remove it and switch to a
DetSetVector-compatible structure.

It is very rare to have multiple hits from one sensors associated with a
track. It can only happen when, for some reason, there is
active-inactive-active strip pattern. Then the two active strips may
contribute to one track.


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#14134 (comment)

@jan-kaspar
Copy link
Contributor Author

@slava77 OK. As I wrote already, in near future we will need to add more detectors (pixels, timing, ...) to the SW design. In this moment, we can take into account all your comments and do it properly. Now, do you object using the classes in this PR?

@slava77
Copy link
Contributor

slava77 commented Apr 21, 2016

On 4/21/16 1:28 PM, jan-kaspar wrote:

@slava77 https://github.com/slava77 OK. As I wrote already, in near
future we will need to add more detectors (pixels, timing, ...) to the
SW design. In this moment, we can take into account all your comments
and do it properly. Now, do you object using the classes in this PR?

Can you point me to a file with results of the algorithms, something
with somewhat realistic physics inputs.

Thanks.


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#14134 (comment)

@jan-kaspar
Copy link
Contributor Author

Can you point me to a file with results of the algorithms, something with somewhat realistic physics inputs.

Here:
http://jkaspar.web.cern.ch/jkaspar/slava/
is the output of
https://github.com/CTPPS/ctpps-offline/blob/develop/raw_data_chain_test.py
which uses TOTEM-standalone data from 2015. Let me know should it be not sufficient.

static const int dimension = 4;

///< covariance matrix size
static const int covarianceSize = dimension * dimension;
Copy link
Contributor

Choose a reason for hiding this comment

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

this is supposed to be a symmetric matrix. Why covarianceSize^2 ?

@slava77
Copy link
Contributor

slava77 commented Apr 21, 2016

+1

for #14134 f8a7ef2


  • code is in line with the description; I still expect this to evolve
  • jenkins test pass, more pertinent here: it compiles and there are no issues from the static analysis
  • based on the reference file, I see that the digis are about a factor of 10 smaller than the downstream combination of hits/clusters/patterns/and tracks. The ultimate in complexity is TotemRPLocalTrack that takes up 2/3 of the post-digi TOTEM products size: double precision and generic 4x4 covariance are partly to blame. If occupancies in pp collisions are higher than in this reference file, we will not be able (or, rather not) to save the TotemRPLocalTrack and instead assume all higher level reco is to be redone at analysis level from digis.

@cmsbuild
Copy link
Contributor

This pull request is fully signed and it will be integrated in one of the next CMSSW_8_1_X IBs (tests are also fine). This pull request requires discussion in the ORP meeting before it's merged. @slava77, @davidlange6, @Degano, @smuzaffar

@davidlange6 davidlange6 merged commit 4dcbe29 into cms-sw:CMSSW_8_1_X Apr 22, 2016
@jan-kaspar
Copy link
Contributor Author

Thanks, Slava!

With the current SW, we can't resolve more than 1 (local) track per RP per event. Hence even if hit occupancy grows, there will be no more track objects.

Size-wise, the actual design is not optimal from yet another perspective: all higher level objects keep an independent copy of the associated RecHits. It would be better to store a pointer/reference instead. Is there a sort of persistent reference suitable for such a use?

@jan-kaspar jan-kaspar deleted the ctpps_rp_reco_data_formats branch April 22, 2016 08:57
@slava77
Copy link
Contributor

slava77 commented Apr 22, 2016

On 4/22/16 10:57 AM, jan-kaspar wrote:

Thanks, Slava!

With the current SW, we can't resolve more than 1 (local) track per RP
per event. Hence even if hit occupancy grows, there will be no more
track objects.

Size-wise, the actual design is not optimal from yet another
perspective: all higher level objects keep an independent copy of the
associated RecHits. It would be better to store a pointer/reference
instead. Is there a sort of persistent reference suitable for such a use?

DetSeReftVector should work to reference hits in the DetSetVector


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#14134 (comment)

@jan-kaspar
Copy link
Contributor Author

On Fri, Apr 22, 2016 at 12:21 PM, Slava Krutelyov
notifications@github.com wrote:

On 4/22/16 10:57 AM, jan-kaspar wrote:

Thanks, Slava!

With the current SW, we can't resolve more than 1 (local) track per RP
per event. Hence even if hit occupancy grows, there will be no more
track objects.

Size-wise, the actual design is not optimal from yet another
perspective: all higher level objects keep an independent copy of the
associated RecHits. It would be better to store a pointer/reference
instead. Is there a sort of persistent reference suitable for such a use?

DetSeReftVector should work to reference hits in the DetSetVector

Great, thanks! I'll keep this in mind when (re-)designing the classes for CTPPS.

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.

None yet

4 participants