Pluto v6.3.0
Loading...
Searching...
No Matches
POmega3Pi.cc
Go to the documentation of this file.
1
2//
3// Decay w -> pi+ pi- pi0
4//
5// References:
6// [L1] Hadronic three-body decays of light vector mesons.
7// S. Leupold, (Frankfurt U.) , M.F.M. Lutz, (Darmstadt, GSI)
8// Jul 2008. 7pp.
9// Published in Eur.Phys.J.A39:205-212,2009.
10// e-Print: arXiv:0807.4686 [hep-ph]
11//
12// Authors: I. Froehlich, T. Scheib and S. Leupold
14
15
16using namespace std;
17#include <sstream>
18#include <iostream>
19#include <iomanip>
20
21#include "POmega3Pi.h"
22
23
25
26
28 primary = NULL;
29 parent = NULL;
30};
31
32POmega3Pi::POmega3Pi(const Char_t *id, const Char_t *de) :
33 PDistribution(id, de) {
34
35 primary = NULL;
36 parent = NULL;
37 RhoPropagator = NULL;
38 max = -1;
39};
40
41PDistribution *POmega3Pi::Clone(const char *) const {
42 return new POmega3Pi((const POmega3Pi &)* this);
43};
44
45Bool_t POmega3Pi::Init(void) {
46
47 //looking for primary. This is mandatory
48 primary = GetParticle("primary");
49 if (!primary) {
50 Warning("Init", "Primary not found");
51 return kFALSE;
52 }
53
54 //now get the parent
55 for (int i=0; i<position; i++) {
57 parent = particle[i];
58 }
59 if (!parent) {
60 Warning("Init", "Parent not found");
61 return kFALSE;
62 }
63
64 int side = 0;
65
66 for (int i=0; i<position; i++) {
68 && (particle[i] != primary)) {
69 if (side == 2) {
70 Warning("Init", "More than 2 side particle found");
71 return kFALSE;
72 }
73 side_particle[side] = particle[i];
74 side++;
75 }
76 }
77
78 if (side != 2) {
79 Warning("Init", "Less then 2 side particle found");
80 return kFALSE;
81 }
82
83 return kTRUE;
84};
85
86Bool_t POmega3Pi::Prepare(void) {
87 return kTRUE;
88};
89
90Bool_t POmega3Pi::Finalize(void) {
91 return kTRUE;
92};
93
95 return kFALSE;
96};
97
99
100 TLorentzVector M00 = (*(TLorentzVector *) primary) + (*(TLorentzVector *) side_particle[0]);
101 TLorentzVector M01 = (*(TLorentzVector *) primary) + (*(TLorentzVector *) side_particle[1]); // Definiere meinen TLorentzvector für pi0/pi- auf x-Achse
102
103 double myvariable = M01.M2();
104 double myvariable2 = M00.M2();
105
106 double factor = POmega3Pi::diffgam(myvariable, myvariable2);
107
108
109 if (factor > max) {
110 Warning("IsNotRejected", "Dalitz factor %f > max %f", factor, max);
111 if (max < 0) {
112 Warning("IsNotRejected", "Dalitz factor max not set");
113 }
114 max = factor*1.02;
115 }
116
117 if (factor < 0) {
118 return kFALSE;
119 }
120
121 if (((factor/max)) > PUtils::sampleFlat()) {
122 return kTRUE;
123 }
124
125 return kFALSE;
126};
127
128
129double POmega3Pi::diffgam(double M00, double M01) {
130 //Written by S. Leupold
131 double pi = TMath::Pi();
132
133 // physical parameters m_V, h_P, h_A, f, pion mass m_pi, omega mass m_omega
134 double mv, hp, ha, f, mpi, mom;
135 // third combination of invariant masses (squared)
136 double M02;
137 // matrix element C_omega -> 3pi
138 TComplex cc;
139 // parts of cc
140 TComplex h1, h2, h3, addh;
141 // phase space, returned variable
142 double p, dg;
143
144 TComplex a,b,c,d,e,ff;
145
146 //Take Pluto build-in rho propagator
147 if (RhoPropagator == NULL) {
148 RhoPropagator = makeDynamicData()->GetParticleSecondaryModel("rho0", "propagator");
149 if (RhoPropagator == NULL)
150 Fatal ("diffgam", "RhoPropagator not defined");
151 }
152
153
154 mv = 0.78;
155 hp = 0.304;
156 ha = 2.1;
157 f = 0.09;
158 mpi = 0.14;
159 mom = 0.78;
160
161 M02 = -M00 - M01 + TMath::Power(mom,2) + 3*TMath::Power(mpi,2);
162
163
164 p = -1./3.*((TMath::Power(M00,2)*M01)/4. + (M00*TMath::Power(M01,2))/4.
165 - (M00*M01*TMath::Power(mom,2))/4. -
166 (3*M00*M01*TMath::Power(mpi,2))/4. + (TMath::Power(mom,4)*TMath::Power(mpi,2))/4. -
167 (TMath::Power(mom,2)*TMath::Power(mpi,4))/2. + TMath::Power(mpi,6)/4.);
168
169
170
171 a = M00 + TMath::Power(mom,2);
172 h1 = RhoPropagator->GetAmplitude(&M00)*a.Re();
173
174 b = M01 + TMath::Power(mom,2);
175 h2 = RhoPropagator->GetAmplitude(&M01)*b.Re();
176
177 c = M02 + TMath::Power(mom,2);
178 h3 = RhoPropagator->GetAmplitude(&M02)*c.Re();
179
180 d = h1+h2;
181 addh = d+h3;
182
183 e = ha*hp*mv / (4.*TMath::Power(f,3)*mom);
184 cc = addh * e;
185
186 ff = p*cc*TComplex::Conjugate(cc);
187 dg = ff/(8.*pi*pi*pi*32.*mom*mom*mom);
188
189 return dg;
190};
#define PARTICLE_LIST_PARENT
#define PARTICLE_LIST_DAUGHTER
PDynamicData * makeDynamicData()
ClassImp(POmega3Pi) POmega3Pi
Definition POmega3Pi.cc:24
PParticle * d
TFile * f
Definition analyze_g12C.C:8
TH1F * h1
PParticle * particle[MAX_PARTICLE_LIST]
PParticle * GetParticle(const Char_t *pflag=NULL)
Int_t particle_flag[MAX_PARTICLE_LIST]
PChannelModel * GetParticleSecondaryModel(const char *name, const char *modelname)
PDistribution * Clone(const char *delme=NULL) const
Definition POmega3Pi.cc:41
Bool_t IsNotRejected(void)
Definition POmega3Pi.cc:98
Bool_t Init(void)
Definition POmega3Pi.cc:45
Bool_t Prepare(void)
Definition POmega3Pi.cc:86
Bool_t Finalize(void)
Definition POmega3Pi.cc:90
Bool_t CheckAbort(void)
Definition POmega3Pi.cc:94
static Double_t sampleFlat()
Definition PUtils.h:121
PChannel * c[]
PChannel * cc[]
PParticle * p
Definition dp_mult.C:24
TH1F * h2
TH1F * h3
PParticle * pi