Line data Source code
1 : //--------------------------------------------------------------------------
2 : //
3 : // Environment:
4 : // This software is part of the EvtGen package developed jointly
5 : // for the BaBar and CLEO collaborations. If you use all or part
6 : // of it, please give an appropriate acknowledgement.
7 : //
8 : // Copyright Information: See EvtGen/COPYRIGHT
9 : // Copyright (C) 1998 Caltech, UCSB
10 : //
11 : // Module: EvtGen/EvtVVpipiMoxhay.hh
12 : //
13 : // Description: This model is based on the proposal by Tuan and Lipkin
14 : // (Phys.Lett.B206:349-353,1988) and the subsequent model
15 : // by Moxhay (Phys.Rev.D39:3497,1989) for the dipion spectrum
16 : // in Y(3S) -> pi+ pi- Y(1S). Please Note: in Moxhay's paper,
17 : // he wrote the fitted value of the parameter Im(B)/A as
18 : // -0.2983. However, using his quoted value leads to the wrong
19 : // spectrum. Changing the sign of his quoted Im(B)/A fixes the
20 : // shape and reproduces his result. Therefore, please pass
21 : // Im(B)/A = 0.2983 and Re(B)/A = 0.2196 to get the correct shape
22 : // based on his fit to the CLEO data.
23 : //
24 : // Example:
25 : //
26 : // Decay Upsilon(3S)
27 : // 1.0000 Upsilon pi+ pi- Y3STOY1SPIPIMOXHAY 0.2196 0.2983;
28 : // Enddecay
29 : //
30 : // --> the order of parameters is: Re(B)/A Im(B)/A
31 : //
32 : // Modification history:
33 : //
34 : // SEKULA November 02, 2007 Module created
35 : //
36 : //------------------------------------------------------------------------
37 :
38 :
39 : #include "EvtGenBase/EvtPatches.hh"
40 : #include <stdlib.h>
41 : #include "EvtGenBase/EvtParticle.hh"
42 : #include "EvtGenBase/EvtGenKine.hh"
43 : #include "EvtGenBase/EvtPDL.hh"
44 : #include "EvtGenBase/EvtVector4C.hh"
45 : #include "EvtGenBase/EvtTensor4C.hh"
46 : #include "EvtGenBase/EvtReport.hh"
47 : #include "EvtGenModels/EvtY3SToY1SpipiMoxhay.hh"
48 : #include <string>
49 : using std::endl;
50 :
51 0 : EvtY3SToY1SpipiMoxhay::~EvtY3SToY1SpipiMoxhay() {}
52 :
53 : std::string EvtY3SToY1SpipiMoxhay::getName(){
54 :
55 0 : return "Y3STOY1SPIPIMOXHAY";
56 :
57 : }
58 :
59 :
60 : EvtDecayBase* EvtY3SToY1SpipiMoxhay::clone(){
61 :
62 0 : return new EvtY3SToY1SpipiMoxhay;
63 :
64 0 : }
65 :
66 : void EvtY3SToY1SpipiMoxhay::init(){
67 :
68 0 : static EvtId PIP=EvtPDL::getId("pi+");
69 0 : static EvtId PIM=EvtPDL::getId("pi-");
70 0 : static EvtId PI0=EvtPDL::getId("pi0");
71 :
72 : // check that there are 2 arguments
73 0 : checkNArg(2);
74 0 : checkNDaug(3);
75 :
76 0 : checkSpinParent(EvtSpinType::VECTOR);
77 0 : checkSpinDaughter(0,EvtSpinType::VECTOR);
78 :
79 :
80 :
81 0 : if ((!(getDaug(1)==PIP&&getDaug(2)==PIM))&&
82 0 : (!(getDaug(1)==PI0&&getDaug(2)==PI0))) {
83 0 : report(Severity::Error,"EvtGen") << "EvtY3SToY1SpipiMoxhay generator expected "
84 0 : << " pi+ and pi- (or pi0 and pi0) "
85 0 : << "as 2nd and 3rd daughter. "<<endl;
86 0 : report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
87 0 : ::abort();
88 : }
89 :
90 0 : }
91 :
92 : void EvtY3SToY1SpipiMoxhay::initProbMax() {
93 0 : setProbMax(0.2);
94 0 : }
95 :
96 : void EvtY3SToY1SpipiMoxhay::decay( EvtParticle *p){
97 :
98 0 : p->initializePhaseSpace(getNDaug(),getDaugs());
99 :
100 : EvtParticle *v,*s1,*s2;
101 :
102 0 : v=p->getDaug(0);
103 0 : s1=p->getDaug(1);
104 0 : s2=p->getDaug(2);
105 :
106 :
107 : // setup the parameters needed for this model
108 : double g_spp = 0.64;
109 : double lambda = -0.73;
110 : double m_sigma = 0.71;
111 : double f_pi = 0.094;
112 0 : double m_pi = s1->getP4().mass();
113 :
114 0 : double MV1 = p->getP4().mass();
115 0 : double MV2 = v->getP4().mass();
116 :
117 0 : double q = (s1->getP4()+s2->getP4()).mass();
118 :
119 0 : double EV2 = (MV1*MV1 - MV2*MV2 - q*q)/(2.0 * q);
120 :
121 0 : double ReB_over_A = getArg(0);
122 0 : double ImB_over_A = getArg(1);
123 :
124 :
125 0 : EvtComplex Xi;
126 :
127 0 : Xi = EvtComplex( 2.0/EvtConst::pi * ( 1.0 - sqrt(1.0 - 4*m_pi*m_pi/(q*q)) * log( (sqrt(q*q) + sqrt(q*q-4.0*m_pi*m_pi))/(2*m_pi) )),
128 : sqrt(1.0 - 4*m_pi*m_pi/(q*q)));
129 :
130 : // The form factor
131 0 : EvtComplex F;
132 :
133 0 : F = (g_spp*g_spp + lambda*(m_sigma*m_sigma - q*q)) / ( ( (m_sigma*m_sigma - q*q)*(1.0 - lambda*Xi) - (g_spp*g_spp*Xi) ) * 1.0/(8.0 * EvtConst::pi * f_pi*f_pi) * q * q );
134 :
135 0 : EvtComplex B_over_A;
136 0 : B_over_A = EvtComplex(ReB_over_A, ImB_over_A);
137 :
138 : // The dGamma/d(M_pipi) spectrum
139 0 : EvtComplex dGdMpp;
140 :
141 0 : dGdMpp = abs2((q*q*F - B_over_A)) * q * sqrt(q*q - 4 * m_pi *m_pi) * sqrt(EV2 * EV2 - MV2*MV2);
142 :
143 :
144 0 : setProb( real(dGdMpp) );
145 : return ;
146 :
147 0 : }
148 :
149 :
150 :
151 :
|