Line data Source code
1 : //--------------------------------------------------------------------------
2 : //
3 : // Environment:
4 : // This software is part of the EvtGen package developed jointly
5 : // for the BaBar and CLEO collaborations. If you use all or part
6 : // of it, please give an appropriate acknowledgement.
7 : //
8 : // Copyright Information: See EvtGen/COPYRIGHT
9 : // Copyright (C) 1998 Caltech, UCSB
10 : //
11 : // Module: EvtSVP.cc
12 : //
13 : // Description: Routine to implement radiative decay chi_c0 -> psi gamma
14 : //
15 : //
16 : // Modification history:
17 : // AVL Jul 6, 2012 modle created
18 : //
19 : //------------------------------------------------------------------------
20 : //
21 : #include "EvtGenBase/EvtPatches.hh"
22 : #include <stdlib.h>
23 : #include "EvtGenBase/EvtParticle.hh"
24 : #include "EvtGenBase/EvtTensorParticle.hh"
25 : #include "EvtGenBase/EvtGenKine.hh"
26 : #include "EvtGenBase/EvtPDL.hh"
27 : #include "EvtGenBase/EvtReport.hh"
28 : #include "EvtGenBase/EvtVector4C.hh"
29 : #include "EvtGenBase/EvtTensor4C.hh"
30 :
31 :
32 : #include "EvtGenModels/EvtSVP.hh"
33 :
34 :
35 : #include <string>
36 : #include <iostream>
37 :
38 : using namespace std;
39 :
40 :
41 :
42 0 : EvtSVP::~EvtSVP() {
43 : // cout<<"(* AVL EvtSVP::destructor getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
44 : // cout<<"(* AVL EvtSVP::destructor "<<ncall<<" calls *)"<<endl;
45 :
46 0 : }
47 :
48 : std::string EvtSVP::getName(){
49 0 : return "SVP";
50 : }
51 :
52 :
53 : EvtDecayBase* EvtSVP::clone(){
54 : // cout<<" (* AVL: === EvtSVP::clone() ============ *)"<<endl;
55 0 : return new EvtSVP;
56 :
57 0 : }
58 :
59 : void EvtSVP::decay( EvtParticle *root ){
60 : // cout<<"(* AVL EvtSVP::decay getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
61 0 : ncall++;
62 : // cout<<" (* AVL EvtSVP::decay() ============ *)"<<endl;
63 0 : root ->initializePhaseSpace(getNDaug(),getDaugs());
64 :
65 0 : EvtVector4R p = root->getDaug(1)->getP4(), // J/psi momentum
66 0 : k = root->getDaug(0)->getP4(); // Photon momentum
67 0 : for(int iPsi = 0; iPsi < 4; iPsi++) {
68 0 : for(int iGamma = 0; iGamma < 1; iGamma++) {
69 0 : EvtVector4C epsPsi = root->getDaug(1)->epsParent(iPsi).conj();
70 0 : EvtVector4C epsGamma = root->getDaug(0)->epsParentPhoton(iGamma).conj();
71 :
72 : // EvtComplex amp = epsPsi*epsGamma - (epsPsi*k)/(epsGamma*p)/(k*p);
73 0 : EvtComplex amp = (epsPsi*epsGamma) - (epsPsi*k)*(epsGamma*p)/(k*p);
74 :
75 : // cout<<"EvtSVP::decay(): (k*p) = "<<(k*p)<<endl;
76 : //cout<<"EvtSVP::decay(): amp = "<<amp<<endl;
77 :
78 0 : vertex(iGamma, iPsi, amp);
79 0 : };
80 : };
81 :
82 0 : }
83 :
84 :
85 : void EvtSVP::init(){
86 : // cout<<" (* AVL: ==== EvtSVP::init() ============ *)"<<endl;
87 :
88 0 : ncall = 0;
89 :
90 0 : checkNArg(0);
91 0 : checkNDaug(2);
92 :
93 :
94 0 : checkSpinParent(EvtSpinType::SCALAR);
95 :
96 0 : checkSpinDaughter(0,EvtSpinType::PHOTON);
97 0 : checkSpinDaughter(1,EvtSpinType::VECTOR);
98 :
99 0 : }
100 :
101 : void EvtSVP::initProbMax() {
102 0 : setProbMax(1.2);
103 0 : };
104 :
|