36 lines
1.6 KiB
Plaintext
36 lines
1.6 KiB
Plaintext
/*
|
|
// Missing-mass reconstruction for 27Al + alpha -> alpha + 27Al*.
|
|
// The beam travels along +z; the target alpha is at rest.
|
|
if (std::isfinite(EBeam_track) && std::isfinite(Tb_recon) &&
|
|
EBeam_track >= 0.0 && Tb_recon >= 0.0 &&
|
|
projectileDirection.Mag2() > 0.0) {
|
|
const double beamMass = al27Iso.Mass;
|
|
const double alphaMass = alphaIso.Mass;
|
|
const double beamMomentum = std::sqrt(EBeam_track *
|
|
(EBeam_track + 2.0 * beamMass));
|
|
const double alphaMomentum = std::sqrt(Tb_recon *
|
|
(Tb_recon + 2.0 * alphaMass));
|
|
|
|
TLorentzVector beam4;
|
|
beam4.SetPxPyPzE(0.0, 0.0, beamMomentum, beamMass + EBeam_track);
|
|
|
|
TLorentzVector target4;
|
|
target4.SetPxPyPzE(0.0, 0.0, 0.0, alphaMass);
|
|
|
|
TLorentzVector outgoingAlpha4;
|
|
outgoingAlpha4.SetVectM(projectileDirection.Unit() * alphaMomentum,
|
|
alphaMass);
|
|
|
|
const TLorentzVector missingAl27 = beam4 + target4 - outgoingAlpha4;
|
|
const double missingMass2 = missingAl27.M2();
|
|
Ex_kin = missingMass2 >= 0.0
|
|
? std::sqrt(missingMass2) - beamMass
|
|
: TMath::QuietNaN();
|
|
EBeam_kin = EBeam_track;
|
|
vX_kin = vX_track;
|
|
vY_kin = vY_track;
|
|
vZ_kin = vZ_track;
|
|
} else {
|
|
Ex_kin = TMath::QuietNaN();
|
|
}*/
|