]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtY3SToY1SpipiMoxhay.cxx
added a histogram
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtY3SToY1SpipiMoxhay.cxx
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 EvtY3SToY1SpipiMoxhay::~EvtY3SToY1SpipiMoxhay() {}
52
53 std::string EvtY3SToY1SpipiMoxhay::getName(){
54
55   return "Y3STOY1SPIPIMOXHAY";     
56
57 }
58
59
60 EvtDecayBase* EvtY3SToY1SpipiMoxhay::clone(){
61
62   return new EvtY3SToY1SpipiMoxhay;
63
64 }
65
66 void EvtY3SToY1SpipiMoxhay::init(){
67
68   static EvtId PIP=EvtPDL::getId("pi+");
69   static EvtId PIM=EvtPDL::getId("pi-");
70   static EvtId PI0=EvtPDL::getId("pi0");
71
72   // check that there are 2 arguments
73   checkNArg(2);
74   checkNDaug(3);
75
76   checkSpinParent(EvtSpinType::VECTOR);
77   checkSpinDaughter(0,EvtSpinType::VECTOR);
78
79
80
81   if ((!(getDaug(1)==PIP&&getDaug(2)==PIM))&&
82       (!(getDaug(1)==PI0&&getDaug(2)==PI0))) {
83     report(ERROR,"EvtGen") << "EvtY3SToY1SpipiMoxhay generator expected "
84                            << " pi+ and pi- (or pi0 and pi0) "
85                            << "as 2nd and 3rd daughter. "<<endl;
86     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
87     ::abort();
88   }
89
90 }
91
92 void EvtY3SToY1SpipiMoxhay::initProbMax() {
93   setProbMax(0.2);
94 }      
95
96 void EvtY3SToY1SpipiMoxhay::decay( EvtParticle *p){
97
98   p->initializePhaseSpace(getNDaug(),getDaugs());
99
100   EvtParticle *v,*s1,*s2;
101   
102   v=p->getDaug(0);
103   s1=p->getDaug(1);
104   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   double m_pi = s1->getP4().mass();
113
114   double MV1  = p->getP4().mass();
115   double MV2  = v->getP4().mass();
116
117   double q    = (s1->getP4()+s2->getP4()).mass();
118
119   double EV2  = (MV1*MV1 - MV2*MV2 - q*q)/(2.0 * q);
120
121   double ReB_over_A = getArg(0);
122   double ImB_over_A = getArg(1);
123
124
125   EvtComplex Xi;
126
127   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   EvtComplex F;
132   
133   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   EvtComplex B_over_A;
136   B_over_A = EvtComplex(ReB_over_A, ImB_over_A);
137
138   // The dGamma/d(M_pipi) spectrum
139   EvtComplex dGdMpp;
140   
141   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   setProb( real(dGdMpp) );
145   return ;
146
147 }
148
149
150
151