BOSS 7.1.2
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
21#include <stdlib.h>
24#include "EvtGenBase/EvtPDL.hh"
28#include <string>
29using namespace std; //::endl;
30
32
33void EvtEtap2pipieta::getName(std::string& model_name){
34 model_name="Etap2pipieta";
35}
36
40
42 checkNDaug(3);
45 m_MetaOverMpip = 0.547862/0.13957018; // m_Meta/m_Mpi
46 m_sqrt3=sqrt(3.0);
47 par[0]=-0.127;
48 par[1]=-0.106;
49 par[2]=1.5e-03;
50 par[3]=-0.082;
51}
52
56
58/*
59 double maxprob = 0.0;
60 for(int ir=0;ir<=60000000;ir++){
61 p->initializePhaseSpace(getNDaug(),getDaugs());
62 _pd[0]=p->getDaug(0)->getP4();
63 _pd[1]=p->getDaug(1)->getP4();
64 _pd[2]=p->getDaug(2)->getP4();
65 double Prob = AMPsq();
66 if(Prob>maxprob) {
67 maxprob=Prob;
68 std::cout << "Max PDF = " << ir << " prob= " << Prob << std::endl;
69 }
70 }
71 std::cout << "Max!!!!!!!!!!! " << maxprob<< std::endl;
72*/
74 _pd[0]=p->getDaug(0)->getP4();
75 _pd[1]=p->getDaug(1)->getP4();
76 _pd[2]=p->getDaug(2)->getP4();
77 double prob = AMPsq();
78 setProb(prob);
79 return;
80}
81
82double EvtEtap2pipieta::AMPsq(){
83 EvtVector4R petap=_pd[0]+_pd[1]+_pd[2];
84 EvtVector4R Betap(petap.get(0),-1.0*petap.get(1),-1.0*petap.get(2),-1.0*petap.get(3));
85
86 EvtVector4R pip_etapcms = boostTo(_pd[0],Betap);
87 EvtVector4R pim_etapcms = boostTo(_pd[1],Betap);
88 EvtVector4R eta_etapcms = boostTo(_pd[2],Betap);
89
90 double Q=Betap.mass()-pip_etapcms.mass()-pim_etapcms.mass()-eta_etapcms.mass();
91
92 double Tp=pip_etapcms.get(0)-pip_etapcms.mass();
93 double Tm=pim_etapcms.get(0)-pim_etapcms.mass();
94 double Te=eta_etapcms.get(0)-eta_etapcms.mass();
95
96 double X=m_sqrt3*(Tp-Tm)/Q;
97 double Y=(2.0+m_MetaOverMpip)*Te/Q-1.0;
98
99 double amp2=1.0+par[0]*Y+par[1]*Y*Y+par[2]*X+par[3]*X*X;
100 return amp2;
101}
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:61
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