← Back to team overview

kaliveda-dev team mailing list archive

[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]);