-
Notifications
You must be signed in to change notification settings - Fork 3
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
Lorentz Transforms #18
Comments
Proposal: boost interfaceLorentz boosts are linear transformations acting on Lorentz vectors, especially four-momenta. This could be implemented using a two step procedure:
Boosts itself can be defined in two variants: I) general boost Finally, boosts can be initialized using various parametrisations: beta vector, gamma vectors, rapidities, pseudo-rapidities, ... implementationThe implementation could be based on a little type hierarchy: AbstractCoordiateTransform
<:AbstractLorentzTransform
<:AbstractLorentzBoost
<:AbstractLorentzAxisBoost The specific boosts can then be inherited from the respective abstract type Boost<:AbstractLorentzBoost
BoostX<:AbstractLorentzAxisBoost
... The respective construction could be done in two ways, either using a type to indicate the base: Boost(BoostBetaBase(), (beta_x, beta_y, beta_z)
BoostX(RapidityBase(),rapidity_x) However, I think the more convenient way to construct these boosts is the usage of special types for the initializing arguments: Boost(BetaVector(beta_x, beta_y, beta_z))
Boost(RapidityVector(...))
BoostX(Rapidity(rapidity_x)) Once constructed, each boost (or in general each transformation) should implement the private function _transform(
boost::AbstractLorentzBoost,
p::AbstractFourMomentum
) Finally, this can then be used to implement the application of the boost: function (boost::AbstractLorentzBoost)(p::AbstractFourMomentum)
_transform(boost, p)
end This leads to the following user story: boost=Boost(BetaVector(0.0, 0.2, 0.5)) # probably the default constructor
p=rand(SFourMomentum)
p_prime = boost(p) |
Side notes:
|
This adds Lorentz boosts in two variants: 1. based on a vector of beta parameters (`BetaVector`), see [here](https://physics.stackexchange.com/questions/30166/what-is-a-lorentz-boost-and-how-to-calculate-it) or [here](https://root.cern.ch/doc/master/classROOT_1_1Math_1_1Boost.html) for details. 2. special case of axis-aligned boosts parameterized using single beta vector components. Solves #18 --------- Co-authored-by: Uwe Hernandez Acosta <u.hernandez@hzdr.de> Co-authored-by: Anton Reinhard <anton.reinhard@proton.me>
The Lorentz Vector interface should be extended by a function performing a certain Lorentz transformation.
In general, this may include the following transformations:
LorentzVector
(actually the relativeFourVelocity
)ThreeVelocity
The text was updated successfully, but these errors were encountered: