CGEM BOSS 6.6.5.h
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJetSet.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: EvtJetSet.cc
12//
13// Description: Routine to use JetSet for decaying particles.
14//
15// Modification history:
16//
17// RYD July 24, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
26#include "EvtGenBase/EvtPDL.hh"
29#include <string>
30#include "EvtGenBase/EvtId.hh"
31#include <iostream>
32#include <iomanip>
33#include <fstream>
34#include <string.h>
35#include <stdlib.h>
36#include <unistd.h>
37#include <stdio.h>
38using std::endl;
39using std::fstream;
40using std::ios;
41using std::ofstream;
42using std::resetiosflags;
43using std::setiosflags;
44using std::setw;
45
46
47int EvtJetSet::njetsetdecays=0;
48 EvtDecayBasePtr* EvtJetSet::jetsetdecays=0;
49int EvtJetSet::ntable=0;
50
51int EvtJetSet::ncommand=0;
52int EvtJetSet::lcommand=0;
53std::string* EvtJetSet::commands=0;
54
55extern "C" {
56 extern void evtjetsetinit_(char* fname, int len);
57}
58
59
60extern "C" {
61 extern void jetset1_(int *,double *,int *,int *,int *,
62 double *,double *,double *,double *);
63}
64
65extern "C" {
66 extern void lugive_(const char *cnfgstr,int length);
67}
68
69extern "C" {
70 extern int lucomp_(int* kf);
71}
72
73
75
77
78
79 int i;
80
81
82 //the deletion of commands is really uggly!
83
84 if (njetsetdecays==0) {
85 delete [] commands;
86 commands=0;
87 return;
88 }
89
90 for(i=0;i<njetsetdecays;i++){
91 if (jetsetdecays[i]==this){
92 jetsetdecays[i]=jetsetdecays[njetsetdecays-1];
93 njetsetdecays--;
94 if (njetsetdecays==0) {
95 delete [] commands;
96 commands=0;
97 }
98 return;
99 }
100 }
101
102 report(ERROR,"EvtGen") << "Error in destroying JetSet model!"<<endl;
103
104}
105
106
107void EvtJetSet::getName(std::string& model_name){
108
109 model_name="JETSET";
110
111}
112
114
115 return new EvtJetSet;
116
117}
118
119
121
122 noProbMax();
123
124}
125
126
128
129 checkNArg(1);
130
131
132 if (getParentId().isAlias()){
133
134 report(ERROR,"EvtGen") << "EvtJetSet finds that you are decaying the"<<endl
135 << " aliased particle "
136 << EvtPDL::name(getParentId()).c_str()
137 << " with the JetSet model"<<endl
138 << " this does not work, please modify decay table."
139 << endl;
140 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
141 ::abort();
142
143 }
144
145 store(this);
146
147}
148
149
151
152 return std::string("JetSetPar");
153
154}
155
156
157void EvtJetSet::command(std::string cmd){
158
159 if (ncommand==lcommand){
160
161 lcommand=10+2*lcommand;
162
163 std::string* newcommands=new std::string[lcommand];
164
165 int i;
166
167 for(i=0;i<ncommand;i++){
168 newcommands[i]=commands[i];
169 }
170
171 delete [] commands;
172
173 commands=newcommands;
174
175 }
176
177 commands[ncommand]=cmd;
178
179 ncommand++;
180
181}
182
183
184
186
187
188 //added by Lange Jan4,2000
189 static EvtId STRNG=EvtPDL::getId("string");
190
191 int istdheppar=EvtPDL::getStdHep(p->getId());
192
193 if (lucomp_(&istdheppar)==0){
194 report(ERROR,"EvtGen") << "Jetset can not decay:"
195 <<EvtPDL::name(p->getId()).c_str()<<endl;
196 return;
197 }
198
199 double mp=p->mass();
200
201 EvtVector4R p4[20];
202
203 int i,more;
204 int ip=EvtPDL::getStdHep(p->getId());
205 int ndaugjs;
206 int kf[100];
207 EvtId evtnumstable[100],evtnumparton[100];
208 int stableindex[100],partonindex[100];
209 int numstable;
210 int numparton;
211 int km[100];
212 EvtId type[MAX_DAUG];
213
214 jetSetInit();
215
216 double px[100],py[100],pz[100],e[100];
217
218 if ( p->getNDaug() != 0 ) { p->deleteDaughters(true);}
219
220 int count=0;
221
222 do{
223 //report(INFO,"EvtGen") << "calling jetset " << ip<< " " << mp <<endl;
224 jetset1_(&ip,&mp,&ndaugjs,kf,km,px,py,pz,e);
225
226
227 numstable=0;
228 numparton=0;
229 //report(INFO,"EvtGen") << "found some daughters " << ndaugjs << endl;
230 for(i=0;i<ndaugjs;i++){
231
232 if (EvtPDL::evtIdFromStdHep(kf[i])==EvtId(-1,-1)) {
233 report(ERROR,"EvtGen") << "JetSet returned particle:"<<kf[i]<<endl;
234 report(ERROR,"EvtGen") << "This can not be translated to evt number"<<endl;
235 report(ERROR,"EvtGen") << "and the decay will be rejected!"<<endl;
236 report(ERROR,"EvtGen") << "The decay was of particle:"<<ip<<endl;
237
238 }
239
240 //sort out the partons
241 if (abs(kf[i])<=6||kf[i]==21){
242 partonindex[numparton]=i;
243 evtnumparton[numparton]=EvtPDL::evtIdFromStdHep(kf[i]);
244 numparton++;
245 }
246 else{
247 stableindex[numstable]=i;
248 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(kf[i]);
249 numstable++;
250 }
251
252
253 // have to protect against negative mass^2 for massless particles
254 // i.e. neutrinos and photons.
255 // this is uggly but I need to fix it right now....
256
257 if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){
258
259 e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000000001;
260
261 }
262
263 p4[i].set(e[i],px[i],py[i],pz[i]);
264
265
266 }
267
268 int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable);
269
270
271 more=(channel!=-1);
272
273
274
275
276 count++;
277
278 }while( more && (count<10000) );
279
280 if (count>9999) {
281 report(INFO,"EvtGen") << "Too many loops in EvtJetSet!!!"<<endl;
282 report(INFO,"EvtGen") << "Parent:"<<EvtPDL::name(getParentId()).c_str()<<endl;
283 for(i=0;i<numstable;i++){
284 report(INFO,"EvtGen") << "Daug("<<i<<")"<<EvtPDL::name(evtnumstable[i]).c_str()<<endl;
285 }
286
287 }
288
289
290
291 if (numparton==0){
292
293 p->makeDaughters(numstable,evtnumstable);
294 int ndaugFound=0;
295 for(i=0;i<numstable;i++){
296 p->getDaug(i)->init(evtnumstable[i],p4[stableindex[i]]);
297 ndaugFound++;
298 }
299 if ( ndaugFound == 0 ) {
300 report(ERROR,"EvtGen") << "Jetset has failed to do a decay ";
301 report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass()<<endl;
302 assert(0);
303 }
304
305 fixPolarizations(p);
306
307 return ;
308
309 }
310 else{
311
312 //have partons in JETSET
313
314 EvtVector4R p4string(0.0,0.0,0.0,0.0);
315
316 for(i=0;i<numparton;i++){
317 p4string+=p4[partonindex[i]];
318 }
319
320 int nprimary=1;
321 type[0]=STRNG;
322 for(i=0;i<numstable;i++){
323 if (km[stableindex[i]]==0){
324 type[nprimary++]=evtnumstable[i];
325 }
326 }
327
328 p->makeDaughters(nprimary,type);
329
330 p->getDaug(0)->init(STRNG,p4string);
331
332 EvtVector4R p4partons[10];
333
334 for(i=0;i<numparton;i++){
335 p4partons[i]=p4[partonindex[i]];
336 }
337
338 ((EvtStringParticle*)p->getDaug(0))->initPartons(numparton,p4partons,evtnumparton);
339
340
341
342 nprimary=1;
343
344 for(i=0;i<numstable;i++){
345
346 if (km[stableindex[i]]==0){
347 p->getDaug(nprimary++)->init(evtnumstable[i],p4[stableindex[i]]);
348 }
349 }
350
351
352 int nsecond=0;
353 for(i=0;i<numstable;i++){
354 if (km[stableindex[i]]!=0){
355 type[nsecond++]=evtnumstable[i];
356 }
357 }
358
359
360 p->getDaug(0)->makeDaughters(nsecond,type);
361
362 EvtVector4R p4stringboost(p4string.get(0),-p4string.get(1),
363 -p4string.get(2),-p4string.get(3));
364
365 nsecond=0;
366 for(i=0;i<numstable;i++){
367 if (km[stableindex[i]]!=0){
368 p4[stableindex[i]]=boostTo(p4[stableindex[i]],p4stringboost);
369 p->getDaug(0)->getDaug(nsecond)->init(evtnumstable[i],p4[stableindex[i]]);
370 p->getDaug(0)->getDaug(nsecond)->setDiagonalSpinDensity();
371 p->getDaug(0)->getDaug(nsecond)->decay();
372 nsecond++;
373 }
374 }
375
376 if ( nsecond == 0 ) {
377 report(ERROR,"EvtGen") << "Jetset has failed to do a decay ";
378 report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass() <<endl;
379 assert(0);
380 }
381
382 fixPolarizations(p);
383
384 return ;
385
386 }
387
388}
389
390void EvtJetSet::fixPolarizations(EvtParticle *p){
391
392 //special case for now to handle the J/psi polarization
393
394 int ndaug=p->getNDaug();
395
396 int i;
397
398 static EvtId Jpsi=EvtPDL::getId("J/psi");
399
400 for(i=0;i<ndaug;i++){
401 if(p->getDaug(i)->getId()==Jpsi){
402
403 EvtSpinDensity rho;
404
405 rho.SetDim(3);
406 rho.Set(0,0,0.5);
407 rho.Set(0,1,0.0);
408 rho.Set(0,2,0.0);
409
410 rho.Set(1,0,0.0);
411 rho.Set(1,1,1.0);
412 rho.Set(1,2,0.0);
413
414 rho.Set(2,0,0.0);
415 rho.Set(2,1,0.0);
416 rho.Set(2,2,0.5);
417
418 EvtVector4R p4Psi=p->getDaug(i)->getP4();
419
420 double alpha=atan2(p4Psi.get(2),p4Psi.get(1));
421 double beta=acos(p4Psi.get(3)/p4Psi.d3mag());
422
423
426
427 }
428 }
429
430}
431
432void EvtJetSet::store(EvtDecayBase* jsdecay){
433
434 if (njetsetdecays==ntable){
435
436 EvtDecayBasePtr* newjetsetdecays=new EvtDecayBasePtr[2*ntable+10];
437 int i;
438 for(i=0;i<ntable;i++){
439 newjetsetdecays[i]=jetsetdecays[i];
440 }
441 ntable=2*ntable+10;
442 delete [] jetsetdecays;
443 jetsetdecays=newjetsetdecays;
444 }
445
446 jetsetdecays[njetsetdecays++]=jsdecay;
447
448
449
450}
451
452
453void EvtJetSet::WriteJetSetEntryHeader(ofstream &outdec, int lundkc,
454 EvtId evtnum,std::string name,
455 int chg, int cchg, int spin2,double mass,
456 double width, double maxwidth,double ctau,
457 int stable,double rawbrfrsum){
458
459
460 char sname[100];
461
462 int namelength=8;
463
464 int i,j;
465 int temp;
466 temp = spin2;
467
468 if (ctau>1000000.0) ctau=0.0;
469
470 strcpy(sname,name.c_str());
471
472 i=0;
473
474 while (sname[i]!=0){
475 i++;
476 }
477
478 // strip up to two + or -
479
480 if(evtnum.getId()>=0) {
481 if (sname[i-1]=='+'||sname[i-1]=='-'){
482 sname[i-1]=0;
483 i--;
484 }
485 if (sname[i-1]=='+'||sname[i-1]=='-'){
486 sname[i-1]=0;
487 i--;
488 }
489 // strip 0 except for _0 and chi...0
490 if (sname[i-1]=='0' && sname[i-2]!='_' && !(sname[0]=='c' && sname[1]=='h')){
491 sname[i-1]=0;
492 i--;
493 }
494 }
495
496 if (i>namelength) {
497 for(j=1;j<namelength;j++){
498 sname[j]=sname[j+i-namelength];
499 }
500 sname[namelength]=0;
501 }
502
503 cchg=0;
504
505 if(evtnum.getId()>=0) {
506 if (abs(EvtPDL::getStdHep(evtnum))==21) cchg=2;
507 if (abs(EvtPDL::getStdHep(evtnum))==90) cchg=-1;
508 if ((abs(EvtPDL::getStdHep(evtnum))<=8)&&
509 (abs(EvtPDL::getStdHep(evtnum))!=0)) cchg=1;
510
511 }
512
513 outdec << setw(5) << lundkc << " ";
514 outdec.width(namelength);
515 outdec << setiosflags(ios::left) << sname << resetiosflags(ios::left);
516 outdec << setw(3) << chg;
517 outdec << setw(3) << cchg;
518 outdec.width(3);
519 if (evtnum.getId()>=0) {
520 if (EvtPDL::chargeConj(evtnum)==evtnum) {
521 outdec << 0;
522 }
523 else{
524 outdec << 1;
525 }
526 }
527 else{
528 outdec << 0;
529 }
530 outdec.setf(ios::fixed);
531 outdec.precision(5);
532 outdec << setw(12) << mass;
533 outdec << setw(12) << width;
534 outdec.width(12);
535 if (fabs(width)<0.0000000001) {
536 outdec << 0.0 ;
537 }
538 else{
539 outdec << maxwidth;
540 }
541 outdec << setw(14) << ctau;
542 outdec.width(3);
543 if (evtnum.getId()>=0) {
544 if (ctau>1.0 || rawbrfrsum<0.000001) {
545 stable=0;
546 }
547 }
548 outdec << stable;
549 outdec << endl;
550 outdec.width(0);
551
552}
553
554void EvtJetSet::WriteJetSetParticle(ofstream &outdec,EvtId ipar,
555 EvtId iparname,int &first){
556
557 int ijetset;
558
559 double br_sum=0.0;
560
561 for(ijetset=0;ijetset<njetsetdecays;ijetset++){
562
563 if (jetsetdecays[ijetset]->getParentId()==ipar){
564 br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
565 }
566 if (jetsetdecays[ijetset]->getParentId()!=
567 EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())&&
568 EvtPDL::chargeConj(jetsetdecays[ijetset]->getParentId())==ipar){
569 br_sum+=jetsetdecays[ijetset]->getBranchingFraction();
570 }
571
572
573 }
574
575 double br_sum_true=br_sum;
576
577 if (br_sum<0.000001) br_sum=1.0;
578
579 for(ijetset=0;ijetset<njetsetdecays;ijetset++){
580 if (jetsetdecays[ijetset]->getParentId()==ipar){
581
582 double br=jetsetdecays[ijetset]->getBranchingFraction();
583
584 int i,daugs[5];
585 EvtId cdaugs[5];
586
587 for(i=0;i<5;i++){
588
589 if(i<jetsetdecays[ijetset]->getNDaug()){
590 daugs[i]=EvtPDL::getStdHep(
591 jetsetdecays[ijetset]->getDaugs()[i]);
592 cdaugs[i]=EvtPDL::chargeConj(jetsetdecays[ijetset]->getDaugs()[i]);
593 }
594 else{
595 daugs[i]=0;
596 }
597 }
598
599 int channel;
600
602 jetsetdecays[ijetset]->getModelName(),
603 jetsetdecays[ijetset]->getNDaug(),
604 cdaugs,
605 jetsetdecays[ijetset]->getNArg(),
606 jetsetdecays[ijetset]->getArgsStr());
607
608 if (jetsetdecays[ijetset]->getModelName()=="JETSET"){
609
610 if (first) {
611 first=0;
612 WriteJetSetEntryHeader(outdec,
613 EvtPDL::getLundKC(iparname),
614 iparname,
615 EvtPDL::name(iparname),
616 EvtPDL::chg3(iparname),
617 0,0,EvtPDL::getMeanMass(ipar),
618 EvtPDL::getWidth(ipar),
620 EvtPDL::getctau(ipar),1,br_sum_true);
621 }
622
623 int dflag=2;
624
625 if (EvtPDL::getStdHep(ipar)<0) {
626 dflag=3;
627 for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
628 daugs[i]=EvtPDL::getStdHep(cdaugs[i]);
629 }
630
631 }
632
633 //now lets check to make sure that jetset, lucomp, knows
634 //about all particles!
635 int unknown=0;
636 for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
637 if (lucomp_(&daugs[i])==0) {
638 unknown=1;
639 report(ERROR,"EvtGen") << "JetSet (lucomp) does not "
640 << "know the particle:"<<
641 EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i]).c_str()<<endl;
642 }
643 }
644
645 int istdheppar=EvtPDL::getStdHep(ipar);
646
647 if (lucomp_(&istdheppar)==0){
648 unknown=1;
649 report(ERROR,"EvtGen") << "JetSet (lucomp) does not "
650 << "know the particle:"<<
651 EvtPDL::name(ipar).c_str()<<endl;
652 }
653
654
655
656 if (unknown){
657 report(ERROR,"EvtGen") << "Therfore the decay:"<<endl;
658 report(ERROR,"EvtGen") << EvtPDL::name(jetsetdecays[ijetset]->getParentId()).c_str()<<" -> ";
659 for(i=0;i<jetsetdecays[ijetset]->getNDaug();i++){
660 report(ERROR,"") << EvtPDL::name(jetsetdecays[ijetset]->getDaugs()[i]).c_str()<<" ";
661 }
662 report(ERROR,"")<<endl;
663 report(ERROR,"EvtGen")<<"Will not be generated."<<endl;
664 return;
665 }
666
667
668 if (EvtPDL::chargeConj(ipar)==ipar) {
669 dflag=1;
670 //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because C(ipar)=ipar!"<<endl;
671 }
672
673
674 //if (channel>=0) {
675 // dflag=1;
676 //report(INFO,"EvtGen") << EvtPDL::name(iparname) << " dflag=1 because channel>=0"<<endl;
677 //}
678
679 // if (!(EvtPDL::getStdHep(ipar)<0&&channel>=0)){
680 if (1){
681
682 outdec.width(10);
683 outdec <<dflag;
684 outdec.width(5);
685 outdec <<(int)jetsetdecays[ijetset]->getArgs()[0];
686 outdec.width(12);
687 if (fabs(br)<0.000000001) {
688 outdec <<"0.00000";
689 }
690 else{
691 outdec <<br/br_sum;
692 }
693 outdec.width(8);
694 outdec <<daugs[0];
695 outdec.width(8);
696 outdec <<daugs[1];
697 outdec.width(8);
698 outdec <<daugs[2];
699 outdec.width(8);
700 outdec <<daugs[3];
701 outdec.width(8);
702 outdec <<daugs[4];
703 outdec<<endl;
704 outdec.width(0);
705 }
706 }
707 }
708 }
709}
710
711
712void EvtJetSet::MakeJetSetFile(char* fname){
713
714 EvtId ipar;
715 int lundkc;
716
717 //int part_list[MAX_PART];
718
719 ofstream outdec;
720
721 outdec.open(fname);
722
723 //outdec << ";"<<endl;
724 //outdec << ";This decayfile has been automatically created by"<<endl;
725 //outdec << ";EvtGen from the DECAY.DEC file"<<endl;
726 //outdec << ";"<<endl;
727
728 int nokcentry;
729
730 for(lundkc=1;lundkc<=500;lundkc++){
731
732 nokcentry=1;
733
734 int iipar;
735
736 for(iipar=0;iipar<EvtPDL::entries();iipar++){
737
738 ipar=EvtId(iipar,iipar);
739 //no aliased particles!
740 std::string tempStr = EvtPDL::name(ipar);
741 EvtId realId = EvtPDL::getId(tempStr);
742 if ( realId.isAlias() != 0 ) continue;
743 if (lundkc==EvtPDL::getLundKC(ipar)){
744
745 nokcentry=0;
746
747 int first=1;
748
749 WriteJetSetParticle(outdec,ipar,ipar,first);
750
751
752 EvtId ipar2=EvtPDL::chargeConj(ipar);
753
754
755 if (ipar2!=ipar){
756 WriteJetSetParticle(outdec,ipar2,ipar,first);
757 }
758
759 if (first){
760 WriteJetSetEntryHeader(outdec,
761 EvtPDL::getLundKC(ipar),
762 ipar,
763 EvtPDL::name(ipar),
764 EvtPDL::chg3(ipar),
765 0,0,EvtPDL::getMeanMass(ipar),
766 EvtPDL::getWidth(ipar),
768 EvtPDL::getctau(ipar),0,0.0);
769
770 }
771 }
772 }
773 if (nokcentry){
774
775 WriteJetSetEntryHeader(outdec,
776 lundkc,EvtId(-1,-1)," ",
777 0,0,0,EvtPDL::getMeanMass(ipar),0.0,0.0,
778 EvtPDL::getctau(ipar),0,0.0);
779
780 }
781 }
782 outdec.close();
783}
784
786
787 static int first=1;
788
789 if (first){
790
791 first=0;
792
793 report(INFO,"EvtGen") << "Will initialize JetSet."<<endl;
794
795 char fname[200];
796
797 char hostBuffer[100];
798
799 if ( gethostname( hostBuffer, 100 ) != 0 ){
800 report(ERROR,"EvtGen") << " couldn't get hostname." << endl;
801 strncpy( hostBuffer, "hostnameNotFound", 100 );
802 }
803
804 char pid[100];
805
806 int thePid=getpid();
807
808 if ( sprintf( pid, "%d", thePid ) == 0 ){
809 report(ERROR,"EvtGen") << " couldn't get process ID." << endl;
810 strncpy( pid, "666", 100 );
811 }
812
813 strcpy(fname,"jet.d-");
814 strcat(fname,hostBuffer);
815 strcat(fname,"-");
816 strcat(fname,pid);
817
818 MakeJetSetFile(fname);
819 evtjetsetinit_(fname,strlen(fname));
820
821 if (0==getenv("EVTSAVEJETD")){
822 char delcmd[300];
823 strcpy(delcmd,"rm -f ");
824 strcat(delcmd,fname);
825 system(delcmd);
826 }
827
828 int i;
829
830 for(i=0;i<ncommand;i++){
831 lugive_(commands[i].c_str(),strlen(commands[i].c_str()));
832
833 }
834
835 report(INFO,"EvtGen") << "Done initializing JetSet."<<endl;
836
837
838 }
839
840}
double length
double mass
double abs(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
void lugive_(const char *cnfgstr, int length)
int lucomp_(int *kf)
void evtjetsetinit_(char *fname, int len)
void jetset1_(int *, double *, int *, int *, int *, double *, double *, double *, double *)
const int MAX_DAUG
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:36
@ ERROR
Definition EvtReport.hh:49
@ INFO
Definition EvtReport.hh:52
const double alpha
std::string * getArgsStr()
std::string getModelName()
EvtId getParentId()
double * getArgs()
double getBranchingFraction()
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setDaughterSpinDensity(int daughter)
static int findChannel(EvtId parent, std::string model, int ndaug, EvtId *daugs, int narg, std::string *args)
static int inChannelList(EvtId parent, int ndaug, EvtId *daugs)
Definition EvtId.hh:27
int getId() const
Definition EvtId.hh:41
int isAlias() const
Definition EvtId.hh:45
virtual ~EvtJetSet()
Definition EvtJetSet.cc:76
void command(std::string cmd)
Definition EvtJetSet.cc:157
static void jetSetInit()
Definition EvtJetSet.cc:785
EvtDecayBase * clone()
Definition EvtJetSet.cc:113
void initProbMax()
Definition EvtJetSet.cc:120
void decay(EvtParticle *p)
Definition EvtJetSet.cc:185
void init()
Definition EvtJetSet.cc:127
void getName(std::string &name)
Definition EvtJetSet.cc:107
std::string commandName()
Definition EvtJetSet.cc:150
static double getWidth(EvtId i)
Definition EvtPDL.hh:54
static int getStdHep(EvtId id)
Definition EvtPDL.hh:56
static double getMeanMass(EvtId i)
Definition EvtPDL.hh:45
static int entries()
Definition EvtPDL.hh:67
static EvtId evtIdFromStdHep(int stdhep)
Definition EvtPDL.cc:244
static std::string name(EvtId i)
Definition EvtPDL.hh:64
static EvtId chargeConj(EvtId id)
Definition EvtPDL.cc:208
static double getMinMass(EvtId i)
Definition EvtPDL.hh:51
static int chg3(EvtId i)
Definition EvtPDL.hh:60
static int getLundKC(EvtId id)
Definition EvtPDL.hh:57
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
static double getctau(EvtId i)
Definition EvtPDL.hh:55
void setSpinDensityForwardHelicityBasis(const EvtSpinDensity &rho)
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtId getId() const
void setDiagonalSpinDensity()
const EvtVector4R & getP4() const
int getNDaug() const
EvtParticle * getDaug(int i)
void deleteDaughters(bool keepChannel=false)
double mass() const
void Set(int i, int j, const EvtComplex &rhoij)
void SetDim(int n)
double get(int i) const
double d3mag() const
void set(int i, double d)
const double mp
Index first(Pair i)