![]() |
|
|||
File indexing completed on 2025-04-19 09:10:04
0001 #ifndef HADRONS_Main_Hadron_Decay_Channel_H 0002 #define HADRONS_Main_Hadron_Decay_Channel_H 0003 0004 #include <string> 0005 #include <utility> 0006 #include "HADRONS++/Main/Tools.H" 0007 #include "PHASIC++/Decays/Decay_Channel.H" 0008 #include "ATOOLS/Math/Vector.H" 0009 #include "ATOOLS/Org/Scoped_Settings.H" 0010 0011 namespace ATOOLS { 0012 class Blob; 0013 } 0014 0015 namespace HADRONS { 0016 class Current_Base; 0017 class HD_ME_Base; 0018 class HD_PS_Base; 0019 0020 /** 0021 * Building on the general class Decay_Channel this class implements the 0022 * features specific for hadron decay channel, including extra properties 0023 * necessary for mixing phenomena and for reading information from decay 0024 * channel files. 0025 */ 0026 class Hadron_Decay_Channel : public PHASIC::Decay_Channel { 0027 /// Origin of branching ratio/error 0028 std::string m_origin; 0029 /// Whether to ignore stored integration results 0030 bool m_always_integrate; 0031 /// CP asymmetry coefficient C as used in PDG B0 listings, used to 0032 /// simulate CP rate asymmetries in this decay channel 0033 double m_cp_asymmetry_C; 0034 /// CP asymmetry coefficient S as used in PDG B0 listings, used to 0035 /// simulate CP rate asymmetries in this decay channel 0036 double m_cp_asymmetry_S; 0037 /// CP asymmetry coefficient lambda, used to 0038 /// simulate CP rate asymmetries in this decay channel 0039 Complex m_cp_asymmetry_lambda; 0040 /// global hadron decay parameters 0041 GeneralModel m_startmd; 0042 /// mapping of alias flavours to physical flavours 0043 ATOOLS::Flavour_Vector m_physicalflavours; 0044 0045 0046 /** 0047 * Add (automatic) partonic channels settings 0048 * 0049 * @param s the channel settings block from HADRON_DECAYS: { \<decayer\>: {channel: {...}}} 0050 */ 0051 void ProcessPartonic(ATOOLS::Scoped_Settings& s); 0052 0053 /** 0054 * Select a matrix element from a string like B_KStar_Semileptonic[0,1,2,3] 0055 * using the Getter_Function for HD_ME_Base. 0056 * 0057 * @param me_string String containing the (getter-able) name of the matrix 0058 * element, and in square brackets the mapping of external particle 0059 * indices in the decay blob to internal indices in the matrix element. 0060 * @param s the ME settings block from HADRON_DECAYS: { \<decayer\>: {channel: { ME: {...}}}} 0061 * 0062 * @return The matrix element it has created from the information. If 0063 * it can't find a valid matrix element, it will abort. 0064 */ 0065 HD_ME_Base * SelectME(std::string me_string, ATOOLS::Scoped_Settings s); 0066 0067 public: 0068 /** 0069 * Nothing initialised here, only created. 0070 * 0071 * @param flin Incoming particle flavour 0072 * @param ms mass setter to be used for flavours in this channel 0073 */ 0074 Hadron_Decay_Channel(ATOOLS::Flavour flin, const ATOOLS::Mass_Selector* ms); 0075 ~Hadron_Decay_Channel(); 0076 0077 /** 0078 * Does the actual read-in of the decay channel file, and creates matrix 0079 * elements, phase space mappings etc. from that. 0080 * 0081 * @param startmd Global hadron decay parameters. 0082 * @param s the channel settings block from HADRON_DECAYS: { \<decayer\>: {channel: {...}}} 0083 */ 0084 void Initialise(ATOOLS::Scoped_Settings s, GeneralModel startmd); 0085 0086 /** 0087 * Tries to set the color flow for the outparticles of the blob given. 0088 * This is needed for 0089 * partonic decay channels, after which the parton shower is started. 0090 * Either a general color flow assignment is used, or (if possible) the 0091 * matrix element can set it. 0092 * 0093 * @param blob Blob to set color flow for 0094 * 0095 * @return true if setting the color flow succeeded, false if not. 0096 */ 0097 bool SetColorFlow(ATOOLS::Blob* blob); 0098 0099 /** 0100 * Outputs the Latex lines for one decay channel (to be embedded in a 0101 * decay table Latex output) 0102 * 0103 * @param f Stream to write to. 0104 * @param totalwidth Total width of the decay table (such that branching 0105 * ratios can be printed). 0106 */ 0107 void LatexOutput(std::ostream& f, double totalwidth); 0108 0109 /** 0110 * Takes a string e.g. of the form Channel_1_resonance_23 and finds the 0111 * appropriate phase space mapping for that. This PHASIC::Single_Channel is 0112 * then added to the decay channel's PHASIC::Multi_Channel. 0113 * 0114 * @param name String describing the phase space channel 0115 * @param s the PS settings block from HADRON_DECAYS: { \<decayer\>: {channel: { PhaseSpace: {...}}}} 0116 * 0117 * @return true if an appropriate channel was found, false if not. 0118 */ 0119 bool AddPSChannel(std::string name, ATOOLS::Scoped_Settings s); 0120 0121 //@{ 0122 /** Getter/setter method. */ 0123 inline const double& CPAsymmetryC() const { return m_cp_asymmetry_C; } 0124 inline const double& CPAsymmetryS() const { return m_cp_asymmetry_S; } 0125 inline const Complex& 0126 CPAsymmetryLambda() const { return m_cp_asymmetry_lambda; } 0127 inline const std::string& Origin() const { return m_origin; } 0128 inline void SetOrigin(const std::string& origin) { m_origin=origin; } 0129 //@} 0130 }; 0131 } 0132 0133 0134 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |