~sbinet/talks

ref: chep-2018 talks/2009/20090317-new-inav4mom/slides.txt -rw-r--r-- 2.7 KiB
0161a383 — Sebastien Binet 2018-07-09-chep-alice-fer: add TeX+PDF versions 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
================
INav4Mom updates
================


.. image:: lal-logo.eps
     :scale: 20
     :align: center
     :alt: LAL logo

:Author: Sebastien Binet <binet@cern.ch>
:Institute: LAL/IN2P3
:Date: 2009-03-17

:Title: INav4Mom updates

`INav4Mom` updates
========================

- in ``15.0.0``: changed the inheritance tree of many EDM classes

- **why ?**

  - removes the double diamond of death inheritance tree

  - also speeds up access to ``DataVector<T>`` elements

  - migrated classes also get a non-dummy implementation of ``IAthenaBarCode``
 
- virtual inheritance tree:

.. image:: figs/inav4mom-tree.eps
     :scale: 35
     :align: center

INav4Mom updates - II
=====================

- migrated ``egamma``, ``Photon``, ``Electron``, ``Muon``, and ``TauJet``

  - ``Jet``, ``CompositeParticle`` and ``TruthParticle`` were already migrated

  - ``T/P`` separation also taken care of

- recap of the 'new ``INav4Mom``' migration (2 years ago)

  - instead of having a class inheriting from many little concrete classes

  - have a templated class inheriting from the virtual one
 
  - each template argument is supposed to provide implementation for the ``Ixyz`` interfaces

  - ``ParticleImpl<Nav_t, Mom_t, Part_t>``:

::

 typedef NavigableTerminalNode egammaNavigation;
 class egamma : public ParticleImpl<egammaNavigation,
                                    P4ImplEEtaPhiM,
                                    Particle::Base>

INav4Mom update - III
=====================

- plan was also to migrate ``CaloCell`` and everything that derives from one of the ``INavigable``, ``I4Momentum``, ... classes

  - migration of ``CaloCell`` turned out tricky:
    
    - may levels in the inheritance tree

    - all classes not necessarily concrete (fundamental assumption of the ``ParticleImpl`` templates)

  - when the templated class was designed, ``CaloCell`` had a very different shape

- if one wants to migrate ``CaloCell``:

  - probably modify a bit the template class

  - what to do about the ``64b`` integer (``AthenaBarCode``) uniquely identifying each and every cell ? (duplicating ``CellDescr``) ?

- **if** everybody were to migrate to ``new Nav4MomImpl``:

  - could get rid of **virtual** inheritance

    - speed (mainly ``DataVector<T>::at``)

    - memory layout

    - serialization


classes to migrate (?)
======================
- CaloCompositeKineBase, CaloCluster, CaloEnergyCluster, CaloTower, CaloCell
- eflowObject
- TrigT2Jet
- MissingETSigObject, MissingETSigHypoKine, MissingETSigHypo
- EWGenericObject
- Rec::TrackParticle
- TrigMuonEFTrack, TrigMuonEF, TrigTauTracksInfo
- TrigTau
- TrigEFBjet, TrigL2Bjet, 
- TrigElectron, TrigPhoton
- CombinedMuonFeature, TileTrackMuFeature, IsoMuonFeature
- Muon_ROI, EmTau_ROI, Jet_ROI