#include <EvtPsi3Sdecay.hh>
Public Member Functions | |
EvtPsi3Sdecay (double ecms, EvtParticle *parent) | |
EvtPsi3Sdecay () | |
virtual | ~EvtPsi3Sdecay () |
int | findPoints () |
double | polint (std::vector< double > points) |
bool | choseDecay () |
EvtParticle * | choseDecay (EvtParticle *par) |
int | getDecay (double ecms) |
double | theProb (std::vector< double > myxs, int ich) |
int | findMode () |
int | getMode () |
std::vector< EvtId > | getVId (int mode) |
void | PHSPDecay (EvtParticle *par) |
std::vector< EvtId > | getDaugId () |
std::vector< EvtVector4R > | getDaugP4 () |
bool | AngSam (EvtVector4R parent_p4cm, EvtVector4R son_p4cm, double alpha) |
void | setMode (int m) |
Private Attributes | |
double | Ecms |
EvtParticle * | theParent |
EvtId * | Daughters |
int | Ndaugs |
std::vector< double > | x |
std::vector< double > | d0d0bar |
std::vector< double > | dpdm |
std::vector< double > | d0dst0bar |
std::vector< double > | d0bardst0 |
std::vector< double > | dst0dst0bar |
std::vector< double > | dstpdm |
std::vector< double > | dstmdp |
std::vector< double > | dstpdstm |
std::vector< double > | dspdsm |
std::vector< double > | dsspdsm |
std::vector< double > | dssmdsp |
std::vector< double > | dsspdssm |
std::vector< double > | xs12 |
std::vector< double > | xs13 |
std::vector< double > | xs14 |
std::vector< double > | xs15 |
std::vector< double > | xs16 |
std::vector< double > | xs17 |
std::vector< double > | xs18 |
std::vector< double > | xs19 |
std::vector< double > | xs20 |
std::vector< double > | xs21 |
std::vector< double > | xs22 |
std::vector< double > | xs23 |
int | nsize |
double | theXsection [50] |
int | theLocation |
std::vector< std::string > | Vson |
std::vector< EvtId > | Vid |
std::vector< std::vector< std::string > > | VmodeSon |
std::vector< std::vector< EvtId > > | VmodeId |
int | _themode |
int | _excflag |
std::vector< EvtVector4R > | v_p4 |
Static Private Attributes | |
static int | psi3Scount = 0 |
Definition at line 33 of file EvtPsi3Sdecay.hh.
EvtPsi3Sdecay::EvtPsi3Sdecay | ( | double | ecms, | |
EvtParticle * | parent | |||
) | [inline] |
Definition at line 36 of file EvtPsi3Sdecay.hh.
References _excflag, d0bardst0, d0d0bar, d0dst0bar, dpdm, dspdsm, dssmdsp, dsspdsm, dsspdssm, dst0dst0bar, dstmdp, dstpdm, dstpdstm, Ecms, EvtParticle::getNDaug(), genRecEmupikp::i, Ndaugs, nsize, theParent, x, xs12, xs13, xs14, xs15, xs16, xs17, xs18, xs19, xs20, xs21, xs22, and xs23.
00036 { //for 2-body decays 00037 //initializer 00038 Ecms = ecms; 00039 theParent = parent; 00040 Ndaugs=parent->getNDaug(); 00041 nsize = 32; 00042 00043 _excflag=0; 00044 x.clear(); 00045 // open charm cross section, see PRD 80, 072001, xs in unit pb. 00046 double xx[32]={3.72968, 3.73922, 3.87180, 3.87987, 3.93660, 3.97, 3.99, 4.01, 4.01392, 4.015, 4.02052, 4.03, 4.06, 4.08040, 4.12, 4.14, 4.16, 4.17, 4.18, 4.2, 4.22420, 4.26, 4.30, 4.34, 4.38, 4.42, 4.46, 4.50, 4.54, 4.58, 4.62, 4.66 }; // 32 energy points 00047 double y0[32]={0., 3 , 51, 54, 74, 86, 133, 76, 23, 10, 139, 334, 410, 374, 303, 177, 167, 177, 179, 180, 142, 86, 31, 49, 65, 196, 52, 87, 166, 14, 33, 49}; // 0) D0D0bar cross section 00048 double y1[32]={0., 0., 81, 86, 118, 137, 90, 135, 57, 38, 101, 196, 480, 423, 310, 200, 200, 182, 197, 181, 146, 94, 108, 96, 154, 165, 171, 106, 27, 144, 36, 22}; // 1) D+D- 00049 double y2[32]={0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792, 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 2)D0D*0bar 00050 double y3[32]={0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792, 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 3)D0bar D*0 00051 double y4[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 213, 928, 2000, 2290, 2376, 2550, 2443, 2566, 2363, 2173, 1830, 1205, 269, 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398}; // 4)D*0 D*0bar 00052 double y5[32]={0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770, 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 5)D*+D- 00053 double y6[32]={0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770, 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 6)D*-D+ 00054 double y7[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 1400, 2390, 2353, 2280, 2556, 2479, 2357, 2145, 1564, 1033, 237, 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398}; // 7)D*+D*- 00055 double y8[32]={0., 0., 0., 0, 0, 102, 133, 269, 254, 250, 219, 174, 51, 42, 26, 25, 15, 34, 7, 15, 28, 47, 106, 70, 36, 10, 2, 28, 60, 60, 48, 36}; // 8)Ds+ Ds- 00056 double y9[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 342, 452.5,458, 444.5,406, 250, 17, 157, 184, 159, 178.5,146, 85.5, 33, 51.5, 95, 136}; // 9)Ds*+ Ds- 00057 double y10[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 342, 452.5,458, 444.5,406, 250, 17, 157, 184, 159, 178.5,146, 85.5, 33, 51.5, 95, 136}; //10)Ds*- Ds+ 00058 double y11[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 398, 428, 310, 131, 0, 45, 126, 98, 39, 0}; //11)Ds*+ Ds*- 00059 double y12[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //12)D*+ D- pi0 //------ DD* pi---- 00060 double y13[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //13)D*- D+ pi0 00061 double y14[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //14)D*+ anti-D0 pi- 00062 double y15[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //15)D*- D0 pi+ 00063 double y16[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //16)D+ anti-D*0 pi- 00064 double y17[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //17)D- D*0 pi+ 00065 double y18[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //18) D*+ D*- pi0 //------D*D*pi, above 4.26Gev, assumed xs as D*D pi 00066 double y19[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110 };//19) anti-D*0 D*+ pi- 00067 double y20[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110 };//20) D*0 D*- pi+ 00068 double y21[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //21) D*0 D*0bar pi0 00069 double y22[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //22)D*0 D0bar pi0 //------ DD* pi---- 00070 double y23[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //23)D*bar D0 pi0 00071 d0d0bar.clear(); 00072 dpdm.clear(); 00073 d0dst0bar.clear(); 00074 dst0dst0bar.clear(); 00075 d0bardst0.clear(); 00076 dstpdm.clear(); 00077 dstmdp.clear(); 00078 dstpdstm.clear(); 00079 dspdsm.clear(); 00080 dsspdsm.clear(); 00081 dssmdsp.clear(); 00082 dsspdssm.clear(); 00083 xs12.clear(); 00084 xs13.clear(); 00085 xs14.clear(); 00086 xs15.clear(); 00087 xs16.clear(); 00088 xs17.clear(); 00089 xs18.clear(); 00090 xs19.clear(); 00091 xs20.clear(); 00092 xs21.clear(); 00093 xs22.clear(); 00094 xs23.clear(); 00095 00096 for(int i=0;i<32;i++){ 00097 x.push_back(xx[i]); 00098 d0d0bar.push_back(y0[i]); 00099 dpdm.push_back(y1[i]); 00100 d0dst0bar.push_back(y2[i]); 00101 d0bardst0.push_back(y3[i]); 00102 dst0dst0bar.push_back(y4[i]); 00103 dstpdm.push_back( y5[i]); 00104 dstmdp.push_back( y6[i]); 00105 dstpdstm.push_back(y7[i]); 00106 dspdsm.push_back( y8[i]); 00107 dsspdsm.push_back( y9[i]); 00108 dssmdsp.push_back( y10[i]); 00109 dsspdssm.push_back( y11[i]); 00110 xs12.push_back( y12[i] ); 00111 xs13.push_back( y13[i] ); 00112 xs14.push_back( y14[i] ); 00113 xs15.push_back( y15[i] ); 00114 xs16.push_back( y16[i] ); 00115 xs17.push_back( y17[i] ); 00116 xs18.push_back( y18[i] ); 00117 xs19.push_back( y19[i] ); 00118 xs20.push_back( y20[i] ); 00119 xs21.push_back( y21[i] ); 00120 xs22.push_back( y22[i] ); 00121 xs23.push_back( y23[i] ); 00122 } 00123 }
EvtPsi3Sdecay::EvtPsi3Sdecay | ( | ) | [inline] |
Definition at line 126 of file EvtPsi3Sdecay.hh.
References d0bardst0, d0d0bar, d0dst0bar, dpdm, dspdsm, dssmdsp, dsspdsm, dsspdssm, dst0dst0bar, dstmdp, dstpdm, dstpdstm, genRecEmupikp::i, nsize, VmodeSon, Vson, x, xs12, xs13, xs14, xs15, xs16, xs17, xs18, xs19, xs20, xs21, xs22, and xs23.
00126 {//for 2-body and 3-body decays 00127 //initializer 00128 // Ecms = ecms; 00129 nsize = 32; 00130 00131 x.clear(); 00132 // open charm cross section, see PRD 80, 072001, xross section in pb 00133 double xx[32]={3.72968, 3.73922, 3.87180, 3.87987, 3.93660, 3.97, 3.99, 4.01, 4.01392, 4.015, 4.02052, 4.03, 4.06, 4.08040, 4.12, 4.14, 4.16, 4.17, 4.18, 4.2, 4.22420, 4.26, 4.30, 4.34, 4.38, 4.42, 4.46, 4.50, 4.54, 4.58, 4.62, 4.66 }; // 32 energy points 00134 double y0[32]={0., 3 , 51, 54, 74, 86, 133, 76, 23, 10, 139, 334, 410, 374, 303, 177, 167, 177, 179, 180, 142, 86, 31, 49, 65, 196, 52, 87, 166, 14, 33, 49}; // 0) D0D0bar cross section 00135 double y1[32]={0., 0., 81, 86, 118, 137, 90, 135, 57, 38, 101, 196, 480, 423, 310, 200, 200, 182, 197, 181, 146, 94, 108, 96, 154, 165, 171, 106, 27, 144, 36, 22}; // 1) D+D- 00136 double y2[32]={0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792, 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 2)D0D*0bar 00137 double y3[32]={0., 0., 0., 713, 983, 1140, 1370, 1660, 1868, 1920, 1792, 1600, 1115, 976, 700, 675, 626, 636, 605, 515, 525, 540, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 3)D0bar D*0 00138 double y4[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 213, 928, 2000, 2290, 2376, 2550, 2443, 2566, 2363, 2173, 1830, 1205, 269, 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398}; // 4)D*0 D*0bar 00139 double y5[32]={0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770, 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 5)D*+D- 00140 double y6[32]={0., 0., 0., 0, 962, 1115, 1375, 1650, 1810, 1851, 1770, 1650, 1085, 983, 780, 688, 688, 642, 648, 535, 525, 511, 748, 880, 556, 657, 477, 494, 320, 616, 575, 373}; // 6)D*-D+ 00141 double y7[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 1400, 2390, 2353, 2280, 2556, 2479, 2357, 2145, 1564, 1033, 237, 822, 1045, 1020, 820, 398, 588, 690, 459, 360, 398}; // 7)D*+D*- 00142 double y8[32]={0., 0., 0., 0, 0, 102, 133, 269, 254, 250, 219, 174, 51, 42, 26, 25, 15, 34, 7, 15, 28, 47, 106, 70, 36, 10, 2, 28, 60, 60, 48, 36}; // 8)Ds+ Ds- 00143 double y9[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 342, 452.5,458, 444.5,406, 250, 17, 157, 184, 159, 178.5,146, 85.5, 33, 51.5, 95, 136}; // 9)Ds*+ Ds- 00144 double y10[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 342, 452.5,458, 444.5,406, 250, 17, 157, 184, 159, 178.5,146, 85.5, 33, 51.5, 95, 136}; //10)Ds*- Ds+ 00145 double y11[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 440, 398, 428, 310, 131, 0, 45, 126, 98, 39, 0}; //11)Ds*+ Ds*- 00146 double y12[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //12)D*+ D- pi0 //------ DD* pi---- 00147 double y13[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //13)D*- D+ pi0 00148 double y14[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //14)D*+ anti-D0 pi- 00149 double y15[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //15)D*- D0 pi+ 00150 double y16[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //16)D+ anti-D*0 pi- 00151 double y17[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 18, 7.5, 68.6, 64.8, 73.3, 95.8, 122.5,116, 106.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110}; //17)D- D*0 pi+ 00152 double y18[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //18) D*+ D*- pi0 //------D*D*pi, above 4.26Gev, assumed xs as D*D pi 00153 double y19[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110 };//19) anti-D*0 D*+ pi- 00154 double y20[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107.3,98, 378, 650, 564, 167, 304, 359, 381, 497, 110 };//20) D*0 D*- pi+ 00155 double y21[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //21) D*0 D*0bar pi0 00156 double y22[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //22)D*0 D0bar pi0 //------ DD* pi---- 00157 double y23[32]={0., 0., 0., 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 3.8, 32.4, 32.4, 37, 48, 61.2, 58, 53.6, 49, 169, 325, 282, 83.5, 152, 179, 190, 248, 55 }; //23)D*bar D0 pi0 00158 d0d0bar.clear(); 00159 dpdm.clear(); 00160 d0dst0bar.clear(); 00161 dst0dst0bar.clear(); 00162 d0bardst0.clear(); 00163 dstpdm.clear(); 00164 dstmdp.clear(); 00165 dstpdstm.clear(); 00166 dspdsm.clear(); 00167 dsspdsm.clear(); 00168 dssmdsp.clear(); 00169 dsspdssm.clear(); 00170 xs12.clear(); 00171 xs13.clear(); 00172 xs14.clear(); 00173 xs15.clear(); 00174 xs16.clear(); 00175 xs17.clear(); 00176 xs18.clear(); 00177 xs19.clear(); 00178 xs20.clear(); 00179 xs21.clear(); 00180 xs22.clear(); 00181 xs23.clear(); 00182 for(int i=0;i<32;i++){ 00183 x.push_back(xx[i]); 00184 d0d0bar.push_back(y0[i]); 00185 dpdm.push_back(y1[i]); 00186 d0dst0bar.push_back(y2[i]); 00187 d0bardst0.push_back(y3[i]); 00188 dst0dst0bar.push_back(y4[i]); 00189 dstpdm.push_back( y5[i]); 00190 dstmdp.push_back( y6[i]); 00191 dstpdstm.push_back(y7[i]); 00192 dspdsm.push_back( y8[i]); 00193 dsspdsm.push_back( y9[i]); 00194 dssmdsp.push_back( y10[i]); 00195 dsspdssm.push_back( y11[i]); 00196 xs12.push_back( y12[i] ); 00197 xs13.push_back( y13[i] ); 00198 xs14.push_back( y14[i] ); 00199 xs15.push_back( y15[i] ); 00200 xs16.push_back( y16[i] ); 00201 xs17.push_back( y17[i] ); 00202 xs18.push_back( y18[i] ); 00203 xs19.push_back( y19[i] ); 00204 xs20.push_back( y20[i] ); 00205 xs21.push_back( y21[i] ); 00206 xs22.push_back( y22[i] ); 00207 xs23.push_back( y23[i] ); 00208 } 00209 00210 //---- initilize Vmode 00211 00212 VmodeSon.clear(); 00213 //0: D0 anti-D0 00214 Vson.clear(); 00215 Vson.push_back("D0"); Vson.push_back("anti-D0"); 00216 VmodeSon.push_back(Vson); 00217 00218 //1: D+ D- 00219 Vson.clear(); 00220 Vson.push_back("D+"); Vson.push_back("D-"); 00221 VmodeSon.push_back(Vson); 00222 00223 //2: D0 anti-D*0 00224 Vson.clear(); 00225 Vson.push_back("D0"); Vson.push_back("anti-D*0"); 00226 VmodeSon.push_back(Vson); 00227 00228 //3: anti-D0 D*0 00229 Vson.clear(); 00230 Vson.push_back("anti-D0"); Vson.push_back("D*0"); 00231 VmodeSon.push_back(Vson); 00232 00233 //4: D*0 anti-D*0 00234 Vson.clear(); 00235 Vson.push_back("D*0"); Vson.push_back("anti-D*0"); 00236 VmodeSon.push_back(Vson); 00237 00238 //5: D*+ D- 00239 Vson.clear(); 00240 Vson.push_back("D*+"); Vson.push_back("D-"); 00241 VmodeSon.push_back(Vson); 00242 00243 //6: D*- D+ 00244 Vson.clear(); 00245 Vson.push_back("D*-"); Vson.push_back("D+"); 00246 VmodeSon.push_back(Vson); 00247 00248 //7: D*+ D*- 00249 Vson.clear(); 00250 Vson.push_back("D*+"); Vson.push_back("D*-"); 00251 VmodeSon.push_back(Vson); 00252 00253 //8: D_s+ D_s- 00254 Vson.clear(); 00255 Vson.push_back("D_s+"); Vson.push_back("D_s-"); 00256 VmodeSon.push_back(Vson); 00257 00258 //9: D_s*+ D_s- 00259 Vson.clear(); 00260 Vson.push_back("D_s*+"); Vson.push_back("D_s-"); 00261 VmodeSon.push_back(Vson); 00262 00263 //10: D_s*- D_s+ 00264 Vson.clear(); 00265 Vson.push_back("D_s*-"); Vson.push_back("D_s+"); 00266 VmodeSon.push_back(Vson); 00267 00268 //11: D_s*+ D_s*- 00269 Vson.clear(); 00270 Vson.push_back("D_s*+"); Vson.push_back("D_s*-"); 00271 VmodeSon.push_back(Vson); 00272 00273 //12: D*+ D- pi0 00274 Vson.clear(); 00275 Vson.push_back("D*+"); Vson.push_back("D-");Vson.push_back("pi0"); 00276 VmodeSon.push_back(Vson); 00277 00278 //13: D*- D+ pi0 00279 Vson.clear(); 00280 Vson.push_back("D*-"); Vson.push_back("D+");Vson.push_back("pi0"); 00281 VmodeSon.push_back(Vson); 00282 00283 //14: D*+ anti-D0 pi- 00284 Vson.clear(); 00285 Vson.push_back("D*+"); Vson.push_back("anti-D0");Vson.push_back("pi-"); 00286 VmodeSon.push_back(Vson); 00287 00288 //15: D*- D0 pi+ 00289 Vson.clear(); 00290 Vson.push_back("D*-"); Vson.push_back("D0");Vson.push_back("pi+"); 00291 VmodeSon.push_back(Vson); 00292 00293 //16: D+ anti-D*0 pi- 00294 Vson.clear(); 00295 Vson.push_back("D+"); Vson.push_back("anti-D*0");Vson.push_back("pi-"); 00296 VmodeSon.push_back(Vson); 00297 00298 //17: D- D*0 pi+ 00299 Vson.clear(); 00300 Vson.push_back("D-"); Vson.push_back("D*0");Vson.push_back("pi+"); 00301 VmodeSon.push_back(Vson); 00302 00303 //18: D*+ D*- pi0 00304 Vson.clear(); 00305 Vson.push_back("D*+"); Vson.push_back("D*-");Vson.push_back("pi0"); 00306 VmodeSon.push_back(Vson); 00307 00308 //19: anti-D*0 D*+ pi- 00309 Vson.clear(); 00310 Vson.push_back("anti-D*0"); Vson.push_back("D*+");Vson.push_back("pi-"); 00311 VmodeSon.push_back(Vson); 00312 00313 //20: D*0 D*- pi+ 00314 Vson.clear(); 00315 Vson.push_back("D*0"); Vson.push_back("D*-");Vson.push_back("pi+"); 00316 VmodeSon.push_back(Vson); 00317 00318 //21: D*0 D*0bar pi0 00319 Vson.clear(); 00320 Vson.push_back("D*0"); Vson.push_back("anti-D*0");Vson.push_back("pi0"); 00321 VmodeSon.push_back(Vson); 00322 00323 //22: D0bar D*0 pi0 00324 Vson.clear(); 00325 Vson.push_back("anti-D0"); Vson.push_back("D*0");Vson.push_back("pi0"); 00326 VmodeSon.push_back(Vson); 00327 00328 //23: D*0bar D0 pi0 00329 Vson.clear(); 00330 Vson.push_back("anti-D*0"); Vson.push_back("D0");Vson.push_back("pi0"); 00331 VmodeSon.push_back(Vson); 00332 00333 }
virtual EvtPsi3Sdecay::~EvtPsi3Sdecay | ( | ) | [inline, virtual] |
bool EvtPsi3Sdecay::AngSam | ( | EvtVector4R | parent_p4cm, | |
EvtVector4R | son_p4cm, | |||
double | alpha | |||
) |
Definition at line 423 of file EvtPsi3Sdecay.cc.
References cos(), EvtRandom::Flat(), and EvtHelSys::getHelAng().
Referenced by PHSPDecay().
00423 { 00424 EvtHelSys angles(parent_p4cm,son_p4cm); 00425 double theta=angles.getHelAng(1); 00426 //double phi =angles.getHelAng(2); 00427 //double gamma=0; 00428 double costheta=cos(theta); //using helicity angles in parent system 00429 double max_alpha; 00430 if(alpha>=0) {max_alpha = 1+alpha;}else 00431 {max_alpha=1;} 00432 double ags = (1+alpha*costheta*costheta)/max_alpha; 00433 double rand=EvtRandom::Flat(0.0, 1.0); 00434 if(rand <=ags) {return true;} 00435 else {return false;} 00436 }
EvtParticle * EvtPsi3Sdecay::choseDecay | ( | EvtParticle * | par | ) |
Definition at line 232 of file EvtPsi3Sdecay.cc.
References _themode, EvtParticle::getDaug(), getDecay(), EvtPDL::getMinMass(), EvtParticle::getNDaug(), getVId(), genRecEmupikp::i, EvtParticle::initializePhaseSpace(), EvtParticle::makeDaughters(), and EvtParticle::mass().
00232 { //decay par 00233 double xm = par->mass(); 00234 int themode = getDecay(xm); 00235 std::vector< EvtId > theid = getVId(themode); 00236 int ndaugjs = theid.size(); 00237 EvtId myId[3]; 00238 for(int i=0;i<ndaugjs;i++){myId[i]=theid[i];} 00239 par->makeDaughters(ndaugjs,myId); 00240 00241 for(int i=0;i<par->getNDaug();i++){ 00242 EvtParticle* di=par->getDaug(i); 00243 double xmi=EvtPDL::getMinMass(di->getId()); 00244 di->setMass(xmi); 00245 } 00246 par->initializePhaseSpace(ndaugjs,myId); 00247 _themode = themode; 00248 return par; 00249 }
bool EvtPsi3Sdecay::choseDecay | ( | ) |
Definition at line 133 of file EvtPsi3Sdecay.cc.
References d0bardst0, d0d0bar, d0dst0bar, dpdm, dspdsm, dssmdsp, dsspdsm, dsspdssm, dst0dst0bar, dstmdp, dstpdm, dstpdstm, findMode(), EvtRandom::Flat(), EvtPDL::getMinMass(), EvtParticle::getP4(), genRecEmupikp::i, EvtVector4R::mass(), polint(), theParent, theProb(), Vid, xs12, xs13, xs14, xs15, xs16, xs17, xs18, xs19, xs20, xs21, xs22, and xs23.
Referenced by EvtDecay::callEvtGen().
00133 { //determing accept or reject a generated decay 00134 00135 // findPoints(); 00136 double d0d0bar_xs=polint(d0d0bar); 00137 double dpdm_xs = polint(dpdm); 00138 double d0dst0bar_xs = polint(d0dst0bar); 00139 double d0bardst0_xs = polint(d0bardst0); 00140 00141 double dst0dst0bar_xs = polint(dst0dst0bar); 00142 double dstpdm_xs = polint(dstpdm); 00143 00144 double dstmdp_xs = polint(dstmdp); 00145 double dstpdstm_xs = polint(dstpdstm); 00146 00147 double dspdsm_xs = polint(dspdsm); 00148 00149 double dsspdsm_xs = polint(dsspdsm); 00150 double dssmdsp_xs = polint(dssmdsp); 00151 00152 double dsspdssm_xs = polint(dsspdssm); 00153 //--- DDpi modes 00154 double _xs12 = polint(xs12); 00155 double _xs13 = polint(xs13); 00156 double _xs14 = polint(xs14); 00157 double _xs15 = polint(xs15); 00158 double _xs16 = polint(xs16); 00159 double _xs17 = polint(xs17); 00160 double _xs18 = polint(xs18); 00161 double _xs19 = polint(xs19); 00162 double _xs20 = polint(xs20); 00163 double _xs21 = polint(xs21); 00164 double _xs22 = polint(xs22); 00165 double _xs23 = polint(xs23); 00166 00167 int ich = findMode(); 00168 // std::cout<<"calculated XS "<< d0d0bar_xs<<" "<<dpdm_xs<<" "<<d0dst0bar_xs<<" "<<d0bardst0_xs<< " "<<dst0dst0bar_xs<<" "<<dstpdm_xs<< " "<<dstmdp_xs<<" "<<dstpdstm_xs<<" "<<dspdsm_xs<<std::endl; 00169 00170 00171 double xmtotal=0; 00172 for(int i=0;i<Vid.size();i++){ 00173 xmtotal += EvtPDL::getMinMass(Vid[i]); 00174 } 00175 double mparent= theParent->getP4().mass(); 00176 // std::cout<<"mparent= "<<mparent<<", xmtotal= "<<xmtotal<<endl; 00177 if (mparent<xmtotal){return false;} 00178 00179 00180 std::vector<double> myxs; myxs.clear(); 00181 myxs.push_back(d0d0bar_xs); //0 00182 myxs.push_back(dpdm_xs); 00183 myxs.push_back(d0dst0bar_xs); //2 00184 myxs.push_back(d0bardst0_xs); 00185 myxs.push_back(dst0dst0bar_xs); //4 00186 myxs.push_back(dstpdm_xs); 00187 myxs.push_back(dstmdp_xs); //6 00188 myxs.push_back(dstpdstm_xs); 00189 myxs.push_back(dspdsm_xs); //8 00190 myxs.push_back(dsspdsm_xs); 00191 myxs.push_back(dssmdsp_xs); //10 00192 myxs.push_back(dsspdssm_xs); //11 00193 00194 myxs.push_back(_xs12); //12 00195 myxs.push_back(_xs13); //13 00196 myxs.push_back(_xs14); //14 00197 myxs.push_back(_xs15); //15 00198 myxs.push_back(_xs16); //16 00199 myxs.push_back(_xs17); //17 00200 myxs.push_back(_xs18); //18 00201 myxs.push_back(_xs19); //19 00202 myxs.push_back(_xs20); //20 00203 myxs.push_back(_xs21); //21 00204 myxs.push_back(_xs22); //22 00205 myxs.push_back(_xs23); //23 00206 00207 double Prop0,Prop1; 00208 if(ich==0){ Prop0=0;} else 00209 { 00210 Prop0 = theProb(myxs,ich-1); 00211 } 00212 Prop1 = theProb(myxs,ich); 00213 00214 double pm= EvtRandom::Flat(0.,1); 00215 bool flag = false; 00216 if( Prop0 < pm && pm<= Prop1 ) flag = true; 00217 00218 //--- debuging 00219 00220 if(flag) { 00221 //std::cout<<"findMode= "<<ich<<std::endl; 00222 //for(int i=0;i<myxs.size();i++){ std::cout<<"channel "<<i<<" myxs: "<<myxs[i]<<std::endl;} 00223 //std::cout<<"prop0,prop1= "<<Prop0<<" "<<Prop1<<std::endl; 00224 } 00225 00226 //------------- 00227 00228 return flag; 00229 }
int EvtPsi3Sdecay::findMode | ( | ) |
Definition at line 73 of file EvtPsi3Sdecay.cc.
References EvtParticle::getDaug(), EvtParticle::getId(), genRecEmupikp::i, ganga-rec::j, EvtPDL::name(), Ndaugs, deljobs::string, theParent, Vid, and Vson.
Referenced by choseDecay().
00073 { 00074 // mode index: 0) D0D0bar, 1)D+D-; 2)D0D*0bar , 3)D0bar D*0, 4)D*0 D*0 bar, 5)D*+D- 6)D*-D+ 7)D*+ D*- 8) Ds+ Ds- 00075 // more modes: 9) D_s^*+ D_s^- ;10) D_s^*- D_s^+; 11) D_s^*+ D_s^*- 00076 00077 std::string son0,son1,son2; 00078 Vson.clear(); 00079 Vid.clear(); 00080 for(int i=0;i<Ndaugs;i++){ 00081 std::string nson=EvtPDL::name(theParent->getDaug(i)->getId()); 00082 if(nson!="gammaFSR" && nson!="gamma"){ Vson.push_back(nson);Vid.push_back(theParent->getDaug(i)->getId());} 00083 } 00084 int nh=Vson.size(); 00085 //debugging 00086 //std::cout<<"nh= "<<nh<<" "<<Vson[0]<<" "<<Vson[1]<<" "<<Vson[2]<<std::endl; 00087 //theParent->printTree(); 00088 00089 if(nh == 2){ 00090 //std::cout<<"2 final states: "<<Vson[0]<<" "<<Vson[1]<<std::endl; 00091 son0 = Vson[0];son1 = Vson[1]; 00092 if(son0 == "D0" && son1 == "anti-D0" || son1 == "D0" && son0 == "anti-D0") {return 0;} else 00093 if(son0 == "D+" && son1 == "D-" || son1 == "D+" && son0 == "D-" ) {return 1;} else 00094 if(son0 == "D0" && son1 == "anti-D*0" || son1 == "D0" && son0 == "anti-D*0") {return 2;} else 00095 if(son0 == "anti-D0" && son1 == "D*0" || son1 == "anti-D0" && son0 == "D*0") {return 3;} else 00096 if(son0 == "D*0" && son1 == "anti-D*0" || son1 == "D*0" && son0 == "anti-D*0") {return 4;} else 00097 if(son0 == "D*+" && son1 == "D-" || son1 == "D*+" && son0 == "D-") {return 5;} else 00098 if(son0 == "D*-" && son1 == "D+" || son1 == "D*-" && son0 == "D+") {return 6;} else 00099 if(son0 == "D*+" && son1 == "D*-" || son1 == "D*+" && son0 == "D*-") {return 7;} else 00100 if(son0 == "D_s+" && son1 == "D_s-" || son1 == "D_s+" && son0 == "D_s-") {return 8;} else 00101 if(son0 == "D_s*+" && son1 == "D_s-" || son1 == "D_s*+" && son0 == "D_s-") {return 9;} else 00102 if(son0 == "D_s*-" && son1 == "D_s+" || son1 == "D_s*-" && son0 == "D_s+") {return 10;}else 00103 if(son0 == "D_s*+" && son1 == "D_s*-" || son1 == "D_s*+" && son0 == "D_s*-") {return 11;}else {goto ErrInfo;} 00104 } else if(nh == 3){ 00105 //std::cout<<"3 final states: "<<Vson[0]<<" "<<Vson[1]<<" "<<Vson[2]<<std::endl; 00106 son0 = Vson[0];son1 = Vson[1];son2 = Vson[2]; 00107 if(son0 == "D*+" && son1 == "D-" && son2 == "pi0" ) {return 12;} else 00108 if(son0 == "D*-" && son1 == "D+" && son2 == "pi0" ) {return 13;} else 00109 if(son0 == "D*+" && son1 == "anti-D0" && son2 == "pi-" ) {return 14;} else 00110 if(son0 == "D*-" && son1 == "D0" && son2 == "pi+" ) {return 15;} else 00111 if(son0 == "D+" && son1 == "anti-D*0" && son2 == "pi-" ) {return 16;} else 00112 if(son0 == "D-" && son1 == "D*0" && son2 == "pi+" ) {return 17;} else 00113 if(son0 == "D*+" && son1 == "D*-" && son2 == "pi0" ) {return 18;} else 00114 if(son0 == "anti-D*0" &&son1 == "D*+" && son2 == "pi-" ) {return 19;} else 00115 if(son0 == "D*0" && son1 == "D*-" && son2 == "pi+" ) {return 20;} else 00116 if(son0 == "D*0" && son1 == "anti-D*0" && son2 == "pi0" ) {return 21;} else 00117 if(son0 == "D0" && son1 == "anti-D*0" && son2 == "pi0" ) {return 22;} else 00118 if(son0 == "anti-D0" && son1 == "D*0" && son2 == "pi0" ) {return 23;} else {goto ErrInfo;} 00119 } 00120 ErrInfo: 00121 std::cout<<"Not open charm decay"<<std::endl; 00122 std::cout<<"final states \""; 00123 for(int j=0;j<nh;j++){ 00124 std::cout<<Vson[j]<<" "; 00125 } 00126 std::cout<<" \" is not in the Psi3Decay list, see $BESEVTGENROOT/src/EvtGen/EvtGenModels/EvtPsi3Sdecay.hh"<<std::endl; 00127 ::abort(); 00128 00129 00130 }
int EvtPsi3Sdecay::findPoints | ( | ) |
Definition at line 32 of file EvtPsi3Sdecay.cc.
References Ecms, genRecEmupikp::i, nsize, theLocation, and x.
Referenced by polint().
00032 { 00033 if(Ecms < x[0] ){theLocation =0;} else 00034 if(Ecms >=x[nsize-1]) {theLocation = nsize-1;} else{ 00035 for (int i=0;i<nsize-1;i++){ 00036 if( x[i] <= Ecms && x[i+1] > Ecms) {theLocation=i;} 00037 } 00038 } 00039 return theLocation; 00040 }
std::vector<EvtId> EvtPsi3Sdecay::getDaugId | ( | ) | [inline] |
Definition at line 350 of file EvtPsi3Sdecay.hh.
References Vid.
Referenced by EvtOpenCharm::decay().
00350 {return Vid;}
std::vector<EvtVector4R> EvtPsi3Sdecay::getDaugP4 | ( | ) | [inline] |
Definition at line 351 of file EvtPsi3Sdecay.hh.
References v_p4.
Referenced by EvtOpenCharm::decay().
00351 {return v_p4;}
int EvtPsi3Sdecay::getDecay | ( | double | ecms | ) |
Definition at line 314 of file EvtPsi3Sdecay.cc.
References _excflag, _themode, d0bardst0, d0d0bar, d0dst0bar, dpdm, dspdsm, dssmdsp, dsspdsm, dsspdssm, dst0dst0bar, dstmdp, dstpdm, dstpdstm, Ecms, EvtRandom::Flat(), EvtPDL::getMinMass(), getVId(), genRecEmupikp::i, polint(), psi3Scount, theProb(), xs12, xs13, xs14, xs15, xs16, xs17, xs18, xs19, xs20, xs21, xs22, and xs23.
Referenced by choseDecay(), and PHSPDecay().
00314 { //pick up a decay by the accept-reject sampling method 00315 if(ecms<3.97 || ecms >4.66){std::cout<<"EvtPsi3Sdecay::getDecay: You need to set the CMS energy between 3.97~4.66 GeV, but you have ecms= "<<ecms<< " GeV.The lower end can be set at KKMC"<<std::endl; } 00316 if(_excflag ==1) return _themode; 00317 Ecms = ecms; 00318 // findPoints(); 00319 double d0d0bar_xs=polint(d0d0bar); 00320 double dpdm_xs = polint(dpdm); 00321 double d0dst0bar_xs = polint(d0dst0bar); 00322 double d0bardst0_xs = polint(d0bardst0); 00323 00324 double dst0dst0bar_xs = polint(dst0dst0bar); 00325 double dstpdm_xs = polint(dstpdm); 00326 00327 double dstmdp_xs = polint(dstmdp); 00328 double dstpdstm_xs = polint(dstpdstm); 00329 00330 double dspdsm_xs = polint(dspdsm); 00331 00332 double dsspdsm_xs = polint(dsspdsm); 00333 double dssmdsp_xs = polint(dssmdsp); 00334 00335 double dsspdssm_xs = polint(dsspdssm); 00336 00337 double _xs12 = polint(xs12); 00338 double _xs13 = polint(xs13); 00339 double _xs14 = polint(xs14); 00340 double _xs15 = polint(xs15); 00341 double _xs16 = polint(xs16); 00342 double _xs17 = polint(xs17); 00343 double _xs18 = polint(xs18); 00344 double _xs19 = polint(xs19); 00345 double _xs20 = polint(xs20); 00346 double _xs21 = polint(xs21); 00347 double _xs22 = polint(xs22); 00348 double _xs23 = polint(xs23); 00349 00350 00351 std::vector<double> myxs; myxs.clear(); 00352 myxs.push_back(d0d0bar_xs); //0 00353 myxs.push_back(dpdm_xs); //1 00354 myxs.push_back(d0dst0bar_xs); //2 00355 myxs.push_back(d0bardst0_xs); //3 00356 myxs.push_back(dst0dst0bar_xs);//4 00357 myxs.push_back(dstpdm_xs); //5 00358 myxs.push_back(dstmdp_xs); //6 00359 myxs.push_back(dstpdstm_xs); //7 00360 myxs.push_back(dspdsm_xs); //8 00361 myxs.push_back(dsspdsm_xs); //9 00362 myxs.push_back(dssmdsp_xs); //10 00363 myxs.push_back(dsspdssm_xs); //11 00364 myxs.push_back(_xs12); //12 00365 myxs.push_back(_xs13); //13 00366 myxs.push_back(_xs14); //14 00367 myxs.push_back(_xs15); //15 00368 myxs.push_back(_xs16); //16 00369 myxs.push_back(_xs17); //17 00370 myxs.push_back(_xs18); //18 00371 myxs.push_back(_xs19); //19 00372 myxs.push_back(_xs20); //20 00373 myxs.push_back(_xs21); //21 00374 myxs.push_back(_xs22); //22 00375 myxs.push_back(_xs23); //23 00376 00377 double mytotxs=0; 00378 for(int i=0;i<myxs.size();i++){mytotxs += myxs[i];} 00379 if(psi3Scount==0) {std::cout<<"The total xs at "<<ecms<<" is: "<<mytotxs<<" pb"<<std::endl;psi3Scount++;} 00380 int niter = 0; 00381 loop: 00382 int ich = (int)24*EvtRandom::Flat(0.,1);//sampling modes over 24 channel 00383 00384 niter++; 00385 if(niter>1000) {std::cout<<"EvtPsi3Sdecay:getDecay() do loops over 1000 times at Ecm= "<<ecms<<std::endl;abort();} 00386 00387 double xmtotal=0; 00388 std::vector<EvtId> theVid; 00389 theVid.clear(); 00390 theVid = getVId(ich); 00391 for(int i=0;i<theVid.size();i++){ 00392 xmtotal += EvtPDL::getMinMass(theVid[i]); 00393 } 00394 00395 if(Ecms < xmtotal ) {goto loop;} 00396 00397 double Prop0,Prop1; 00398 if(ich==0){ Prop0=0;} else 00399 { 00400 Prop0 = theProb(myxs,ich-1); 00401 } 00402 Prop1 = theProb(myxs,ich); 00403 00404 double pm= EvtRandom::Flat(0.,1); 00405 00406 if( Prop0 < pm && pm<= Prop1 ) {return ich;} 00407 else {goto loop;} 00408 00409 }
int EvtPsi3Sdecay::getMode | ( | ) | [inline] |
Definition at line 345 of file EvtPsi3Sdecay.hh.
References _themode.
Referenced by EvtOpenCharm::decay().
00345 {return _themode;};
std::vector< EvtId > EvtPsi3Sdecay::getVId | ( | int | mode | ) |
Definition at line 412 of file EvtPsi3Sdecay.cc.
References EvtPDL::getId(), genRecEmupikp::i, and VmodeSon.
Referenced by choseDecay(), getDecay(), and PHSPDecay().
00412 { 00413 std::vector<EvtId> theVid; 00414 theVid.clear(); 00415 for(int i=0;i<VmodeSon[mode].size();i++){ 00416 EvtId theId = EvtPDL::getId(VmodeSon[mode][i]); 00417 theVid.push_back(theId); 00418 } 00419 return theVid; 00420 }
void EvtPsi3Sdecay::PHSPDecay | ( | EvtParticle * | par | ) |
Definition at line 254 of file EvtPsi3Sdecay.cc.
References _themode, alpha, AngSam(), EvtParticle::deleteTree(), EvtParticle::getDaug(), getDecay(), EvtParticle::getId(), EvtPDL::getMinMass(), EvtParticle::getNDaug(), EvtParticle::getP4(), getVId(), genRecEmupikp::i, EvtParticle::initializePhaseSpace(), EvtParticle::makeDaughters(), EvtParticle::mass(), EvtParticleFactory::particleFactory(), v_p4, and Vid.
Referenced by EvtOpenCharm::decay().
00254 {//decay par 00255 v_p4.clear();Vid.clear(); 00256 double xm = par->mass(); 00257 EvtVector4R p_ini(xm,0,0,0); 00258 EvtParticle* mypar= EvtParticleFactory::particleFactory(par->getId(),p_ini); 00259 00260 int themode = getDecay(xm); 00261 std::vector< EvtId > theid = getVId(themode); 00262 int ndaugjs = theid.size(); 00263 EvtId myId[3]; 00264 for(int i=0;i<ndaugjs;i++){myId[i]=theid[i];} 00265 mypar->makeDaughters(ndaugjs,myId); 00266 00267 for(int i=0;i<mypar->getNDaug();i++){ 00268 EvtParticle* di=mypar->getDaug(i); 00269 double xmi=EvtPDL::getMinMass(di->getId()); 00270 di->setMass(xmi); 00271 } 00272 loop: 00273 mypar->initializePhaseSpace(ndaugjs,myId); 00274 00275 //-- here to do amgular distribution sampling 00276 bool pp = (themode == 0||themode == 1 ||themode ==6); //V->PP mode, alpha = -1 00277 bool vp = (themode >=2 && themode <=5 || themode >=7 && themode <=9 ); // V->VP mode, alpha = 1 00278 bool flag1 = false; 00279 double alpha; 00280 if(pp){alpha=-1;}else if(vp){alpha=1;} else {alpha=0;} 00281 EvtVector4R pp4=par->getP4(); 00282 EvtVector4R sp4=mypar->getDaug(1)->getP4(); 00283 flag1=AngSam(pp4,sp4,alpha); 00284 if(alpha != 0 && !flag1 ) goto loop; 00285 //-- 00286 _themode = themode; 00287 for(int i=0;i<mypar->getNDaug();i++){ 00288 EvtParticle* di=mypar->getDaug(i); 00289 v_p4.push_back( di->getP4() ); 00290 Vid.push_back(myId[i]); 00291 // std::cout<<"Vid "<<EvtPDL::name(Vid[i])<<" p4: "<<v_p4[i]<<std::endl; 00292 } 00293 00294 00295 /*********** same function can be realized 00296 double mass[3]; 00297 EvtVector4R p4[30]; 00298 for(int i=0;i<ndaugjs;i++){mass[i]=mypar->getDaug(i)->mass();} 00299 EvtGenKine::PhaseSpace(ndaugjs,mass,p4,xm); 00300 _themode = themode; 00301 for(int i=0;i<mypar->getNDaug();i++){ 00302 v_p4.push_back( p4[i] ); 00303 Vid.push_back(myId[i]); 00304 // std::cout<<"Vid "<<EvtPDL::name(Vid[i])<<" p4: "<<v_p4[i]<<std::endl; 00305 } 00306 *************/ 00307 mypar->deleteTree(); 00308 return; 00309 }
double EvtPsi3Sdecay::polint | ( | std::vector< double > | points | ) |
Definition at line 42 of file EvtPsi3Sdecay.cc.
References Ecms, findPoints(), nsize, theLocation, and x.
Referenced by choseDecay(), and getDecay().
00042 { 00043 00044 theLocation = findPoints(); 00045 double xs; 00046 if(theLocation==nsize-1){xs = vy[nsize-1];} else{ 00047 xs = (vy[theLocation +1 ]- vy[theLocation]) / (x[theLocation+1]-x[theLocation])*(Ecms - x[theLocation])+vy[theLocation]; 00048 } 00049 if(xs <0 ) xs = 0; 00050 // for(int i=0;i<vy.size();i++){ std::cout<<"channel "<<i<<" xsection: "<<vy[i]<<std::endl;} 00051 // std::cout<<"Ecms, theLocation= "<<Ecms<<" "<<theLocation<<" xs= "<<xs<<std::endl; 00052 return xs; 00053 }
void EvtPsi3Sdecay::setMode | ( | int | m | ) | [inline] |
Definition at line 353 of file EvtPsi3Sdecay.hh.
References _excflag, and _themode.
Referenced by EvtOpenCharm::decay().
00353 { 00354 if(m<0 || m>32) {std::cout<<"EvtPsi3Decay::setMode: bad mode"<<std::endl;abort();} 00355 _themode = m;_excflag=1;}
double EvtPsi3Sdecay::theProb | ( | std::vector< double > | myxs, | |
int | ich | |||
) |
Definition at line 55 of file EvtPsi3Sdecay.cc.
References ganga-rec::j.
Referenced by choseDecay(), and getDecay().
00055 { 00056 int Nchannels=myxs.size(); 00057 //---debuging 00058 // std::cout<<"Nchannel= "<<Nchannels<<endl; 00059 00060 std::vector <double> thexs; 00061 thexs.clear(); 00062 double sumxs=0; 00063 for(int j=0;j<Nchannels;j++){ 00064 sumxs += myxs[j]; 00065 thexs.push_back(sumxs); 00066 //----debugging 00067 // std::cout<<"thexs["<<j<<"]= "<<myxs[j]<<std::endl; 00068 } 00069 if(sumxs == 0) {std::cout<<"EvtPsi3Sdecay::theProb, denominator is 0"<<std::endl;::abort();} 00070 return thexs[ich] / sumxs ; 00071 }
int EvtPsi3Sdecay::_excflag [private] |
Definition at line 395 of file EvtPsi3Sdecay.hh.
Referenced by EvtPsi3Sdecay(), getDecay(), and setMode().
int EvtPsi3Sdecay::_themode [private] |
Definition at line 395 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), getDecay(), getMode(), PHSPDecay(), and setMode().
std::vector<double> EvtPsi3Sdecay::d0bardst0 [private] |
Definition at line 365 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::d0d0bar [private] |
Definition at line 362 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::d0dst0bar [private] |
Definition at line 364 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
EvtId* EvtPsi3Sdecay::Daughters [private] |
Definition at line 359 of file EvtPsi3Sdecay.hh.
std::vector<double> EvtPsi3Sdecay::dpdm [private] |
Definition at line 363 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dspdsm [private] |
Definition at line 370 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dssmdsp [private] |
Definition at line 372 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dsspdsm [private] |
Definition at line 371 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dsspdssm [private] |
Definition at line 373 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dst0dst0bar [private] |
Definition at line 366 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dstmdp [private] |
Definition at line 368 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dstpdm [private] |
Definition at line 367 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::dstpdstm [private] |
Definition at line 369 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
double EvtPsi3Sdecay::Ecms [private] |
Definition at line 357 of file EvtPsi3Sdecay.hh.
Referenced by EvtPsi3Sdecay(), findPoints(), getDecay(), and polint().
int EvtPsi3Sdecay::Ndaugs [private] |
int EvtPsi3Sdecay::nsize [private] |
Definition at line 387 of file EvtPsi3Sdecay.hh.
Referenced by EvtPsi3Sdecay(), findPoints(), and polint().
int EvtPsi3Sdecay::psi3Scount = 0 [static, private] |
int EvtPsi3Sdecay::theLocation [private] |
EvtParticle* EvtPsi3Sdecay::theParent [private] |
Definition at line 358 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and findMode().
double EvtPsi3Sdecay::theXsection[50] [private] |
Definition at line 388 of file EvtPsi3Sdecay.hh.
std::vector<EvtVector4R> EvtPsi3Sdecay::v_p4 [private] |
std::vector<EvtId> EvtPsi3Sdecay::Vid [private] |
Definition at line 391 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), findMode(), getDaugId(), and PHSPDecay().
std::vector< std::vector<EvtId> > EvtPsi3Sdecay::VmodeId [private] |
Definition at line 394 of file EvtPsi3Sdecay.hh.
std::vector< std::vector<std::string> > EvtPsi3Sdecay::VmodeSon [private] |
std::vector<std::string> EvtPsi3Sdecay::Vson [private] |
std::vector<double> EvtPsi3Sdecay::x [private] |
Definition at line 361 of file EvtPsi3Sdecay.hh.
Referenced by EvtPsi3Sdecay(), findPoints(), and polint().
std::vector<double> EvtPsi3Sdecay::xs12 [private] |
Definition at line 374 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs13 [private] |
Definition at line 375 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs14 [private] |
Definition at line 376 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs15 [private] |
Definition at line 377 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs16 [private] |
Definition at line 378 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs17 [private] |
Definition at line 379 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs18 [private] |
Definition at line 380 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs19 [private] |
Definition at line 381 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs20 [private] |
Definition at line 382 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs21 [private] |
Definition at line 383 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs22 [private] |
Definition at line 384 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().
std::vector<double> EvtPsi3Sdecay::xs23 [private] |
Definition at line 385 of file EvtPsi3Sdecay.hh.
Referenced by choseDecay(), EvtPsi3Sdecay(), and getDecay().