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 PHI=EvtPDL::getId("phi");
206 static EvtId DSP=EvtPDL::getId("D_s+");
207 static EvtId DSM=EvtPDL::getId("D_s-");
209 static EvtId DSSTP=EvtPDL::getId("D_s*+");
210 static EvtId DSSTM=EvtPDL::getId("D_s*-");
211 static EvtId DS1P=EvtPDL::getId("D_s1+");
212 static EvtId DS1M=EvtPDL::getId("D_s1-");
213 static EvtId DS0STP=EvtPDL::getId("D_s0*+");
214 static EvtId DS0STM=EvtPDL::getId("D_s0*-");
215 static EvtId DPS1P=EvtPDL::getId("D'_s1+");
216 static EvtId DPS1M=EvtPDL::getId("D'_s1-");
217 static EvtId DS2STP=EvtPDL::getId("D_s2*+");
218 static EvtId DS2STM=EvtPDL::getId("D_s2*-");
221 EvtId parnum,mesnum,lnum;
223 parnum = getParentId();
228 if ( parnum==BP||parnum==BM||parnum==B0||parnum==B0B||parnum==BS0||parnum==BSB ) {
230 if ( mesnum==DST0||mesnum==DSTP||mesnum==DSTB||mesnum==DSTM||mesnum==DSSTP||mesnum==DSSTM) {
232 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
236 if ( lnum==TAUP||lnum==TAUM ) {
243 if ( mesnum==D0||mesnum==DP||mesnum==D0B||mesnum==DM||mesnum==DSP||mesnum==DSM) {
245 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
249 if ( lnum==TAUP||lnum==TAUM ) {
256 if ( mesnum==D1P1P||mesnum==D1P1N||mesnum==D1P10||mesnum==D1P1B||mesnum==DS1P||mesnum==DS1M) {
258 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
262 if ( lnum==TAUP||lnum==TAUM ) {
268 if ( mesnum==D3P1P||mesnum==D3P1N||mesnum==D3P10||mesnum==D3P1B||mesnum==DS0STP||mesnum==DS0STM) {
270 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
274 if ( lnum==TAUP||lnum==TAUM ) {
275 setProbMax(73.0);//???
280 if ( mesnum==D3P0P||mesnum==D3P0N||mesnum==D3P00||mesnum==D3P0B||mesnum==DPS1P||mesnum==DPS1M) {
282 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
286 if ( lnum==TAUP||lnum==TAUM ) {
291 if ( mesnum==D3P2P||mesnum==D3P2N||mesnum==D3P20||mesnum==D3P2B||mesnum==DS2STP||mesnum==DS2STM) {
293 if ( mesnum==DS2STP|| mesnum==DS2STM) {
297 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
301 if ( lnum==TAUP||lnum==TAUM ) {
307 if ( mesnum==D21S0P||mesnum==D21S0N||mesnum==D21S00||mesnum==D21S0B) {
309 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
313 if ( lnum==TAUP||lnum==TAUM ) {
319 if ( mesnum==D23S1P||mesnum==D23S1N||mesnum==D23S10||mesnum==D23S1B) {
321 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
325 if ( lnum==TAUP||lnum==TAUM ) {
331 if ( mesnum==RHOP||mesnum==RHOM||mesnum==RHO0) {
333 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
337 if ( lnum==TAUP||lnum==TAUM ) {
345 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
349 if ( lnum==TAUP||lnum==TAUM ) {
355 if ( mesnum==PIP||mesnum==PIM||mesnum==PI0) {
357 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
361 if ( lnum==TAUP||lnum==TAUM ) {
369 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
373 if ( lnum==TAUP||lnum==TAUM ) {
379 if ( mesnum==ETAPR) {
381 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
385 if ( lnum==TAUP||lnum==TAUM ) {
392 if ( mesnum==B1P||mesnum==B1M||mesnum==B10) {
394 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
398 if ( lnum==TAUP||lnum==TAUM ) {
404 if ( mesnum==A0P||mesnum==A0M||mesnum==A00) {
406 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
410 if ( lnum==TAUP||lnum==TAUM ) {
416 if ( mesnum==A1P||mesnum==A1M||mesnum==A10) {
418 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
422 if ( lnum==TAUP||lnum==TAUM ) {
428 if ( mesnum==A2P||mesnum==A2M||mesnum==A20) {
430 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
434 if ( lnum==TAUP||lnum==TAUM ) {
442 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
446 if ( lnum==TAUP||lnum==TAUM ) {
454 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
458 if ( lnum==TAUP||lnum==TAUM ) {
466 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
470 if ( lnum==TAUP||lnum==TAUM ) {
478 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
482 if ( lnum==TAUP||lnum==TAUM ) {
490 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
494 if ( lnum==TAUP||lnum==TAUM ) {
502 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
506 if ( lnum==TAUP||lnum==TAUM ) {
514 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
518 if ( lnum==TAUP||lnum==TAUM ) {
526 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
530 if ( lnum==TAUP||lnum==TAUM ) {
537 if ( mesnum==RHO2SP||mesnum==RHO2SM||mesnum==RHO2S0) {
539 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
543 if ( lnum==TAUP||lnum==TAUM ) {
549 if ( mesnum==OMEG2S) {
551 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
555 if ( lnum==TAUP||lnum==TAUM ) {
561 if ( mesnum==PI2SP||mesnum==PI2SM||mesnum==PI2S0) {
563 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
567 if ( lnum==TAUP||lnum==TAUM ) {
573 if ( mesnum==ETA2S) {
575 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
579 if ( lnum==TAUP||lnum==TAUM ) {
585 if ( mesnum==KP||mesnum==KM||
586 mesnum==K1P||mesnum==K1M||mesnum==K1STP||mesnum==K1STM) {
588 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
592 if ( lnum==TAUP||lnum==TAUM ) {
598 if ( mesnum==KSTP||mesnum==KSTM ) {
600 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
604 if ( lnum==TAUP||lnum==TAUM ) {
613 if ( parnum==D0||parnum==DP||parnum==DM||parnum==D0B ) {
616 if ( mesnum==RHOP||mesnum==RHOM||mesnum==RHO0) {
618 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
626 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
632 if ( mesnum==PIP||mesnum==PIM||mesnum==PI0) {
634 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
642 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
648 if ( mesnum==ETAPR) {
650 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
656 if ( mesnum==KP||mesnum==KM||mesnum==K0||
657 mesnum==K0S||mesnum==K0L||mesnum==KB) {
659 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
665 if ( mesnum==K1STP||mesnum==K1STM||mesnum==K1ST0||mesnum==K1STB) {
667 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
673 if ( mesnum==K1P||mesnum==K1M||mesnum==K10||mesnum==K1B) {
675 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
681 if ( mesnum==KSTP||mesnum==KSTM||mesnum==KST0||mesnum==KSTB) {
683 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
689 if ( mesnum==K2STP||mesnum==K2STM||mesnum==K2ST0||mesnum==K2STB) {
691 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
692 //Lange - Oct 26,2001 - increasing from 0.75 to
695 // setProbMax( 0.75);
701 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
710 if ( parnum==DSP||parnum==DSM ) {
715 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
723 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
729 if ( mesnum==ETAPR ) {
731 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
737 if ( mesnum==KST0||mesnum==KSTB ) {
739 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
746 if ( mesnum==K0 || mesnum==KB || mesnum==K0S || mesnum==K0L ) {
748 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
755 if ( lnum==EP||lnum==EM||lnum==MUP||lnum==MUM ) {
764 if ( parnum==BCP||parnum==BCM ) {
771 //This is a real cludge.. (ryd)
776 void EvtISGW2::init(){
781 //We expect the parent to be a scalar
782 //and the daughters to be X lepton neutrino
784 checkSpinParent(EvtSpinType::SCALAR);
785 checkSpinDaughter(1,EvtSpinType::DIRAC);
786 checkSpinDaughter(2,EvtSpinType::NEUTRINO);
788 EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
790 isgw2ffmodel = new EvtISGW2FF;
792 if ( mesontype==EvtSpinType::SCALAR ) {
793 calcamp = new EvtSemiLeptonicScalarAmp;
795 if ( mesontype==EvtSpinType::VECTOR ) {
796 calcamp = new EvtSemiLeptonicVectorAmp;
798 if ( mesontype==EvtSpinType::TENSOR ) {
799 calcamp = new EvtSemiLeptonicTensorAmp;