BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtEtap2pipieta.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtEtap2pipieta.cc
12//
13// Description: etaprime -> pi+pi- eta
14// see PHYSICAL REVIEW D 97, 012003 (2018)
15//
16// Modification history:
17// Jun 03 00:42:10 2024 Liaoyuan Dong Module created
18//------------------------------------------------------------------------
19
20#include "EvtEtap2pipieta.hh"
27#include <stdlib.h>
28#include <string>
29using namespace std; //::endl;
30
32
33void EvtEtap2pipieta::getName( std::string& model_name ) { model_name = "Etap2pipieta"; }
34
36
38 checkNDaug( 3 );
41 m_MetaOverMpip = 0.547862 / 0.13957018; // m_Meta/m_Mpi
42 m_sqrt3 = sqrt( 3.0 );
43 par[0] = -0.127;
44 par[1] = -0.106;
45 par[2] = 1.5e-03;
46 par[3] = -0.082;
47}
48
50
52 /*
53 double maxprob = 0.0;
54 for(int ir=0;ir<=60000000;ir++){
55 p->initializePhaseSpace(getNDaug(),getDaugs());
56 _pd[0]=p->getDaug(0)->getP4();
57 _pd[1]=p->getDaug(1)->getP4();
58 _pd[2]=p->getDaug(2)->getP4();
59 double Prob = AMPsq();
60 if(Prob>maxprob) {
61 maxprob=Prob;
62 std::cout << "Max PDF = " << ir << " prob= " << Prob << std::endl;
63 }
64 }
65 std::cout << "Max!!!!!!!!!!! " << maxprob<< std::endl;
66 */
68 _pd[0] = p->getDaug( 0 )->getP4();
69 _pd[1] = p->getDaug( 1 )->getP4();
70 _pd[2] = p->getDaug( 2 )->getP4();
71 double prob = AMPsq();
72 setProb( prob );
73 return;
74}
75
76double EvtEtap2pipieta::AMPsq() {
77 EvtVector4R petap = _pd[0] + _pd[1] + _pd[2];
78 EvtVector4R Betap( petap.get( 0 ), -1.0 * petap.get( 1 ), -1.0 * petap.get( 2 ),
79 -1.0 * petap.get( 3 ) );
80
81 EvtVector4R pip_etapcms = boostTo( _pd[0], Betap );
82 EvtVector4R pim_etapcms = boostTo( _pd[1], Betap );
83 EvtVector4R eta_etapcms = boostTo( _pd[2], Betap );
84
85 double Q = Betap.mass() - pip_etapcms.mass() - pim_etapcms.mass() - eta_etapcms.mass();
86
87 double Tp = pip_etapcms.get( 0 ) - pip_etapcms.mass();
88 double Tm = pim_etapcms.get( 0 ) - pim_etapcms.mass();
89 double Te = eta_etapcms.get( 0 ) - eta_etapcms.mass();
90
91 double X = m_sqrt3 * ( Tp - Tm ) / Q;
92 double Y = ( 2.0 + m_MetaOverMpip ) * Te / Q - 1.0;
93
94 double amp2 = 1.0 + par[0] * Y + par[1] * Y * Y + par[2] * X + par[3] * X * X;
95 return amp2;
96}
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
EvtId getParentId()
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void setProb(double prob)
virtual ~EvtEtap2pipieta()
void getName(std::string &name)
EvtDecayBase * clone()
void decay(EvtParticle *p)
static EvtSpinType::spintype getSpinType(EvtId i)
Definition EvtPDL.hh:66
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double mass() const
double get(int i) const