EvtPsi3Sdecay Class Reference

#include <EvtPsi3Sdecay.hh>

List of all members.

Public Member Functions

 EvtPsi3Sdecay (double ecms, EvtParticle *parent)
 EvtPsi3Sdecay ()
virtual ~EvtPsi3Sdecay ()
int findPoints ()
double polint (std::vector< double > points)
bool choseDecay ()
EvtParticlechoseDecay (EvtParticle *par)
int getDecay (double ecms)
double theProb (std::vector< double > myxs, int ich)
int findMode ()
int getMode ()
std::vector< EvtIdgetVId (int mode)
void PHSPDecay (EvtParticle *par)
std::vector< EvtIdgetDaugId ()
std::vector< EvtVector4RgetDaugP4 ()
bool AngSam (EvtVector4R parent_p4cm, EvtVector4R son_p4cm, double alpha)
void setMode (int m)

Private Attributes

double Ecms
EvtParticletheParent
EvtIdDaughters
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::stringVson
std::vector< EvtIdVid
std::vector< std::vector<
std::string > > 
VmodeSon
std::vector< std::vector<
EvtId > > 
VmodeId
int _themode
int _excflag
std::vector< EvtVector4Rv_p4

Static Private Attributes

static int psi3Scount = 0


Detailed Description

Definition at line 33 of file EvtPsi3Sdecay.hh.


Constructor & Destructor Documentation

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]

Definition at line 336 of file EvtPsi3Sdecay.hh.

00336 {}


Member Function Documentation

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 }


Member Data Documentation

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]

Definition at line 360 of file EvtPsi3Sdecay.hh.

Referenced by EvtPsi3Sdecay(), and findMode().

int EvtPsi3Sdecay::nsize [private]

Definition at line 387 of file EvtPsi3Sdecay.hh.

Referenced by EvtPsi3Sdecay(), findPoints(), and polint().

int EvtPsi3Sdecay::psi3Scount = 0 [static, private]

Definition at line 398 of file EvtPsi3Sdecay.hh.

Referenced by getDecay().

int EvtPsi3Sdecay::theLocation [private]

Definition at line 389 of file EvtPsi3Sdecay.hh.

Referenced by findPoints(), and polint().

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]

Definition at line 397 of file EvtPsi3Sdecay.hh.

Referenced by getDaugP4(), and PHSPDecay().

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]

Definition at line 393 of file EvtPsi3Sdecay.hh.

Referenced by EvtPsi3Sdecay(), and getVId().

std::vector<std::string> EvtPsi3Sdecay::Vson [private]

Definition at line 390 of file EvtPsi3Sdecay.hh.

Referenced by EvtPsi3Sdecay(), and findMode().

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().


Generated on Tue Nov 29 23:19:13 2016 for BOSS_7.0.2 by  doxygen 1.4.7