You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Removed the Algebra part
- Changed spatial_mag2 to rho2 after discussion with Uwe
- Add more explanation on the coordinate system support
- Fix some typos
This section explains how the object can become a `LorentzVector`.
4
+
5
+
## Definition
6
+
7
+
We will call _`LorentzVector`-compliant_, a type that fulfills our interface described in this section. The package that provides such a type will be called _the provider_.
8
+
9
+
## Coordinate systems
10
+
11
+
The provider must specify a preferred coordinate system for its _`LorentzVector`-compliant_ type and provides accesors to the components in this system with standardized methods (specified below). In case the object natively supports several coordinate systems, the one for which the component access is the most efficient will be chosen as the _preferred coordinate system_. It has to be one of the supported coordinate system.
12
+
13
+
The `LorentzVectorBase` package complements the component accessors to cover all the supported coordinate systems. It uses the components in the _preferred coordinate_ system to implement the complementary accessors. The Julia dispatch mechanism is used to give the preference to the accessors provided with the objet.
14
+
15
+
📝 A `LorenztVector`-compliant type can include more data than the four-vector. E.g., a type describing an elementary particle can comply, while containing more data than the particle four-momentum.
16
+
3
17
## Implementation
4
18
5
-
This section explains how the object can become a `LorentzVector`. A type `MyLorentzVector` will comply to the `LorentzVector` interface if one of the following et of methods is implemented.
19
+
A type `MyLorentzVector` will comply to the `LorentzVector` interface if one of the following set of methods is implemented.
|`LorentzVectorBase.islorentzvector(::Type{MyLorentzVector})`| Declare that your type implements the interface |
37
50
|`LorentzVectorBase.coordinatesystem(::Type{MyLorentzVector})`| Declare the preferred coordinated system. Must return PtEtaPhiM, PtEtaPhiE, PtYPhiM, or PtYPhiE (from LorentzVectorBase).|
0 commit comments