BOSS 7.0.3
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtPhokhara Class Reference

#include <EvtPhokhara.hh>

+ Inheritance diagram for EvtPhokhara:

Public Member Functions

 EvtPhokhara ()
 
virtual ~EvtPhokhara ()
 
void getName (std::string &name)
 
EvtDecayBaseclone ()
 
void decay (EvtParticle *p)
 
std::string commandName ()
 
void command (std::string cmd)
 
void init ()
 
void init_mode (EvtParticle *p)
 
void init_evt (EvtParticle *p)
 
void initProbMax ()
 
int getTotalEvt ()
 
void PhokharaInit (int dummy)
 
void ExclusiveDecay (EvtParticle *p)
 
- Public Member Functions inherited from EvtDecayIncoherent
void makeDecay (EvtParticle *p)
 
virtual ~EvtDecayIncoherent ()
 
void setDaughterSpinDensity (int daughter)
 
int isDaughterSpinDensitySet (int daughter)
 
- Public Member Functions inherited from EvtDecayBase
virtual void getName (std::string &name)=0
 
virtual void decay (EvtParticle *p)=0
 
virtual void makeDecay (EvtParticle *p)=0
 
virtual EvtDecayBaseclone ()=0
 
virtual void init ()
 
virtual void initProbMax ()
 
virtual std::string commandName ()
 
virtual void command (std::string cmd)
 
double getProbMax (double prob)
 
double resetProbMax (double prob)
 
 EvtDecayBase ()
 
virtual ~EvtDecayBase ()
 
virtual bool matchingDecay (const EvtDecayBase &other) const
 
EvtId getParentId ()
 
double getBranchingFraction ()
 
void disableCheckQ ()
 
void checkQ ()
 
int getNDaug ()
 
EvtIdgetDaugs ()
 
EvtId getDaug (int i)
 
int getNArg ()
 
int getPHOTOS ()
 
void setPHOTOS ()
 
void setVerbose ()
 
void setSummary ()
 
double * getArgs ()
 
std::string * getArgsStr ()
 
double getArg (int j)
 
std::string getArgStr (int j)
 
std::string getModelName ()
 
int getDSum ()
 
int summary ()
 
int verbose ()
 
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
 
void printSummary ()
 
void setProbMax (double prbmx)
 
void noProbMax ()
 
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
 
void checkNDaug (int d1, int d2=-1)
 
void checkSpinParent (EvtSpinType::spintype sp)
 
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
 
virtual int nRealDaughters ()
 

Additional Inherited Members

- Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
 
static void findMass (EvtParticle *p)
 
static double findMaxMass (EvtParticle *p)
 
- Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
 
- Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel
 

Detailed Description

Definition at line 33 of file EvtPhokhara.hh.

Constructor & Destructor Documentation

◆ EvtPhokhara()

EvtPhokhara::EvtPhokhara ( )

Definition at line 66 of file EvtPhokhara.cc.

66{}

Referenced by clone().

◆ ~EvtPhokhara()

EvtPhokhara::~EvtPhokhara ( )
virtual

Definition at line 67 of file EvtPhokhara.cc.

67 {
68
69 //print out message
70 // =================================================
71 if(flags_.pion == 9)
72 maxima_.Mmax[1] = maxima_.Mmax[1] * (1.0 + lambda_par_.alpha_lamb)*(1.0 + lambda_par_.alpha_lamb)
73 * lambda_par_.ratio_lamb*lambda_par_.ratio_lamb;
74
75 // --- value of the cross section ------------------
76 if (flags_.nlo == 0) {
77 sigma = maxima_.Mmax[0]/maxima_.count[0]*maxima_.tr[0];
78 dsigm = maxima_.Mmax[0]*sqrt((maxima_.tr[0]/maxima_.count[0]-(maxima_.tr[0]/maxima_.count[0])*(maxima_.tr[0]/maxima_.count[0]))/maxima_.count[0]);
79 } else {
80 sigma1 = maxima_.Mmax[0]/maxima_.count[0]*maxima_.tr[0];
81 sigma2 = maxima_.Mmax[1]/maxima_.count[1]*maxima_.tr[1];
82 dsigm1 = maxima_.Mmax[0]*sqrt((maxima_.tr[0]/maxima_.count[0]-(maxima_.tr[0]/maxima_.count[0])*(maxima_.tr[0]/maxima_.count[0]))/maxima_.count[0]);
83 dsigm2 = maxima_.Mmax[1]*sqrt((maxima_.tr[1]/maxima_.count[1]-(maxima_.tr[1]/maxima_.count[1])*(maxima_.tr[1]/maxima_.count[1]))/maxima_.count[1]);
84
85 sigma = sigma1+sigma2;
86 dsigm = sqrt(dsigm1*dsigm1 + dsigm2*dsigm2);
87 }
88 // --- output --------------------------------------
89 cout << "-------------------------------------------------------------" << endl;
90 cout << " PHOKHARA 7.0 Final Statistics " << endl;
91 cout << "-------------------------------------------------------------" << endl;
92 cout << int(maxima_.tr[0]+maxima_.tr[1]) << " total events accepted of " << endl;
93 cout << int(ievent) << " total events generated" << endl;
94 cout << int(maxima_.tr[0]) << " one photon events accepted of " << endl;
95 cout << int(maxima_.count[0]) << " events generated" << endl;
96 cout << int(maxima_.tr[1]) << " two photon events accepted of " << endl;
97 cout << int(maxima_.count[1]) << " events generated" << endl;
98 cout << endl;
99 if (flags_.nlo != 0) cout << "sigma1(nbarn) = " << sigma1 << " +- " << dsigm1 << endl;
100 if (flags_.nlo != 0) cout << "sigma2(nbarn) = " << sigma2 << " +- " << dsigm2 << endl;
101 cout << "sigma (nbarn) = " << sigma << " +- " << dsigm << endl;
102 cout << endl;
103 cout << "maximum1 = " << maxima_.gross[0] << " minimum1 = " << maxima_.klein[0] << endl;
104 cout << "Mmax1 = " << maxima_.Mmax[0] << endl;
105 cout << "maximum2 = " << maxima_.gross[1] << " minimum2 = " << maxima_.klein[1] << endl;
106 cout << "Mmax2 = " << maxima_.Mmax[1] << endl;
107 cout << "-------------------------------------------------------------" << endl;
108
109
110 int i;
111 //the deletion of commands is really uggly!
112
113 if (nphokharadecays==0) {
114 delete [] commands;
115 commands=0;
116 return;
117 }
118
119 for(i=0;i<nphokharadecays;i++){
120 if (phokharadecays[i]==this){
121 phokharadecays[i]=phokharadecays[nphokharadecays-1];
122 nphokharadecays--;
123 if (nphokharadecays==0) {
124 delete [] commands;
125 commands=0;
126 }
127 return;
128 }
129 }
130
131 report(ERROR,"EvtGen") << "Error in destroying Phokhara model!"<<endl;
132
133}
struct @17 flags_
struct @16 maxima_
struct @14 lambda_par_
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ ERROR
Definition: EvtReport.hh:49

Member Function Documentation

◆ clone()

EvtDecayBase * EvtPhokhara::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 142 of file EvtPhokhara.cc.

142 {
143
144 return new EvtPhokhara;
145
146}

◆ command()

void EvtPhokhara::command ( std::string  cmd)
virtual

Reimplemented from EvtDecayBase.

Definition at line 586 of file EvtPhokhara.cc.

586 {
587
588 if (ncommand==lcommand){
589
590 lcommand=10+2*lcommand;
591
592 std::string* newcommands=new std::string[lcommand];
593
594 int i;
595
596 for(i=0;i<ncommand;i++){
597 newcommands[i]=commands[i];
598 }
599
600 delete [] commands;
601
602 commands=newcommands;
603
604 }
605
606 commands[ncommand]=cmd;
607
608 ncommand++;
609
610}

◆ commandName()

std::string EvtPhokhara::commandName ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 580 of file EvtPhokhara.cc.

580 {
581
582 return std::string("PhokharaPar");
583
584}

◆ decay()

void EvtPhokhara::decay ( EvtParticle p)
virtual

Implements EvtDecayBase.

Definition at line 614 of file EvtPhokhara.cc.

614 {
615 EvtId myvpho=EvtPDL::getId("vpho");
616 if(p->getId()!=myvpho) {std::cout<<"Parent particle is required to be vpho for Phokhara model"<<std::endl;abort();}
617 m_pion=getArg(0);
618 if(nevtgen[m_pion]==0) {init_mode(p);}
619 else{init_evt(p);}
620 std::cout<<"PHOKHARA : "<<Vfs[m_pion]<<" mode "<<std::endl;
621
622 int istdheppar=EvtPDL::getStdHep(p->getId());
623 int ntrials = 0;
624 int tr_old[2];
625 tr_old[0] = (int)maxima_.tr[0];
626 tr_old[1] = (int)maxima_.tr[1];
627
628 while( ntrials < 10000)
629 {
630 ievent++;
631 RANLXDF(Ar_r,1);
632 Ar[1] = Ar_r[0];
633
634 if (Ar[1] <= (maxima_.Mmax[0]/(maxima_.Mmax[0]+maxima_.Mmax[1]))) {
635 maxima_.count[0] = maxima_.count[0]+1.0;
636 GEN_1PH(2,qqmin,qqmax,cos1min,cos1max,cos3min,cos3max);
637 }
638 else {
639 maxima_.count[1] = maxima_.count[1]+1.0;
640 GEN_2PH(2,qqmin,cos1min,cos1max,cos2min,cos2max,cos3min,cos3max);
641 }
642
643 if( ((int)maxima_.tr[0]+(int)maxima_.tr[1]) > (tr_old[0]+tr_old[1]) ) // event accepted after cuts
644 {
645 goto storedEvents;
646 }
647 ntrials ++;
648 }
649
650 std::cout <<"FATAL: Could not satisfy cuts after " << ntrials << "trials. Terminate." <<std::endl;
651 //----
652 storedEvents:
653 int more=0;
654 int numstable=0;
655 int numparton=0;
656 EvtId evtnumstable[100];//
657 EvtVector4R p4[20];
658
659 // except ISR photos, products depending on channel
660 if (flags_.pion == 0) { // mu+ mu-
661 // mu+
662 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-13);
663 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
664 numstable++;
665 // mu -
666 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(13);
667 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
668 numstable++;
669 }
670 if (flags_.pion == 1) { // pi+ pi-
671 // pi+
672 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
673 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
674 numstable++;
675 // pi -
676 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
677 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
678 numstable++;
679 }
680 if (flags_.pion == 2) { // pi+ pi-2pi0
681 // pi0
682 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(111);
683 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
684 numstable++;
685 // pi0
686 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(111);
687 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
688 numstable++;
689 // pi-
690 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
691 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
692 numstable++;
693 // pi +
694 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
695 p4[numstable].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
696 numstable++;
697 }
698 if (flags_.pion == 3) { // 2(pi+ pi-)
699 // pi+
700 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
701 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
702 numstable++;
703 // pi-
704 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
705 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
706 numstable++;
707 // pi+
708 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
709 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
710 numstable++;
711 // pi -
712 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
713 p4[numstable].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
714 numstable++;
715 }
716 if (flags_.pion == 4) { // ppbar
717 // pbar
718 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-2212);
719 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
720 numstable++;
721 // p
722 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(2212);
723 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
724 numstable++;
725 }
726 if (flags_.pion == 5) { // nnbar
727 // pbar
728 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-2112);
729 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
730 numstable++;
731 // p
732 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(2112);
733 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
734 numstable++;
735 }
736 if (flags_.pion == 6) { // K+ K-
737 // K+
738 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(321);
739 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
740 numstable++;
741 // K -
742 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-321);
743 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
744 numstable++;
745 }
746 if (flags_.pion == 7) { // K0K0bar
747 // Kbar
748 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(310);
749 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
750 numstable++;
751 // K0
752 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(130);
753 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
754 numstable++;
755 }
756 if (flags_.pion == 8) { // pi+ pi-pi0
757 // pi+
758 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
759 p4[numstable].set(ctes_.momenta[0][5],ctes_.momenta[1][5], ctes_.momenta[2][5], ctes_.momenta[3][5]);
760 numstable++;
761 // pi-
762 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
763 p4[numstable].set(ctes_.momenta[0][6],ctes_.momenta[1][6], ctes_.momenta[2][6], ctes_.momenta[3][6]);
764 numstable++;
765 // pi0
766 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(111);
767 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
768 numstable++;
769 }
770 if (flags_.pion == 9) { //Lambda Lambdabar-> pi+ pi- ppbar
771 // pi+
772 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(211);
773 p4[numstable].set(ctes_.momenta[0][7],ctes_.momenta[1][7], ctes_.momenta[2][7], ctes_.momenta[3][7]);
774 numstable++;
775 // pbar
776 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-2212);
777 p4[numstable].set(ctes_.momenta[0][8],ctes_.momenta[1][8], ctes_.momenta[2][8], ctes_.momenta[3][8]);
778 numstable++;
779 // pi-
780 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(-211);
781 p4[numstable].set(ctes_.momenta[0][9],ctes_.momenta[1][9], ctes_.momenta[2][9], ctes_.momenta[3][9]);
782 numstable++;
783 // p
784 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(2212);
785 p4[numstable].set(ctes_.momenta[0][10],ctes_.momenta[1][10], ctes_.momenta[2][10], ctes_.momenta[3][10]);
786 numstable++;
787 }
788
789 // ISR gamma
790 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(22);
791 p4[numstable].set(ctes_.momenta[0][2],ctes_.momenta[1][2], ctes_.momenta[2][2], ctes_.momenta[3][2]);
792 numstable++;
793 if( ctes_.momenta[0][3] != 0 ) // second photon exists
794 {
795 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(22);
796 p4[numstable].set(ctes_.momenta[0][3],ctes_.momenta[1][3], ctes_.momenta[2][3], ctes_.momenta[3][3]);
797 numstable++;
798 }
799
800 int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable);
801 more=(channel!=-1);
802 if(more) {std::cout<<"Existence of mode "<<channel<<" in exclusive decay list has the same final state as this one"<<std::endl;abort(); }
803
804 p->makeDaughters(numstable,evtnumstable);
805
806 int ndaugFound=0;
807 EvtVector4R SUMP4(0,0,0,0);
808 for(int i=0;i<numstable;i++){
809 p->getDaug(i)->init(evtnumstable[i],p4[i]);
810 ndaugFound++;
811 }
812 if ( ndaugFound == 0 ) {
813 report(ERROR,"EvtGen") << "Phokhara has failed to do a decay ";
814 report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass()<<endl;
815 assert(0);
816 }
817
818 nevtgen[m_pion]++;
819 return ;
820
821}
#define GEN_1PH(I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX)
#define RANLXDF(AR, VAL)
struct @10 ctes_
#define GEN_2PH(I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX)
double getArg(int j)
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
EvtId getId() const
Definition: EvtParticle.cc:113
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
void init_mode(EvtParticle *p)
Definition: EvtPhokhara.cc:156
void init_evt(EvtParticle *p)
Definition: EvtPhokhara.cc:859
void set(int i, double d)
Definition: EvtVector4R.hh:183

◆ ExclusiveDecay()

void EvtPhokhara::ExclusiveDecay ( EvtParticle p)

◆ getName()

void EvtPhokhara::getName ( std::string &  name)
virtual

Implements EvtDecayBase.

Definition at line 136 of file EvtPhokhara.cc.

136 {
137
138 model_name="PHOKHARA";
139
140}

◆ getTotalEvt()

int EvtPhokhara::getTotalEvt ( )
inline

Definition at line 52 of file EvtPhokhara.hh.

52{return nevt;}

◆ init()

void EvtPhokhara::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 540 of file EvtPhokhara.cc.

540 {
541 checkNDaug(0);
542 checkNArg(1);
543 nevtgen.resize(10);
544 theMmax.resize(10);
545 for(int i=0;i<=10;i++){ theMmax[i].resize(2); nevtgen[i]=0;}
546
547 Vfs.push_back(" mu+mu-");
548 Vfs.push_back(" pi+pi-");
549 Vfs.push_back(" 2pi0pi+pi-");
550 Vfs.push_back(" 2pi+2pi-");
551 Vfs.push_back(" ppbar");
552 Vfs.push_back(" nnbar");
553 Vfs.push_back(" K+K-");
554 Vfs.push_back(" K0K0bar");
555 Vfs.push_back(" pi+pi-pi0");
556 Vfs.push_back(" Lambda Lambdabar");
557
558 std::string locvp=getenv("BESEVTGENROOT");
559 system("cat $BESEVTGENROOT/share/phokhara.param>phokhara.param");
560
561
562 if (getParentId().isAlias()){
563
564 report(ERROR,"EvtGen") << "EvtPhokhara finds that you are decaying the"<<endl
565 << " aliased particle "
566 << EvtPDL::name(getParentId()).c_str()
567 << " with the Phokhara model"<<endl
568 << " this does not work, please modify decay table."
569 << endl;
570 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
571 ::abort();
572
573 }
574
575 //store(this);
576
577}
EvtId getParentId()
Definition: EvtDecayBase.hh:60
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

◆ init_evt()

void EvtPhokhara::init_evt ( EvtParticle p)

======== list parameters to be initialized

Definition at line 859 of file EvtPhokhara.cc.

859 {
860 m_pion=getArg(0);
861 // mu+mu-(0),pi+pi-(1),2pi0pi+pi-(2),
862 // 2pi+2pi-(3),ppbar(4),nnbar(5),
863 // K+K-(6),K0K0bar(7),pi+pi-pi0(8),
864 // Lamb Lambbar->pi-pi+ppbar(9)
865 if(m_pion<0 || m_pion>9){std::cout<<"mode index for phokhar 0~9, but you give "<<m_pion<<std::endl;abort();}
866 EvtId myvpho=EvtPDL::getId("vpho");
867 m_E = p->mass();//EvtPDL::getMeanMass(myvpho);
868///======== list parameters to be initialized
869 m_tagged = 0;
870 m_nm = 50000 ; // # of events to determine the maximum
871 m_nlo = 1; // Born(0), NLO(1)
872 m_w = 0.0001; // soft photon cutoff
873 m_fsr = 1; // ISR only(0), ISR+FSR(1), ISR+INT+FSR(2)
874 m_fsrnlo = 1 ; // yes(1), no(0)
875 m_NarrowRes = 1 ;// none(0) jpsi(1) psip(2)
876 m_FF_Kaon = 1 ; // constrained (0), unconstrained (1), Kuhn-Khodjamirian-Bruch (2)
877 m_ivac = 0; // yes(1), no(0)
878 m_FF_Pion = 0 ; // KS Pionformfactor(0), GS Pionformfactor old(1) and new(2)
879 m_f0_model = 0 ; // f0+f0(600): KK model(0), no structure(1), no f0+f0(600)(2), f0 KLOE(3)
880 m_q2min = 0.0; // minimal hadrons(muons)-gamma-inv mass squared (GeV^2)
881 m_q2_min_c = 0.0447 ; // minimal inv. mass squared of the hadrons(muons)(GeV^2)
882 m_q2_max_c = m_E*m_E; // maximal inv. mass squared of the hadrons(muons)(GeV^2)
883 m_gmin = 0.001; // minimal photon energy/missing energy (GeV)
884 m_phot1cut = 0.0; // maximal photon angle/missing momentum angle (grad)
885 m_phot2cut = 180.0; // maximal photon angle/missing momentum angle (grad)
886 m_pi1cut = 0.0 ; // minimal hadrons(muons) angle (grad)
887 m_pi2cut = 180.0; // maximal hadrons(muons) angle (grad)
888
889 if(!(m_pion==0 || m_pion==1 || m_pion==6)){m_fsr = 0; m_fsrnlo = 0 ;}
890 if( m_pion==9 ){m_nlo = 0 ;}
891 // --- input parameter initialization -----------
892 maxima_.iprint = 0;
893 flags_.nlo = m_nlo;
894 flags_.pion = m_pion;
895 flags_.fsr = m_fsr;
896 flags_.fsrnlo = m_fsrnlo;
897 flags_.ivac = m_ivac;
898 flags_.FF_pion = m_FF_Pion;
899 flags_.f0_model = m_f0_model;
900 flags_.FF_kaon = m_FF_Kaon;
901 flags_.narr_res = m_NarrowRes;
902
903 ctes_.Sp = m_E*m_E; ;
904
905 cuts_.w = m_w;
906 cuts_.q2min = m_q2min;
907 cuts_.q2_min_c = m_q2_min_c;
908 cuts_.q2_max_c = m_q2_max_c;
909 cuts_.gmin = m_gmin;
910 cuts_.phot1cut = m_phot1cut;
911 cuts_.phot2cut = m_phot2cut;
912 cuts_.pi1cut = m_pi1cut;
913 cuts_.pi2cut = m_pi2cut;
914
915 INPUT();
916
917 cos1min = cos(cuts_.phot2cut*ctes_.pi/180.0); // photon1 angle cuts in the
918 cos1max = cos(cuts_.phot1cut*ctes_.pi/180.0); // LAB rest frame
919 cos2min = -1.0; // photon2 angle limits
920 cos2max = 1.0; //
921 cos3min = -1.0; // hadrons/muons angle limits
922 cos3max = 1.0; // in their rest frame
923 if (flags_.pion == 0) // virtual photon energy cut
924 qqmin = 4.0*ctes_.mmu*ctes_.mmu;
925 else if (flags_.pion == 1)
926 qqmin = 4.0*ctes_.mpi*ctes_.mpi;
927 else if (flags_.pion == 2)
928 qqmin = 4.0*(ctes_.mpi+ctes_.mpi0)*(ctes_.mpi+ctes_.mpi0);
929 else if (flags_.pion == 3)
930 qqmin = 16.0*ctes_.mpi*ctes_.mpi;
931 else if (flags_.pion == 4)
932 qqmin = 4.0*ctes_.mp*ctes_.mp;
933 else if (flags_.pion == 5)
934 qqmin = 4.0*ctes_.mnt*ctes_.mnt;
935 else if (flags_.pion == 6)
936 qqmin = 4.0*ctes_.mKp*ctes_.mKp;
937 else if (flags_.pion == 7)
938 qqmin = 4.0*ctes_.mKn*ctes_.mKn;
939 else if (flags_.pion == 8)
940 qqmin = (2.0*ctes_.mpi+ctes_.mpi0)*(2.0*ctes_.mpi+ctes_.mpi0);
941 else if (flags_.pion == 9)
942 qqmin = 4.0*ctes_.mlamb*ctes_.mlamb;
943 qqmax = ctes_.Sp-2.0*sqrt(ctes_.Sp)*cuts_.gmin; // if only one photon
944 if (cuts_.q2_max_c < qqmax)
945 qqmax=cuts_.q2_max_c; // external cuts
946
947 // -------------------
948 if ( (cuts_.q2_min_c > qqmin) && (cuts_.q2_min_c < (ctes_.Sp*(1.0-2.0*(cuts_.gmin/sqrt(ctes_.Sp)+cuts_.w))) ) )
949 qqmin = cuts_.q2_min_c;
950 else {
951 }
952
953
954 // =================================================
955// --- finding the maximum -------------------------
956 for(int i = 0; i<2; i++)
957 {
958 maxima_.Mmax[i] = 1.0;
959 maxima_.gross[i] = 0.0;
960 maxima_.klein[i] = 0.0;
961 }
962
963 if (flags_.nlo == 0)
964 maxima_.Mmax[1]=0.0; // only 1 photon events generated
965
966 maxima_.tr[0] = 0.0;
967 maxima_.tr[1] = 0.0;
968 maxima_.count[0] = 0.0;
969 maxima_.count[1] = 0.0;
970
971 // =================================================
972 // --- for the second run ---
973 maxima_.Mmax[0] = theMmax[m_pion][0];
974 maxima_.Mmax[1] = theMmax[m_pion][1];
975 if((flags_.pion == 1) && (flags_.fsrnlo == 1))
976 maxima_.Mmax[1]=maxima_.Mmax[1]*1.5;
977 if((flags_.pion == 0) && (flags_.fsrnlo == 1))
978 maxima_.Mmax[1]=maxima_.Mmax[1]*1.5;
979
980 if((flags_.pion == 0) && (flags_.fsr == 1) && (flags_.fsrnlo == 0))
981 maxima_.Mmax[1]=maxima_.Mmax[1]*1.2;
982
983 if((flags_.pion == 2) || (flags_.pion == 3)){
984 maxima_.Mmax[0]=maxima_.Mmax[0]*1.1;
985 maxima_.Mmax[1]=maxima_.Mmax[1]*1.1;
986 }
987
988 if(flags_.pion == 8){
989 maxima_.Mmax[0]=maxima_.Mmax[0]*1.08;
990 maxima_.Mmax[1]=maxima_.Mmax[1]*1.1;
991 }
992// --- end of the second run -----------------------
993
994 maxima_.tr[0] = 0.0;
995 maxima_.tr[1] = 0.0;
996 maxima_.count[0] = 0.0;
997 maxima_.count[1] = 0.0;
998}
#define INPUT
Definition: BesBdkRc.cxx:35
struct @11 cuts_
double cos(const BesAngle a)

Referenced by decay().

◆ init_mode()

void EvtPhokhara::init_mode ( EvtParticle p)

======== list parameters to be initialized

Definition at line 156 of file EvtPhokhara.cc.

156 {
157 m_pion=getArg(0);
158 // mu+mu-(0),pi+pi-(1),2pi0pi+pi-(2),
159 // 2pi+2pi-(3),ppbar(4),nnbar(5),
160 // K+K-(6),K0K0bar(7),pi+pi-pi0(8),
161 // Lamb Lambbar->pi-pi+ppbar(9)
162 if(m_pion<0 || m_pion>9){std::cout<<"mode index for phokhar 0~9, but you give "<<m_pion<<std::endl;abort();}
163 EvtId myvpho=EvtPDL::getId("vpho");
164 m_E = p->mass();//EvtPDL::getMeanMass(myvpho);
165///======== list parameters to be initialized
166 m_tagged = 0;
167 m_nm = 50000 ; // # of events to determine the maximum
168 m_nlo = 1; // Born(0), NLO(1)
169 m_w = 0.0001; // soft photon cutoff
170 m_fsr = 1; // ISR only(0), ISR+FSR(1), ISR+INT+FSR(2)
171 m_fsrnlo = 1 ; // yes(1), no(0)
172 m_NarrowRes = 1 ;// none(0) jpsi(1) psip(2)
173 m_FF_Kaon = 1 ; // constrained (0), unconstrained (1), Kuhn-Khodjamirian-Bruch (2)
174 m_ivac = 0; // yes(1), no(0)
175 m_FF_Pion = 0 ; // KS Pionformfactor(0), GS Pionformfactor old(1) and new(2)
176 m_f0_model = 0 ; // f0+f0(600): KK model(0), no structure(1), no f0+f0(600)(2), f0 KLOE(3)
177 m_q2min = 0.0; // minimal hadrons(muons)-gamma-inv mass squared (GeV^2)
178 m_q2_min_c = 0.0447 ; // minimal inv. mass squared of the hadrons(muons)(GeV^2)
179 m_q2_max_c = m_E*m_E; // maximal inv. mass squared of the hadrons(muons)(GeV^2)
180 m_gmin = 0.001; // minimal photon energy/missing energy (GeV)
181 m_phot1cut = 0.0; // maximal photon angle/missing momentum angle (grad)
182 m_phot2cut = 180.0; // maximal photon angle/missing momentum angle (grad)
183 m_pi1cut = 0.0 ; // minimal hadrons(muons) angle (grad)
184 m_pi2cut = 180.0; // maximal hadrons(muons) angle (grad)
185
186 if(!(m_pion==0 || m_pion==1 || m_pion==6)){m_fsr = 0; m_fsrnlo = 0 ;}
187 if( m_pion==9 ){m_nlo = 0 ;}
188 // --- input parameter initialization -----------
189 m_initSeed = 123456789;
190 RLXDINIT(1, m_initSeed);
191 maxima_.iprint = 0;
192 flags_.nlo = m_nlo;
193 flags_.pion = m_pion;
194 flags_.fsr = m_fsr;
195 flags_.fsrnlo = m_fsrnlo;
196 flags_.ivac = m_ivac;
197 flags_.FF_pion = m_FF_Pion;
198 flags_.f0_model = m_f0_model;
199 flags_.FF_kaon = m_FF_Kaon;
200 flags_.narr_res = m_NarrowRes;
201
202 ctes_.Sp = m_E*m_E; ;
203
204 cuts_.w = m_w;
205 cuts_.q2min = m_q2min;
206 cuts_.q2_min_c = m_q2_min_c;
207 cuts_.q2_max_c = m_q2_max_c;
208 cuts_.gmin = m_gmin;
209 cuts_.phot1cut = m_phot1cut;
210 cuts_.phot2cut = m_phot2cut;
211 cuts_.pi1cut = m_pi1cut;
212 cuts_.pi2cut = m_pi2cut;
213
214 INPUT();
215
216 // --- print run data ------------------------------
217 cout << "-------------------------------------------------------------" << endl;
218 if (flags_.pion == 0)
219 cout << " PHOKHARA 7.0 : e^+ e^- -> mu^+ mu^- gamma" << endl;
220 else if (flags_.pion == 1)
221 cout << " PHOKHARA 7.0: e^+ e^- -> pi^+ pi^- gamma" << endl;
222 else if (flags_.pion == 2)
223 cout << " PHOKHARA 7.0: e^+ e^- -> pi^+ pi^- 2pi^0 gamma" << endl;
224 else if (flags_.pion == 3)
225 cout << " PHOKHARA 7.0: e^+ e^- -> 2pi^+ 2pi^- gamma" << endl;
226 else if (flags_.pion == 4)
227 cout << " PHOKHARA 7.0: e^+ e^- -> p pbar gamma" << endl;
228 else if (flags_.pion == 5)
229 cout << " PHOKHARA 7.0: e^+ e^- -> n nbar gamma" << endl;
230 else if (flags_.pion == 6)
231 cout << " PHOKHARA 7.0: e^+ e^- -> K^+ K^- gamma" << endl;
232 else if (flags_.pion == 7)
233 cout << " PHOKHARA 7.0: e^+ e^- -> K_0 K_0bar gamma" << endl;
234 else if (flags_.pion == 8)
235 cout << " PHOKHARA 7.0: e^+ e^- -> pi^+ pi^- pi^0 gamma" << endl;
236 else if (flags_.pion == 9) {
237 cout << "PHOKHARA 7.0 : e^+ e^- ->" << endl;
238 cout << " Lambda (-> pi^- p) Lambda bar (-> pi^+ pbar) gamma" << endl;
239 } else
240 cout << " PHOKHARA 7.0: not yet implemented" << endl;
241
242 // --------------------------------
243 cout << "--------------------------------------------------------------" << endl;
244 printf(" %s %f %s\n","cms total energy = ",sqrt(ctes_.Sp)," GeV ");
245
246 //if((cuts_.gmin/2.0/ctes_.ebeam) < 0.000098){
247 if(cuts_.gmin<0.001){
248 cerr << " minimal missing energy set too small" << endl;
249 abort();
250 }
251 printf(" %s %f %s\n","minimal tagged photon energy = ",cuts_.gmin," GeV ");
252 printf(" %s %f,%f\n","angular cuts on tagged photon = ",cuts_.phot1cut,cuts_.phot2cut);
253
254 // --------------------------------
255 if (flags_.pion == 0)
256 printf(" %s %f,%f\n","angular cuts on muons = ",cuts_.pi1cut,cuts_.pi2cut);
257 else if (flags_.pion == 4)
258 printf(" %s %f,%f\n","angular cuts on protons = ",cuts_.pi1cut,cuts_.pi2cut);
259 else if (flags_.pion == 5)
260 printf(" %s %f,%f\n","angular cuts on neutrons = ", cuts_.pi1cut,cuts_.pi2cut);
261 else if ((flags_.pion == 6)||(flags_.pion == 7))
262 printf(" %s %f,%f\n","angular cuts on kaons = ", cuts_.pi1cut,cuts_.pi2cut);
263 else if (flags_.pion == 9)
264 printf(" %s %f,%f\n","angular cuts on pions and protons = ", cuts_.pi1cut,cuts_.pi2cut);
265 else
266 printf(" %s %f,%f\n","angular cuts on pions = ", cuts_.pi1cut,cuts_.pi2cut);
267 if (flags_.pion == 0)
268 printf(" %s %f %s\n","min. muons-tagged photon inv.mass^2 = ", cuts_.q2min," GeV^2");
269 else if (flags_.pion == 4)
270 printf(" %s %f %s\n","min. protons-tagged photon inv.mass^2 = ", cuts_.q2min," GeV^2" );
271 else if (flags_.pion == 5)
272 printf(" %s %f %s\n","min. neutrons-tagged photon inv.mass^2 = ", cuts_.q2min," GeV^2" );
273 else if ((flags_.pion == 6)||(flags_.pion == 7))
274 printf(" %s %f %s\n","min. kaons-tagged photon inv.mass^2 = ", cuts_.q2min," GeV^2" );
275 else if (flags_.pion == 9)
276 printf(" %s %f %s\n"," min. lambdas-tagged photon inv.mass^2 = ", cuts_.q2min," GeV^2" );
277 else
278 printf(" %s %f %s\n","min. pions-tagged photon inv.mass^2 = ", cuts_.q2min," GeV^2" );
279 cos1min = cos(cuts_.phot2cut*ctes_.pi/180.0); // photon1 angle cuts in the
280 cos1max = cos(cuts_.phot1cut*ctes_.pi/180.0); // LAB rest frame
281 cos2min = -1.0; // photon2 angle limits
282 cos2max = 1.0; //
283 cos3min = -1.0; // hadrons/muons angle limits
284 cos3max = 1.0; // in their rest frame
285 if (flags_.pion == 0) // virtual photon energy cut
286 qqmin = 4.0*ctes_.mmu*ctes_.mmu;
287 else if (flags_.pion == 1)
288 qqmin = 4.0*ctes_.mpi*ctes_.mpi;
289 else if (flags_.pion == 2)
290 qqmin = 4.0*(ctes_.mpi+ctes_.mpi0)*(ctes_.mpi+ctes_.mpi0);
291 else if (flags_.pion == 3)
292 qqmin = 16.0*ctes_.mpi*ctes_.mpi;
293 else if (flags_.pion == 4)
294 qqmin = 4.0*ctes_.mp*ctes_.mp;
295 else if (flags_.pion == 5)
296 qqmin = 4.0*ctes_.mnt*ctes_.mnt;
297 else if (flags_.pion == 6)
298 qqmin = 4.0*ctes_.mKp*ctes_.mKp;
299 else if (flags_.pion == 7)
300 qqmin = 4.0*ctes_.mKn*ctes_.mKn;
301 else if (flags_.pion == 8)
302 qqmin = (2.0*ctes_.mpi+ctes_.mpi0)*(2.0*ctes_.mpi+ctes_.mpi0);
303 else if (flags_.pion == 9)
304 qqmin = 4.0*ctes_.mlamb*ctes_.mlamb;
305 qqmax = ctes_.Sp-2.0*sqrt(ctes_.Sp)*cuts_.gmin; // if only one photon
306 if (cuts_.q2_max_c < qqmax)
307 qqmax=cuts_.q2_max_c; // external cuts
308
309 // -------------------
310 if ( (cuts_.q2_min_c > qqmin) && (cuts_.q2_min_c < (ctes_.Sp*(1.0-2.0*(cuts_.gmin/sqrt(ctes_.Sp)+cuts_.w))) ) )
311 qqmin = cuts_.q2_min_c;
312 else {
313 cerr << "------------------------------" << endl;
314 cerr << " Q^2_min TOO SMALL" << endl;
315 cerr << " Q^2_min CHANGED BY PHOKHARA = " << qqmin << " GeV^2" << endl;
316 cerr << "------------------------------" << endl;
317 }
318 // -------------------
319 if(qqmax <= qqmin){
320 cerr << " Q^2_max to small " << endl;
321 cerr << " Q^2_max = " << qqmax << endl;
322 cerr << " Q^2_min = " << qqmin << endl;
323 abort();
324 }
325
326 // -------------------
327 if (flags_.pion == 0) {
328 printf(" %s %f %s\n", "minimal muon-pair invariant mass^2 = ", qqmin," GeV^2");
329 printf(" %s %f %s\n", "maximal muon-pair invariant mass^2 = ", qqmax," GeV^2");
330 } else if (flags_.pion == 1) {
331 printf(" %s %f %s\n", "minimal pion-pair invariant mass^2 = ", qqmin," GeV^2");
332 printf(" %s %f %s\n", "maximal pion-pair invariant mass^2 = ", qqmax," GeV^2");
333 } else if (flags_.pion == 4) {
334 printf(" %s %f %s\n", "minimal proton-pair invariant mass^2 = ", qqmin," GeV^2");
335 printf(" %s %f %s\n", "maximal proton-pair invariant mass^2 = ", qqmax," GeV^2");
336 } else if (flags_.pion == 5) {
337 printf(" %s %f %s\n", "minimal neutron-pair invariant mass^2 = ", qqmin," GeV^2");
338 printf(" %s %f %s\n", "maximal neutron-pair invariant mass^2 = ", qqmax," GeV^2");
339 } else if ((flags_.pion == 6) || (flags_.pion == 7)) {
340 printf(" %s %f %s\n", "minimal kaon-pair invariant mass^2 = ", qqmin," GeV^2");
341 printf(" %s %f %s\n", "maximal kaon-pair invariant mass^2 = ", qqmax," GeV^2");
342 } else if(flags_.pion == 8){
343 printf(" %s %f %s\n", "minimal three-pion invariant mass^2 = ", qqmin," GeV^2");
344 printf(" %s %f %s\n", "maximal three-pion invariant mass^2 = ", qqmax," GeV^2");
345 } else if(flags_.pion == 9){
346 printf(" %s %f %s\n", "minimal lambda-pair invariant mass^2 = ", qqmin," GeV^2");
347 printf(" %s %f %s\n", "maximal lambda-pair invariant mass^2 = ", qqmax," GeV^2");
348 } else {
349 printf(" %s %f %s\n", "minimal four-pion invariant mass^2 = ", qqmin," GeV^2" );
350 printf(" %s %f %s\n", "maximal four-pion invariant mass^2 = ", qqmax," GeV^2");
351 }
352 // -------------------
353 if (flags_.nlo == 0) {
354 cout << "Born" << endl;
355 if(flags_.fsrnlo != 0){
356 cerr << "WRONG FSRNLO flag - only fsrnlo=0 allowed for Born" << endl;
357 abort();
358 }
359 }
360 // -------------------
361 if((flags_.pion == 9) && (flags_.nlo != 0)) {
362 cerr << "WRONG NLO flag - only Born allowed for Lambdas"<< endl;
363 cerr << "If you feel that you need NLO"<< endl;
364 cerr << "please contact the authors"<< endl;
365 abort();
366 }
367 // -------------------
368 if (flags_.nlo == 1) printf(" %s %f\n", "NLO: soft photon cutoff w = ",cuts_.w);
369 if ((flags_.pion <= 1) || (flags_.pion == 6))
370 {
371
372 if( ! ((flags_.fsr == 1) || (flags_.fsr == 2) || (flags_.fsrnlo == 0)
373 || (flags_.fsr == 1) || (flags_.fsrnlo == 1)
374 || (flags_.fsr == 0) || (flags_.fsrnlo == 0))) {
375 cerr << "WRONG combination of FSR, FSRNLO flags" <<endl;
376 abort();
377 }
378 // ------------------
379 if (flags_.fsr == 0)
380 cout << "ISR only" << endl;
381 else if (flags_.fsr == 1)
382 cout << "ISR+FSR" << endl;
383 else if (flags_.fsr == 2) {
384 if (flags_.nlo == 0)
385 cout << "ISR+INT+FSR" << endl;
386 else {
387 cerr << "WRONG FSR flag: interference is included only for nlo=0" << endl;
388 abort();
389 }
390 }
391 else {
392 cerr << "WRONG FSR flag" << flags_.fsr << endl;
393 abort();
394 }
395 if(flags_.fsrnlo == 1)
396 cout << "IFSNLO included" << endl;
397 }
398 else
399 {
400 if((flags_.fsr == 0) && (flags_.fsrnlo == 0))
401 cout << "ISR only" << endl;
402 else {
403 cerr << "FSR is implemented only for pi+pi-, mu+mu- and K+K- modes" << endl;
404 abort();
405 }
406 }
407 // ------------------
408 if(flags_.ivac == 0){
409 cout << "Vacuum polarization is NOT included" << endl;}
410 else if(flags_.ivac == 1){
411 cout << "Vacuum polarization by Fred Jegerlehner (http://www-com.physik.hu-berlin.de/fjeger/alphaQEDn.uu)" << endl;}
412 else if(flags_.ivac == 2){
413 cout << "Vacuum polarization (VP_HLMNT_v1_3nonr) by Daisuke Nomura and Thomas Teubner" << endl;}
414 else {
415 cout << "WRONG vacuum polarization switch" << endl;
416 abort();
417 }
418
419// -----------------
420 if(flags_.pion == 1){
421 if(flags_.FF_pion == 0)
422 cout << "Kuhn-Santamaria PionFormFactor" << endl;
423 else if(flags_.FF_pion == 1)
424 cout << "Gounaris-Sakurai PionFormFactor old" << endl;
425 else if(flags_.FF_pion == 2)
426 cout << "Gounaris-Sakurai PionFormFactor new" << endl;
427 else {
428 cout << "WRONG PionFormFactor switch" << endl;
429 abort();
430 }
431 if(flags_.fsr != 0){
432 if(flags_.f0_model == 0)
433 cout << "f0+f0(600): K+K- model" << endl;
434 else if(flags_.f0_model == 1)
435 cout << "f0+f0(600): \"no structure\" model" << endl;
436 else if(flags_.f0_model == 2)
437 cout << "NO f0+f0(600)" << endl;
438 else if(flags_.f0_model == 3)
439 cout << "only f0, KLOE: Cesare Bini-private communication" << endl;
440 else {
441 cout << "WRONG f0+f0(600) switch" << endl;
442 abort();
443 }
444 }
445 }
446//-------
447 if((flags_.pion == 6) || (flags_.pion==7)){
448 if(flags_.FF_kaon == 0)
449 cout << "constrained KaonFormFactor" << endl;
450 else if(flags_.FF_kaon == 1) {
451 cout << "unconstrained KaonFormFactor" << endl;}
452 else if(flags_.FF_kaon == 2) {
453 cout << "Kuhn-Khodjamirian-Bruch KaonFormFactor" << endl;}
454 else{
455 cout << "WRONG KaonFormFactor switch" << endl;
456 abort();
457 }
458 }
459// --------------------
460 if((flags_.pion == 0) || (flags_.pion==1) || (flags_.pion == 6) || (flags_.pion == 7)){
461 if(flags_.narr_res == 1){
462 cout << "THE NARROW RESONANCE J/PSI INCLUDED" << endl;}
463 else if(flags_.narr_res == 2){
464 cout << "THE NARROW RESONANCE PSI(2S) INCLUDED" << endl;}
465 else if(flags_.narr_res != 0){
466 cout << "wrong flag narr_res: only 0, 1 or 2 allowed" << endl;
467 abort();
468 }
469 }
470// ------
471 cout << "--------------------------------------------------------------" << endl;
472//
473 // =================================================
474// --- finding the maximum -------------------------
475 for(int i = 0; i<2; i++)
476 {
477 maxima_.Mmax[i] = 1.0;
478 maxima_.gross[i] = 0.0;
479 maxima_.klein[i] = 0.0;
480 }
481
482 if (flags_.nlo == 0)
483 maxima_.Mmax[1]=0.0; // only 1 photon events generated
484
485 maxima_.tr[0] = 0.0;
486 maxima_.tr[1] = 0.0;
487 maxima_.count[0] = 0.0;
488 maxima_.count[1] = 0.0;
489
490 // =================================================
491 // --- beginning the MC loop event generation ------
492 for(int j = 1; j <= m_nm; j++)
493 {
494 RANLXDF(Ar_r,1);
495 Ar[1] = Ar_r[0];
496 if (Ar[1] <= (maxima_.Mmax[0]/(maxima_.Mmax[0]+maxima_.Mmax[1]))) {
497 maxima_.count[0] = maxima_.count[0]+1.0;
498 GEN_1PH(1,qqmin,qqmax,cos1min,cos1max,cos3min,cos3max);
499 }
500 else {
501 maxima_.count[1] = maxima_.count[1]+1.0;
502 GEN_2PH(1,qqmin,cos1min,cos1max,cos2min,cos2max,cos3min,cos3max);
503 }
504 }
505 // --- end of the MC loop --------------------------
506 // =================================================
507 // --- for the second run ---
508 maxima_.Mmax[0] = maxima_.gross[0]+.05*sqrt(maxima_.gross[0]*maxima_.gross[0]);
509 maxima_.Mmax[1] = maxima_.gross[1]+(.03+.02*ctes_.Sp)*sqrt(maxima_.gross[1]*maxima_.gross[1]);
510 theMmax[m_pion][0]=maxima_.Mmax[0];
511 theMmax[m_pion][1]=maxima_.Mmax[1];
512
513 if((flags_.pion == 1) && (flags_.fsrnlo == 1))
514 maxima_.Mmax[1]=maxima_.Mmax[1]*1.5;
515 if((flags_.pion == 0) && (flags_.fsrnlo == 1))
516 maxima_.Mmax[1]=maxima_.Mmax[1]*1.5;
517
518 if((flags_.pion == 0) && (flags_.fsr == 1) && (flags_.fsrnlo == 0))
519 maxima_.Mmax[1]=maxima_.Mmax[1]*1.2;
520
521 if((flags_.pion == 2) || (flags_.pion == 3)){
522 maxima_.Mmax[0]=maxima_.Mmax[0]*1.1;
523 maxima_.Mmax[1]=maxima_.Mmax[1]*1.1;
524 }
525
526 if(flags_.pion == 8){
527 maxima_.Mmax[0]=maxima_.Mmax[0]*1.08;
528 maxima_.Mmax[1]=maxima_.Mmax[1]*1.1;
529 }
530// --- end of the second run -----------------------
531
532 maxima_.tr[0] = 0.0;
533 maxima_.tr[1] = 0.0;
534 maxima_.count[0] = 0.0;
535 maxima_.count[1] = 0.0;
536}
#define RLXDINIT(LUXURY, SEED)

Referenced by decay().

◆ initProbMax()

void EvtPhokhara::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 149 of file EvtPhokhara.cc.

149 {
150
151 noProbMax();
152
153}
void noProbMax()

◆ PhokharaInit()

void EvtPhokhara::PhokharaInit ( int  dummy)

Definition at line 846 of file EvtPhokhara.cc.

846 {
847 static int first=1;
848 if (first){
849
850 first=0;
851 //for(int i=0;i<ncommand;i++)
852 // lugive0_(commands[i].c_str(),strlen(commands[i].c_str()));
853 }
854
855}
Index first(Pair i)
Definition: EvtCyclic3.cc:195

The documentation for this class was generated from the following files: