Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EvtDecayAmp Class Reference

#include <EvtDecayAmp.hh>

Inheritance diagram for EvtDecayAmp:

EvtDecayBase EvtAV2GV EvtBHadronic EvtBto2piCPiso EvtBTo3piCP EvtBTo4piCP EvtBtoKD3P EvtBtoKpiCPiso EvtBToKpipiCP EvtbTosllAli EvtbTosllBall EvtCBTo3piMPP EvtCBTo3piP00 EvtChi0BB1 EvtChi0BB2 EvtChi1BB1 EvtChi1BB2 EvtChi2BB1 EvtChi2BB2 EvtD0mixDalitz EvtDDalitz EvtDeBD EvtEtaDalitz EvtGoityRoberts EvtHelAmp EvtHelPPJ EvtHQET EvtHQET2 EvtHypNonLepton EvtHypWK EvtIntervalDecayAmp< T > EvtIntervalDecayAmp< EvtDalitzPoint > EvtISGW EvtISGW2 EvtJ2BB1 EvtJ2BB2 EvtJ2BB3 EvtJPE EvtJpipi EvtJTO3P EvtKKLambdaC EvtKstarnunu EvtKstarstargamma EvtLambdaP_BarGamma EvtLNuGamma EvtMelikhov EvtMultibody EvtOmegaDalitz EvtP2GC0 EvtP2GC1 EvtP2GC2 EvtPartWave EvtPBB1 EvtPBB2 EvtPhiDalitz EvtS2GV EvtSLBKPole EvtSll EvtSLN EvtSLPole EvtSPL EvtSSDCP EvtSSSCP EvtSSSCPpng EvtSSSCPT EvtSTS EvtSTSCP EvtSVPCP EvtSVPHelAmp EvtSVS EvtSVSCP EvtSVSCPiso EvtSVSCPLH EvtSVSNONCPEIGEN EvtSVVCP EvtSVVCPLH EvtSVVHelAmp EvtSVVNONCPEIGEN EvtT2GV EvtTauHadnu EvtTaulnunu EvtTauScalarnu EvtTauVectornu EvtTSS EvtTVSPwave EvtVll EvtVPHOtoVISR EvtVPHOtoVISRHi EvtVSPPwave EvtVSS EvtVSSBMixCPT EvtVSSMix EvtVVP EvtVVpipi EvtVVPIPI_WEIGHTED EvtVVSPwave List of all members.

Public Member Functions

void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
void checkNDaug (int d1, int d2=-1)
void checkQ ()
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
void checkSpinParent (EvtSpinType::spintype sp)
virtual EvtDecayBaseclone ()=0
virtual void command (std::string cmd)
virtual std::string commandName ()
virtual void decay (EvtParticle *p)=0
void disableCheckQ ()
double getArg (int j)
double * getArgs ()
std::string * getArgsStr ()
std::string getArgStr (int j)
double getBranchingFraction ()
EvtId getDaug (int i)
EvtIdgetDaugs ()
int getDSum ()
std::string getModelName ()
virtual void getName (std::string &name)=0
int getNArg ()
int getNDaug ()
EvtId getParentId ()
int getPHOTOS ()
double getProbMax (double prob)
virtual void init ()
virtual void initProbMax ()
void makeDecay (EvtParticle *p)
virtual bool matchingDecay (const EvtDecayBase &other) const
void noProbMax ()
virtual int nRealDaughters ()
void printSummary ()
double resetProbMax (double prob)
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
void setPHOTOS ()
void setProbMax (double prbmx)
void setSummary ()
void setVerbose ()
void setWeight (double weight)
int summary ()
int verbose ()
void vertex (int *i1, const EvtComplex &amp)
void vertex (int i1, int i2, int i3, const EvtComplex &amp)
void vertex (int i1, int i2, const EvtComplex &amp)
void vertex (int i1, const EvtComplex &amp)
void vertex (const EvtComplex &amp)
virtual ~EvtDecayAmp ()

Static Public Member Functions

void findMass (EvtParticle *p)
void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
double findMaxMass (EvtParticle *p)

Protected Member Functions

bool daugsDecayedByParentModel ()

Protected Attributes

EvtAmp _amp2
bool _daugsDecayedByParentModel

Private Attributes

double _weight

Constructor & Destructor Documentation

virtual EvtDecayAmp::~EvtDecayAmp  )  [inline, virtual]
 

00063 {}


Member Function Documentation

void EvtDecayBase::checkNArg int  a1,
int  a2 = -1,
int  a3 = -1,
int  a4 = -1
[inherited]
 

00483                                                            {
00484 
00485   if ( _narg != a1 && _narg != a2 && _narg != a3 && _narg != a4 ) {
00486     report(ERROR,"EvtGen") << _modelname.c_str() << " generator expected "<<endl;
00487     report(ERROR,"EvtGen") << a1<<endl;; 
00488     if ( a2>-1) {
00489       report(ERROR,"EvtGen") << " or " << a2<<endl; 
00490     }
00491     if ( a3>-1) {
00492       report(ERROR,"EvtGen") << " or " << a3<<endl; 
00493     }
00494     if ( a4>-1) {
00495       report(ERROR,"EvtGen") << " or " << a4<<endl; 
00496     }
00497     report(ERROR,"EvtGen") << " arguments but found:"<< _narg << endl;
00498     printSummary();
00499     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00500     ::abort();
00501 
00502   } 
00503 
00504 }

void EvtDecayBase::checkNDaug int  d1,
int  d2 = -1
[inherited]
 

00505                                            {
00506 
00507   if ( _ndaug != d1 && _ndaug != d2 ) {
00508     report(ERROR,"EvtGen") << _modelname.c_str() << " generator expected ";
00509     report(ERROR,"EvtGen") << d1; 
00510     if ( d2>-1) {
00511       report(ERROR,"EvtGen") << " or " << d2; 
00512     }
00513     report(ERROR,"EvtGen") << " daughters but found:"<< _ndaug << endl;
00514     printSummary();
00515     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00516     ::abort();
00517   } 
00518 
00519 }

void EvtDecayBase::checkQ  )  [inherited]
 

00035                           {
00036   int i;
00037   int q=0;
00038   int qpar;
00039 
00040   //If there are no daughters (jetset etc) then we do not
00041   //want to do this test.  Why?  Because sometimes the parent
00042   //will have a nonzero charge.
00043 
00044   if ( _ndaug != 0) {
00045     for(i=0; i<_ndaug; i++ ) {
00046       q += EvtPDL::chg3(_daug[i]);
00047     }
00048     qpar = EvtPDL::chg3(_parent);
00049 
00050     if ( q != qpar ) {
00051       report(ERROR,"EvtGen") <<_modelname.c_str()<< " generator expected "
00052                              << " charge to be conserved, found:"<<endl;
00053       report(ERROR,"EvtGen") << "Parent charge of "<<(qpar/3)<<endl;
00054       report(ERROR,"EvtGen") << "Sum of daughter charge of "<<(q/3)<<endl;
00055       report(ERROR,"EvtGen") << "The parent is "<< EvtPDL::name(_parent).c_str()<<endl;
00056       for(i=0; i<_ndaug; i++ ) {
00057       report(ERROR,"EvtGen") << "Daughter "<< EvtPDL::name(_daug[i]).c_str()<<endl;
00058       }
00059       report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00060       
00061       ::abort();
00062     }
00063   }
00064 }

void EvtDecayBase::checkSpinDaughter int  d1,
EvtSpinType::spintype  sp
[inherited]
 

00534                                                                    {
00535 
00536   EvtSpinType::spintype parenttype = EvtPDL::getSpinType(getDaug(d1));
00537   if ( parenttype != sp ) {
00538     report(ERROR,"EvtGen") << _modelname.c_str() 
00539                            << " did not get the correct daughter spin d=" 
00540                            << d1 << endl;
00541     printSummary();
00542     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00543     ::abort();
00544   } 
00545 
00546 }

void EvtDecayBase::checkSpinParent EvtSpinType::spintype  sp  )  [inherited]
 

00521                                                          {
00522 
00523   EvtSpinType::spintype parenttype = EvtPDL::getSpinType(getParentId());
00524   if ( parenttype != sp ) {
00525     report(ERROR,"EvtGen") << _modelname.c_str() 
00526                            << " did not get the correct parent spin\n";
00527     printSummary();
00528     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00529     ::abort();
00530   } 
00531 
00532 }

virtual EvtDecayBase* EvtDecayBase::clone  )  [pure virtual, inherited]
 

Implemented in EvtAngH2, EvtAngSam, EvtAngSam3, EvtAV2GV, EvtBHadronic, EvtBody3, EvtBsquark, EvtBto2piCPiso, EvtBTo3piCP, EvtBTo4piCP, EvtBtoKD3P, EvtBtoKpiCPiso, EvtBToKpipiCP, EvtbTosllAli, EvtbTosllBall, EvtBtoXsEtap, EvtBtoXsgamma, EvtBtoXsll, EvtCBTo3piMPP, EvtCBTo3piP00, EvtChi0BB1, EvtChi0BB2, EvtChi1BB1, EvtChi1BB2, EvtChi2BB1, EvtChi2BB2, EvtD0mixDalitz, EvtDDalitz, EvtDeBD, EvtDIY, EvtDMix, EvtEtaDalitz, EvtFlatQ2, EvtGoityRoberts, EvtHAngSam3, EvtHelAmp, EvtHelPPJ, EvtHQET, EvtHQET2, EvtHypNonLepton, EvtHypWK, EvtISGW, EvtISGW2, EvtJ2BB1, EvtJ2BB2, EvtJ2BB3, EvtJetSet, EvtJPE, EvtJpipi, EvtJscont, EvtJTO3P, EvtKKLambdaC, EvtKstarnunu, EvtKstarstargamma, EvtLambdaP_BarGamma, EvtLNuGamma, EvtLunda, EvtLundCharm, EvtMassH1, EvtMassH2, EvtMBody3, EvtMelikhov, EvtmPhsp, EvtMultibody, EvtOmegaDalitz, EvtP2GC0, EvtP2GC1, EvtP2GC2, EvtPartWave, EvtPBB1, EvtPBB2, EvtPhiDalitz, EvtPhsp, EvtPi0Dalitz, EvtPto3P, EvtPycont, EvtPyGaGa, EvtPythia, EvtRhoPi, EvtS2GV, EvtSingleParticle, EvtSingleParticle2, EvtSinglePoint, EvtSLBKPole, EvtSll, EvtSLN, EvtSLPole, EvtSPL, EvtSSDCP, EvtSSSCP, EvtSSSCPpng, EvtSSSCPT, EvtSTS, EvtSTSCP, EvtSVPCP, EvtSVPHelAmp, EvtSVS, EvtSVSCP, EvtSVSCPiso, EvtSVSCPLH, EvtSVSNONCPEIGEN, EvtSVVCP, EvtSVVCPLH, EvtSVVHelAmp, EvtSVVNONCPEIGEN, EvtT2GV, EvtTauHadnu, EvtTaulnunu, EvtTauola, EvtTauScalarnu, EvtTauVectornu, EvtTSS, EvtTVSPwave, EvtUclaII, EvtVectorIsr, EvtVll, EvtVPHOtoVISR, EvtVPHOtoVISRHi, EvtVSPPwave, EvtVSS, EvtVSSBMixCPT, EvtVSSMix, EvtVub, EvtVubHybrid, EvtVubNLO, EvtVVP, EvtVVpipi, EvtVVPIPI_WEIGHTED, and EvtVVSPwave.

void EvtDecayBase::command std::string  cmd  )  [virtual, inherited]
 

Reimplemented in EvtJetSet, EvtLunda, EvtLundCharm, EvtPythia, and EvtTauola.

00132                                        {
00133   report(ERROR,"EvtGen") << "Should never call EvtDecayBase::command"<<endl;
00134   ::abort();
00135 }

std::string EvtDecayBase::commandName  )  [virtual, inherited]
 

Reimplemented in EvtJetSet, EvtLunda, EvtLundCharm, EvtPythia, and EvtTauola.

00129                                    {
00130   return std::string("");
00131 }

bool EvtDecayBase::daugsDecayedByParentModel  )  [inline, protected, inherited]
 

00111 {return _daugsDecayedByParentModel;}

virtual void EvtDecayBase::decay EvtParticle p  )  [pure virtual, inherited]
 

Implemented in EvtAngH2, EvtAngSam, EvtAngSam3, EvtAV2GV, EvtBHadronic, EvtBody3, EvtBsquark, EvtBto2piCPiso, EvtBTo3piCP, EvtBTo4piCP, EvtBtoKD3P, EvtBtoKpiCPiso, EvtBToKpipiCP, EvtbTosllAli, EvtbTosllBall, EvtBtoXsEtap, EvtBtoXsgamma, EvtBtoXsll, EvtCBTo3piMPP, EvtCBTo3piP00, EvtChi0BB1, EvtChi0BB2, EvtChi1BB1, EvtChi1BB2, EvtChi2BB1, EvtChi2BB2, EvtD0mixDalitz, EvtDDalitz, EvtDeBD, EvtDIY, EvtDMix, EvtEtaDalitz, EvtFlatQ2, EvtGoityRoberts, EvtHAngSam3, EvtHelAmp, EvtHelPPJ, EvtHQET, EvtHQET2, EvtHypNonLepton, EvtHypWK, EvtIntervalDecayAmp< T >, EvtISGW, EvtISGW2, EvtJ2BB1, EvtJ2BB2, EvtJ2BB3, EvtJetSet, EvtJPE, EvtJpipi, EvtJscont, EvtJTO3P, EvtKKLambdaC, EvtKstarnunu, EvtKstarstargamma, EvtLambdaP_BarGamma, EvtLNuGamma, EvtLunda, EvtLundCharm, EvtMassH1, EvtMassH2, EvtMBody3, EvtMelikhov, EvtmPhsp, EvtMultibody, EvtOmegaDalitz, EvtP2GC0, EvtP2GC1, EvtP2GC2, EvtPartWave, EvtPBB1, EvtPBB2, EvtPhiDalitz, EvtPhsp, EvtPi0Dalitz, EvtPycont, EvtPyGaGa, EvtPythia, EvtRhoPi, EvtS2GV, EvtSingleParticle, EvtSingleParticle2, EvtSinglePoint, EvtSLBKPole, EvtSll, EvtSLN, EvtSLPole, EvtSPL, EvtSSDCP, EvtSSSCP, EvtSSSCPpng, EvtSSSCPT, EvtSTS, EvtSTSCP, EvtSVPCP, EvtSVPHelAmp, EvtSVS, EvtSVSCP, EvtSVSCPiso, EvtSVSCPLH, EvtSVSNONCPEIGEN, EvtSVVCP, EvtSVVCPLH, EvtSVVHelAmp, EvtSVVNONCPEIGEN, EvtT2GV, EvtTauHadnu, EvtTaulnunu, EvtTauola, EvtTauScalarnu, EvtTauVectornu, EvtTSS, EvtTVSPwave, EvtUclaII, EvtVectorIsr, EvtVll, EvtVPHOtoVISR, EvtVPHOtoVISRHi, EvtVSPPwave, EvtVSS, EvtVSSBMixCPT, EvtVSSMix, EvtVub, EvtVubHybrid, EvtVubNLO, EvtVVP, EvtVVpipi, EvtVVPIPI_WEIGHTED, EvtVVSPwave, and EvtIntervalDecayAmp< EvtDalitzPoint >.

void EvtDecayBase::disableCheckQ  )  [inline, inherited]
 

00062 {_chkCharge=0;};

void EvtDecayBase::findMass EvtParticle p  )  [static, inherited]
 

00347                                           {
00348 
00349   //Need to also check that this mass does not screw
00350   //up the parent
00351   //This code assumes that for the ith daughter, 0..i-1
00352   //already have a mass
00353   double maxOkMass=findMaxMass(p);
00354 
00355   int count=0;
00356   double mass;
00357   bool massOk=false;
00358   int i;
00359   while (!massOk) { 
00360     count++;
00361     if ( count > 10000 ) {
00362       report(INFO,"EvtGen") << "Can not find a valid mass for: " << EvtPDL::name(p->getId()).c_str() <<endl;
00363       report(INFO,"EvtGen") << "Now printing parent and/or grandparent tree\n";
00364       if ( p->getParent() ) {
00365         if ( p->getParent()->getParent() ) {
00366           p->getParent()->getParent()->printTree();
00367           report(INFO,"EvtGen") << p->getParent()->getParent()->mass() <<endl;
00368           report(INFO,"EvtGen") << p->getParent()->mass() <<endl;
00369         }
00370         else{
00371           p->getParent()->printTree();
00372           report(INFO,"EvtGen") << p->getParent()->mass() <<endl;
00373         }
00374       }
00375       else  p->printTree();
00376       report(INFO,"EvtGen") << "maxokmass=" << maxOkMass << " " << EvtPDL::getMinMass(p->getId()) << " " << EvtPDL::getMaxMass(p->getId())<<endl;
00377       if ( p->getNDaug() ) { 
00378         for (i=0; i<p->getNDaug(); i++) {
00379           report(INFO,"EvtGen") << p->getDaug(i)->mass()<<" ";
00380         }
00381         report(INFO,"EvtGen") << endl;
00382       }
00383       if ( maxOkMass >= EvtPDL::getMinMass(p->getId()) ) {
00384         report(INFO,"EvtGen") << "taking a default value\n";
00385         p->setMass(maxOkMass);
00386         return;
00387       } 
00388       assert(0);
00389     }
00390     mass = EvtPDL::getMass(p->getId());
00391     //Just need to check that this mass is > than
00392     //the mass of all daughters
00393     double massSum=0.;
00394     if ( p->getNDaug() ) { 
00395       for (i=0; i<p->getNDaug(); i++) {
00396         massSum+= p->getDaug(i)->mass();
00397       }
00398     }
00399     //some special cases are handled with 0 (stable) or 1 (k0->ks/kl) daughters
00400     if (p->getNDaug()<2)  massOk=true;
00401     if ( p->getParent() ) {
00402       if ( p->getParent()->getNDaug()==1 ) massOk=true;
00403     }
00404     if ( !massOk ) { 
00405       if (massSum < mass) massOk=true;
00406       if ( mass> maxOkMass) massOk=false;
00407     }
00408   }
00409 
00410   p->setMass(mass);
00411   
00412 }

void EvtDecayBase::findMasses EvtParticle p,
int  ndaugs,
EvtId  daugs[10],
double  masses[10]
[static, inherited]
 

00416                                                                      {
00417 
00418   int i;
00419   double mass_sum;
00420 
00421   int count=0;
00422 
00423   if (!( p->firstornot() )) {
00424     for (i = 0; i < ndaugs; i++ ) {
00425       masses[i] = p->getDaug(i)->mass();
00426     } //for
00427   } //if
00428   else {
00429     p->setFirstOrNot();
00430     // if only one daughter do it
00431 
00432     if (ndaugs==1) {
00433       masses[0]=p->mass();
00434       return;
00435     }
00436     
00437     //until we get a combo whose masses are less than _parent mass.
00438     do {
00439       mass_sum = 0.0;
00440 
00441       for (i = 0; i < ndaugs; i++ ) {
00442         masses[i] = EvtPDL::getMass(daugs[i]);
00443         mass_sum = mass_sum + masses[i];
00444       } 
00445 
00446       count++;
00447 
00448      
00449       if(count==10000) {
00450         report(ERROR,"EvtGen") <<"Decaying particle:"<<
00451           EvtPDL::name(p->getId()).c_str()<<" (m="<<p->mass()<<")"<<endl;
00452         report(ERROR,"EvtGen") <<"To the following daugthers"<<endl;
00453         for (i = 0; i < ndaugs; i++ ) {
00454           report(ERROR,"EvtGen") <<  
00455             EvtPDL::name(daugs[i]).c_str() << endl;
00456         } 
00457         report(ERROR,"EvtGen") << "Has been rejected "<<count
00458                                << " times, will now take minimal masses "
00459                                << " of daugthers"<<endl;
00460         
00461         mass_sum=0.;
00462         for (i = 0; i < ndaugs; i++ ) {
00463           masses[i] = EvtPDL::getMinMass(daugs[i]);
00464           mass_sum = mass_sum + masses[i];
00465         } 
00466         if (mass_sum > p->mass()){
00467           report(ERROR,"EvtGen") << "Parent mass="<<p->mass()
00468                                  << "to light for daugthers."<<endl
00469                                  << "Will throw the event away."<<endl;
00470           //dont terminate - start over on the event.
00471           EvtStatus::setRejectFlag();
00472           mass_sum=0.;
00473           //      ::abort();
00474         }
00475 
00476       }
00477     } while ( mass_sum > p->mass());
00478   } //else
00479   
00480   return;
00481 }       

double EvtDecayBase::findMaxMass EvtParticle p  )  [static, inherited]
 

00312                                                {
00313 
00314   
00315   double maxOkMass=EvtPDL::getMaxMass(p->getId());
00316 
00317   //protect against vphotons
00318   if ( maxOkMass < 0.0000000001 ) return 10000000.;
00319   //and against already determined masses
00320   if ( p->hasValidP4() ) maxOkMass=p->mass();
00321 
00322   EvtParticle *par=p->getParent();
00323   if ( par ) {
00324     double maxParMass=findMaxMass(par);
00325     int i;
00326     double minDaugMass=0.;
00327     for(i=0;i<par->getNDaug();i++){
00328       EvtParticle *dau=par->getDaug(i);
00329       if ( dau!=p) {
00330         // it might already have a mass
00331         if ( dau->isInitialized() || dau->hasValidP4() )
00332           minDaugMass+=dau->mass();
00333         else
00334         //give it a bit of phase space 
00335           minDaugMass+=1.000001*EvtPDL::getMinMass(dau->getId());
00336       }
00337     }
00338     if ( maxOkMass>(maxParMass-minDaugMass)) maxOkMass=maxParMass-minDaugMass;
00339   }
00340   return maxOkMass;
00341 }

double EvtDecayBase::getArg int  j  )  [inherited]
 

00565                                  {
00566 
00567   // Verify string
00568 
00569   const char* str = _args[j].c_str();
00570   int i = 0;
00571   while(str[i]!=0){
00572     if (isalpha(str[i]) && str[i]!='e') {
00573 
00574       report(INFO,"EvtGen") << "String " << str << " is not a number" << endl;
00575       assert(0);
00576     }
00577     i++;
00578   }
00579   
00580   char** tc=0; 
00581   return strtod(_args[j].c_str(),tc);
00582 }

double * EvtDecayBase::getArgs  )  [inherited]
 

00548                               {
00549 
00550   if ( _argsD ) return _argsD;
00551   //The user has asked for a list of doubles - the arguments 
00552   //better all be doubles...
00553   if ( _narg==0 ) return _argsD;
00554 
00555   _argsD = new double[_narg];
00556 
00557   int i;
00558   char * tc;
00559   for(i=0;i<_narg;i++) { 
00560     _argsD[i] =  strtod(_args[i].c_str(),&tc);
00561   }
00562   return _argsD;
00563 }

std::string* EvtDecayBase::getArgsStr  )  [inline, inherited]
 

00073 {return _args;}

std::string EvtDecayBase::getArgStr int  j  )  [inline, inherited]
 

00075 {return _args[j];}

double EvtDecayBase::getBranchingFraction  )  [inline, inherited]
 

00061 {return _brfr;}

EvtId EvtDecayBase::getDaug int  i  )  [inline, inherited]
 

00066 {return _daug[i];}

EvtId* EvtDecayBase::getDaugs  )  [inline, inherited]
 

00065 {return _daug;}

int EvtDecayBase::getDSum  )  [inline, inherited]
 

00077 {return _dsum; }

std::string EvtDecayBase::getModelName  )  [inline, inherited]
 

00076 {return _modelname; }

virtual void EvtDecayBase::getName std::string &  name  )  [pure virtual, inherited]
 

Implemented in EvtAngH2, EvtAngSam, EvtAngSam3, EvtAV2GV, EvtBHadronic, EvtBody3, EvtBsquark, EvtBto2piCPiso, EvtBTo3piCP, EvtBTo4piCP, EvtBtoKD3P, EvtBtoKpiCPiso, EvtBToKpipiCP, EvtbTosllAli, EvtbTosllBall, EvtBtoXsEtap, EvtBtoXsgamma, EvtBtoXsll, EvtCBTo3piMPP, EvtCBTo3piP00, EvtChi0BB1, EvtChi0BB2, EvtChi1BB1, EvtChi1BB2, EvtChi2BB1, EvtChi2BB2, EvtD0mixDalitz, EvtDDalitz, EvtDeBD, EvtDIY, EvtDMix, EvtEtaDalitz, EvtFlatQ2, EvtGoityRoberts, EvtHAngSam3, EvtHelAmp, EvtHelPPJ, EvtHQET, EvtHQET2, EvtHypNonLepton, EvtHypWK, EvtISGW, EvtISGW2, EvtJ2BB1, EvtJ2BB2, EvtJ2BB3, EvtJetSet, EvtJPE, EvtJpipi, EvtJscont, EvtJTO3P, EvtKKLambdaC, EvtKstarnunu, EvtKstarstargamma, EvtLambdaP_BarGamma, EvtLNuGamma, EvtLunda, EvtLundCharm, EvtMassH1, EvtMassH2, EvtMBody3, EvtMelikhov, EvtmPhsp, EvtMultibody, EvtOmegaDalitz, EvtP2GC0, EvtP2GC1, EvtP2GC2, EvtPartWave, EvtPBB1, EvtPBB2, EvtPhiDalitz, EvtPhsp, EvtPi0Dalitz, EvtPto3P, EvtPycont, EvtPyGaGa, EvtPythia, EvtRhoPi, EvtS2GV, EvtSingleParticle, EvtSingleParticle2, EvtSinglePoint, EvtSLBKPole, EvtSll, EvtSLN, EvtSLPole, EvtSPL, EvtSSDCP, EvtSSSCP, EvtSSSCPpng, EvtSSSCPT, EvtSTS, EvtSTSCP, EvtSVPCP, EvtSVPHelAmp, EvtSVS, EvtSVSCP, EvtSVSCPiso, EvtSVSCPLH, EvtSVSNONCPEIGEN, EvtSVVCP, EvtSVVCPLH, EvtSVVHelAmp, EvtSVVNONCPEIGEN, EvtT2GV, EvtTauHadnu, EvtTaulnunu, EvtTauola, EvtTauScalarnu, EvtTauVectornu, EvtTSS, EvtTVSPwave, EvtUclaII, EvtVectorIsr, EvtVll, EvtVPHOtoVISR, EvtVPHOtoVISRHi, EvtVSPPwave, EvtVSS, EvtVSSBMixCPT, EvtVSSMix, EvtVub, EvtVubHybrid, EvtVubNLO, EvtVVP, EvtVVpipi, EvtVVPIPI_WEIGHTED, and EvtVVSPwave.

int EvtDecayBase::getNArg  )  [inline, inherited]
 

00067 {return _narg;}

int EvtDecayBase::getNDaug  )  [inline, inherited]
 

00064 {return _ndaug;}

EvtId EvtDecayBase::getParentId  )  [inline, inherited]
 

00060 {return _parent;}

int EvtDecayBase::getPHOTOS  )  [inline, inherited]
 

00068 {return _photos;}

double EvtDecayBase::getProbMax double  prob  )  [inherited]
 

00067                                              {
00068 
00069   int i;
00070 
00071   //diagnostics
00072   sum_prob+=prob;
00073   if (prob>max_prob) max_prob=prob;
00074 
00075 
00076   if ( defaultprobmax && ntimes_prob<=500 ) { 
00077     //We are building up probmax with this iteration
00078      ntimes_prob += 1;
00079      if ( prob > probmax ) { probmax = prob;}
00080      if (ntimes_prob==500) { 
00081        probmax*=1.2;
00082      }
00083      return 1000000.0*prob;
00084   }
00085 
00086   if ( prob> probmax*1.0001) {
00087 
00088     report(INFO,"EvtGen") << "prob > probmax:("<<prob<<">"<<probmax<<")";
00089     report(INFO,"") << "("<<_modelname.c_str()<<") ";
00090     report(INFO,"") << EvtPDL::name(_parent).c_str()<<" -> ";
00091     for(i=0;i<_ndaug;i++){
00092        report(INFO,"") << EvtPDL::name(_daug[i]).c_str() << " ";
00093     }
00094     report(INFO,"") << endl;
00095 
00096     if (defaultprobmax) probmax = prob;
00097 
00098   }
00099 
00100   ntimes_prob += 1;
00101 
00102 
00103   return probmax;
00104 
00105 } //getProbMax

void EvtDecayBase::init  )  [virtual, inherited]
 

Reimplemented in EvtAngH2, EvtAngSam, EvtAngSam3, EvtAV2GV, EvtBHadronic, EvtBody3, EvtBsquark, EvtBto2piCPiso, EvtBTo3piCP, EvtBTo4piCP, EvtBtoKD3P, EvtBtoKpiCPiso, EvtBToKpipiCP, EvtbTosllAli, EvtbTosllBall, EvtBtoXsEtap, EvtBtoXsgamma, EvtBtoXsll, EvtCBTo3piMPP, EvtCBTo3piP00, EvtChi0BB1, EvtChi0BB2, EvtChi1BB1, EvtChi1BB2, EvtChi2BB1, EvtChi2BB2, EvtD0mixDalitz, EvtDDalitz, EvtDeBD, EvtDIY, EvtDMix, EvtEtaDalitz, EvtFlatQ2, EvtGoityRoberts, EvtHAngSam3, EvtHelAmp, EvtHelPPJ, EvtHQET, EvtHQET2, EvtHypNonLepton, EvtHypWK, EvtIntervalDecayAmp< T >, EvtISGW, EvtISGW2, EvtJ2BB1, EvtJ2BB2, EvtJ2BB3, EvtJetSet, EvtJPE, EvtJpipi, EvtJscont, EvtJTO3P, EvtKKLambdaC, EvtKstarnunu, EvtKstarstargamma, EvtLambdaP_BarGamma, EvtLNuGamma, EvtLunda, EvtLundCharm, EvtMassH1, EvtMassH2, EvtMBody3, EvtMelikhov, EvtmPhsp, EvtMultibody, EvtOmegaDalitz, EvtP2GC0, EvtP2GC1, EvtP2GC2, EvtPartWave, EvtPBB1, EvtPBB2, EvtPhiDalitz, EvtPhsp, EvtPi0Dalitz, EvtPycont, EvtPyGaGa, EvtPythia, EvtRhoPi, EvtS2GV, EvtSingleParticle, EvtSingleParticle2, EvtSinglePoint, EvtSLBKPole, EvtSll, EvtSLN, EvtSLPole, EvtSPL, EvtSSDCP, EvtSSSCP, EvtSSSCPpng, EvtSSSCPT, EvtSTS, EvtSTSCP, EvtSVPCP, EvtSVPHelAmp, EvtSVS, EvtSVSCP, EvtSVSCPiso, EvtSVSCPLH, EvtSVSNONCPEIGEN, EvtSVVCP, EvtSVVCPLH, EvtSVVHelAmp, EvtSVVNONCPEIGEN, EvtT2GV, EvtTauHadnu, EvtTaulnunu, EvtTauola, EvtTauScalarnu, EvtTauVectornu, EvtTSS, EvtTVSPwave, EvtUclaII, EvtVectorIsr, EvtVll, EvtVPHOtoVISR, EvtVPHOtoVISRHi, EvtVSPPwave, EvtVSS, EvtVSSBMixCPT, EvtVSSMix, EvtVub, EvtVubHybrid, EvtVubNLO, EvtVVP, EvtVVpipi, EvtVVPIPI_WEIGHTED, EvtVVSPwave, and EvtIntervalDecayAmp< EvtDalitzPoint >.

00139                         {
00140 
00141   //This default version of init does nothing;
00142   //A specialized version of this function can be
00143   //supplied for each decay model to do initialization.
00144 
00145   return;
00146 
00147 }

void EvtDecayBase::initProbMax  )  [virtual, inherited]
 

Reimplemented in EvtAngH2, EvtAngSam, EvtAngSam3, EvtAV2GV, EvtBody3, EvtBsquark, EvtBto2piCPiso, EvtBTo3piCP, EvtBtoKD3P, EvtBtoKpiCPiso, EvtbTosllAli, EvtbTosllBall, EvtBtoXsEtap, EvtBtoXsgamma, EvtBtoXsll, EvtCBTo3piMPP, EvtCBTo3piP00, EvtD0mixDalitz, EvtDDalitz, EvtDIY, EvtDMix, EvtEtaDalitz, EvtFlatQ2, EvtGoityRoberts, EvtHAngSam3, EvtHelAmp, EvtHQET, EvtHQET2, EvtHypNonLepton, EvtIntervalDecayAmp< T >, EvtISGW2, EvtJetSet, EvtJpipi, EvtJscont, EvtKKLambdaC, EvtKstarstargamma, EvtLambdaP_BarGamma, EvtLNuGamma, EvtLunda, EvtLundCharm, EvtMassH1, EvtMassH2, EvtMBody3, EvtmPhsp, EvtMultibody, EvtOmegaDalitz, EvtP2GC0, EvtP2GC1, EvtP2GC2, EvtPartWave, EvtPBB1, EvtPBB2, EvtPhsp, EvtPi0Dalitz, EvtPycont, EvtPyGaGa, EvtPythia, EvtRhoPi, EvtS2GV, EvtSLBKPole, EvtSLN, EvtSLPole, EvtSPL, EvtSSDCP, EvtSSSCP, EvtSSSCPpng, EvtSTS, EvtSTSCP, EvtSVPCP, EvtSVPHelAmp, EvtSVS, EvtSVSCP, EvtSVSCPiso, EvtSVSCPLH, EvtSVSNONCPEIGEN, EvtSVVCP, EvtSVVCPLH, EvtSVVHelAmp, EvtSVVNONCPEIGEN, EvtT2GV, EvtTauHadnu, EvtTaulnunu, EvtTauola, EvtTauScalarnu, EvtTauVectornu, EvtTSS, EvtTVSPwave, EvtUclaII, EvtVectorIsr, EvtVll, EvtVPHOtoVISR, EvtVPHOtoVISRHi, EvtVSPPwave, EvtVSS, EvtVSSBMixCPT, EvtVSSMix, EvtVub, EvtVubHybrid, EvtVubNLO, EvtVVP, EvtVVpipi, EvtVVPIPI_WEIGHTED, EvtVVSPwave, and EvtIntervalDecayAmp< EvtDalitzPoint >.

00149                                {
00150 
00151   //This function is called if the decay does not have a
00152   //specialized initialization.  
00153   //The default is to set the maximum
00154   //probability to 0 and the number of times called to 0
00155   //and defaultprobmax to 1 such that the decay will be 
00156   //generated many many times
00157   //in order to generate a reasonable maximum probability
00158   //for the decay.
00159 
00160   defaultprobmax=1;
00161   ntimes_prob = 0;
00162   probmax = 0.0;
00163 
00164 } //initProbMax

void EvtDecayAmp::makeDecay EvtParticle p  )  [virtual]
 

Implements EvtDecayBase.

00035                                          {
00036 
00037   int ntimes=10000;
00038 
00039   int i,more;
00040 
00041   EvtSpinDensity rho;
00042   double prob,prob_max;
00043 
00044   _amp2.init(p->getId(),getNDaug(),getDaugs());
00045 //  report(INFO,"EvtGen") << "Decaying " << EvtPDL::name(p->getId()) << endl;
00046   do{
00047 
00048     _daugsDecayedByParentModel=false;
00049     _weight = 1.0;
00050     decay(p);
00051 
00052     rho=_amp2.getSpinDensity();
00053     prob=p->getSpinDensityForward().NormalizedProb(rho);
00054     if (prob<0.0) {
00055 
00056       report(ERROR,"EvtGen")<<"Negative prob:"<<p->getId().getId()
00057                             <<" "<<p->getChannel()<<endl;
00058 
00059       report(ERROR,"EvtGen") << "rho_forward:"<<endl;
00060       report(ERROR,"EvtGen") << p->getSpinDensityForward();
00061       report(ERROR,"EvtGen") << "rho decay:"<<endl;
00062       report(ERROR,"EvtGen") << rho <<endl;
00063     }
00064 
00065     if (prob!=prob) {
00066 
00067       report(DEBUG,"EvtGen") << "Forward density matrix:"<<endl;
00068       report(ERROR,"EvtGen") << p->getSpinDensityForward();
00069 
00070       report(DEBUG,"EvtGen") << "Decay density matrix:"<<endl;
00071       report(ERROR,"EvtGen") << rho;
00072 
00073       report(DEBUG,"EvtGen") << "prob:"<<prob<<endl;
00074       
00075       report(DEBUG,"EvtGen") << "Particle:"
00076                              <<EvtPDL::name(p->getId()).c_str()<<endl;
00077       report(DEBUG,"EvtGen") << "channel        :"<<p->getChannel()<<endl;
00078       report(DEBUG,"EvtGen") << "Momentum:" << p->getP4() << " " << p->mass() << endl;
00079       if( p->getParent()!=0){
00080         report(DEBUG,"EvtGen") << "parent:"
00081                                <<EvtPDL::name(
00082                                 p->getParent()->getId()).c_str()<<endl;
00083         report(DEBUG,"EvtGen") << "parent channel        :"
00084                                <<p->getParent()->getChannel()<<endl;
00085 
00086         int i;
00087         report(DEBUG,"EvtGen") << "parent daughters  :";
00088         for (i=0;i<p->getParent()->getNDaug();i++){
00089           report(DEBUG,"") << EvtPDL::name(
00090                             p->getParent()->getDaug(i)->getId()).c_str()
00091                                  << " ";
00092         }
00093         report(DEBUG,"") << endl;
00094 
00095         report(DEBUG,"EvtGen") << "daughters  :";
00096         for (i=0;i<p->getNDaug();i++){
00097           report(DEBUG,"") << EvtPDL::name(
00098                             p->getDaug(i)->getId()).c_str()
00099                                  << " ";
00100         }
00101         report(DEBUG,"") << endl;
00102 
00103         report(DEBUG,"EvtGen") << "daughter momenta  :" << endl;;
00104         for (i=0;i<p->getNDaug();i++){
00105           report(DEBUG,"") << p->getDaug(i)->getP4() << " " << p->getDaug(i)->mass();
00106           report(DEBUG,"") << endl;
00107         }
00108 
00109       }
00110     }
00111 
00112 
00113     prob/=_weight;
00114 
00115 
00116     prob_max = getProbMax(prob);
00117     p->setDecayProb(prob/prob_max);
00118 
00119     //report(INFO,"EvtGen") << "Prob,prob_max,weight:"<<prob<<" "<<prob_max<<" "<<_weight<<endl;
00120 
00121     more=prob<EvtRandom::Flat(prob_max);
00122 
00123     ntimes--;
00124 
00125   }while(ntimes&&more);
00126   //report(INFO,"EvtGen") << "Done\n";
00127 
00128   if (ntimes==0){
00129     report(DEBUG,"EvtGen") << "Tried accept/reject:10000"
00130                            <<" times, and rejected all the times!"<<endl;
00131     report(DEBUG,"")<<p->getSpinDensityForward()<<endl;
00132     report(DEBUG,"EvtGen") << "Is therefore accepting the last event!"<<endl;
00133     report(DEBUG,"EvtGen") << "Decay of particle:"<<
00134       EvtPDL::name(p->getId()).c_str()<<"(channel:"<<
00135       p->getChannel()<<") with mass "<<p->mass()<<endl;
00136     
00137     int ii;
00138     for(ii=0;ii<p->getNDaug();ii++){
00139       report(DEBUG,"EvtGen") <<"Daughter "<<ii<<":"<<
00140         EvtPDL::name(p->getDaug(ii)->getId()).c_str()<<" with mass "<<
00141         p->getDaug(ii)->mass()<<endl;
00142     }                              
00143   }
00144 
00145 
00146   EvtSpinDensity rho_list[10];
00147 
00148   rho_list[0]=p->getSpinDensityForward();
00149    
00150 
00151   EvtAmp ampcont;
00152 
00153   if (_amp2._pstates!=1){
00154     ampcont=_amp2.contract(0,p->getSpinDensityForward());   // J2BB2 bugging here
00155 
00156   }
00157   else{
00158     ampcont=_amp2;
00159   }
00160 
00161           
00162 
00163   // it may be that the parent decay model has already
00164   // done the decay - this should be rare and the
00165   // model better know what it is doing..
00166   
00167   if ( !daugsDecayedByParentModel() ){
00168     
00169 
00170  //   report(INFO,"EvtGen") << "Found " << p->getNDaug() << " daughters\n";
00171     for(i=0;i<p->getNDaug();i++){
00172     
00173       rho.SetDim(_amp2.dstates[i]);
00174 
00175       if (_amp2.dstates[i]==1) {
00176         rho.Set(0,0,EvtComplex(1.0,0.0));
00177       }
00178       else{
00179         rho=ampcont.contract(_amp2._dnontrivial[i],_amp2);
00180       }
00181       
00182       if (!rho.Check()) {
00183         
00184         report(ERROR,"EvtGen") << "-------start error-------"<<endl;
00185         report(ERROR,"EvtGen")<<"forward rho failed Check:"<<
00186           EvtPDL::name(p->getId()).c_str()<<" "<<p->getChannel()<<" "<<i<<endl;
00187         
00188         report(ERROR,"EvtGen")<<"Parent:"<<EvtPDL::name(p->getParent()->getId()).c_str()<<endl;
00189         report(ERROR,"EvtGen")<<"GrandParent:"<<EvtPDL::name(p->getParent()->getParent()->getId()).c_str()<<endl;
00190         report(ERROR,"EvtGen")<<"GrandGrandParent:"<<EvtPDL::name(p->getParent()->getParent()->getParent()->getId()).c_str()<<endl;
00191         
00192         report(ERROR,"EvtGen") << rho;
00193         int ii; 
00194         _amp2.dump();
00195         
00196         for(ii=0;ii<i+1;ii++){
00197           report(ERROR,"EvtGen") << rho_list[ii];
00198         }
00199         report(ERROR,"EvtGen") << "-------Done with error-------"<<endl;  
00200       }
00201 
00202 
00203       
00204       p->getDaug(i)->setSpinDensityForward(rho);
00205 
00206 
00207      p->getDaug(i)->decay();
00208 
00209      rho_list[i+1]= p->getDaug(i)->getSpinDensityBackward();
00210 
00211       if (_amp2.dstates[i]!=1){
00212         ampcont=ampcont.contract(_amp2._dnontrivial[i],rho_list[i+1]);
00213       }
00214   
00215       
00216     }
00217 
00218     p->setSpinDensityBackward(_amp2.getBackwardSpinDensity(rho_list));
00219    
00220     
00221     if (!p->getSpinDensityBackward().Check()) {
00222       
00223       report(ERROR,"EvtGen")<<"rho_backward failed Check"<<
00224         p->getId().getId()<<" "<<p->getChannel()<<endl;
00225       
00226       report(ERROR,"EvtGen") << p->getSpinDensityBackward();
00227       
00228     }
00229   }
00230 
00231   if (getPHOTOS() || EvtRadCorr::alwaysRadCorr()) {
00232     EvtRadCorr::doRadCorr(p);
00233 
00234   }
00235 
00236 }

bool EvtDecayBase::matchingDecay const EvtDecayBase other  )  const [virtual, inherited]
 

00588                                                                 {
00589 
00590   if ( _ndaug != other._ndaug) return false;
00591   if ( _parent != other._parent) return false;
00592   
00593   std::vector<int> useDs;
00594   for ( unsigned int i=0; i<_ndaug; i++) useDs.push_back(0);
00595 
00596   for ( unsigned int i=0; i<_ndaug; i++) {
00597     bool foundIt=false;
00598     for ( unsigned int j=0; j<_ndaug; j++) {
00599       if ( useDs[j] == 1 ) continue;
00600       if ( _daug[i] == other._daug[j] && _daug[i].getAlias() == other._daug[j].getAlias()) {
00601         foundIt=true;
00602         useDs[j]=1;
00603         break;
00604       }
00605     }
00606     if ( foundIt==false) return false;
00607   }
00608   for ( unsigned int i=0; i<_ndaug; i++) if ( useDs[i]==0) return false;
00609 
00610   return true;
00611 
00612 }

void EvtDecayBase::noProbMax  )  [inherited]
 

00305                             {
00306 
00307   defaultprobmax=0;
00308 
00309 }

virtual int EvtDecayBase::nRealDaughters  )  [inline, virtual, inherited]
 

Reimplemented in EvtBtoKD3P, and EvtVSSBMixCPT.

00105 { return _ndaug;}

void EvtDecayBase::printSummary  )  [inherited]
 

00259                                 {
00260 
00261   int i;
00262 
00263   if (ntimes_prob>0) {
00264 
00265     report(INFO,"EvtGen") << "Calls="<<ntimes_prob<<" eff:"<<
00266       sum_prob/(probmax*ntimes_prob)<<" frac. max:"<<max_prob/probmax;
00267     report(INFO,"") <<" probmax:"<<probmax<<" max:"<<max_prob<<" : ";
00268   }
00269 
00270   report(INFO,"") << EvtPDL::name(_parent).c_str()<<" -> ";
00271   for(i=0;i<_ndaug;i++){
00272     report(INFO,"") << EvtPDL::name(_daug[i]).c_str() << " ";
00273   }
00274   report(INFO,"") << " ("<<_modelname.c_str()<<"):"<< endl;
00275   
00276   
00277   
00278 }

double EvtDecayBase::resetProbMax double  prob  )  [inherited]
 

00108                                              {
00109   
00110   report(INFO,"EvtGen") << "Reseting prob max\n"; 
00111   report(INFO,"EvtGen") << "prob > probmax:("<<prob<<">"<<probmax<<")";
00112   report(INFO,"") << "("<<_modelname.c_str()<<")";
00113   report(INFO,"") << EvtPDL::getStdHep(_parent)<<"->";
00114   
00115   for( int i=0;i<_ndaug;i++){
00116     report(INFO,"") << EvtPDL::getStdHep(_daug[i]) << " ";
00117   }
00118   report(INFO,"") << endl;
00119   
00120   probmax = 0.0;
00121   defaultprobmax = 0;
00122   ntimes_prob = 0;
00123   
00124   return prob;
00125 
00126 }

void EvtDecayBase::saveDecayInfo EvtId  ipar,
int  ndaug,
EvtId daug,
int  narg,
std::vector< std::string > &  args,
std::string  name,
double  brfr
[inherited]
 

00170                                               {
00171 
00172   int i;
00173 
00174   _brfr=brfr;
00175   _ndaug=ndaug;
00176   _narg=narg;
00177   _parent=ipar; 
00178 
00179   _dsum=0;
00180 
00181   if (_ndaug>0) {
00182     _daug=new EvtId [_ndaug];
00183     for(i=0;i<_ndaug;i++){
00184       _daug[i]=daug[i];
00185       _dsum+=daug[i].getAlias();
00186     }
00187   }
00188   else{
00189     _daug=0;
00190   }
00191 
00192   if (_narg>0) {
00193     _args=new std::string[_narg+1];
00194     for(i=0;i<_narg;i++){
00195       _args[i]=args[i];
00196     }
00197   }
00198   else{
00199      _args = 0;
00200   }
00201 
00202   _modelname=name;
00203 
00204   this->init();
00205   this->initProbMax();
00206 
00207   if (_chkCharge){
00208     this->checkQ();
00209   }
00210 
00211 
00212   if (defaultprobmax){
00213     report(INFO,"EvtGen") << "No default probmax for ";
00214     report(INFO,"") << "("<<_modelname.c_str()<<") ";
00215     report(INFO,"") << EvtPDL::name(_parent).c_str()<<" -> ";
00216     for(i=0;i<_ndaug;i++){
00217       report(INFO,"") << EvtPDL::name(_daug[i]).c_str() << " ";
00218     }
00219     report(INFO,"") << endl;
00220     report(INFO,"") << "This is fine for development, but must be provided for production."<<endl;
00221     report(INFO,"EvtGen") << "Never fear though - the decay will use the \n";
00222     report(INFO,"EvtGen") << "500 iterations to build up a good probmax \n";
00223     report(INFO,"EvtGen") << "before accepting a decay. "<<endl;
00224   }
00225 
00226 }

void EvtDecayBase::setPHOTOS  )  [inline, inherited]
 

00069 {_photos=1;}

void EvtDecayBase::setProbMax double  prbmx  )  [inherited]
 

00298                                          {
00299 
00300   defaultprobmax=0;
00301   probmax=prbmx;
00302 
00303 }

void EvtDecayBase::setSummary  )  [inline, inherited]
 

00071 {_summary=1;}

void EvtDecayBase::setVerbose  )  [inline, inherited]
 

00070 {_verbose=1;}

void EvtDecayAmp::setWeight double  weight  )  [inline]
 

00032 {_weight=weight;}

int EvtDecayBase::summary  )  [inline, inherited]
 

00078 {return _summary; }

int EvtDecayBase::verbose  )  [inline, inherited]
 

00079 {return _verbose; }

void EvtDecayAmp::vertex int *  i1,
const EvtComplex amp
[inline]
 

sets the amplitudes calculated in the decay objects

00061   { _amp2.vertex(i1,amp);}

void EvtDecayAmp::vertex int  i1,
int  i2,
int  i3,
const EvtComplex amp
[inline]
 

sets the amplitudes calculated in the decay objects

00055   {_amp2.vertex(i1,i2,i3,amp);}

void EvtDecayAmp::vertex int  i1,
int  i2,
const EvtComplex amp
[inline]
 

sets the amplitudes calculated in the decay objects

00048   {_amp2.vertex(i1,i2,amp);}

void EvtDecayAmp::vertex int  i1,
const EvtComplex amp
[inline]
 

sets the amplitudes calculated in the decay objects

00042 {_amp2.vertex(i1,amp);}

void EvtDecayAmp::vertex const EvtComplex amp  )  [inline]
 

sets the amplitudes calculated in the decay objects

00037 {_amp2.vertex(amp);}


Member Data Documentation

EvtAmp EvtDecayAmp::_amp2 [protected]
 

bool EvtDecayBase::_daugsDecayedByParentModel [protected, inherited]
 

double EvtDecayAmp::_weight [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:04:51 2011 for BOSS6.5.5 by  doxygen 1.3.9.1