|
|
|||
File indexing completed on 2026-08-06 09:20:02
0001 0002 /*********************************************************************** 0003 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors * 0004 * * 0005 * This file is part of EvtGen. * 0006 * * 0007 * EvtGen is free software: you can redistribute it and/or modify * 0008 * it under the terms of the GNU General Public License as published by * 0009 * the Free Software Foundation, either version 3 of the License, or * 0010 * (at your option) any later version. * 0011 * * 0012 * EvtGen is distributed in the hope that it will be useful, * 0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0015 * GNU General Public License for more details. * 0016 * * 0017 * You should have received a copy of the GNU General Public License * 0018 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. * 0019 ***********************************************************************/ 0020 0021 #ifndef __EVTMNODE_HH__ 0022 #define __EVTMNODE_HH__ 0023 0024 #include "EvtGenBase/EvtComplex.hh" 0025 #include "EvtGenBase/EvtPDL.hh" 0026 #include "EvtGenBase/EvtSpinAmp.hh" 0027 #include "EvtGenBase/EvtSymTable.hh" 0028 #include "EvtGenBase/EvtVector4R.hh" 0029 0030 #include <vector> 0031 using std::vector; 0032 0033 #include <string> 0034 using std::string; 0035 0036 class EvtMNode { 0037 public: 0038 EvtMNode() {} 0039 virtual ~EvtMNode(){}; 0040 0041 // calculate the amplitude associated event this->children return a 0042 // vector of the form A_{\lambda this} and sum over allowed angular 0043 // momenta of the children 0044 virtual EvtSpinAmp amplitude( const vector<EvtVector4R>& product ) const = 0; 0045 0046 // get the 4 vector associated with this node 0047 EvtVector4R get4vector( const vector<EvtVector4R>& product ) const; 0048 0049 // get twice the spin of the particle 0050 int getspin() const { return _twospin; } 0051 EvtSpinType::spintype getspintype() const 0052 { 0053 return EvtPDL::getSpinType( _id ); 0054 } 0055 0056 // get the id of this node 0057 EvtId getid() const { return _id; } 0058 0059 // return which particles this is a combination of 0060 const vector<int>& getresonance() const { return _resonance; } 0061 0062 void setparent( EvtMNode* parent ) { _parent = parent; } 0063 EvtMNode* getparent() const { return _parent; } 0064 0065 // get the number of children that this node has 0066 virtual int getnchild() const = 0; 0067 0068 // return the value of the resonance shape 0069 virtual EvtComplex line( const vector<EvtVector4R>& product ) const = 0; 0070 0071 // return a pointer node 0072 virtual EvtMNode* duplicate() const = 0; 0073 0074 protected: 0075 // store the EvtId of the particle (just in case we need it to access 0076 // further informatoin about it) 0077 EvtId _id; 0078 0079 // store TWICE the spin of this resonance (this is to deal with spin 1/2 0080 int _twospin; 0081 0082 // store the particles that form this resonance, this should match up 0083 // with the child nodes from below, and is calculated internally 0084 vector<int> _resonance; 0085 0086 // store the parent node of this one 0087 EvtMNode* _parent; 0088 }; 0089 0090 #endif
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|