Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:20:03

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 EVT_PTO3P_AMP_HH
0022 #define EVT_PTO3P_AMP_HH
0023 
0024 #include "EvtGenBase/EvtCyclic3.hh"
0025 #include "EvtGenBase/EvtSpinType.hh"
0026 
0027 #include <vector>
0028 using std::vector;
0029 #include "EvtGenBase/EvtAmplitude.hh"
0030 #include "EvtGenBase/EvtDalitzPoint.hh"
0031 #include "EvtGenBase/EvtPropagator.hh"
0032 #include "EvtGenBase/EvtTwoBodyVertex.hh"
0033 
0034 class EvtComplex;
0035 class EvtBlattWeisskopf;
0036 
0037 class EvtPto3PAmp : public EvtAmplitude<EvtDalitzPoint> {
0038   public:
0039     // Numerator type
0040     enum NumType
0041     {
0042         NBW = 0,
0043         RBW_ZEMACH = 1,
0044         RBW_KUEHN = 2,
0045         RBW_CLEO = 3,
0046         FLATTE,
0047         GAUSS,
0048         DOUBLE_GAUSS,
0049         NONRES,
0050         NONRES_LIN,
0051         NONRES_EXP,
0052         NONRES_EXP_ADD,
0053         NONRES_CCS,
0054         NONRES_LAURA,
0055         LASS,
0056         LASS_ELASTIC,
0057         LASS_RESONANT,
0058         GS
0059     };
0060 
0061     EvtPto3PAmp( EvtDalitzPlot dp, EvtCyclic3::Pair pairAng,
0062                  EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin,
0063                  const EvtPropagator& prop, NumType typeN );
0064 
0065     EvtPto3PAmp( const EvtPto3PAmp& other );
0066 
0067     ~EvtPto3PAmp();
0068 
0069     EvtAmplitude<EvtDalitzPoint>* clone() const override
0070     {
0071         return new EvtPto3PAmp( *this );
0072     }
0073 
0074     EvtComplex amplitude( const EvtDalitzPoint& p ) const override;
0075     EvtComplex numerator( const EvtDalitzPoint& p ) const;
0076     double angDep( const EvtDalitzPoint& p ) const;
0077 
0078     void set_fd( double R );
0079     void set_fb( double R );
0080 
0081     void setmin( double min ) { _min = min; }
0082     void setmax( double max ) { _max = max; }
0083 
0084     virtual EvtComplex evalPropagator( double m ) const
0085     {
0086         return _prop->evaluate( m );
0087     }
0088 
0089   private:
0090     // Pairing indices:
0091 
0092     EvtCyclic3::Pair _pairAng;    // angular
0093     EvtCyclic3::Pair _pairRes;    // resonance
0094 
0095     // Spin
0096 
0097     EvtSpinType::spintype _spin;
0098 
0099     // Numerator type
0100 
0101     NumType _typeN;
0102 
0103     // _Owned_ pointer to propagator factor
0104 
0105     EvtPropagator* _prop;
0106     double _g0;     // nominal width
0107     double _min;    //min and max values on which
0108     double _max;    //the resonance is defined
0109 
0110     // Vertices
0111 
0112     EvtTwoBodyVertex _vb;
0113     EvtTwoBodyVertex _vd;
0114 };
0115 
0116 #endif