BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVVPIPI_WEIGHTED.cc
Go to the documentation of this file.
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: EvtVVSPwave.cc
12//
13// Description: Routine to decay vector-> vector pi pi where the
14// decay is S-wave dominated.
15//
16// Modification history:
17//
18// Jim Hunt June 4, 2008 Module Created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtVVPIPI_WEIGHTED.hh"
30#include <stdlib.h>
31#include <string>
32using std::endl;
33
35
36void EvtVVPIPI_WEIGHTED::getName( std::string& model_name ) { model_name = "VVPIPI_WEIGHTED"; }
37
39
41
42 static EvtId PIP = EvtPDL::getId( "pi+" );
43 static EvtId PIM = EvtPDL::getId( "pi-" );
44 static EvtId PI0 = EvtPDL::getId( "pi0" );
45
46 // check that there are 0 arguments
47 checkNArg( 0 );
48 checkNDaug( 3 );
49
52
53 if ( ( !( getDaug( 1 ) == PIP && getDaug( 2 ) == PIM ) ) &&
54 ( !( getDaug( 1 ) == PI0 && getDaug( 2 ) == PI0 ) ) )
55 {
56 report( ERROR, "EvtGen" ) << "EvtVVPIPI_WEIGHTED generator expected "
57 << " pi+ and pi- (or pi0 and pi0) "
58 << "as 2nd and 3rd daughter. " << endl;
59 report( ERROR, "EvtGen" ) << "Will terminate execution!" << endl;
60 ::abort();
61 }
62}
63
65 // Hard coded... should not be hard to calculate...
66 setProbMax( 0.08 * 1.13 );
67}
68
69double reweight_event( double pipi_mass ) {
70 pipi_mass *= 1000.0;
71 return sqrt( -3.6911336508223251 + 0.019119831948029617 * pipi_mass +
72 -1.8962883732377376e-05 * pipi_mass * pipi_mass );
73}
74
76
77 psi_prime->initializePhaseSpace( getNDaug(), getDaugs() );
78
79 EvtParticle *jpsi, *pi1, *pi2;
80
81 jpsi = psi_prime->getDaug( 0 );
82 pi1 = psi_prime->getDaug( 1 );
83 pi2 = psi_prime->getDaug( 2 );
84
85 // Put phase space results into the daughters.
86
87 EvtVector4C ep0, ep1, ep2;
88
89 ep0 = psi_prime->eps( 0 );
90 ep1 = psi_prime->eps( 1 );
91 ep2 = psi_prime->eps( 2 );
92
93 EvtVector4C e0, e1, e2;
94
95 e0 = jpsi->epsParent( 0 );
96 e1 = jpsi->epsParent( 1 );
97 e2 = jpsi->epsParent( 2 );
98
99 double mass2 = ( pi1->getP4() + pi2->getP4() ).mass2();
100
101 double fac = mass2 - 4 * pi1->mass() * pi2->mass();
102
103 fac *= reweight_event( sqrt( mass2 ) );
104
105 vertex( 0, 0, fac * ( ep0 * e0.conj() ) );
106 vertex( 0, 1, fac * ( ep0 * e1.conj() ) );
107 vertex( 0, 2, fac * ( ep0 * e2.conj() ) );
108
109 vertex( 1, 0, fac * ( ep1 * e0.conj() ) );
110 vertex( 1, 1, fac * ( ep1 * e1.conj() ) );
111 vertex( 1, 2, fac * ( ep1 * e2.conj() ) );
112
113 vertex( 2, 0, fac * ( ep2 * e0.conj() ) );
114 vertex( 2, 1, fac * ( ep2 * e1.conj() ) );
115 vertex( 2, 2, fac * ( ep2 * e2.conj() ) );
116
117 return;
118}
Double_t e1
Double_t e2
character *LEPTONflag integer iresonances real pi2
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
double reweight_event(double pipi_mass)
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
virtual EvtVector4C epsParent(int i) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
virtual EvtVector4C eps(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtDecayBase * clone()
void getName(std::string &name)
void decay(EvtParticle *p)
EvtVector4C conj() const