]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtTVP.cpp
ATO-78 - Technical changes to compare different calibrations
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtTVP.cpp
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: EvtTVP.cc
12 //
13 // Description: Routine to implement radiative decay chi_c2 -> psi gamma
14 //                      matrix element from [S.P Baranov et al, PRD 85, 014034 (2012)]
15 //
16 // Modification history:
17 //      AVL     6 July, 2012    Module 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/EvtTVP.hh"
33
34
35 #include <string>
36 #include <iostream>
37
38 using namespace std;
39
40
41
42 EvtTVP::~EvtTVP() {
43 //   cout<<"(* AVL EvtTVP::destructor getProbMax(-1) = "<<getProbMax(-1)<<" *)"<<endl;
44 //   cout<<"(* AVL EvtTVP::destructor "<<ncall<<" calls *)"<<endl;
45 }
46
47 std::string EvtTVP::getName(){
48   return "TVP";     
49 }
50
51
52 EvtDecayBase* EvtTVP::clone(){
53 //   cout<<" (* AVL: === EvtTVP::clone() ============ *)"<<endl;
54   return new EvtTVP;
55
56 }
57
58 void EvtTVP::decay( EvtParticle *root ){
59   ncall++;
60 //   cout<<" (* AVL  EvtTVP::decay() ============ *)"<<endl;
61   double amp2=0;
62   root ->initializePhaseSpace(getNDaug(),getDaugs());
63   
64   EvtVector4R p = root->getDaug(1)->getP4(), // J/psi momentum
65     k = root->getDaug(0)->getP4();           // Photon momentum
66 /*  
67     cout<<"(* AVL *) p="<<p<<endl;
68     cout<<"(* AVL *) k="<<k<<endl;*/
69     
70   for(int iPsi = 0; iPsi < 4; iPsi++) {
71     for(int iGamma = 0; iGamma < 1; iGamma++) {
72       for(int iChi = 0; iChi<4; iChi++) {
73           EvtTensor4C epsChi = root->epsTensor(iChi);
74           EvtVector4C epsPsi = root->getDaug(1)->epsParent(iPsi).conj();
75           EvtVector4C epsGamma = root->getDaug(0)->epsParentPhoton(iGamma).conj();
76
77           // [Baranov, (11)
78           // matr = p^mu epsPsi^a epsChi_{a b} ( k_mu epsGamma_b  - k_b epsGamma_mu
79
80
81           EvtVector4C eee = epsChi.cont1(epsPsi);
82           EvtVector4C vvv = (p*k)*eee - (k*eee)*p;
83 //        cout <<" (* AVL: ginv "<<(vvv*k)<<"  *) "<<endl;
84           EvtComplex amp = vvv*epsGamma;
85
86 //        cout << "(* AVL *) amp="<<amp<<endl;
87           vertex(iChi, iGamma, iPsi, amp);
88           amp2 = amp2 + abs2(amp);
89       };
90     };
91   };
92 //   cout <<"(* AVL: amp2 = "<<amp2<<"*)"<<endl;
93   
94 }
95
96
97 void EvtTVP::init(){
98 //   cout<<" (* AVL: ==== EvtTVP::init() ============ *)"<<endl;
99
100     ncall = 0;
101   
102   checkNArg(0);
103   checkNDaug(2);
104
105
106   checkSpinParent(EvtSpinType::TENSOR);
107
108   checkSpinDaughter(0,EvtSpinType::PHOTON);
109   checkSpinDaughter(1,EvtSpinType::VECTOR);
110
111 }
112
113 void EvtTVP::initProbMax() {
114   setProbMax(1.);
115 };
116