Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:26

0001 // -*- C++ -*-
0002 #ifndef HERWIG_ProtoBranching_H
0003 #define HERWIG_ProtoBranching_H
0004 //
0005 // This is the declaration of the ProtoBranching class.
0006 //
0007 
0008 namespace Herwig {
0009 
0010 using namespace ThePEG;
0011 
0012 /**
0013  *  Declare the pointers
0014  */
0015 class ProtoBranching;
0016 ThePEG_DECLARE_POINTERS(Herwig::ProtoBranching,ProtoBranchingPtr);
0017 
0018 /**
0019  *  Class to store a prototype branching 
0020  */
0021 class ProtoBranching : public Base {
0022 
0023 public:
0024 
0025   /**
0026    *  Default constructor
0027    */
0028   ProtoBranching() {}
0029 
0030   /**
0031    *  Constructor
0032    */
0033   ProtoBranching(tcPDPtr part, HardBranching::Status status,
0034          const Lorentz5Momentum & momentum,
0035          tSudakovPtr sudakov)
0036     : part_(part), status_(status), momentum_(momentum),
0037       sudakov_(sudakov), type_(ShowerPartnerType::Undefined)
0038   {}
0039 
0040   /**
0041    *  Id of the brnaching particle
0042    */
0043   long id() { return part_->id();}
0044 
0045   /**
0046    *  The ParticleData
0047    */
0048   tcPDPtr particle() {return part_;}
0049 
0050   /**
0051    *  Status of the branching
0052    */
0053   HardBranching::Status status() {return status_;}
0054 
0055   /**
0056    *  Set the parent
0057    */
0058   tProtoBranchingPtr parent() {return parent_;}
0059 
0060   /**
0061    *  Get the parent
0062    */
0063   void parent(tProtoBranchingPtr in) {parent_=in;}
0064 
0065   /**
0066    *  Children
0067    */
0068   vector<tProtoBranchingPtr> children() {return children_;}
0069 
0070   /**
0071    *  Add a child
0072    */
0073   void addChild(tProtoBranchingPtr in ) {children_.push_back(in);}
0074 
0075   /**
0076    *  Back children
0077    */
0078   vector<tProtoBranchingPtr> backChildren() {return backChildren_;}
0079 
0080   /**
0081    *  Add a child
0082    */
0083   void addBackChild(tProtoBranchingPtr in ) {backChildren_.push_back(in);}
0084 
0085   /**
0086    *  momentum
0087    */
0088   const Lorentz5Momentum & momentum() {return momentum_;}
0089 
0090   /**
0091    *  Get the Sudakov
0092    */
0093   tSudakovPtr sudakov() {return sudakov_;}
0094 
0095   /**
0096    *  Set the Sudakov
0097    */
0098   void sudakov(tSudakovPtr in) { sudakov_=in; }
0099 
0100   /**
0101    *  Type of branching
0102    */
0103   ShowerPartnerType type() const {
0104     return type_;
0105   }
0106 
0107   /**
0108    *  Type of branching
0109    */
0110   void type(ShowerPartnerType in) {
0111     type_ = in;
0112     assert(type_!=ShowerPartnerType::Undefined);
0113   }
0114 
0115   /**
0116    *  Colour line
0117    */
0118   tColinePtr colourLine() const {
0119     return colourLine_;
0120   }
0121   /**
0122    *  Anticolour line
0123    */
0124   tColinePtr antiColourLine() const {
0125     return antiColourLine_;
0126   }
0127 
0128   /**
0129    *  Colour line
0130    */
0131   void colourLine(tColinePtr in) {
0132     colourLine_ = in;
0133   }
0134   /**
0135    *  Anticolour line
0136    */
0137   void antiColourLine(tColinePtr in) {
0138     antiColourLine_ = in;
0139   }
0140 
0141 private:
0142 
0143   /**
0144    *  PDG code
0145    */
0146   tcPDPtr part_;
0147 
0148   /**
0149    *  status
0150    */
0151   HardBranching::Status status_;
0152 
0153   /**
0154    *  Momentum
0155    */
0156   Lorentz5Momentum momentum_;
0157 
0158   /**
0159    *  Sudakov
0160    */
0161   tSudakovPtr sudakov_;
0162 
0163   /**
0164    *  children
0165    */
0166   vector<tProtoBranchingPtr> children_;
0167 
0168   /**
0169    *  back children
0170    */
0171   vector<tProtoBranchingPtr> backChildren_;
0172 
0173   /**
0174    *  parent
0175    */
0176   tProtoBranchingPtr parent_;
0177 
0178   /**
0179    *  The type of branching
0180    */
0181   ShowerPartnerType type_;
0182 
0183   /**
0184    *   Colour lines
0185    */
0186   //@{
0187   /**
0188    *  Colour line
0189    */
0190   tColinePtr colourLine_;
0191 
0192   /**
0193    *  Anticolour line
0194    */
0195   tColinePtr antiColourLine_;
0196   //@}
0197 
0198 };
0199 
0200 }
0201 
0202 #endif /* HERWIG_ProtoBranching_H */