BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtPhokhara_Lambda.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtPhokhara.cc
12// the necessary file: phokharar.F
13// fist.inc,gen.inc mix.inc stdhep.inc
14// Description: Modified Lund model at tau-charm energy level, see
15// PHYSICAL REVIEW D, VOLUME 62, 034003
16// Modification history:
17//
18// Ping R.-G. Jan.25, 2010 Module created
19// The random engine RLU0 is unified with RLU for BesEvtGen
20//------------------------------------------------------------------------
21//
27#include "EvtGenBase/EvtRandom.hh" //new added for using the same random seed with BesRndGenSvc 2022.3.17
28#include "EvtGenBase/EvtPDL.hh"
32#include <string>
33#include "EvtGenBase/EvtId.hh"
34#include <iostream>
35#include <iomanip>
36#include <fstream>
37#include <string.h>
38#include <stdlib.h>
39#include <unistd.h>
40#include <stdio.h>
41
44#include "CLHEP/Random/RandomEngine.h"
45#include "cfortran/cfortran.h"
46
47using namespace std;
48using namespace CLHEP;
49
50using std::endl;
51using std::fstream;
52using std::ios;
53using std::ofstream;
54using std::resetiosflags;
55using std::setiosflags;
56using std::setw;
57
58int EvtPhokhara_Lambda::nevtgen=0;
59int EvtPhokhara_Lambda::nphokharadecays=0;
60EvtDecayBasePtr* EvtPhokhara_Lambda::phokharadecays=0;
61int EvtPhokhara_Lambda::ntable=0;
62
63int EvtPhokhara_Lambda::ncommand=0;
64int EvtPhokhara_Lambda::lcommand=0;
65std::string* EvtPhokhara_Lambda::commands=0;
66int EvtPhokhara_Lambda::nevt=0;
67
70 int i;
71 //the deletion of commands is really uggly!
72
73 if (nphokharadecays==0) {
74 delete [] commands;
75 commands=0;
76 return;
77 }
78
79 for(i=0;i<nphokharadecays;i++){
80 if (phokharadecays[i]==this){
81 phokharadecays[i]=phokharadecays[nphokharadecays-1];
82 nphokharadecays--;
83 if (nphokharadecays==0) {
84 delete [] commands;
85 commands=0;
86 }
87 return;
88 }
89 }
90
91 report(ERROR,"EvtGen") << "Error in destroying Phokhara model!"<<endl;
92
93}
94
95
96void EvtPhokhara_Lambda::getName(std::string& model_name){
97
98 model_name="PHOKHARA_LAMBDA";
99
100}
101
107
108
110
111 noProbMax();
112
113}
114
115
117 m_pion=9;
118 // mu+mu-(0),pi+pi-(1),2pi0pi+pi-(2),
119 // 2pi+2pi-(3),ppbar(4),nnbar(5),
120 // K+K-(6),K0K0bar(7),pi+pi-pi0(8),
121 // Lamb Lambbar->pi-pi+ppbar(9)
122#include "Phokhara_init_mode.txt"
123}
124
125
126
128 checkNArg(0);
129
130 std::string locvp=getenv("BESEVTGENROOT");
131 system("cat $BESEVTGENROOT/share/phokhara_10.0.param>phokhara_10.0.param");
132 system("cat $BESEVTGENROOT/share/phokhara_10.0.fferr>phokhara_10.0.fferr");
133 system("cat $BESEVTGENROOT/share/phokhara_10.0.ffwarn>phokhara_10.0.ffwarn");
134
135
136 if (getParentId().isAlias()){
137
138 report(ERROR,"EvtGen") << "EvtPhokhara finds that you are decaying the"<<endl
139 << " aliased particle "
140 << EvtPDL::name(getParentId()).c_str()
141 << " with the Phokhara model"<<endl
142 << " this does not work, please modify decay table."
143 << endl;
144 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
145 ::abort();
146
147 }
148
149 store(this);
150
151}
152
153
155
156 return std::string("PhokharaPar");
157
158}
159
160void EvtPhokhara_Lambda::command(std::string cmd){
161
162 if (ncommand==lcommand){
163
164 lcommand=10+2*lcommand;
165
166 std::string* newcommands=new std::string[lcommand];
167
168 int i;
169
170 for(i=0;i<ncommand;i++){
171 newcommands[i]=commands[i];
172 }
173
174 delete [] commands;
175
176 commands=newcommands;
177
178 }
179
180 commands[ncommand]=cmd;
181
182 ncommand++;
183
184}
185
186
187
189 bool debug=0;
190 EvtId myvpho=EvtPDL::getId("vpho");
191 if(p->getId()!=myvpho) {std::cout<<"Parent particle is required to be vpho for Phokhara model"<<std::endl;abort();}
192 if(nevtgen==0) {init_mode(p);
193 std::cout<<"PHOKHARA : Lambda anti-Lambda mode "<<std::endl;
194 }
195 else{init_evt(p);
196 if(debug)cout<<"init_evt works!"<<endl;
197 }
198 //else{init_mode(p);}
199 if(debug) {
200 std::cout<<"flags :ph0,nlo,pion,fsr,fsrnlo,ivac,FF_pion,f0_model,FF_kaon,narr_res,FF_pp,chi_sw,chi_pion,FF_Pgg,nlo2 "<<std::endl;
201 std::cout<<"= "<<flags_.ph0<<","<<flags_.nlo<<","<<flags_.pion<<","<<flags_.fsr<<","<<flags_.fsrnlo<<","<<flags_.ivac<<","<<flags_.FF_pion<<","<<flags_.f0_model<<","<<flags_.FF_kaon<<","<<flags_.narr_res<<","<<flags_.FF_pp<<","<<flags_.chi_sw<<","<<flags_.be_r<<","<<flags_.FF_Pgg<<","<<flags_.nlo2<<std::endl;
202 std::cout<<"ctes: Sp = "<<ctes_.Sp<<std::endl;
203 std::cout<<"cuts : w,q2min,q2_min_c,gmin,phot1cut,phot2cut,pi1cut,pi2cut"<<std::endl<<"= "<<cuts_.w<<","<<cuts_.q2min<<","<<cuts_.q2_min_c<<","<<cuts_.gmin<<","<<cuts_.phot1cut<<","<<cuts_.phot2cut<<","<<cuts_.pi1cut<<","<<cuts_.pi2cut<<std::endl;
204 }
205
206
207
208 int istdheppar=EvtPDL::getStdHep(p->getId());
209 int ntrials = 0;
210 int tr_old[3];
211 tr_old[0] = (int)maxima_.tr[0];
212 tr_old[1] = (int)maxima_.tr[1];
213 tr_old[2] = (int)maxima_.tr[2];
214
215 while( ntrials < 1000000)
216 {
217 ievent++;
218 RANLXDF(Ar_r,1);
219 Ar[1] = Ar_r[0];
220
221 if (Ar[1] <= (maxima_.Mmax[0]/(maxima_.Mmax[0]+maxima_.Mmax[1]+maxima_.Mmax[2]))) {
222 maxima_.count[0] = maxima_.count[0]+1.0;
223 GEN_0PH(2,qqmin,ctes_.Sp,cos3min,cos3max);
224 }else
225 if (Ar[1] <= ( (maxima_.Mmax[0]+maxima_.Mmax[1])/(maxima_.Mmax[0]+maxima_.Mmax[1]+maxima_.Mmax[2]))) {
226 maxima_.count[1] = maxima_.count[1]+1.0;
227 GEN_1PH(2,qqmin,qqmax,cos1min,cos1max,cos3min,cos3max);
228 }
229 else {
230 maxima_.count[2] = maxima_.count[2]+1.0;
231 GEN_2PH(2,qqmin,cos1min,cos1max,cos2min,cos2max,cos3min,cos3max);
232 }
233
234 if( ((int)maxima_.tr[0]+(int)maxima_.tr[1]+(int)maxima_.tr[2]) > (tr_old[0]+tr_old[1]+tr_old[2]) ) // event accepted after cuts
235 {
236 goto storedEvents;
237 }
238 ntrials ++;
239 }
240 std::cout <<"FATAL: Could not satisfy cuts after " << ntrials << "trials. Terminate." <<std::endl;
241 //----
242 storedEvents:
243 int more=0;
244 int numstable=0;
245 int numparton=0;
246 EvtId evtnumstable[100];//
247 EvtVector4R p4[20];
248
249 // except ISR photos, products depending on channel
250 if (flags_.pion == 0) { // mu+ mu-
251 // mu+
252 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-13);
253 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
254 numstable++;
255 // mu -
256 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(13);
257 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
258 numstable++;
259 }
260 if (flags_.pion == 1) { // pi+ pi-
261 // pi+
262 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
263 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
264 numstable++;
265 // pi -
266 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
267 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
268 numstable++;
269 }
270 if (flags_.pion == 2) { // pi+ pi-2pi0
271 // pi0
272 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(111);
273 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
274 numstable++;
275 // pi0
276 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(111);
277 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
278 numstable++;
279 // pi-
280 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
281 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
282 numstable++;
283 // pi +
284 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
285 p4[numstable].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
286 numstable++;
287 }
288 if (flags_.pion == 3) { // 2(pi+ pi-)
289 // pi+
290 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
291 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
292 numstable++;
293 // pi-
294 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
295 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
296 numstable++;
297 // pi+
298 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
299 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
300 numstable++;
301 // pi -
302 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
303 p4[numstable].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
304 numstable++;
305 }
306 if (flags_.pion == 4) { // ppbar
307 // pbar
308 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-2212);
309 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
310 numstable++;
311 // p
312 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(2212);
313 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
314 numstable++;
315 }
316 if (flags_.pion == 5) { // nnbar
317 // pbar
318 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-2112);
319 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
320 numstable++;
321 // p
322 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(2112);
323 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
324 numstable++;
325 }
326 if (flags_.pion == 6) { // K+ K-
327 // K+
328 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(321);
329 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
330 numstable++;
331 // K -
332 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-321);
333 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
334 numstable++;
335 }
336 if (flags_.pion == 7) { // K0K0bar
337 // Kbar
338 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(311);
339 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
340 numstable++;
341 // K0
342 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-311);
343 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
344 numstable++;
345 }
346 if (flags_.pion == 8) { // pi+ pi-pi0
347 // pi+
348 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
349 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
350 numstable++;
351 // pi-
352 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
353 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
354 numstable++;
355 // pi0
356 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(111);
357 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
358 numstable++;
359 }
360 /*if (flags_.pion == 9) { //Lambda Lambdabar-> pi+ pi- ppbar
361 // pi+
362 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
363 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
364 numstable++;
365 // pbar
366 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-2212);
367 p4[numstable].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
368 numstable++;
369 // pi-
370 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
371 p4[numstable].set(ctes_.momenta[0][9],ctes_.momenta[1][9], ctes_.momenta[2][9], ctes_.momenta[3][9]);
372 numstable++;
373 // p
374 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(2212);
375 p4[numstable].set(ctes_.momenta[0][10],ctes_.momenta[1][10], ctes_.momenta[2][10], ctes_.momenta[3][10]);
376 numstable++;
377 }*/
378 int LambdaDaus=0;
379 EvtId LambdaMode[100];//
380 EvtVector4R Lambdap4[20];
381 EvtVector4R ZERO(0,0,0,0);
382 EvtVector4R tmp(0,0,0,0);
383
384 if (flags_.pion == 9) { //Lambda Lambdabar-> pi+ pi- ppbar
385 // anti-Lambda0
386 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-3122);
387 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
388 if (debug)std::cout<<"Phokhara_Lambda: anti-Lambda0 p4[numstable] = "<<p4[numstable]<<std::endl;
389 numstable++;
390 // Lambda0
391 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(3122);
392 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
393 if (debug) std::cout<<"Phokhara_Lambda: Lambda0 p4[numstable] = "<<p4[numstable]<<std::endl;
394 numstable++;
395 /////Lambda Decay
396 // pi+
397 LambdaMode[LambdaDaus]=EvtPDL::evtIdFromStdHep(211);
398 Lambdap4[LambdaDaus].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
399 if (debug) std::cout<<"Phokhara_Lambda: Pi+ p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
400 ////////boost pi+ to antiLambda0 frame
401 //tmp = ZERO-p4[0];wrong calculation
402 tmp.set(p4[0].get(0),-p4[0].get(1),-p4[0].get(2),-p4[0].get(3));
403 Lambdap4[LambdaDaus] = boostTo(Lambdap4[LambdaDaus],tmp);
404 if (debug) std::cout<<"Phokhara_Lambda:Boosted Pi+ p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
405 LambdaDaus++;
406 // pbar
407 LambdaMode[LambdaDaus]=EvtPDL::evtIdFromStdHep(-2212);
408 Lambdap4[LambdaDaus].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
409 if (debug) std::cout<<"Phokhara_Lambda: pbar p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
410 ////////boost pbar to antiLambda0 frame
411 //tmp = ZERO-p4[0];
412 //tmp = p4[0];
413 tmp.set(p4[0].get(0),-p4[0].get(1),-p4[0].get(2),-p4[0].get(3));
414 Lambdap4[LambdaDaus] = boostTo(Lambdap4[LambdaDaus],tmp);
415 if (debug) std::cout<<"Phokhara_Lambda:Boosted pbar p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
416 LambdaDaus++;
417 // pi-
418 LambdaMode[LambdaDaus]=EvtPDL::evtIdFromStdHep(-211);
419 Lambdap4[LambdaDaus].set(ctes_.momenta[0][9],ctes_.momenta[1][9], ctes_.momenta[2][9], ctes_.momenta[3][9]);
420 if (debug) std::cout<<"Phokhara_Lambda: pi- p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
421 ////////boost pi- to Lambda0 frame
422 //tmp = ZERO-p4[1];
423 //tmp = p4[1];
424 tmp.set(p4[1].get(0),-p4[1].get(1),-p4[1].get(2),-p4[1].get(3));
425 Lambdap4[LambdaDaus] = boostTo(Lambdap4[LambdaDaus],tmp);
426 if (debug) std::cout<<"Phokhara_Lambda:Boosted pi- p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
427 LambdaDaus++;
428 // p
429 LambdaMode[LambdaDaus]=EvtPDL::evtIdFromStdHep(2212);
430 Lambdap4[LambdaDaus].set(ctes_.momenta[0][10],ctes_.momenta[1][10], ctes_.momenta[2][10], ctes_.momenta[3][10]);
431 if (debug) std::cout<<"Phokhara_Lambda: p p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
432 ////////boost p+ to Lambda0 frame
433 //tmp = ZERO-p4[1];
434 //tmp = p4[1];
435 tmp.set(p4[1].get(0),-p4[1].get(1),-p4[1].get(2),-p4[1].get(3));
436 Lambdap4[LambdaDaus] = boostTo(Lambdap4[LambdaDaus],tmp);
437 if (debug) std::cout<<"Phokhara_Lambda:Boosted p p4[numstable] = "<<Lambdap4[LambdaDaus]<<std::endl;
438 LambdaDaus++;
439 }
440
441 // ISR gamma
442 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(22);
443 p4[numstable].set(ctes_.momenta[0][2],ctes_.momenta[1][2], ctes_.momenta[2][2], ctes_.momenta[3][2]);
444 if (debug) std::cout<<"Phokhara_Lambda: first gamma p4[numstable] = "<<p4[numstable]<<std::endl;
445 numstable++;
446 if( ctes_.momenta[0][3] != 0 ) // second photon exists
447 {
448 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(22);
449 p4[numstable].set(ctes_.momenta[0][3],ctes_.momenta[1][3], ctes_.momenta[2][3], ctes_.momenta[3][3]);
450 if (debug) std::cout<<"Phokhara_Lambda: second gamma p4[numstable] = "<<p4[numstable]<<std::endl;
451 numstable++;
452 }
453
454 int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable);
455 more=(channel!=-1);
456 if(more) {std::cout<<"EvtPhokhara_Lambda:Existence of mode "<<channel<<" in exclusive decay list has the same final state as this one"<<std::endl;abort(); }
457
458 p->makeDaughters(numstable,evtnumstable);
459 //double weight = p->initializePhaseSpace(getNDaug(),getDaugs());
461 //std::cout<<"NextLevelDauNum==0,LambdaDaus = "<<LambdaDaus<<std::endl;
463 for(int i = 0; i< LambdaDaus;i++){
464 EvtParticle::_NextLevelId[i] = LambdaMode[i];
465 EvtParticle::_NextLevelP4[i] = Lambdap4[i];
466 }
467 }
468 int ndaugFound=0;
469 EvtVector4R SUMP4(0,0,0,0);
470 for(int i=0;i<numstable;i++){
471 p->getDaug(i)->init(evtnumstable[i],p4[i]);
472 ndaugFound++;
473 }
474 if ( ndaugFound == 0 ) {
475 report(ERROR,"EvtGen") << "Phokhara has failed to do a decay ";
476 report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass()<<endl;
477 assert(0);
478 }
479 if (debug) std::cout<<"EvtPhokhara_Lambda SUMMARY: part p4"<<p->getP4Lab()<<std::endl;
480 if (debug) std::cout<<"EvtPhokhara_Lambda SUMMARY: Daug0 p4"<<p->getDaug(0)->getP4Lab()<<std::endl;
481 if (debug) std::cout<<"EvtPhokhara_Lambda SUMMARY: Daug1 p4"<<p->getDaug(1)->getP4Lab()<<std::endl;
482 if (debug) std::cout<<"EvtPhokhara_Lambda SUMMARY: Daug2 p4"<<p->getDaug(2)->getP4Lab()<<std::endl;
483
484 nevtgen++;
485 return ;
486
487}
488
489
490
491void EvtPhokhara_Lambda::store(EvtDecayBase* jsdecay){
492
493 if (nphokharadecays==ntable){
494
495 EvtDecayBasePtr* newphokharadecays=new EvtDecayBasePtr[2*ntable+10];
496 int i;
497 for(i=0;i<ntable;i++){
498 newphokharadecays[i]=phokharadecays[i];
499 }
500 ntable=2*ntable+10;
501 delete [] phokharadecays;
502 phokharadecays=newphokharadecays;
503 }
504
505 phokharadecays[nphokharadecays++]=jsdecay;
506
507
508
509}
510
511
513 static int first=1;
514 if (first){
515
516 first=0;
517 //for(int i=0;i<ncommand;i++)
518 // lugive0_(commands[i].c_str(),strlen(commands[i].c_str()));
519 }
520
521}
522
523
524
526 m_pion=9;
527 // mu+mu-(0),pi+pi-(1),2pi0pi+pi-(2),
528 // 2pi+2pi-(3),ppbar(4),nnbar(5),
529 // K+K-(6),K0K0bar(7),pi+pi-pi0(8),
530 // Lamb Lambbar->pi-pi+ppbar(9)
531#include "Phokhara_init_evt.txt"
532}
533
534
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
#define GEN_1PH(I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX)
#define RANLXDF(AR, VAL)
#define GEN_0PH(I, QQMIN, SP, COS3MIN, COS3MAX)
struct @15 ctes_
struct @21 maxima_
struct @22 flags_
#define GEN_2PH(I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX)
struct @16 cuts_
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:36
@ ERROR
Definition EvtReport.hh:49
EvtId getParentId()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static int inChannelList(EvtId parent, int ndaug, EvtId *daugs)
Definition EvtId.hh:27
static int getStdHep(EvtId id)
Definition EvtPDL.hh:56
static EvtId evtIdFromStdHep(int stdhep)
Definition EvtPDL.cc:244
static std::string name(EvtId i)
Definition EvtPDL.hh:64
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtVector4R getP4Lab()
EvtId getId() const
static EvtId _NextLevelId[20]
static int _NextLevelDauNum
EvtParticle * getDaug(int i)
static EvtVector4R _NextLevelP4[20]
double mass() const
void PhokharaInit(int dummy)
void getName(std::string &name)
void init_evt(EvtParticle *p)
void decay(EvtParticle *p)
void command(std::string cmd)
void init_mode(EvtParticle *p)
void set(int i, double d)
double double double * p4
Definition qcdloop1.h:77