File indexing completed on 2025-04-19 09:10:05
0001 #ifndef HADRONS_PS_Library_Four_Body_PSs_H
0002 #define HADRONS_PS_Library_Four_Body_PSs_H
0003
0004 #include "PHASIC++/Channels/Single_Channel.H"
0005 #include "ATOOLS/Math/Vector.H"
0006 #include "PHASIC++/Channels/Single_Channel.H"
0007 #include "ATOOLS/Org/Run_Parameter.H"
0008 #include "PHASIC++/Channels/Channel_Elements.H"
0009 #include "PHASIC++/Channels/Vegas.H"
0010 #include "HADRONS++/PS_Library/ResonanceFlavour.H"
0011 #include "PHASIC++/Channels/Rambo.H"
0012
0013 namespace HADRONS {
0014 class TwoResonances : public PHASIC::Single_Channel {
0015 ATOOLS::Vec4D m_P;
0016 int m_i, m_j, m_k, m_dir;
0017 int m_chnumber;
0018 SimpleResonanceFlavour m_prop1, m_prop2;
0019 ATOOLS::Flavour * p_fl;
0020
0021 ATOOLS::Info_Key m_kI_123_4,m_kI_12_3,m_kI_1_2;
0022 PHASIC::Vegas* p_vegas;
0023 ATOOLS::Integration_Info * p_info;
0024
0025 public :
0026 TwoResonances(const ATOOLS::Flavour * fl,SimpleResonanceFlavour prop1,
0027 const int _k,SimpleResonanceFlavour prop2,
0028 const int _i,const int _j );
0029 ~TwoResonances();
0030 void GeneratePoint(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL,
0031 double * _ran=NULL);
0032 void GenerateWeight(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL);
0033 int ChNumber() { return m_chnumber; }
0034 void SetChNumber(int _chnumber) { m_chnumber = _chnumber; }
0035 void AddPoint(double value ) {
0036 Single_Channel::AddPoint( value );
0037 p_vegas->AddPoint(value, p_rans);
0038 }
0039 void Optimize() { p_vegas->Optimize(); }
0040 void EndOptimize() { p_vegas->EndOptimize(); }
0041 void WriteOut(std::string pId) { p_vegas->WriteOut(pId); }
0042 void ReadIn(std::string pId) { p_vegas->ReadIn(pId); }
0043 void MPISync() {};
0044 };
0045
0046 class IsotropicSpectator : public PHASIC::Single_Channel {
0047 PHASIC::Rambo* m_rambo;
0048 int m_spectator;
0049 double m_decayer_mass, m_spectator_mass, m_residual_mass;
0050 public :
0051 IsotropicSpectator(const ATOOLS::Flavour *, int nOut, int spectator,
0052 const ATOOLS::Mass_Selector* ms);
0053 ~IsotropicSpectator() { delete m_rambo; }
0054 void GeneratePoint(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL,
0055 double * _ran=NULL);
0056 void GenerateWeight(ATOOLS::Vec4D * p,PHASIC::Cut_Data * =NULL);
0057 std::string ChID() { return std::string("IsotropicSpectator");}
0058 void MPISync() {};
0059 };
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108 }
0109
0110 #endif