|
|
|||
File indexing completed on 2026-08-06 09:38:29
0001 // -*- C++ -*- 0002 // 0003 // ParticleData.h is a part of ThePEG - Toolkit for HEP Event Generation 0004 // Copyright (C) 1999-2019 Leif Lonnblad 0005 // 0006 // ThePEG is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef ThePEG_ParticleData_H 0010 #define ThePEG_ParticleData_H 0011 // This is the declaration of the ParticleData class. 0012 0013 #include "ThePEG/Config/ThePEG.h" 0014 #include "ThePEG/PDT/PDT.h" 0015 #include "ThePEG/PDT/PID.h" 0016 #include "ThePEG/Vectors/LorentzVector.h" 0017 #include "ThePEG/Vectors/ThreeVector.h" 0018 #include "ThePEG/Interface/Interfaced.h" 0019 #include "ThePEG/Utilities/Selector.h" 0020 #include "ThePEG/PDT/WidthGenerator.h" 0021 #include "ThePEG/PDT/MassGenerator.h" 0022 #include "ThePEG/PDT/DecayMode.fh" 0023 #include "ThePEG/Utilities/ClassTraits.h" 0024 #include "ThePEG/Utilities/ClassDescription.h" 0025 0026 namespace ThePEG { 0027 0028 /** 0029 * ParticleData inherits from InterfacedBase and represents the 0030 * properties of a particle type. It is also able to produce instances 0031 * of this Particle type and, among other things, to decay them. 0032 * 0033 * @see \ref ParticleDataInterfaces "The interfaces" 0034 * defined for ParticleData. 0035 */ 0036 class ParticleData: public Interfaced { 0037 0038 public: 0039 0040 /** The Repository is a friend. */ 0041 friend class Repository; 0042 0043 /** The EventGenerator is a friend. */ 0044 friend class EventGenerator; 0045 0046 /** DecayMode is a friend. */ 0047 friend class DecayMode; 0048 0049 /** A selector of DecayMode objects. */ 0050 typedef Selector<tDMPtr> DecaySelector; 0051 0052 public: 0053 0054 /** 0055 * Default constructor. 0056 */ 0057 ParticleData(); 0058 0059 /** @name The Create methods are special interfaces for ParticleData 0060 classes. */ 0061 //@{ 0062 /** 0063 * Create a Particle which is its own anti-particle. 0064 */ 0065 static PDPtr Create(PID newId, const string & newPDGName); 0066 0067 /** 0068 * Create a particle - anti particle pair. 0069 */ 0070 static PDPair Create(PID newId, const string & newPDGName, const string & newAntiPDGName); 0071 //@} 0072 0073 public: 0074 0075 /** @name Acces to number and name. */ 0076 //@{ 0077 /** 0078 * Return the PDG id number. 0079 */ 0080 long id() const { return theId; } 0081 0082 /** 0083 * Return the generic PDG name. Note that this is not really 0084 * standardised. 0085 */ 0086 const string & PDGName() const { return thePDGName; } 0087 0088 /** 0089 * Return the generic PDG name. Note that this is not really 0090 * standardised. 0091 */ 0092 const string & genericName() const { return thePDGName; } 0093 //@} 0094 0095 /** @name Functions used for producing Particle instances. */ 0096 //@{ 0097 /** 0098 * Produce a particle specifying momentum. 0099 */ 0100 PPtr produceParticle(const Lorentz5Momentum &) const; 0101 0102 /** 0103 * Produce a particle specifying momentum. 0104 */ 0105 PPtr produceParticle(const LorentzMomentum &) const; 0106 0107 /** 0108 * Produce a particle specifying 4-momentum and a mass. 0109 */ 0110 PPtr produceParticle(const LorentzMomentum &, Energy m) const; 0111 0112 /** 0113 * Produce a particle specifying 3-momentum. 0114 */ 0115 PPtr produceParticle(const Momentum3 & pp = Momentum3()) const; 0116 0117 /** 0118 * Produce a particle specifying mass and 3-momentum. 0119 */ 0120 PPtr produceParticle(Energy m, const Momentum3 & pp = Momentum3()) const; 0121 0122 /** 0123 * Produce a particle specifying light-cone momentum components and 0124 * transverse momentum components. 0125 */ 0126 PPtr produceParticle(Energy plus, Energy minus, Energy px, Energy py) const; 0127 0128 /** 0129 * Generate a mass for an instance of this particle type. 0130 */ 0131 Energy generateMass() const; 0132 0133 /** 0134 * Generate a width for an instance of this particle type. Given a 0135 * \a mass of an instance of this particle type, calculate its width. 0136 */ 0137 Energy generateWidth(Energy mass) const; 0138 0139 /** 0140 * Generate a mass for an instance of this particle type. Given a \a 0141 * mass and a \a width of an instance of this particle type, 0142 * generate a life time. 0143 */ 0144 Length generateLifeTime(Energy mass, Energy width) const; 0145 // Given a mass and a width of an instance of this particle type, 0146 // generate a life time. 0147 //@} 0148 0149 /** @name Access the decay modes. */ 0150 //@{ 0151 /** 0152 * Return the nominal decay selector for this particle. Ie. the 0153 * decay modes weighted by their nominal branching ratios. 0154 */ 0155 const DecaySelector & decaySelector() const { return theDecaySelector; } 0156 0157 /** 0158 * Selects a decay mode randomly according to the branching 0159 * ratios. The nominal branching ratios may be changed for the 0160 * particular Particle instance \a p, iether by an assigned 0161 * WidthGenerator or the respective Decayers. 0162 */ 0163 tDMPtr selectMode(Particle & p) const; 0164 0165 /** 0166 * Access all the decay modes, including those which are 0167 * switched off, or have zero branching ratio 0168 */ 0169 const DecaySet & decayModes() const { return theDecayModes; } 0170 //@} 0171 0172 /** 0173 * Set the nominal mass 0174 */ 0175 Energy mass(Energy); 0176 0177 /** 0178 * Return the nominal mass. 0179 */ 0180 Energy mass() const { return theMass; } 0181 0182 /** 0183 * Return the mass to be used when evaluating hard process cross sections. 0184 */ 0185 Energy hardProcessMass() const { 0186 return 0187 hardProcessMassSet ? theHardProcessMass : mass(); 0188 } 0189 0190 /** 0191 * Return the maximum possible mass of this particle type. 0192 */ 0193 Energy massMax() const { return mass() + widthUpCut(); } 0194 0195 /** 0196 * Return the minimum possible mass of this particle type. 0197 */ 0198 Energy massMin() const { return max(mass() - widthLoCut(), ZERO); } 0199 0200 /** 0201 * Return the constituent mass of this particle if relevant. This 0202 * version simply returns the nominal mass. 0203 */ 0204 virtual Energy constituentMass() const { return mass(); } 0205 0206 /** 0207 * Set the width. 0208 */ 0209 Energy width(Energy); 0210 0211 /** 0212 * Get the width. If no width is specified, it is calculated from 0213 * the lifetime. 0214 */ 0215 Energy width() const { 0216 return theWidth >= ZERO ? theWidth : 0217 ( theCTau > Length() ? hbarc/theCTau : 0218 ( theCTau == Length() ? Constants::MaxEnergy : ZERO ) ); 0219 } 0220 0221 /** 0222 * Set the width cut. Both upper and lower cut is set. 0223 */ 0224 Energy widthCut(Energy wci) { 0225 widthUpCut(wci); 0226 return widthLoCut(wci); 0227 } 0228 0229 /** 0230 * Get the width cut. 0231 */ 0232 Energy widthCut() const { return max(widthUpCut(), widthLoCut()); } 0233 0234 /** 0235 * Set the upper width cut. 0236 */ 0237 Energy widthUpCut(Energy); 0238 0239 /** 0240 * Get the upper width cut. 0241 */ 0242 Energy widthUpCut() const { 0243 return theWidthUpCut >= ZERO? theWidthUpCut: Constants::MaxEnergy; 0244 } 0245 0246 /** 0247 * Set the lower width cut. 0248 */ 0249 Energy widthLoCut(Energy); 0250 0251 /** 0252 * Get the lower width cut. 0253 */ 0254 Energy widthLoCut() const { 0255 return theWidthLoCut >= ZERO? theWidthLoCut: Constants::MaxEnergy; 0256 } 0257 0258 /** 0259 * Set the life time cTau. 0260 */ 0261 Length cTau(Length); 0262 0263 /** 0264 * Get the life time cTau cTau. If no life time is specified, it is 0265 * calculated from the width. If the width is also not specified, 0266 * the lifetime is assumed to be zero for ustable particles and 0267 * infinite for stable ones. 0268 */ 0269 Length cTau() const { 0270 return theCTau > Length() ? theCTau : 0271 ( theWidth > ZERO ? hbarc/theWidth : 0272 ( stable() ? Constants::MaxLength : Length() ) ); 0273 } 0274 0275 /** 0276 * Return the width to be used when evaluating hard process cross sections. 0277 */ 0278 Energy hardProcessWidth() const { 0279 return 0280 hardProcessWidthSet ? theHardProcessWidth : width(); 0281 } 0282 0283 /** 0284 * Set the charge. The charge should be given 0285 * in units of e/3 using the PDT::Charge enum. 0286 */ 0287 PDT::Charge iCharge(PDT::Charge); 0288 0289 /** 0290 * Get the charge. The charge is returned in standard units and in 0291 * iCharge the charge is returned in units of e/3. 0292 */ 0293 Charge charge() const { return eplus*double(theCharge)/3.0; } 0294 0295 /** 0296 * Get the charge. The charge is returned in units of e/3. 0297 */ 0298 PDT::Charge iCharge() const { return theCharge; } 0299 0300 /** 0301 * Return true if charged. 0302 */ 0303 bool charged() const { return PDT::charged(theCharge); } 0304 0305 /** 0306 * Return true if positively charged. 0307 */ 0308 bool positive() const { return PDT::positive(theCharge); } 0309 0310 /** 0311 * Return true if negatively charged. 0312 */ 0313 bool negative() const { return PDT::negative(theCharge); } 0314 0315 /** 0316 * Set the spin. The spin should be given as 2J+1 (in units of 0317 * hbar/2) using the PDT::Spin enum. 0318 */ 0319 PDT::Spin iSpin(PDT::Spin); 0320 0321 /** 0322 * Get the spin.The spin is returned in standard units. 0323 */ 0324 AngularMomentum spin() const { return hbar_Planck*double(theSpin-1)*0.5; } 0325 0326 /** 0327 * Get the spin. The spin is returned as 2J+1 in units of hbar/2. 0328 */ 0329 PDT::Spin iSpin() const { return theSpin; } 0330 0331 /** 0332 * Set the colour of the particle in units of PDT::Colour. 0333 */ 0334 PDT::Colour iColour(PDT::Colour); 0335 0336 /** 0337 * Get the colour of the particle in units of PDT::Colour. 0338 */ 0339 PDT::Colour iColour() const { return theColour; } 0340 0341 /** 0342 * Return true if coloured. 0343 */ 0344 bool coloured() const { return PDT::coloured(iColour()); } 0345 0346 /** 0347 * Return true if (\a anti) coloured or colour-octet. 0348 */ 0349 bool hasColour(bool anti = false) const { 0350 return anti? hasAntiColour(): 0351 ( iColour() == PDT::Colour3 || iColour() == PDT::Colour6 || 0352 iColour() == PDT::Colour8 ); 0353 } 0354 0355 /** 0356 * Return true if anti coloured or colour-octet. 0357 */ 0358 bool hasAntiColour() const { 0359 return iColour() == PDT::Colour3bar || iColour() == PDT::Colour6bar || 0360 iColour() == PDT::Colour8; 0361 } 0362 0363 /** 0364 * Return what kind of colour charge this particle carries 0365 */ 0366 PDT::ColouredInteraction colouredInteraction() const { 0367 return theColouredInteraction; 0368 } 0369 0370 /** 0371 * Specify if particle is to be considered stable according to \a 0372 * stab. 0373 */ 0374 void stable(bool stab); 0375 0376 /** 0377 * Return true if particle is to be considered stable. If the decay 0378 * table is empty the function always returns true, even if the 0379 * member variable is false. 0380 */ 0381 bool stable() const { return isStable; } 0382 0383 /** 0384 * Get the pointer to the corresponding anti partner. 0385 */ 0386 tPDPtr CC() const { return theAntiPartner; } 0387 0388 /** 0389 * Specify if the anti partner chould be changed automatically when 0390 * this object is changed according to \a sync. 0391 */ 0392 void synchronized(bool sync); 0393 0394 /** 0395 * Return true if the anti partner chould be changed automatically 0396 * when this object is changed. 0397 */ 0398 bool synchronized() const { return syncAnti; } 0399 0400 /** 0401 * If there is an anti-partner, update this object to have correct 0402 * anti-properties. 0403 */ 0404 void synchronize(); 0405 0406 /** 0407 * Set the mass generator object. 0408 */ 0409 void massGenerator(tMassGenPtr); 0410 0411 /** 0412 * Get the mass generator object. 0413 */ 0414 tMassGenPtr massGenerator() const { return theMassGenerator; } 0415 0416 /** 0417 * Set the width generator object. 0418 */ 0419 void widthGenerator(tWidthGeneratorPtr); 0420 0421 /** 0422 * Get the width generator object. 0423 */ 0424 tWidthGeneratorPtr widthGenerator() const { return theWidthGenerator; } 0425 0426 /** 0427 * Specify if the branching ratio of the Particle instances should vary with their 0428 * masses. 0429 */ 0430 void variableRatio(bool varRatio); 0431 0432 /** 0433 * Return true if the branching ratio should vary with the mass of the Particle 0434 * instance. 0435 */ 0436 bool variableRatio() const { return theVariableRatio; } 0437 0438 public: 0439 0440 0441 /** @name Functions used by the persistent I/O system. */ 0442 //@{ 0443 /** 0444 * Function used to write out object persistently. 0445 * @param os the persistent output stream written to. 0446 */ 0447 void persistentOutput(PersistentOStream & os) const; 0448 0449 /** 0450 * Function used to read in object persistently. 0451 * @param is the persistent input stream read from. 0452 * @param version the version number of the object when written. 0453 */ 0454 void persistentInput(PersistentIStream & is, int version); 0455 //@} 0456 0457 static void Init(); 0458 0459 protected: 0460 0461 /** @name Clone Methods. */ 0462 //@{ 0463 /** 0464 * Make a simple clone of this object. 0465 * @return a pointer to the new object. 0466 */ 0467 virtual IBPtr clone() const; 0468 0469 /** Make a clone of this object, possibly modifying the cloned object 0470 * to make it sane. 0471 * @return a pointer to the new object. 0472 */ 0473 virtual IBPtr fullclone() const; 0474 //@} 0475 0476 /** 0477 * Special clone function used by the Repository. Also makes copies 0478 * the decay modes and the anti-partner if it exists and if 0479 * synchronized() is true. 0480 */ 0481 virtual PDPtr pdclone() const; 0482 0483 /** 0484 * Protected constructor only to be used by subclasses or by the 0485 * Create method. 0486 */ 0487 ParticleData(PID newId, const string & newPDGName); 0488 0489 /** 0490 * Read setup info from a standard stream. The following information 0491 * must be supplied in a white-space separated list: PDG number, 0492 * generic name, default mass (GeV), default width (GeV), width cut 0493 * (GeV), the lifetime ctau (mm), the charge, the colour, the spin, 0494 * stable (true) or not (false). Note that if a minus sign is given 0495 * instead of a generic name, the name of the object will be used 0496 * instead. 0497 */ 0498 virtual void readSetup(istream & is); 0499 0500 /** 0501 * Used by subclasses or by the Create method to setup 0502 * anti-relationship. 0503 */ 0504 static void antiSetup(const PDPair & pap); 0505 0506 0507 protected: 0508 0509 /** @name Standard Interfaced functions. */ 0510 //@{ 0511 /** 0512 * Check sanity of the object during the setup phase. 0513 */ 0514 virtual void doupdate(); 0515 0516 /** 0517 * Initialize this object after the setup phase before saving an 0518 * EventGenerator to disk. 0519 * @throws InitException if object could not be initialized properly. 0520 */ 0521 virtual void doinit(); 0522 0523 /** 0524 * Rebind pointer to other Interfaced objects. Called in the setup phase 0525 * after all objects used in an EventGenerator has been cloned so that 0526 * the pointers will refer to the cloned objects afterwards. 0527 * @param trans a TranslationMap relating the original objects to 0528 * their respective clones. 0529 * @throws RebindException if no cloned object was found for a given 0530 * pointer. 0531 */ 0532 virtual void rebind(const TranslationMap & trans) 0533 ; 0534 0535 /** 0536 * Return a vector of all pointers to Interfaced objects used in this 0537 * object. 0538 * @return a vector of pointers. 0539 */ 0540 virtual IVector getReferences(); 0541 0542 /** 0543 * Initialize this object. Called in the run phase just before 0544 * a run begins. 0545 */ 0546 virtual void doinitrun(); 0547 //@} 0548 0549 protected: 0550 0551 /** 0552 * Add a decay mode for this particle. 0553 */ 0554 void addDecayMode(tDMPtr); 0555 0556 /** 0557 * Remove a decay mode for this particle. 0558 */ 0559 void removeDecayMode(tDMPtr); 0560 0561 private: 0562 0563 /** 0564 * Id number according to the STDHEP/PDG standard. 0565 */ 0566 PID theId; 0567 0568 /** 0569 * Name and Id number according to the STDHEP/PDG standard. 0570 */ 0571 string thePDGName; 0572 0573 /** 0574 * Nominal mass. 0575 */ 0576 Energy theMass; 0577 0578 /** 0579 * Width. 0580 */ 0581 Energy theWidth; 0582 0583 /** 0584 * The mass to be used when evaluating hard process cross sections. 0585 */ 0586 Energy theHardProcessMass; 0587 0588 /** 0589 * True, if a hard process mass has been set. 0590 */ 0591 bool hardProcessMassSet; 0592 0593 /** 0594 * The width to be used when evaluating hard process cross sections. 0595 */ 0596 Energy theHardProcessWidth; 0597 0598 /** 0599 * True, if a hard process width has been set. 0600 */ 0601 bool hardProcessWidthSet; 0602 0603 /** 0604 * Upper width cut. 0605 */ 0606 Energy theWidthUpCut; 0607 0608 /** 0609 * Lower width cut. 0610 */ 0611 Energy theWidthLoCut; 0612 0613 /** 0614 * Lifetime. 0615 */ 0616 Length theCTau; 0617 0618 /** 0619 * Three times the charge. 0620 */ 0621 PDT::Charge theCharge; 0622 0623 /** 0624 * 2 times the spin plus one. 0625 */ 0626 PDT::Spin theSpin; 0627 0628 /** 0629 * The colour for this particle. 0630 */ 0631 PDT::Colour theColour; 0632 0633 /** 0634 * The coloured interaction of this particle 0635 */ 0636 PDT::ColouredInteraction theColouredInteraction; 0637 0638 /** 0639 * The nonabelian interaction of this particle 0640 */ 0641 0642 /** 0643 * A pointer to an object capable to generate a mass for a particle 0644 * of this type. 0645 */ 0646 MassGenPtr theMassGenerator; 0647 0648 /** 0649 * True if the particle is considered stable. 0650 */ 0651 bool isStable; 0652 0653 /** 0654 * A selector of decay modes weighted by the nominal branching 0655 * ratios. 0656 */ 0657 DecaySelector theDecaySelector; 0658 0659 /** 0660 * The set of all decay modes. 0661 */ 0662 DecaySet theDecayModes; 0663 0664 /** 0665 * A pointer to an object capable to generate the branching 0666 * fractions for different decay modes for this particle type. The 0667 * object will be asked to generate branching fractions every time 0668 * the ParticleData object it updated and will modify the branching 0669 * fractions for every particle instance if variableRatio is true. 0670 */ 0671 WidthGeneratorPtr theWidthGenerator; 0672 0673 /** 0674 * Determine whether the branching fractions are allowed to change 0675 * on a particle-by-particle basis. 0676 */ 0677 bool theVariableRatio; 0678 0679 /** 0680 * Pointer to the object corresponding to the antiparticle. Set to 0681 * null if it is its own antiparticle. 0682 */ 0683 tPDPtr theAntiPartner; 0684 0685 /** 0686 * If syncAnti is true all changes to this object will be transfered 0687 * to the antiParticle. 0688 */ 0689 bool syncAnti; 0690 0691 /** 0692 * Helper variable to keep track of the default mass. 0693 */ 0694 Energy theDefMass; 0695 0696 /** 0697 * Helper variable to keep track of the default width. 0698 */ 0699 Energy theDefWidth; 0700 0701 /** 0702 * Helper variable to keep track of the default width cut. 0703 */ 0704 Energy theDefCut; 0705 0706 /** 0707 * Helper variable to keep track of the default lifetime. 0708 */ 0709 Length theDefCTau; 0710 0711 /** 0712 * Helper variable to keep track of the default charge. 0713 */ 0714 PDT::Charge theDefCharge; 0715 0716 /** 0717 * Helper variable to keep track of the default spin. 0718 */ 0719 PDT::Spin theDefSpin; 0720 0721 /** 0722 * Helper variable to keep track of the default colour. 0723 */ 0724 PDT::Colour theDefColour; 0725 0726 /** 0727 * Helper variable to keep track of the default coloured interaction. 0728 */ 0729 PDT::ColouredInteraction theDefColouredInteraction; 0730 0731 /** 0732 * Utility function for the interface. 0733 */ 0734 void setMass(Energy); 0735 0736 /** 0737 * Utility function for the interface. 0738 */ 0739 void setHardProcessMass(Energy); 0740 0741 /** 0742 * Reset the hard process mass 0743 */ 0744 string doUnsetHardProcessMass(string); 0745 0746 /** 0747 * Adjust the nominal mass to the hard process mass if a reshuffling 0748 * is not desirable. 0749 */ 0750 string doAdjustNominalMass(string); 0751 0752 /** 0753 * Utility function for the interface. 0754 */ 0755 Energy defMass() const; 0756 0757 /** 0758 * Utility function for the interface. 0759 */ 0760 void setWidth(Energy); 0761 0762 /** 0763 * Utility function for the interface. 0764 */ 0765 void setHardProcessWidth(Energy); 0766 0767 /** 0768 * Reset the hard process mass 0769 */ 0770 string doUnsetHardProcessWidth(string); 0771 0772 /** 0773 * Utility function for the interface. 0774 */ 0775 Energy getWidth() const; 0776 0777 /** 0778 * Utility function for the interface. 0779 */ 0780 Energy defWidth() const; 0781 0782 /** 0783 * Utility function for the interface. 0784 */ 0785 void setCut(Energy); 0786 0787 /** 0788 * Utility function for the interface. 0789 */ 0790 Energy getCut() const; 0791 0792 /** 0793 * Utility function for the interface. 0794 */ 0795 Energy defCut() const; 0796 0797 /** 0798 * Utility function for the interface. 0799 */ 0800 void setUpCut(Energy); 0801 0802 /** 0803 * Utility function for the interface. 0804 */ 0805 Energy getUpCut() const; 0806 0807 /** 0808 * Utility function for the interface. 0809 */ 0810 void setLoCut(Energy); 0811 0812 /** 0813 * Utility function for the interface. 0814 */ 0815 Energy getLoCut() const; 0816 0817 /** 0818 * Utility function for the interface. 0819 */ 0820 void setCTau(Length); 0821 0822 /** 0823 * Utility function for the interface. 0824 */ 0825 Length getCTau() const; 0826 0827 /** 0828 * Utility function for the interface. 0829 */ 0830 Length defCTau() const; 0831 0832 /** 0833 * Utility function for the interface. 0834 */ 0835 void setStable(long); 0836 0837 /** 0838 * Utility function for the interface. 0839 */ 0840 long getStable() const; 0841 0842 /** 0843 * Utility function for the interface. 0844 */ 0845 void setSync(long); 0846 0847 /** 0848 * Utility function for the interface. 0849 */ 0850 long getSync() const; 0851 0852 /** 0853 * Utility function for the interface. 0854 */ 0855 void setVariableRatio(long); 0856 0857 /** 0858 * Utility function for the interface. 0859 */ 0860 long getVariableRatio() const; 0861 0862 /** 0863 * Utility function for the interface. 0864 */ 0865 string doSync(string); 0866 0867 /** 0868 * Utility function for the interface. 0869 */ 0870 void setMassGenerator(MassGenPtr); 0871 0872 /** 0873 * Utility function for the interface. 0874 */ 0875 void setWidthGenerator(WidthGeneratorPtr); 0876 0877 /** 0878 * Utility function for the interface. 0879 */ 0880 void setCharge(int); 0881 0882 /** 0883 * Utility function for the interface. 0884 */ 0885 string ssetCharge(string); 0886 0887 /** 0888 * Utility function for the interface. 0889 */ 0890 int getCharge() const; 0891 0892 /** 0893 * Utility function for the interface. 0894 */ 0895 int defCharge() const; 0896 0897 /** 0898 * Utility function for the interface. 0899 */ 0900 void setSpin(int); 0901 0902 /** 0903 * Utility function for the interface. 0904 */ 0905 int getSpin() const; 0906 0907 /** 0908 * Utility function for the interface. 0909 */ 0910 int defSpin() const; 0911 0912 /** 0913 * Utility function for the interface. 0914 */ 0915 void setColour(long); 0916 0917 /** 0918 * Utility function for the interface. 0919 */ 0920 long getColour() const; 0921 0922 /** 0923 * Utility function for the interface. 0924 */ 0925 long defColour() const; 0926 0927 /** 0928 * Utility function for the interface. 0929 */ 0930 void setColouredInteraction(long); 0931 0932 /** 0933 * Utility function for the interface. 0934 */ 0935 long getColouredInteraction() const; 0936 0937 /** 0938 * Utility function for the interface. 0939 */ 0940 long defColouredInteraction() const; 0941 0942 /** 0943 * Utility function for the interface. 0944 */ 0945 void insDecayModes(DMPtr dm, int); 0946 0947 /** 0948 * Utility function for the interface. 0949 */ 0950 void delDecayModes(int i); 0951 0952 /** 0953 * Utility function for the interface. 0954 */ 0955 vector<DMPtr> getDecayModes() const; 0956 0957 /** 0958 * Utility function for the interface. 0959 */ 0960 string doSelectDecayModes(string); 0961 0962 /** 0963 * Utility function for the interface. 0964 */ 0965 string doPrintDecayModes(string); 0966 0967 /** 0968 * Describe a concrete class with persistent data. 0969 */ 0970 static ClassDescription<ParticleData> initParticleData; 0971 0972 }; 0973 0974 /** @cond TRAITSPECIALIZATIONS */ 0975 0976 /** This template specialization informs ThePEG about the base classes 0977 * of ParticleData. */ 0978 template <> 0979 struct BaseClassTrait<ParticleData,1>: public ClassTraitsType { 0980 /** Typedef of the first base class of ParticleData. */ 0981 typedef Interfaced NthBase; 0982 }; 0983 0984 /** This template specialization informs ThePEG about the name of the 0985 * ParticleData class. */ 0986 template <> 0987 struct ClassTraits<ParticleData>: public ClassTraitsBase<ParticleData> { 0988 /** Return a platform-independent class name */ 0989 static string className() { return "ThePEG::ParticleData"; } 0990 }; 0991 0992 /** @endcond */ 0993 0994 } 0995 0996 #endif /* ThePEG_ParticleData_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|