]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtOmegaDalitz.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtOmegaDalitz.cxx
CommitLineData
da0e9ce3 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: EvtOmegaDalitz.cc
12//
13// Description: Routine to decay omega -> pi pi pi0
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/EvtVector4C.hh"
27#include "EvtGenBase/EvtVector3R.hh"
28#include "EvtGenBase/EvtPDL.hh"
29#include "EvtGenModels/EvtOmegaDalitz.hh"
30#include "EvtGenBase/EvtReport.hh"
31#include <string>
32
33EvtOmegaDalitz::~EvtOmegaDalitz() {}
34
35std::string EvtOmegaDalitz::getName(){
36
37 return "OMEGA_DALITZ";
38
39}
40
41
42EvtDecayBase* EvtOmegaDalitz::clone(){
43
44 return new EvtOmegaDalitz;
45
46}
47
48void EvtOmegaDalitz::init(){
49
50 // check that there are 0 arguments
51 checkNArg(0);
52 checkNDaug(3);
53
54 checkSpinParent(EvtSpinType::VECTOR);
55
56 checkSpinDaughter(0,EvtSpinType::SCALAR);
57 checkSpinDaughter(1,EvtSpinType::SCALAR);
58 checkSpinDaughter(2,EvtSpinType::SCALAR);
59
60}
61
62void EvtOmegaDalitz::initProbMax() {
63
64 setProbMax( 1.0);
65
66}
67
68void EvtOmegaDalitz::decay( EvtParticle *p ){
69
70 p->initializePhaseSpace(getNDaug(),getDaugs());
71
72 EvtVector4C ep[3];
73
74 ep[0] = p->eps(0);
75 ep[1] = p->eps(1);
76 ep[2] = p->eps(2);
77
78 EvtVector4R mompi1 = p->getDaug(0)->getP4();
79 EvtVector4R mompi2 = p->getDaug(1)->getP4();
80
81 EvtVector3R p1(mompi1.get(1),mompi1.get(2),mompi1.get(3));
82 EvtVector3R p2(mompi2.get(1),mompi2.get(2),mompi2.get(3));
83 EvtVector3R q=cross(p2,p1);
84
85 EvtVector3C e1(ep[0].get(1),ep[0].get(2),ep[0].get(3));
86 EvtVector3C e2(ep[1].get(1),ep[1].get(2),ep[1].get(3));
87 EvtVector3C e3(ep[2].get(1),ep[2].get(2),ep[2].get(3));
88
89 //This is an approximate formula of the maximum value that
90 //|q| can have.
91 double norm=1.14/(p->mass()*p->mass()/9.0-mompi1.mass2());
92
93 vertex(0,norm*e1*q);
94 vertex(1,norm*e2*q);
95 vertex(2,norm*e3*q);
96
97 return ;
98
99}
100