ANASEN_analysis/Armory/Archives/Claude_recoil_script
2026-09-30 14:07:31 -04:00

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();
}*/