BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtEtap2gpipi.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: EvtEtap2gpipi.cc
12//
13// Description: etaprime -> gamma pipi without/with box contribution
14// see PRL 120, 242003 (2018) and refs. therein
15//
16// Modification history:
17// Dec 18 05:52:33 2022 Liaoyuan Dong Module created
18//
19//------------------------------------------------------------------------
20
21#include "EvtEtap2gpipi.hh"
28#include <stdlib.h>
29#include <string>
30using namespace std; //::endl;
31
33
34void EvtEtap2gpipi::getName( std::string& model_name ) { model_name = "Etap2gpipi"; }
35
37
39 checkNArg( 1 );
40 checkNDaug( 3 );
43 _flag = getArg( 0 );
44
45 if ( _flag == 1 )
46 {
47 Mrho = 7.76565e-01;
48 Grho = 1.50839e-01;
49 delta = 1.60865e-03;
50 argdelta = 6.71184e-02;
51 delta2 = 4.15936e-01;
52 argdelta2 = 2.00844e-02;
53 Eetap = -2.13798e+01;
54 }
55 else
56 {
57 Mrho = 7.72929e-01;
58 Grho = 1.50184e-01;
59 delta = 1.58745e-03;
60 argdelta = 6.25729e+00;
61 delta2 = 2.58505e-01;
62 argdelta2 = 3.28230e+00;
63 Eetap = 0.000000;
64 }
65 Momega = 0.78265;
66 Gomega = 0.00849;
67 Mrhop = 1.465;
68 Grhop = 0.400;
69
70 PI = 3.14159265;
71 mpi = 0.13957018;
72}
73
75 if ( _flag == 1 )
76 {
77 // std::cout << "Initializing EvtEtap2gpipi... flag= " << _flag << " MaxProb= " << 0.0786
78 // << std::endl;
79 setProbMax( 0.0786 );
80 }
81 else
82 {
83 // std::cout << "Initializing EvtEtap2gpipi... flag= " << _flag << " MaxProb= " << 0.2760
84 // << std::endl;
85 setProbMax( 0.2760 );
86 }
87}
88
90 /*
91 double maxprob = 0.0;
92 for(int ir=0;ir<=60000000;ir++){
93 p->initializePhaseSpace(getNDaug(),getDaugs());
94 _pd[0]=p->getDaug(0)->getP4();
95 _pd[1]=p->getDaug(1)->getP4();
96 _pd[2]=p->getDaug(2)->getP4();
97 double Prob = AMPsq();
98 if(Prob>maxprob) {
99 maxprob=Prob;
100 std::cout << "Max PDF = " << ir << " prob= " << Prob << std::endl;
101 }
102 }
103 std::cout << "Max!!!!!!!!!!! " << maxprob<< std::endl;
104 */
106 _pd[0] = p->getDaug( 0 )->getP4();
107 _pd[1] = p->getDaug( 1 )->getP4();
108 _pd[2] = p->getDaug( 2 )->getP4();
109 double prob = AMPsq();
110 setProb( prob );
111 return;
112}
113
114double EvtEtap2gpipi::AMPsq() {
115 EvtVector4R prho = _pd[0] + _pd[1];
116 EvtVector4R mprho( prho.get( 0 ), -1 * prho.get( 1 ), -1 * prho.get( 2 ),
117 -1 * prho.get( 3 ) );
118 double m2 = ( _pd[0] + _pd[1] ).mass2();
119 double m = ( _pd[0] + _pd[1] ).mass();
120
121 EvtVector4R pi_rhocms = boostTo( _pd[0], mprho );
122 EvtVector4R gam_rhocms = boostTo( _pd[2], mprho );
123 EvtVector4R etap_rhocms = boostTo( prho + _pd[2], mprho );
124 double coshel_pi = pi_rhocms.dot( etap_rhocms ) / pi_rhocms.d3mag() / etap_rhocms.d3mag();
125 double ang_part = 1 - coshel_pi * coshel_pi;
126
127 double kgamma = 0;
128 if ( m < 0.95778 ) kgamma = ( 0.95778 * 0.95778 - m * m ) / ( 2 * 0.95778 );
129 double qpim = 0;
130 if ( m > 2 * mpi ) qpim = sqrt( 0.25 * m * m - pow( mpi, 2 ) );
131
132 double qpimrho = sqrt( 0.25 * Mrho * Mrho - pow( mpi, 2 ) );
133 double qpimrhop = sqrt( 0.25 * Mrhop * Mrhop - pow( mpi, 2 ) );
134
135 double hm = ( 2. / PI ) * ( qpim / m ) * log( ( m + 2 * qpim ) / ( 2 * mpi ) );
136
137 double hmrho =
138 ( 2. / PI ) * ( qpimrho / Mrho ) * log( ( Mrho + 2 * qpimrho ) / ( 2. * mpi ) );
139 double hmrhop =
140 ( 2. / PI ) * ( qpimrhop / Mrhop ) * log( ( Mrhop + 2 * qpimrhop ) / ( 2. * mpi ) );
141
142 double d = ( 3. / PI ) * ( mpi * mpi / pow( qpimrho, 2 ) ) *
143 log( ( Mrho + 2 * qpimrho ) / ( 2 * mpi ) ) +
144 ( Mrho / ( 2 * PI * qpimrho ) ) -
145 ( ( mpi * mpi * Mrho ) / ( PI * pow( qpimrho, 3 ) ) );
146 double drhop = ( 3. / PI ) * ( mpi * mpi / pow( qpimrhop, 2 ) ) *
147 log( ( Mrhop + 2 * qpimrhop ) / ( 2 * mpi ) ) +
148 ( Mrhop / ( 2 * PI * qpimrhop ) ) -
149 ( ( mpi * mpi * Mrhop ) / ( PI * pow( qpimrhop, 3 ) ) );
150
151 double dhds = hmrho * ( pow( 8 * pow( qpimrho, 2 ), -1 ) - pow( 2 * Mrho * Mrho, -1 ) ) +
152 pow( 2 * PI * Mrho * Mrho, -1 );
153 double dhdsrhop =
154 hmrhop * ( pow( 8 * pow( qpimrhop, 2 ), -1 ) - pow( 2 * Mrhop * Mrhop, -1 ) ) +
155 pow( 2 * PI * Mrhop * Mrhop, -1 );
156
157 double fm2 = Grho * ( Mrho * Mrho / pow( qpimrho, 3 ) ) *
158 ( qpim * qpim * ( hm - hmrho ) +
159 ( Mrho * Mrho - m * m ) * qpimrho * qpimrho * ( dhds ) );
160 double fm2rhop = Grhop * ( Mrhop * Mrhop / pow( qpimrhop, 3 ) ) *
161 ( qpim * qpim * ( hm - hmrhop ) +
162 ( Mrhop * Mrhop - m * m ) * qpimrhop * qpimrhop * ( dhdsrhop ) );
163
164 double Grhom = Grho * pow( ( qpim / qpimrho ), 3 ) * ( Mrho / m );
165 double Grhopm = Grhop * pow( ( qpim / qpimrhop ), 3 ) * ( Mrhop / m );
166
167 double coefficient = ( 1. / ( 48 * PI * PI * PI ) ) * pow( kgamma, 2 ) * pow( qpim, 2 );
168 double coe1 = pow( ( 2 * sqrt( 48 * PI * pow( Mrho, -4 ) ) ), 2 );
169
170 EvtComplex denomGrhom( Mrho * Mrho - m * m + fm2, -1 * Mrho * Grhom );
171 EvtComplex real( Mrho * Mrho * ( 1 + d * Grho / Mrho ), 0 );
172 EvtComplex BWrho = real / denomGrhom;
173
174 EvtComplex denomBWomega( Momega * Momega - m * m, -Momega * Gomega );
175 EvtComplex real1( Momega * Momega, 0 );
176 EvtComplex BWomega = real1 / denomBWomega;
177 EvtComplex cdelta( delta * cos( argdelta ), delta * sin( argdelta ) );
178 EvtComplex part2 = BWrho * cdelta * BWomega * ( m * m ) / ( Momega * Momega );
179
180 EvtComplex denomGrhopm( Mrhop * Mrhop - m * m + fm2rhop, -1 * Mrhop * Grhopm );
181 EvtComplex realpm( Mrhop * Mrhop * ( 1 + drhop * Grhop / Mrhop ), 0 );
182 EvtComplex BWrhop = realpm / denomGrhopm;
183 EvtComplex cdelta2( delta2 * cos( argdelta2 ), delta2 * sin( argdelta2 ) );
184 EvtComplex denom( delta2 * cos( argdelta2 ) + 1.0, delta2 * sin( argdelta2 ) );
185 EvtComplex part3 = cdelta2 * BWrhop;
186
187 EvtComplex eof( Eetap, 0 );
188 EvtComplex amp = ( ( BWrho * ( cdelta * BWomega * ( m * m ) / ( Momega * Momega ) + 1.0 ) +
189 cdelta2 * BWrhop ) /
190 ( cdelta2 + 1 ) * sqrt( coe1 ) +
191 eof );
192
193 double total = coefficient * abs2( amp );
194 double amp2 = total * ang_part;
195 return amp2;
196}
double mass
double abs2(const EvtComplex &c)
#define PI
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
double mpi
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
EvtId getParentId()
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
EvtDecayBase * clone()
virtual ~EvtEtap2gpipi()
void getName(std::string &name)
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 dot(const EvtVector4R &v2) const
double get(int i) const
double d3mag() const
double double * m2
Definition qcdloop1.h:83