bugs #164

Выполнение условий для распада в PhaseSpace .

Added by Mikhail Kozlov over 6 years ago. Updated over 6 years ago.

Status:ЗакрытаStart date:03/07/2018
Priority:НеотложныйDue date:03/09/2018
Assignee:Ivan Muzalevsky% Done:

100%

Category:-
Target version:-

Description

Метод TGenPhaseSpace::SetDecay() возвращает false, если суммарная энергия He6+H2 в ЦМ меньше суммы масс H5 и He3.
В нашем случае это происходит при увеличении массы
H5.

Я пока что не уверен, что это баг, т.к при увеличении энергии пучка все срабатывает. Нужно с точки зрения физики проверить с конкретными значениями.

Но я не совсем понимаю, почему мы не бустируем векторы в систему ЦМ, а считаем, что за нас это делает PhaseSpace. И в каких случаях это нужно делать самому. Прошу, объяснить, пожалуйста.

ERDecayEXP1803.cxx Magnifier (9.5 KB) Ivan Muzalevsky, 03/09/2018 05:28 PM


Related issues

Related to Developing #143: Спектр возбуждений 5H Закрыта 02/18/2018 02/23/2018

History

#1 Updated by Mikhail Kozlov over 6 years ago

#2 Updated by Ivan Muzalevsky over 6 years ago

Проблему понял, TGetPhaseSpace действительно ломается при этом условии, что описано в его методах: 

 fTeCmTm = P.Mag();           // total energy in C.M. minus the sum of the masses
   for (n=0;nfNt;n++) {
      fMass[n]  = mass[n];
      fTeCmTm  -= mass[n];
   }

   if (fTeCmTmreturn kFALSE;    // not enough energy for this decay

 

 

 

Можно решить проблему по аналогии с тем, как это было устроено в SIMONE: при условии, что продуктов реакции 2 кинематика рассчитывается одним способои, при условии что 3/5... другим. 

В связи с этим, скорее всего, нужно немного переделать механизм разыгрывания кинематики (создания 4-векторов) продуктов реакции. 

 

      Double_t mass5H = (fIs5HUserMassSet) ? f5HMass : f5H->Mass();
      LOG(DEBUG)

      Double_t reactMasses[2];
      reactMasses[0] = f3He->Mass();
      reactMasses[1] = mass5H;

      fReactionPhaseSpace->SetDecay(lvReaction, 2, reactMasses);
      fReactionPhaseSpace->Generate();

      TLorentzVector *lv3He = fReactionPhaseSpace->GetDecay(0);
      TLorentzVector *lv5H  = fReactionPhaseSpace->GetDecay(1);

 

эти строки нужно переделать: 

#3 Updated by Ivan Muzalevsky over 6 years ago

#4 Updated by Sergey Belogurov over 6 years ago

С точки зрения физики это правильно: "Метод TGenPhaseSpace::SetDecay() возвращает false, если суммарная энергия He6+H2 в ЦМ меньше суммы масс H5 и He3." Вас, Иван, попросли объяснить с т.з. физики, а вы о поправке кода. В чем физический смыс ваших изменений, и почему вы считаете, что указанное условие неверно?

#5 Updated by Ivan Muzalevsky over 6 years ago

  • Status changed from Открыта to Закрыта
  • % Done changed from 90 to 100

Проблема была в том, что при разыгрывании энергии возбуждения 5H из функции, состоявшей из двух гауссов, появлялись случаи, когда масса 5H оказывалась слишком большой для протекания бинарной реакции. Задача была решена механически: если масса 5H превысила критическую, делается пересчёт энергии возбуждения заново, итерации продолжаются, пока реакция не сможет протекать. Возможно в будущем можно будет сделать так, чтобы границы, в которых разыгрывается энергия возбуждения расчитывается автоматически из энергии пучка. 

Also available in: Atom PDF