]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtVSPPwave.cxx
AliDecayer realisation for the EvtGen code and EvtGen itself.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtVSPPwave.cxx
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: EvtVSPPwave.cc
12 //
13 // Description: Routine to decay vector-> scalar photon in P-wave
14 //
15 // Modification history:
16 //
17 //    RYD       November 24, 1996       Module created
18 //
19 //------------------------------------------------------------------------
20 // 
21 #include "EvtGenBase/EvtPatches.hh"
22 #include <stdlib.h>
23 #include "EvtGenBase/EvtParticle.hh"
24 #include "EvtGenBase/EvtGenKine.hh"
25 #include "EvtGenBase/EvtTensor4C.hh"
26 #include "EvtGenBase/EvtPDL.hh"
27 #include "EvtGenModels/EvtVSPPwave.hh"
28 #include "EvtGenBase/EvtReport.hh"
29 #include <string>
30 #include "EvtGenBase/EvtVector4C.hh"
31
32 EvtVSPPwave::~EvtVSPPwave() {}
33
34 std::string EvtVSPPwave::getName(){
35
36   return "VSP_PWAVE";     
37
38 }
39
40
41 EvtDecayBase* EvtVSPPwave::clone(){
42
43   return new EvtVSPPwave;
44
45 }
46
47 void EvtVSPPwave::init(){
48
49   // check that there are 0 arguments
50   checkNArg(0);
51   checkNDaug(2);
52
53   checkSpinParent(EvtSpinType::VECTOR);
54   
55   checkSpinDaughter(0,EvtSpinType::SCALAR);
56   checkSpinDaughter(1,EvtSpinType::PHOTON);
57
58 }
59
60 void EvtVSPPwave::initProbMax(){
61
62   setProbMax(1);
63 }
64
65 void EvtVSPPwave::decay( EvtParticle *p){
66
67   p->initializePhaseSpace(getNDaug(),getDaugs());
68
69   EvtParticle *gamma;
70   gamma = p->getDaug(1);
71
72   double m_p=p->mass();
73   EvtVector4R momgamma = gamma->getP4();
74
75   //work in the parent ,p,  rest frame.
76   EvtVector4R p4_p;
77   p4_p.set(m_p, 0.0, 0.0, 0.0 );
78
79   //  Put phase space results into the daughters.
80  
81   EvtTensor4C tds;
82
83   double norm=1/(m_p*momgamma.d3mag());
84
85   tds = dual(directProd(norm*p4_p,momgamma));
86
87   vertex(0,0,(tds.cont1( p->eps(0))).cont(
88          gamma->epsParentPhoton(0).conj() ) );
89   vertex(0,1,(tds.cont1( p->eps(0))).cont(
90               gamma->epsParentPhoton(1).conj() ) );
91
92   vertex(1,0,(tds.cont1( p->eps(1))).cont(
93               gamma->epsParentPhoton(0).conj() ) );
94   vertex(1,1,(tds.cont1( p->eps(1))).cont(
95               gamma->epsParentPhoton(1).conj() ) );
96
97   vertex(2,0,(tds.cont1( p->eps(2))).cont(
98               gamma->epsParentPhoton(0).conj() ) );
99   vertex(2,1,(tds.cont1( p->eps(2))).cont(
100               gamma->epsParentPhoton(1).conj() ) );
101
102   return ;
103 }
104