kaliveda-dev team mailing list archive
-
kaliveda-dev team
-
Mailing list archive
-
Message #00082
[Bug 618505] Re: GetMaxAngleLab may falsely assume elastic scattering
** Changed in: kaliveda/1.8
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of KaliVeda
Development Team, which is subscribed to KaliVeda.
https://bugs.launchpad.net/bugs/618505
Title:
GetMaxAngleLab may falsely assume elastic scattering
Status in KaliVeda data analysis framework:
Fix Released
Status in KaliVeda 1.8 series:
Fix Released
Bug description:
(KV version 1.7.6b-2010-06-10)
For a reaction in inverse-kinematics, KV2Body seems to believe all
reactions transitioning to the ground state are elastic scattering,
and limits TETAMAX[4] to 90 degrees in the laboratory for such cases,
when it can go to as much as 180 degrees in such cases (provided the
energy is high enough).
In the part of the code which determines TETAMAX:
Double_t T4MAX = 0.;
if (K[4] < 1.)
T4MAX = TMath::Pi();
if (K[4] == 1.)
T4MAX = TMath::PiOver2();
if (K[4] > 1.)
T4MAX = TMath::ATan((1. / TMath::Sqrt(K[4] * K[4] - 1.)) / GetCMGamma());
if (TMath::Abs(GetEDiss()) < 1.E-08 && K[4] < 1.)
T4MAX = TMath::PiOver2();
TETAMAX[4] = T4MAX * TMath::RadToDeg();
TETAMIN[3] = GetThetaLabTarget(TETAMAX[4]);
The problem, I believe, is using the GetEDiss() call, which then calls
GetExcitEnergy(), returning fEDiss. The comments for fEDiss read
"dissipated energy, 0 means elastic scattering." However, a reaction,
such as a nucleon transfer reaction, may proceed to the ground state
(thus fEDiss is 0), but it is not elastic scattering, and the target-
like particle may go up to 180 degrees in the laboratory if K[4]<1.
Under this framework, I suggest to call GetQReaction() rather than
GetEDiss() for this check. It will yield 0 for elastic scattering as
the above check wishes, but also give realistic values for nuclear
reaction maximum angles. One could insist that GetQReaction()==0
rather than is very small, but I leave the code a close to the
original as possible.
All the other physics seem to be correct and okay when this change is
made to the code, so far as I can tell. I hope I have understood the
problem correctly.
Patch suggested:
--- KV2Body.cpp 2010-08-09 17:55:34.000000000 +0900
+++ KV2Body-T4MAX.cpp 2010-08-09 17:52:42.000000000 +0900
@@ -470,7 +470,7 @@
T4MAX = TMath::PiOver2();
if (K[4] > 1.)
T4MAX = TMath::ATan((1. / TMath::Sqrt(K[4] * K[4] - 1.)) / GetCMGamma());
- if (TMath::Abs(GetEDiss()) < 1.E-08 && K[4] < 1.)
+ if (TMath::Abs(GetQReaction()) < 1.E-08 && K[4] < 1.)
T4MAX = TMath::PiOver2();
TETAMAX[4] = T4MAX * TMath::RadToDeg();
TETAMIN[3] = GetThetaLabTarget(TETAMAX[4]);