1 //--------------------------------------------------------------------------
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.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtISGW2.cc
13 // Description: Routine to implement semileptonic decays according
16 // Modification history:
18 // DJL/RYD September 25, 1996 Module created
20 //------------------------------------------------------------------------
22 #include "EvtGenBase/EvtPatches.hh"
24 #include "EvtGenBase/EvtParticle.hh"
25 #include "EvtGenBase/EvtGenKine.hh"
26 #include "EvtGenBase/EvtPDL.hh"
27 #include "EvtGenBase/EvtReport.hh"
28 #include "EvtGenModels/EvtISGW2.hh"
29 #include "EvtGenBase/EvtConst.hh"
30 #include "EvtGenBase/EvtIdSet.hh"
32 #include "EvtGenModels/EvtISGW2FF.hh"
33 #include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
34 #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
35 #include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
43 EvtISGW2::~EvtISGW2() {
50 std::string EvtISGW2::getName(){
58 EvtDecayBase* EvtISGW2::clone(){
64 void EvtISGW2::decay( EvtParticle *p ){
66 p->initializePhaseSpace(getNDaug(),getDaugs());
68 calcamp->CalcAmp(p,_amp2,isgw2ffmodel);
72 void EvtISGW2::initProbMax() {
74 //added by Lange Jan4,2000
75 static EvtId EM=EvtPDL::getId("e-");
76 static EvtId EP=EvtPDL::getId("e+");
77 static EvtId MUM=EvtPDL::getId("mu-");
78 static EvtId MUP=EvtPDL::getId("mu+");
79 static EvtId TAUM=EvtPDL::getId("tau-");
80 static EvtId TAUP=EvtPDL::getId("tau+");
82 static EvtId BP=EvtPDL::getId("B+");
83 static EvtId BM=EvtPDL::getId("B-");
84 static EvtId B0=EvtPDL::getId("B0");
85 static EvtId B0B=EvtPDL::getId("anti-B0");
86 static EvtId BS0=EvtPDL::getId("B_s0");
87 static EvtId BSB=EvtPDL::getId("anti-B_s0");
88 static EvtId BCP=EvtPDL::getId("B_c+");
89 static EvtId BCM=EvtPDL::getId("B_c-");
91 static EvtId DST0=EvtPDL::getId("D*0");
92 static EvtId DSTB=EvtPDL::getId("anti-D*0");
93 static EvtId DSTP=EvtPDL::getId("D*+");
94 static EvtId DSTM=EvtPDL::getId("D*-");
95 static EvtId D0=EvtPDL::getId("D0");
96 static EvtId D0B=EvtPDL::getId("anti-D0");
97 static EvtId DP=EvtPDL::getId("D+");
98 static EvtId DM=EvtPDL::getId("D-");
100 static EvtId D1P1P=EvtPDL::getId("D_1+");
101 static EvtId D1P1N=EvtPDL::getId("D_1-");
102 static EvtId D1P10=EvtPDL::getId("D_10");
103 static EvtId D1P1B=EvtPDL::getId("anti-D_10");
105 static EvtId D3P2P=EvtPDL::getId("D_2*+");
106 static EvtId D3P2N=EvtPDL::getId("D_2*-");
107 static EvtId D3P20=EvtPDL::getId("D_2*0");
108 static EvtId D3P2B=EvtPDL::getId("anti-D_2*0");
110 static EvtId D3P1P=EvtPDL::getId("D'_1+");
111 static EvtId D3P1N=EvtPDL::getId("D'_1-");
112 static EvtId D3P10=EvtPDL::getId("D'_10");
113 static EvtId D3P1B=EvtPDL::getId("anti-D'_10");
115 static EvtId D3P0P=EvtPDL::getId("D_0*+");
116 static EvtId D3P0N=EvtPDL::getId("D_0*-");
117 static EvtId D3P00=EvtPDL::getId("D_0*0");
118 static EvtId D3P0B=EvtPDL::getId("anti-D_0*0");
120 static EvtId D21S0P=EvtPDL::getId("D(2S)+");
121 static EvtId D21S0N=EvtPDL::getId("D(2S)-");
122 static EvtId D21S00=EvtPDL::getId("D(2S)0");
123 static EvtId D21S0B=EvtPDL::getId("anti-D(2S)0");
125 static EvtId D23S1P=EvtPDL::getId("D*(2S)+");
126 static EvtId D23S1N=EvtPDL::getId("D*(2S)-");
127 static EvtId D23S10=EvtPDL::getId("D*(2S)0");
128 static EvtId D23S1B=EvtPDL::getId("anti-D*(2S)0");
130 static EvtId RHO2S0=EvtPDL::getId("rho(2S)0");
131 static EvtId RHO2SP=EvtPDL::getId("rho(2S)+");
132 static EvtId RHO2SM=EvtPDL::getId("rho(2S)-");
133 static EvtId OMEG2S=EvtPDL::getId("omega(2S)");
134 static EvtId ETA2S=EvtPDL::getId("eta(2S)");
136 static EvtId PI2S0=EvtPDL::getId("pi(2S)0");
137 static EvtId PI2SP=EvtPDL::getId("pi(2S)+");
138 static EvtId PI2SM=EvtPDL::getId("pi(2S)-");
140 static EvtId PIP=EvtPDL::getId("pi+");
141 static EvtId PIM=EvtPDL::getId("pi-");
142 static EvtId PI0=EvtPDL::getId("pi0");
144 static EvtId RHOP=EvtPDL::getId("rho+");
145 static EvtId RHOM=EvtPDL::getId("rho-");
146 static EvtId RHO0=EvtPDL::getId("rho0");
148 static EvtId A2P=EvtPDL::getId("a_2+");
149 static EvtId A2M=EvtPDL::getId("a_2-");
150 static EvtId A20=EvtPDL::getId("a_20");
152 static EvtId A1P=EvtPDL::getId("a_1+");
153 static EvtId A1M=EvtPDL::getId("a_1-");
154 static EvtId A10=EvtPDL::getId("a_10");
156 static EvtId A0P=EvtPDL::getId("a_0+");
157 static EvtId A0M=EvtPDL::getId("a_0-");
158 static EvtId A00=EvtPDL::getId("a_00");
160 static EvtId B1P=EvtPDL::getId("b_1+");
161 static EvtId B1M=EvtPDL::getId("b_1-");
162 static EvtId B10=EvtPDL::getId("b_10");
164 static EvtId H1=EvtPDL::getId("h_1");
165 static EvtId H1PR=EvtPDL::getId("h'_1");
167 static EvtId F1=EvtPDL::getId("f_1");
168 static EvtId F1PR=EvtPDL::getId("f'_1");
169 static EvtId F0=EvtPDL::getId("f_0");
170 static EvtId F0PR=EvtPDL::getId("f'_0");
171 static EvtId F2=EvtPDL::getId("f_2");
172 static EvtId F2PR=EvtPDL::getId("f'_2");
174 static EvtId ETA=EvtPDL::getId("eta");
175 static EvtId ETAPR=EvtPDL::getId("eta'");
176 static EvtId OMEG=EvtPDL::getId("omega");
178 static EvtId KP=EvtPDL::getId("K+");
179 static EvtId KM=EvtPDL::getId("K-");
180 static EvtId K0=EvtPDL::getId("K0");
181 static EvtId KB=EvtPDL::getId("anti-K0");
182 static EvtId K0S=EvtPDL::getId("K_S0");
183 static EvtId K0L=EvtPDL::getId("K_L0");
185 static EvtId KSTP=EvtPDL::getId("K*+");
186 static EvtId KSTM=EvtPDL::getId("K*-");
187 static EvtId KST0=EvtPDL::getId("K*0");
188 static EvtId KSTB=EvtPDL::getId("anti-K*0");
190 static EvtId K1P=EvtPDL::getId("K_1+");
191 static EvtId K1M=EvtPDL::getId("K_1-");
192 static EvtId K10=EvtPDL::getId("K_10");
193 static EvtId K1B=EvtPDL::getId("anti-K_10");
195 static EvtId K1STP=EvtPDL::getId("K'_1+");
196 static EvtId K1STM=EvtPDL::getId("K'_1-");
197 static EvtId K1ST0=EvtPDL::getId("K'_10");
198 static EvtId K1STB=EvtPDL::getId("anti-K'_10");
200 static EvtId K2STP=EvtPDL::getId("K_2*+");
201 static EvtId K2STM=EvtPDL::getId("K_2*-");
202 static EvtId K2ST0=EvtPDL::getId("K_2*0");
203 static EvtId K2STB=EvtPDL::getId("anti-K_2*0");
205 static EvtId K0STP=EvtPDL::getId("K_0*+");
206 static EvtId K0STM=EvtPDL::getId("K_0*-");
207 static EvtId K0ST0=EvtPDL::getId("K_0*0");
208 static EvtId K0STB=EvtPDL::getId("anti-K_0*0");
210 static EvtId PHI=EvtPDL::getId("phi");
211 static EvtId DSP=EvtPDL::getId("D_s+");
212 static EvtId DSM=EvtPDL::getId("D_s-");
214 static EvtId DSSTP=EvtPDL::getId("D_s*+");
215 static EvtId DSSTM=EvtPDL::getId("D_s*-");
216 static EvtId DS1P=EvtPDL::getId("D_s1+");
217 static EvtId DS1M=EvtPDL::getId("D_s1-");
218 static EvtId DS0STP=EvtPDL::getId("D_s0*+");
219 static EvtId DS0STM=EvtPDL::getId("D_s0*-");
220 static EvtId DPS1P=EvtPDL::getId("D'_s1+");
221 static EvtId DPS1M=EvtPDL::getId("D'_s1-");
222 static EvtId DS2STP=EvtPDL::getId("D_s2*+");
223 static EvtId DS2STM=EvtPDL::getId("D_s2*-");
226 EvtId parnum,mesnum,lnum;
228 parnum = getParentId();
233 if ( parnum==BP||parnum==BM||parnum==B0||parnum==B0B||parnum==BS0||parnum==BSB ) {
235 if ( mesnum==DST0||mesnum==DSTP||mesnum==DSTB||mesnum==DSTM||mesnum==DSSTP||mesnum==DSSTM) {
237 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
241 if ( lnum==TAUP||lnum==TAUM ) {
248 if ( mesnum==D0||mesnum==DP||mesnum==D0B||mesnum==DM||mesnum==DSP||mesnum==DSM) {
250 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
254 if ( lnum==TAUP||lnum==TAUM ) {
261 if ( mesnum==D1P1P||mesnum==D1P1N||mesnum==D1P10||mesnum==D1P1B||mesnum==DS1P||mesnum==DS1M) {
263 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
267 if ( lnum==TAUP||lnum==TAUM ) {
273 if ( mesnum==D3P1P||mesnum==D3P1N||mesnum==D3P10||mesnum==D3P1B||mesnum==DS0STP||mesnum==DS0STM) {
275 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
279 if ( lnum==TAUP||lnum==TAUM ) {
280 setProbMax(73.0);//???
285 if ( mesnum==D3P0P||mesnum==D3P0N||mesnum==D3P00||mesnum==D3P0B||mesnum==DPS1P||mesnum==DPS1M) {
287 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
291 if ( lnum==TAUP||lnum==TAUM ) {
296 if ( mesnum==D3P2P||mesnum==D3P2N||mesnum==D3P20||mesnum==D3P2B||mesnum==DS2STP||mesnum==DS2STM) {
298 if ( mesnum==DS2STP|| mesnum==DS2STM) {
302 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
306 if ( lnum==TAUP||lnum==TAUM ) {
312 if ( mesnum==D21S0P||mesnum==D21S0N||mesnum==D21S00||mesnum==D21S0B) {
314 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
318 if ( lnum==TAUP||lnum==TAUM ) {
324 if ( mesnum==D23S1P||mesnum==D23S1N||mesnum==D23S10||mesnum==D23S1B) {
326 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
330 if ( lnum==TAUP||lnum==TAUM ) {
336 if ( mesnum==RHOP||mesnum==RHOM||mesnum==RHO0) {
338 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
342 if ( lnum==TAUP||lnum==TAUM ) {
350 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
354 if ( lnum==TAUP||lnum==TAUM ) {
360 if ( mesnum==PIP||mesnum==PIM||mesnum==PI0) {
362 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
366 if ( lnum==TAUP||lnum==TAUM ) {
374 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
378 if ( lnum==TAUP||lnum==TAUM ) {
384 if ( mesnum==ETAPR) {
386 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
390 if ( lnum==TAUP||lnum==TAUM ) {
397 if ( mesnum==B1P||mesnum==B1M||mesnum==B10) {
399 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
403 if ( lnum==TAUP||lnum==TAUM ) {
409 if ( mesnum==A0P||mesnum==A0M||mesnum==A00) {
411 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
415 if ( lnum==TAUP||lnum==TAUM ) {
421 if ( mesnum==A1P||mesnum==A1M||mesnum==A10) {
423 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
427 if ( lnum==TAUP||lnum==TAUM ) {
433 if ( mesnum==A2P||mesnum==A2M||mesnum==A20) {
435 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
439 if ( lnum==TAUP||lnum==TAUM ) {
447 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
451 if ( lnum==TAUP||lnum==TAUM ) {
459 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
463 if ( lnum==TAUP||lnum==TAUM ) {
471 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
475 if ( lnum==TAUP||lnum==TAUM ) {
483 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
487 if ( lnum==TAUP||lnum==TAUM ) {
495 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
499 if ( lnum==TAUP||lnum==TAUM ) {
507 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
511 if ( lnum==TAUP||lnum==TAUM ) {
519 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
523 if ( lnum==TAUP||lnum==TAUM ) {
531 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
535 if ( lnum==TAUP||lnum==TAUM ) {
542 if ( mesnum==RHO2SP||mesnum==RHO2SM||mesnum==RHO2S0) {
544 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
548 if ( lnum==TAUP||lnum==TAUM ) {
554 if ( mesnum==OMEG2S) {
556 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
560 if ( lnum==TAUP||lnum==TAUM ) {
566 if ( mesnum==PI2SP||mesnum==PI2SM||mesnum==PI2S0) {
568 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
572 if ( lnum==TAUP||lnum==TAUM ) {
578 if ( mesnum==ETA2S) {
580 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
584 if ( lnum==TAUP||lnum==TAUM ) {
590 if ( mesnum==KP||mesnum==KM||
591 mesnum==K1P||mesnum==K1M||mesnum==K1STP||mesnum==K1STM) {
593 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
597 if ( lnum==TAUP||lnum==TAUM ) {
603 if ( mesnum==KSTP||mesnum==KSTM ) {
605 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
609 if ( lnum==TAUP||lnum==TAUM ) {
618 if ( parnum==D0||parnum==DP||parnum==DM||parnum==D0B ) {
621 if ( mesnum==RHOP||mesnum==RHOM||mesnum==RHO0) {
623 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
631 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
637 if ( mesnum==PIP||mesnum==PIM||mesnum==PI0) {
639 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
647 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
653 if ( mesnum==ETAPR) {
655 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
661 if ( mesnum==KP||mesnum==KM||mesnum==K0||
662 mesnum==K0S||mesnum==K0L||mesnum==KB) {
664 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
670 if ( mesnum==K1STP||mesnum==K1STM||mesnum==K1ST0||mesnum==K1STB) {
672 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
678 if ( mesnum==K1P||mesnum==K1M||mesnum==K10||mesnum==K1B) {
680 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
686 if ( mesnum==KSTP||mesnum==KSTM||mesnum==KST0||mesnum==KSTB) {
688 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
694 if ( mesnum==K2STP||mesnum==K2STM||mesnum==K2ST0||mesnum==K2STB) {
696 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
697 //Lange - Oct 26,2001 - increasing from 0.75 to
700 // setProbMax( 0.75);
706 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
715 if ( parnum==DSP||parnum==DSM ) {
720 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
728 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
734 if ( mesnum==ETAPR ) {
736 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
742 if ( mesnum==KST0||mesnum==KSTB ) {
744 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
751 if ( mesnum==K0 || mesnum==KB || mesnum==K0S || mesnum==K0L ) {
753 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
760 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
769 if ( parnum==BCP||parnum==BCM ) {
776 //This is a real cludge.. (ryd)
781 void EvtISGW2::init(){
786 //We expect the parent to be a scalar
787 //and the daughters to be X lepton neutrino
789 checkSpinParent(EvtSpinType::SCALAR);
790 checkSpinDaughter(1,EvtSpinType::DIRAC);
791 checkSpinDaughter(2,EvtSpinType::NEUTRINO);
793 EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
795 isgw2ffmodel = new EvtISGW2FF;
797 if ( mesontype==EvtSpinType::SCALAR ) {
798 calcamp = new EvtSemiLeptonicScalarAmp;
800 if ( mesontype==EvtSpinType::VECTOR ) {
801 calcamp = new EvtSemiLeptonicVectorAmp;
803 if ( mesontype==EvtSpinType::TENSOR ) {
804 calcamp = new EvtSemiLeptonicTensorAmp;