1652 {
1653 MsgStream log(
msgSvc(), name() );
1654 log << MSG::INFO << " In findD0Decay " << endmsg;
1655 vector<double> d0_info( 9 );
1656 for ( int i = 0; i < 9; i++ ) d0_info[i] = 0;
1657 double decay_mode = 20;
1658 double r2D0 = -1;
1659 double deltaD0 = -1;
1660 double RD0 = 1;
1661 double FCP = 1;
1662
1664 for (
int i = 0; i < 26; i++ )
num[i] = 0;
1665
1666 int kPiPlus = 0;
1667 int kPiMinus = 1;
1668 int kPi0 = 2;
1669 int kEta = 3;
1670 int kEtaPrime = 4;
1671 int kNeutralScalar = 5;
1672
1673 int kUFVPlus = 6;
1674 int kUFVMinus = 7;
1675 int kRho0 = 8;
1676 int kOmega = 9;
1677 int kPhi = 10;
1678 int kKPlus = 11;
1679 int kKMinus = 12;
1680 int kK0S = 13;
1681 int kK0L = 14;
1682 int kFVPlus = 15;
1683 int kFVMinus = 16;
1684 int kKStar0 = 17;
1685 int kKStar0Bar = 18;
1686 int kK10 = 19;
1687 int kK10Bar = 20;
1688 int kLeptonPlus = 21;
1689 int kLeptonMinus = 22;
1690 int kNeutrino = 23;
1691 int kGamma = 24;
1692 int kUnknown = 25;
1693
1694
1695
1697 int d0_pdg = charm == 1 ? kD0ID : kD0BarID;
1698
1699 HepLorentzVector piPlus, piMinus, k0;
1700 vector<HepLorentzVector> piPlus_4pi, piMinus_4pi, pi0_p4;
1701 vector<HepLorentzVector> kPlus_kkpipi, kMinus_kkpipi;
1702 piPlus_4pi.clear();
1703 piMinus_4pi.clear(), pi0_p4.clear();
1704 kPlus_kkpipi.clear();
1705 kMinus_kkpipi.clear();
1706
1707 for ( Event::McParticleCol::iterator it = mcParticles->begin(); it != mcParticles->end();
1708 it++ )
1709 {
1710 int pdg_code = ( *it )->particleProperty();
1711 if ( ( *it )->primaryParticle() ) continue;
1712 Event::McParticle it2 = ( *it )->mother();
1713 int mother_pdg = 0;
1714
1715
1717
1718
1719 if ( pdg_code == kKStar0ID || pdg_code == kKStar0BarID || pdg_code == kK0ID ||
1720 pdg_code == kK0BarID || pdg_code == kKDPStar0ID || pdg_code == kKDPStar0BarID ||
1721 pdg_code == kK10ID || pdg_code == kK10BarID || pdg_code == kK0Star0ID ||
1722 pdg_code == kK0Star0BarID || pdg_code == kK0StarPlusID || pdg_code == kK0BarID )
1723 continue;
1724
1725 if ( mother_pdg == kK0ID || mother_pdg == kK0BarID )
1726 {
1729 }
1730
1731 if ( mother_pdg == kKStar0ID || mother_pdg == kKStar0BarID )
1732 {
1733
1734
1735
1736 if ( pdg_code == kPiPlusID || pdg_code == kPiMinusID ) continue;
1737 if ( mother_pdg == kKStar0ID && pdg_code == kKPlusID ) pdg_code = kKStar0ID;
1738 if ( mother_pdg == kKStar0BarID && pdg_code == kKMinusID ) pdg_code = kKStar0BarID;
1741 }
1742
1743 if ( mother_pdg == kK0Star0ID || mother_pdg == kK0Star0BarID )
1744 {
1747 }
1748
1749 if ( mother_pdg == kK10ID || mother_pdg == kK10BarID )
1750 {
1753 }
1754
1755
1756 int nFSR( 0 );
1757 if ( mother_pdg == d0_pdg )
1758 {
1759
1760
1761 if ( pdg_code == kPiPlusID || pdg_code == kA0PlusID )
num[0]++;
1762 else if ( pdg_code == kPiMinusID || pdg_code == kA0MinusID )
num[1]++;
1763 else if ( pdg_code == kPi0ID )
num[2]++;
1764 else if ( pdg_code == kEtaID )
num[3]++;
1765 else if ( pdg_code == kEtaPrimeID )
num[4]++;
1766 else if ( pdg_code == kF0ID || pdg_code == kA00ID || pdg_code == kFPrime0ID ||
1767 pdg_code == kF0m1500ID || pdg_code == kF2ID || pdg_code == kF0m1710ID ||
1768 pdg_code == kF0600ID )
1770 else if ( pdg_code == kRhoPlusID || pdg_code == kRho2SPlusID || pdg_code == kA1PlusID )
1772 else if ( pdg_code == kRhoMinusID || pdg_code == kRho2SMinusID ||
1773 pdg_code == kA1MinusID )
1775 else if ( pdg_code == kRho0ID || pdg_code == kRho2S0ID )
num[8]++;
1776 else if ( pdg_code == kOmegaID )
num[9]++;
1777 else if ( pdg_code == kPhiID )
num[10]++;
1778 else if ( pdg_code == kKPlusID )
num[11]++;
1779 else if ( pdg_code == kKMinusID )
num[12]++;
1780 else if ( pdg_code == kK0SID )
num[13]++;
1781 else if ( pdg_code == kK0LID )
num[14]++;
1782 else if ( pdg_code == kKStarPlusID || pdg_code == kK1PlusID ||
1783 pdg_code == kK2StarPlusID || pdg_code == kK1PrimePlusID ||
1784 pdg_code == kK0StarPlusID )
1786 else if ( pdg_code == kKStarMinusID || pdg_code == kK1MinusID ||
1787 pdg_code == kK2StarMinusID || pdg_code == kK1PrimeMinusID ||
1788 pdg_code == kK0StarMinusID )
1790 else if ( pdg_code == kKStar0ID )
num[17]++;
1791 else if ( pdg_code == kKStar0BarID )
num[18]++;
1792 else if ( pdg_code == kK10ID || pdg_code == kK1Prime0ID )
num[19]++;
1793 else if ( pdg_code == kK10BarID || pdg_code == kK1Prime0BarID )
num[20]++;
1794 else if ( pdg_code == kEPlusID || pdg_code == kMuPlusID )
num[21]++;
1795 else if ( pdg_code == kEMinusID || pdg_code == kMuMinusID )
num[22]++;
1796 else if ( pdg_code == kNuEID || pdg_code == kNuEBarID || pdg_code == kNuMuID ||
1797 pdg_code == kNuMuBarID )
1799 else if ( pdg_code == kGammaID )
num[24]++;
1800 else if ( pdg_code == kGammaFSRID ) continue;
1801 else
1802 {
1804 cout << "Unknown particle: " << pdg_code << endl;
1805 }
1806
1807
1808
1809
1810
1811
1812
1813
1814 if ( pdg_code == kPiPlusID )
1815 piPlus.setVectM( ( *it )->initialFourMomentum().vect(),
xmpion );
1816 if ( pdg_code == kPiMinusID )
1817 piMinus.setVectM( ( *it )->initialFourMomentum().vect(),
xmpion );
1818 if ( pdg_code == kK0SID ) k0.setVectM( ( *it )->initialFourMomentum().vect(),
xmk0 );
1819 if ( pdg_code == kK0LID ) k0.setVectM( ( *it )->initialFourMomentum().vect(),
xmk0 );
1820 HepLorentzVector daughterP4;
1821 if ( piPlus_4pi.size() > 2 || piMinus_4pi.size() > 2 ) continue;
1822 if ( kPlus_kkpipi.size() > 1 || kMinus_kkpipi.size() > 1 ) continue;
1823
1824 if ( pdg_code == kPiPlusID )
1825 {
1826 daughterP4.setVectM( ( *it )->initialFourMomentum().vect(),
xmpion );
1827 piPlus_4pi.push_back( daughterP4 );
1828 }
1829 if ( pdg_code == kPiMinusID )
1830 {
1831 daughterP4.setVectM( ( *it )->initialFourMomentum().vect(),
xmpion );
1832 piMinus_4pi.push_back( daughterP4 );
1833 }
1834 if ( pdg_code == kKPlusID )
1835 {
1836 daughterP4.setVectM( ( *it )->initialFourMomentum().vect(),
xmkaon );
1837 kPlus_kkpipi.push_back( daughterP4 );
1838 }
1839 if ( pdg_code == kKMinusID )
1840 {
1841 daughterP4.setVectM( ( *it )->initialFourMomentum().vect(),
xmkaon );
1842 kMinus_kkpipi.push_back( daughterP4 );
1843 }
1844 if ( pdg_code == kPi0ID )
1845 {
1846 daughterP4.setVectM( ( *it )->initialFourMomentum().vect(),
xmpi0 );
1847 pi0_p4.push_back( daughterP4 );
1848 }
1849 }
1850 }
1851
1852
1853 int nDaughters = 0;
1854 for (
int i = 0; i < 26; i++ ) { nDaughters +=
num[i]; }
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873 int nUFP0 =
num[kPi0] +
num[kEta] +
num[kEtaPrime];
1874 int nUFV0 =
num[kRho0] +
num[kPhi] +
num[kOmega] +
num[kGamma];
1875 int nFV0 =
num[kKStar0] +
num[kK10];
1876 int nFV0Bar =
num[kKStar0Bar] +
num[kK10Bar];
1877 int nStrange =
num[kKMinus] +
num[kFVMinus] + nFV0Bar;
1878 int nAntiStrange =
num[kKPlus] +
num[kFVPlus] + nFV0;
1879 int nCPPlusEig =
1880 num[kNeutralScalar] +
num[kRho0] +
num[kOmega] +
num[kPhi] +
num[kK0S] +
num[kGamma];
1881 int nCPMinusEig =
num[kPi0] +
num[kEta] +
num[kEtaPrime] +
num[kK0L];
1882 int nCPEig = nCPPlusEig + nCPMinusEig;
1883 int nChargedPiK =
num[kPiPlus] +
num[kPiMinus] +
num[kKPlus] +
num[kKMinus];
1884 int nK0 =
num[kK0S] +
num[kK0L];
1885
1886
1887 double mnm_gen = 0.;
1888 double mpn_gen = 0.;
1889 double mpm_gen = 0.;
1890 bool isKsPiPi = false;
1891 bool isKsKK = false;
1892 bool isKsPiPiPi0 = false;
1893
1894
1895
1896 if ( nK0 == 1 &&
num[kPiPlus] == 1 &&
num[kPiMinus] && nDaughters == 3 )
1897 {
1898 decay_mode = kDalitz;
1899
1900
1901
1902
1903
1904
1905 if (
num[kK0S] == 1 ) isKsPiPi =
true;
1906 }
1907 if (
num[kPiPlus] == 2 &&
num[kPiMinus] == 2 && nDaughters == 4 ) { decay_mode = k2Pip2Pim; }
1908 if (
num[kPiPlus] == 1 &&
num[kPiMinus] == 1 &&
num[kPi0] == 2 && nDaughters == 4 )
1909 { decay_mode = kPipPim2Pi0; }
1910 if ( nK0 == 1 &&
num[kPiPlus] == 1 &&
num[kPiMinus] == 1 &&
num[kPi0] == 1 &&
1911 nDaughters == 4 )
1912 {
1913 decay_mode = kK0PiPiPi0;
1914 if (
num[kK0S] == 1 ) isKsPiPiPi0 =
true;
1915 }
1916 if (
num[kPiPlus] == 1 &&
num[kPiMinus] == 1 &&
num[kKPlus] == 1 &&
num[kKMinus] == 1 &&
1917 nDaughters == 4 )
1918 { decay_mode = kKKPiPi; }
1919 if (
num[kKPlus] == 1 &&
num[kKMinus] == 1 && nK0 == 1 && nDaughters == 3 )
1920 {
1921 decay_mode = kK0KK;
1922 if (
num[kK0S] == 1 ) isKsKK =
true;
1923 }
1924
1925 int nDaughters_RhoPlus( 0 );
1926 int nDaughterPiPlus_RhoPlus( 0 );
1927 int nDaughterPi0_RhoPlus( 0 );
1928 int nDaughters_RhoMinus( 0 );
1929 int nDaughterPiMinus_RhoMinus( 0 );
1930 int nDaughterPi0_RhoMinus( 0 );
1931 int nDaughters_Rho0( 0 );
1932 int nDaughterPiPlus_Rho0( 0 );
1933 int nDaughterPiMinus_Rho0( 0 );
1934 int nDaughters_F0600( 0 );
1935 int nDaughterPiPlus_F0600( 0 );
1936 int nDaughterPiMinus_F0600( 0 );
1937 int nDaughters_F0( 0 );
1938 int nDaughterPiPlus_F0( 0 );
1939 int nDaughterPiMinus_F0( 0 );
1940 int nDaughters_FPrime0( 0 );
1941 int nDaughterPiPlus_FPrime0( 0 );
1942 int nDaughterPiMinus_FPrime0( 0 );
1943 int nDaughters_F01500( 0 );
1944 int nDaughterPiPlus_F01500( 0 );
1945 int nDaughterPiMinus_F01500( 0 );
1946 int nDaughters_F01710( 0 );
1947 int nDaughterPiPlus_F01710( 0 );
1948 int nDaughterPiMinus_F01710( 0 );
1949 int nDaughters_F2( 0 );
1950 int nDaughterPiPlus_F2( 0 );
1951 int nDaughterPiMinus_F2( 0 );
1952 int nDaughters_Omega( 0 );
1953 int nDaughterPiPlus_Omega( 0 );
1954 int nDaughterPiMinus_Omega( 0 );
1955
1956 for ( Event::McParticleCol::iterator it = mcParticles->begin(); it != mcParticles->end();
1957 it++ )
1958 {
1959 int pdg_code = ( *it )->particleProperty();
1960 if ( ( *it )->primaryParticle() ) continue;
1961 Event::McParticle it2 = ( *it )->
mother();
1962 int mother_pdg = 0;
1963
1964
1966 if ( mother_pdg == kRhoPlusID )
1967 {
1968 Event::McParticle it3 = it2.
mother();
1970 {
1971 nDaughters_RhoPlus++;
1972 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_RhoPlus++;
1973 if ( pdg_code == kPi0ID ) nDaughterPi0_RhoPlus++;
1974 }
1975 }
1976 if ( mother_pdg == kRhoMinusID )
1977 {
1978 Event::McParticle it3 = it2.
mother();
1980 {
1981 nDaughters_RhoMinus++;
1982 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_RhoMinus++;
1983 if ( pdg_code == kPi0ID ) nDaughterPi0_RhoMinus++;
1984 }
1985 }
1986 if ( mother_pdg == kRho0ID )
1987 {
1988 Event::McParticle it3 = it2.
mother();
1990 {
1991 nDaughters_Rho0++;
1992 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_Rho0++;
1993 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_Rho0++;
1994 }
1995 }
1996 if ( mother_pdg == kF0600ID )
1997 {
1998 Event::McParticle it3 = it2.
mother();
2000 {
2001 nDaughters_F0600++;
2002 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_F0600++;
2003 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_F0600++;
2004 }
2005 }
2006 if ( mother_pdg == kF0ID )
2007 {
2008 Event::McParticle it3 = it2.
mother();
2010 {
2011 nDaughters_F0++;
2012 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_F0++;
2013 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_F0++;
2014 }
2015 }
2016 if ( mother_pdg == kFPrime0ID )
2017 {
2018 Event::McParticle it3 = it2.
mother();
2020 {
2021 nDaughters_FPrime0++;
2022 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_FPrime0++;
2023 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_FPrime0++;
2024 }
2025 }
2026 if ( mother_pdg == kF0m1500ID )
2027 {
2028 Event::McParticle it3 = it2.
mother();
2030 {
2031 nDaughters_F01500++;
2032 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_F01500++;
2033 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_F01500++;
2034 }
2035 }
2036 if ( mother_pdg == kF0m1710ID )
2037 {
2038 Event::McParticle it3 = it2.
mother();
2040 {
2041 nDaughters_F01710++;
2042 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_F01710++;
2043 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_F01710++;
2044 }
2045 }
2046 if ( mother_pdg == kF2ID )
2047 {
2048 Event::McParticle it3 = it2.
mother();
2050 {
2051 nDaughters_F2++;
2052 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_F2++;
2053 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_F2++;
2054 }
2055 }
2056 if ( mother_pdg == kOmegaID )
2057 {
2058 Event::McParticle it3 = it2.
mother();
2060 {
2061 nDaughters_Omega++;
2062 if ( pdg_code == kPiPlusID ) nDaughterPiPlus_Omega++;
2063 if ( pdg_code == kPiMinusID ) nDaughterPiMinus_Omega++;
2064 }
2065 }
2066 }
2067
2068
2069 if ( decay_mode == kDalitz )
2070 {
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085 complex<double> D0, D0bar;
2086 vector<double> k0l;
2087 vector<double> pip;
2088 vector<double> pim;
2089 k0l.clear();
2090 pip.clear();
2091 pim.clear();
2092 k0l.push_back( k0[0] );
2093 k0l.push_back( k0[1] );
2094 k0l.push_back( k0[2] );
2095 k0l.push_back( k0[3] );
2096 pip.push_back( piPlus[0] );
2097 pip.push_back( piPlus[1] );
2098 pip.push_back( piPlus[2] );
2099 pip.push_back( piPlus[3] );
2100 pim.push_back( piMinus[0] );
2101 pim.push_back( piMinus[1] );
2102 pim.push_back( piMinus[2] );
2103 pim.push_back( piMinus[3] );
2104
2105 if ( isKsPiPi )
2106 {
2107
2108 D0ToKSpipi tKSpipi;
2110 D0 = tKSpipi.
Amp_PFT( k0l, pip, pim );
2111
2112 vector<double> cpk0l;
2113 vector<double> cppip;
2114 vector<double> cppim;
2115 cpk0l.clear();
2116 pip.clear();
2117 pim.clear();
2118 cpk0l.push_back( -k0l[0] );
2119 cpk0l.push_back( -k0l[1] );
2120 cpk0l.push_back( -k0l[2] );
2121 cpk0l.push_back( k0l[3] );
2122 cppim.push_back( -piPlus[0] );
2123 cppim.push_back( -piPlus[1] );
2124 cppim.push_back( -piPlus[2] );
2125 cppim.push_back( piPlus[3] );
2126 cppip.push_back( -piMinus[0] );
2127 cppip.push_back( -piMinus[1] );
2128 cppip.push_back( -piMinus[2] );
2129 cppip.push_back( piMinus[3] );
2130 D0bar = tKSpipi.
Amp_PFT( cpk0l, cppip, cppim );
2131 }
2132 else
2133 {
2134
2135
2136 D0ToKLpipi tKLpipi;
2138
2139 D0 = tKLpipi.
Amp_PFT( k0l, pip, pim );
2140 vector<double> cpk0l;
2141 vector<double> cppip;
2142 vector<double> cppim;
2143 cpk0l.clear();
2144 pip.clear();
2145 pim.clear();
2146 cpk0l.push_back( -k0l[0] );
2147 cpk0l.push_back( -k0l[1] );
2148 cpk0l.push_back( -k0l[2] );
2149 cpk0l.push_back( k0l[3] );
2150 cppim.push_back( -piPlus[0] );
2151 cppim.push_back( -piPlus[1] );
2152 cppim.push_back( -piPlus[2] );
2153 cppim.push_back( piPlus[3] );
2154 cppip.push_back( -piMinus[0] );
2155 cppip.push_back( -piMinus[1] );
2156 cppip.push_back( -piMinus[2] );
2157 cppip.push_back( piMinus[3] );
2158 D0bar = tKLpipi.
Amp_PFT( cpk0l, cppip, cppim );
2159 }
2160
2161 if ( charm == 1 )
2162 {
2163
2164 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2165 double temp = std::arg( D0 ) - std::arg( D0bar );
2166 log << MSG::INFO << "D0 calculation " << sqrt( r2D0 ) << " " << temp << endmsg;
2167 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2168 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2169 deltaD0 = temp;
2170 deltaD0 = isKsPiPi ? deltaD0 : ( deltaD0 +
PI );
2171
2172 double cosd =
cos( deltaD0 );
2173 double sind =
sin( deltaD0 );
2174 if ( mpn_gen - mnm_gen > 0. )
2175 {
2179 }
2180 }
2181 else
2182 {
2183 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2184 double temp = std::arg( D0bar ) - std::arg( D0 );
2185 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2186 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2187 deltaD0 = temp;
2188 deltaD0 = isKsPiPi ? deltaD0 : ( deltaD0 +
PI );
2189
2190 double cosd =
cos( deltaD0 );
2191 double sind =
sin( deltaD0 );
2192 if ( mpn_gen - mnm_gen < 0. )
2193 {
2197 }
2198 }
2199 }
2200 else if ( decay_mode == k2Pip2Pim )
2201 {
2202
2204
2205 HepLorentzVector pip1_4pi = ( piPlus_4pi.at( 0 ) );
2206 HepLorentzVector pim1_4pi = ( piMinus_4pi.at( 0 ) );
2207 HepLorentzVector pip2_4pi = ( piPlus_4pi.at( 1 ) );
2208 HepLorentzVector pim2_4pi = ( piMinus_4pi.at( 1 ) );
2209 pip1_4pi.boost( -0.011, 0, 0 );
2210 pip2_4pi.boost( -0.011, 0, 0 );
2211 pim1_4pi.boost( -0.011, 0, 0 );
2212 pim2_4pi.boost( -0.011, 0, 0 );
2213 std::complex<double> D0, D0bar;
2214
2215
2216
2217
2218 std::vector<double> pip1;
2219 pip1.clear();
2220 pip1.push_back( pip1_4pi[0] );
2221 pip1.push_back( pip1_4pi[1] );
2222 pip1.push_back( pip1_4pi[2] );
2223 pip1.push_back( pip1_4pi[3] );
2224 std::vector<double> pim1;
2225 pim1.clear();
2226 pim1.push_back( pim1_4pi[0] );
2227 pim1.push_back( pim1_4pi[1] );
2228 pim1.push_back( pim1_4pi[2] );
2229 pim1.push_back( pim1_4pi[3] );
2230 std::vector<double> pip2;
2231 pip2.clear();
2232 pip2.push_back( pip2_4pi[0] );
2233 pip2.push_back( pip2_4pi[1] );
2234 pip2.push_back( pip2_4pi[2] );
2235 pip2.push_back( pip2_4pi[3] );
2236 std::vector<double> pim2;
2237 pim2.clear();
2238 pim2.push_back( pim2_4pi[0] );
2239 pim2.push_back( pim2_4pi[1] );
2240 pim2.push_back( pim2_4pi[2] );
2241 pim2.push_back( pim2_4pi[3] );
2242
2243 D0To2pip2pim t2pip2pim;
2245 D0 = t2pip2pim.
Amp( pip1, pim1, pip2, pim2 );
2246
2247
2248
2249
2250 std::vector<double> cppip1;
2251 cppip1.clear();
2252 cppip1.push_back( -pim1_4pi[0] );
2253 cppip1.push_back( -pim1_4pi[1] );
2254 cppip1.push_back( -pim1_4pi[2] );
2255 cppip1.push_back( pim1_4pi[3] );
2256 std::vector<double> cppim1;
2257 cppim1.clear();
2258 cppim1.push_back( -pip1_4pi[0] );
2259 cppim1.push_back( -pip1_4pi[1] );
2260 cppim1.push_back( -pip1_4pi[2] );
2261 cppim1.push_back( pip1_4pi[3] );
2262 std::vector<double> cppip2;
2263 cppip2.clear();
2264 cppip2.push_back( -pim2_4pi[0] );
2265 cppip2.push_back( -pim2_4pi[1] );
2266 cppip2.push_back( -pim2_4pi[2] );
2267 cppip2.push_back( pim2_4pi[3] );
2268 std::vector<double> cppim2;
2269 cppim2.clear();
2270 cppim2.push_back( -pip2_4pi[0] );
2271 cppim2.push_back( -pip2_4pi[1] );
2272 cppim2.push_back( -pip2_4pi[2] );
2273 cppim2.push_back( pip2_4pi[3] );
2274
2275 D0bar = t2pip2pim.
Amp( cppip1, cppim1, cppip2, cppim2 );
2276
2277 if ( charm == 1 )
2278 {
2279
2280 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2281 double temp = std::arg( D0 ) - std::arg( D0bar );
2282 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2283 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2284 deltaD0 = temp;
2285
2286 double cosd =
cos( deltaD0 );
2287 double sind =
sin( deltaD0 );
2288
2289
2293
2294 }
2295 else
2296 {
2297 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2298 double temp = std::arg( D0bar ) - std::arg( D0 );
2299 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2300 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2301 deltaD0 = temp;
2302
2303 double cosd =
cos( deltaD0 );
2304 double sind =
sin( deltaD0 );
2305
2306
2310
2311 }
2312 }
2313 else if ( decay_mode == kPipPim2Pi0 )
2314 {
2315
2317
2318 HepLorentzVector pip1_4pi = ( piPlus_4pi.at( 0 ) );
2319 HepLorentzVector pim1_4pi = ( piMinus_4pi.at( 0 ) );
2320 HepLorentzVector pi01_p4 = ( pi0_p4.at( 0 ) );
2321 HepLorentzVector pi02_p4 = ( pi0_p4.at( 1 ) );
2322 pip1_4pi.boost( -0.011, 0, 0 );
2323 pim1_4pi.boost( -0.011, 0, 0 );
2324 pi01_p4.boost( -0.011, 0, 0 );
2325 pi02_p4.boost( -0.011, 0, 0 );
2326 std::complex<double> D0, D0bar;
2327
2328
2329
2330
2331 std::vector<double> pip1;
2332 pip1.clear();
2333 pip1.push_back( pip1_4pi[0] );
2334 pip1.push_back( pip1_4pi[1] );
2335 pip1.push_back( pip1_4pi[2] );
2336 pip1.push_back( pip1_4pi[3] );
2337 std::vector<double> pim1;
2338 pim1.clear();
2339 pim1.push_back( pim1_4pi[0] );
2340 pim1.push_back( pim1_4pi[1] );
2341 pim1.push_back( pim1_4pi[2] );
2342 pim1.push_back( pim1_4pi[3] );
2343 std::vector<double> pi01;
2344 pi01.clear();
2345 pi01.push_back( pi01_p4[0] );
2346 pi01.push_back( pi01_p4[1] );
2347 pi01.push_back( pi01_p4[2] );
2348 pi01.push_back( pi01_p4[3] );
2349 std::vector<double> pi02;
2350 pi02.clear();
2351 pi02.push_back( pi02_p4[0] );
2352 pi02.push_back( pi02_p4[1] );
2353 pi02.push_back( pi02_p4[2] );
2354 pi02.push_back( pi02_p4[3] );
2355
2356 D0Topippim2pi0 tpippim2pi0;
2358 D0 = tpippim2pi0.
Amp( pip1, pim1, pi01, pi02 );
2359
2360
2361
2362
2363 std::vector<double> cppip1;
2364 cppip1.clear();
2365 cppip1.push_back( -pim1_4pi[0] );
2366 cppip1.push_back( -pim1_4pi[1] );
2367 cppip1.push_back( -pim1_4pi[2] );
2368 cppip1.push_back( pim1_4pi[3] );
2369 std::vector<double> cppim1;
2370 cppim1.clear();
2371 cppim1.push_back( -pip1_4pi[0] );
2372 cppim1.push_back( -pip1_4pi[1] );
2373 cppim1.push_back( -pip1_4pi[2] );
2374 cppim1.push_back( pip1_4pi[3] );
2375 std::vector<double> cppi01;
2376 cppi01.clear();
2377 cppi01.push_back( -pi01_p4[0] );
2378 cppi01.push_back( -pi01_p4[1] );
2379 cppi01.push_back( -pi01_p4[2] );
2380 cppi01.push_back( pi01_p4[3] );
2381 std::vector<double> cppi02;
2382 cppi02.clear();
2383 cppi02.push_back( -pi02_p4[0] );
2384 cppi02.push_back( -pi02_p4[1] );
2385 cppi02.push_back( -pi02_p4[2] );
2386 cppi02.push_back( pi02_p4[3] );
2387
2388 D0bar = tpippim2pi0.
Amp( cppip1, cppim1, cppi01, cppi02 );
2389
2390 if ( charm == 1 )
2391 {
2392
2393 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2394 double temp = std::arg( D0 ) - std::arg( D0bar );
2395 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2396 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2397 deltaD0 = temp;
2398
2399 double cosd =
cos( deltaD0 );
2400 double sind =
sin( deltaD0 );
2401
2402
2406
2407 }
2408 else
2409 {
2410 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2411 double temp = std::arg( D0bar ) - std::arg( D0 );
2412 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2413 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2414 deltaD0 = temp;
2415
2416 double cosd =
cos( deltaD0 );
2417 double sind =
sin( deltaD0 );
2418
2422 }
2423 }
2424 else if ( decay_mode == kK0PiPiPi0 )
2425 {
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439 HepLorentzVector pip_kspipipi0 = ( piPlus_4pi.at( 0 ) );
2440 HepLorentzVector pim_kspipipi0 = ( piMinus_4pi.at( 0 ) );
2441 HepLorentzVector k0_kspipipi0 = k0;
2442 HepLorentzVector pi0_kspipipi0 = ( pi0_p4.at( 0 ) );
2443 pip_kspipipi0.boost( -0.011, 0, 0 );
2444 pim_kspipipi0.boost( -0.011, 0, 0 );
2445 k0_kspipipi0.boost( -0.011, 0, 0 );
2446 pi0_kspipipi0.boost( -0.011, 0, 0 );
2447
2448 complex<double> D0, D0bar;
2449 vector<double> k0l;
2450 vector<double> pip;
2451 vector<double> pim;
2452 vector<double> pi0;
2453 k0l.clear();
2454 pip.clear();
2455 pim.clear();
2456 pi0.clear();
2457 k0l.push_back( k0_kspipipi0[0] );
2458 k0l.push_back( k0_kspipipi0[1] );
2459 k0l.push_back( k0_kspipipi0[2] );
2460 k0l.push_back( k0_kspipipi0[3] );
2461 pip.push_back( pip_kspipipi0[0] );
2462 pip.push_back( pip_kspipipi0[1] );
2463 pip.push_back( pip_kspipipi0[2] );
2464 pip.push_back( pip_kspipipi0[3] );
2465 pim.push_back( pim_kspipipi0[0] );
2466 pim.push_back( pim_kspipipi0[1] );
2467 pim.push_back( pim_kspipipi0[2] );
2468 pim.push_back( pim_kspipipi0[3] );
2469 pi0.push_back( pi0_kspipipi0[0] );
2470 pi0.push_back( pi0_kspipipi0[1] );
2471 pi0.push_back( pi0_kspipipi0[2] );
2472 pi0.push_back( pi0_kspipipi0[3] );
2473
2474 if ( isKsPiPiPi0 )
2475 {
2476 D0ToKSpipipi0 tKSpipipi0;
2478 D0 = tKSpipipi0.
Amp( k0l, pip, pim, pi0 );
2479
2480 vector<double> cpk0l;
2481 vector<double> cppip;
2482 vector<double> cppim;
2483 vector<double> cppi0;
2484 cpk0l.clear();
2485 cppip.clear();
2486 cppim.clear();
2487 cppi0.clear();
2488 cpk0l.push_back( -k0l[0] );
2489 cpk0l.push_back( -k0l[1] );
2490 cpk0l.push_back( -k0l[2] );
2491 cpk0l.push_back( k0l[3] );
2492 cppim.push_back( -pip[0] );
2493 cppim.push_back( -pip[1] );
2494 cppim.push_back( -pip[2] );
2495 cppim.push_back( pip[3] );
2496 cppip.push_back( -pim[0] );
2497 cppip.push_back( -pim[1] );
2498 cppip.push_back( -pim[2] );
2499 cppip.push_back( pim[3] );
2500 cppi0.push_back( -pi0[0] );
2501 cppi0.push_back( -pi0[1] );
2502 cppi0.push_back( -pi0[2] );
2503 cppi0.push_back( pi0[3] );
2504 D0bar = tKSpipipi0.
Amp( cpk0l, cppip, cppim, cppi0 );
2505 }
2506 else
2507 {
2508 D0ToKSpipipi0 tKSpipipi0;
2510 D0 = tKSpipipi0.
Amp( k0l, pip, pim, pi0 );
2511
2512 vector<double> cpk0l;
2513 vector<double> cppip;
2514 vector<double> cppim;
2515 vector<double> cppi0;
2516 cpk0l.clear();
2517 cppip.clear();
2518 cppim.clear();
2519 cppi0.clear();
2520 cpk0l.push_back( -k0l[0] );
2521 cpk0l.push_back( -k0l[1] );
2522 cpk0l.push_back( -k0l[2] );
2523 cpk0l.push_back( k0l[3] );
2524 cppim.push_back( -pip[0] );
2525 cppim.push_back( -pip[1] );
2526 cppim.push_back( -pip[2] );
2527 cppim.push_back( pip[3] );
2528 cppip.push_back( -pim[0] );
2529 cppip.push_back( -pim[1] );
2530 cppip.push_back( -pim[2] );
2531 cppip.push_back( pim[3] );
2532 cppi0.push_back( -pi0[0] );
2533 cppi0.push_back( -pi0[1] );
2534 cppi0.push_back( -pi0[2] );
2535 cppi0.push_back( pi0[3] );
2536 D0bar = tKSpipipi0.
Amp( cpk0l, cppip, cppim, cppi0 );
2537
2538
2539
2540
2541
2542
2543
2544
2545 }
2546
2547 if ( charm == 1 )
2548 {
2549
2550 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2551 double temp = std::arg( D0 ) - std::arg( D0bar );
2552 log << MSG::INFO << "D0 calculation " << sqrt( r2D0 ) << " " << temp << endmsg;
2553 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2554 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2555 deltaD0 = temp;
2556 deltaD0 = isKsPiPiPi0 ? ( deltaD0 +
PI ) : ( deltaD0 );
2557
2558 double cosd =
cos( deltaD0 );
2559 double sind =
sin( deltaD0 );
2560 if ( mpn_gen - mnm_gen > 0. )
2561 {
2565 }
2566 }
2567 else
2568 {
2569 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2570 double temp = std::arg( D0bar ) - std::arg( D0 );
2571 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2572 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2573 deltaD0 = temp;
2574 deltaD0 = isKsPiPiPi0 ? ( deltaD0 +
PI ) : ( deltaD0 );
2575
2576 double cosd =
cos( deltaD0 );
2577 double sind =
sin( deltaD0 );
2578 if ( mpn_gen - mnm_gen < 0. )
2579 {
2583 }
2584 }
2585 }
2586 else if ( decay_mode == kKKPiPi )
2587 {
2588
2590
2591 complex<double> D0, D0bar;
2592 vector<double> kp;
2593 vector<double> km;
2594 vector<double> pip;
2595 vector<double> pim;
2596 double pdau[16];
2597 pip.clear();
2598 pim.clear();
2599 kp.clear();
2600 km.clear();
2601
2602 HepLorentzVector pip_kkpipi = ( piPlus_4pi.at( 0 ) );
2603 HepLorentzVector pim_kkpipi = ( piMinus_4pi.at( 0 ) );
2604 HepLorentzVector kp_kkpipi = ( kPlus_kkpipi.at( 0 ) );
2605 HepLorentzVector km_kkpipi = ( kMinus_kkpipi.at( 0 ) );
2606
2607 pip.push_back( pip_kkpipi[0] );
2608 pip.push_back( pip_kkpipi[1] );
2609 pip.push_back( pip_kkpipi[2] );
2610 pip.push_back( pip_kkpipi[3] );
2611 pim.push_back( pim_kkpipi[0] );
2612 pim.push_back( pim_kkpipi[1] );
2613 pim.push_back( pim_kkpipi[2] );
2614 pim.push_back( pim_kkpipi[3] );
2615 kp.push_back( kp_kkpipi[0] );
2616 kp.push_back( kp_kkpipi[1] );
2617 kp.push_back( kp_kkpipi[2] );
2618 kp.push_back( kp_kkpipi[3] );
2619 km.push_back( km_kkpipi[0] );
2620 km.push_back( km_kkpipi[1] );
2621 km.push_back( km_kkpipi[2] );
2622 km.push_back( km_kkpipi[3] );
2623
2624 pdau[0] = kp_kkpipi[0];
2625 pdau[1] = kp_kkpipi[1];
2626 pdau[2] = kp_kkpipi[2];
2627 pdau[3] = kp_kkpipi[3];
2628 pdau[4] = km_kkpipi[0];
2629 pdau[5] = km_kkpipi[1];
2630 pdau[6] = km_kkpipi[2];
2631 pdau[7] = km_kkpipi[3];
2632 pdau[8] = pip_kkpipi[0];
2633 pdau[9] = pip_kkpipi[1];
2634 pdau[10] = pip_kkpipi[2];
2635 pdau[11] = pip_kkpipi[3];
2636 pdau[12] = pim_kkpipi[0];
2637 pdau[13] = pim_kkpipi[1];
2638 pdau[14] = pim_kkpipi[2];
2639 pdau[15] = pim_kkpipi[3];
2640
2641 D0ToKKpipi tKKpipi;
2643 D0 = tKKpipi.
AMP( pdau, 1 );
2644
2645 pdau[0] = -km_kkpipi[0];
2646 pdau[1] = -km_kkpipi[1];
2647 pdau[2] = -km_kkpipi[2];
2648 pdau[3] = km_kkpipi[3];
2649 pdau[4] = -kp_kkpipi[0];
2650 pdau[5] = -kp_kkpipi[1];
2651 pdau[6] = -kp_kkpipi[2];
2652 pdau[7] = kp_kkpipi[3];
2653 pdau[8] = -pim_kkpipi[0];
2654 pdau[9] = -pim_kkpipi[1];
2655 pdau[10] = -pim_kkpipi[2];
2656 pdau[11] = pim_kkpipi[3];
2657 pdau[12] = -pip_kkpipi[0];
2658 pdau[13] = -pip_kkpipi[1];
2659 pdau[14] = -pip_kkpipi[2];
2660 pdau[15] = pip_kkpipi[3];
2661 D0bar = tKKpipi.
AMP( pdau, 1 );
2662
2663 if ( charm == 1 )
2664 {
2665
2666 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2667 double temp = std::arg( D0 ) - std::arg( D0bar );
2668 log << MSG::INFO << "D0 calculation " << sqrt( r2D0 ) << " " << temp << endmsg;
2669 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2670 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2671 deltaD0 = temp;
2672 }
2673 else
2674 {
2675 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2676 double temp = std::arg( D0bar ) - std::arg( D0 );
2677 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2678 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2679 deltaD0 = temp;
2680 }
2681 }
2682 else if ( decay_mode == kK0KK )
2683 {
2685
2686 HepLorentzVector kPlus = ( kPlus_kkpipi.at( 0 ) );
2687 HepLorentzVector kMinus = ( kMinus_kkpipi.at( 0 ) );
2688 complex<double> D0, D0bar;
2689 vector<double> k0l;
2690 vector<double> kp;
2691 vector<double> km;
2692 k0l.clear();
2693 kp.clear();
2694 km.clear();
2695 k0l.push_back( k0[0] );
2696 k0l.push_back( k0[1] );
2697 k0l.push_back( k0[2] );
2698 k0l.push_back( k0[3] );
2699 kp.push_back( kPlus[0] );
2700 kp.push_back( kPlus[1] );
2701 kp.push_back( kPlus[2] );
2702 kp.push_back( kPlus[3] );
2703 km.push_back( kMinus[0] );
2704 km.push_back( kMinus[1] );
2705 km.push_back( kMinus[2] );
2706 km.push_back( kMinus[3] );
2707
2708 if ( isKsKK )
2709 {
2710
2711
2712 D0ToKSLKK tKSLKK;
2713 tKSLKK.
init( 310, 0 );
2714 D0 = tKSLKK.
Amp( k0l, kp, km, 310, 0 );
2715
2716 vector<double> cpk0l;
2717 vector<double> cpkp;
2718 vector<double> cpkm;
2719 cpk0l.clear();
2720 kp.clear();
2721 km.clear();
2722 cpk0l.push_back( -k0l[0] );
2723 cpk0l.push_back( -k0l[1] );
2724 cpk0l.push_back( -k0l[2] );
2725 cpk0l.push_back( k0l[3] );
2726 cpkm.push_back( -kPlus[0] );
2727 cpkm.push_back( -kPlus[1] );
2728 cpkm.push_back( -kPlus[2] );
2729 cpkm.push_back( kPlus[3] );
2730 cpkp.push_back( -kMinus[0] );
2731 cpkp.push_back( -kMinus[1] );
2732 cpkp.push_back( -kMinus[2] );
2733 cpkp.push_back( kMinus[3] );
2734
2735 D0bar = tKSLKK.
Amp( cpk0l, cpkp, cpkm, 310, 0 );
2736 }
2737 else
2738 {
2739
2740
2741 D0ToKSLKK tKSLKK;
2742 tKSLKK.
init( 130, 1 );
2743 D0 = tKSLKK.
Amp( k0l, kp, km, 130, 1 );
2744 vector<double> cpk0l;
2745 vector<double> cpkp;
2746 vector<double> cpkm;
2747 cpk0l.clear();
2748 kp.clear();
2749 km.clear();
2750 cpk0l.push_back( -k0l[0] );
2751 cpk0l.push_back( -k0l[1] );
2752 cpk0l.push_back( -k0l[2] );
2753 cpk0l.push_back( k0l[3] );
2754 cpkm.push_back( -kPlus[0] );
2755 cpkm.push_back( -kPlus[1] );
2756 cpkm.push_back( -kPlus[2] );
2757 cpkm.push_back( kPlus[3] );
2758 cpkp.push_back( -kMinus[0] );
2759 cpkp.push_back( -kMinus[1] );
2760 cpkp.push_back( -kMinus[2] );
2761 cpkp.push_back( kMinus[3] );
2762
2763 D0bar = tKSLKK.
Amp( cpk0l, cpkp, cpkm, 130, 1 );
2764 }
2765
2766 if ( charm == 1 )
2767 {
2768
2769 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2770 double temp = std::arg( D0 ) - std::arg( D0bar );
2771 log << MSG::INFO << "D0 calculation " << sqrt( r2D0 ) << " " << temp << endmsg;
2772 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2773 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2774 deltaD0 = temp;
2775 deltaD0 = isKsKK ? deltaD0 : ( deltaD0 +
PI );
2776 }
2777 else
2778 {
2779 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2780 double temp = std::arg( D0bar ) - std::arg( D0 );
2781 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2782 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2783 deltaD0 = temp;
2784 deltaD0 = isKsKK ? deltaD0 : ( deltaD0 +
PI );
2785 }
2786 }
2787 else if (
num[kLeptonPlus] == 1 )
2788 {
2789 decay_mode = kSLPlus;
2791
2792 r2D0 = 0.;
2793 deltaD0 = 0.;
2794 }
2795 else if (
num[kLeptonMinus] == 1 )
2796 {
2797 decay_mode = kSLMinus;
2799
2800 r2D0 = 0.;
2801 deltaD0 = 0.;
2802 }
2803
2804 else if ( nDaughters == 3 &&
num[kPiPlus] == 1 &&
num[kPiMinus] == 1 &&
num[kPi0] == 1 )
2805 {
2806
2807 if ( m_debug ) cout << "PiPiPi0 mode" << endl;
2808 decay_mode = kPipPimPi0;
2810
2811 HepLorentzVector pip1_4pi = ( piPlus_4pi.at( 0 ) );
2812 HepLorentzVector pim1_4pi = ( piMinus_4pi.at( 0 ) );
2813 HepLorentzVector pi01_p4 = ( pi0_p4.at( 0 ) );
2814 pip1_4pi.boost( -0.011, 0, 0 );
2815 pim1_4pi.boost( -0.011, 0, 0 );
2816 pi01_p4.boost( -0.011, 0, 0 );
2817 std::complex<double> D0, D0bar;
2818
2819
2820
2821
2822 std::vector<double> pip1;
2823 pip1.clear();
2824 pip1.push_back( pip1_4pi[0] );
2825 pip1.push_back( pip1_4pi[1] );
2826 pip1.push_back( pip1_4pi[2] );
2827 pip1.push_back( pip1_4pi[3] );
2828 std::vector<double> pim1;
2829 pim1.clear();
2830 pim1.push_back( pim1_4pi[0] );
2831 pim1.push_back( pim1_4pi[1] );
2832 pim1.push_back( pim1_4pi[2] );
2833 pim1.push_back( pim1_4pi[3] );
2834 std::vector<double> pi01;
2835 pi01.clear();
2836 pi01.push_back( pi01_p4[0] );
2837 pi01.push_back( pi01_p4[1] );
2838 pi01.push_back( pi01_p4[2] );
2839 pi01.push_back( pi01_p4[3] );
2840
2841 D0Topipipi0 tpipipi0;
2843 D0 = tpipipi0.
Amp( pip1, pim1, pi01 );
2844
2845
2846
2847
2848 std::vector<double> cppip1;
2849 cppip1.clear();
2850 cppip1.push_back( -pim1_4pi[0] );
2851 cppip1.push_back( -pim1_4pi[1] );
2852 cppip1.push_back( -pim1_4pi[2] );
2853 cppip1.push_back( pim1_4pi[3] );
2854 std::vector<double> cppim1;
2855 cppim1.clear();
2856 cppim1.push_back( -pip1_4pi[0] );
2857 cppim1.push_back( -pip1_4pi[1] );
2858 cppim1.push_back( -pip1_4pi[2] );
2859 cppim1.push_back( pip1_4pi[3] );
2860 std::vector<double> cppi01;
2861 cppi01.clear();
2862 cppi01.push_back( -pi01_p4[0] );
2863 cppi01.push_back( -pi01_p4[1] );
2864 cppi01.push_back( -pi01_p4[2] );
2865 cppi01.push_back( pi01_p4[3] );
2866
2867 D0bar = ( -1.0 ) * tpipipi0.
Amp( cppip1, cppim1, cppi01 );
2868
2869 if ( charm == 1 )
2870 {
2871
2872 r2D0 = std::norm( D0bar ) / std::norm( D0 );
2873 double temp = std::arg( D0 ) - std::arg( D0bar );
2874 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2875 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2876 deltaD0 = temp;
2877
2878 double cosd =
cos( deltaD0 );
2879 double sind =
sin( deltaD0 );
2880 }
2881 else
2882 {
2883 r2D0 = std::norm( D0 ) / std::norm( D0bar );
2884 double temp = std::arg( D0bar ) - std::arg( D0 );
2885 while ( temp < -TMath::Pi() ) { temp += 2.0 * TMath::Pi(); }
2886 while ( temp > TMath::Pi() ) { temp -= 2.0 * TMath::Pi(); }
2887 deltaD0 = temp;
2888
2889 double cosd =
cos( deltaD0 );
2890 double sind =
sin( deltaD0 );
2891 }
2892 if ( m_debug ) cout << "deltaD0=" << deltaD0 << endl;
2893 if ( m_debug ) cout << "r2D0=" << r2D0 << endl;
2894 }
2895
2896 else if ( ( nDaughters == 2 &&
2897 ( (
num[kPiPlus] == 1 &&
num[kPiMinus] == 1 ) || nUFP0 == 2 ||
2898 num[kNeutralScalar] == 2 || ( nUFP0 == 1 && nUFV0 == 1 ) ||
2899 (
num[kKPlus] == 1 &&
num[kKMinus] == 1 ) ||
num[kK0S] == 2 ||
2900 num[kK0L] == 2 || (
num[kK0L] == 1 && nUFP0 == 1 ) ||
2901 (
num[kK0S] == 1 &&
num[kNeutralScalar] == 1 ) ||
2902 (
num[kK0L] == 1 && nUFV0 == 1 ) ||
2903 (
num[kUFVPlus] == 1 &&
num[kPiMinus] == 1 ) ||
2904 (
num[kUFVMinus] == 1 &&
num[kPiPlus] == 1 ) ) ) ||
2905 ( nDaughters == 3 &&
2906 ( ( nCPPlusEig == 1 &&
num[kPi0] == 2 ) || (
num[kK0S] == 3 ) ||
2907 (
num[kK0S] == 1 &&
num[kK0L] == 2 ) ||
2908 (
num[kK0S] == 1 &&
num[kK0L] == 1 && nUFP0 == 1 ) ||
2909 (
num[kK0S] == 1 && nUFP0 == 2 ) ) ) ||
2910 ( nDaughters == 4 && (
num[kK0L] == 1 && nUFP0 == 3 ) ||
2911 ( (
num[kK0S] == 2 ||
num[kK0L] == 2 ) && nUFP0 == 2 ) ) )
2912 {
2913 decay_mode = kCPPlus;
2915
2916 r2D0 = 1.;
2917 deltaD0 = 0.;
2918 }
2919
2920 else if ( ( nDaughters == 2 && ( (
num[kK0S] == 1 && nUFP0 == 1 ) ||
2921 (
num[kK0L] == 1 &&
num[kNeutralScalar] == 1 ) ||
2922 (
num[kK0S] == 1 && nUFV0 == 1 ) ||
2923 (
num[kNeutralScalar] == 1 && nUFV0 == 1 ) ||
2924 ( nUFP0 == 1 &&
num[kNeutralScalar] == 1 ) ) ) ||
2925 ( nDaughters == 3 && ( ( nCPMinusEig == 3 &&
num[kPi0] == 2 ) ||
2926
2927 (
num[kPi0] == 3 ) || (
num[kK0L] == 3 ) ||
2928 (
num[kK0S] == 2 &&
num[kK0L] == 1 ) ||
2929 ( (
num[kK0S] == 2 ||
num[kK0L] == 2 ) && nUFP0 == 1 ) ||
2930 (
num[kK0L] == 1 && nUFP0 == 2 ) ) ) ||
2931 ( nDaughters == 4 && (
num[kK0S] == 1 &&
num[kPi0] == 3 ) ||
2932 ( (
num[kK0S] == 1 &&
num[kK0L] == 1 ) && nUFP0 == 2 ) ) )
2933 {
2934 decay_mode = kCPMinus;
2936
2937 r2D0 = 1.;
2939 }
2940 else if ( nStrange == nAntiStrange + 1 )
2941 {
2942 if ( m_debug ) cout << nDaughters << endl;
2943 if ( m_debug ) cout <<
num[kKMinus] << endl;
2944 if ( m_debug ) cout <<
num[kPiMinus] << endl;
2945 if ( m_debug ) cout <<
num[kPiPlus] << endl;
2946 if ( charm == 1 )
2947 {
2948 if ( (
num[kKMinus] == 1 &&
num[kPiPlus] == 2 &&
num[kPiMinus] == 1 ) &&
2949 nDaughters == 4 )
2950 {
2951 if ( m_debug ) cout << "True K-3Pi " << endl;
2952 decay_mode = kFlavoredCF_3;
2954
2955 complex<double> D0, D0bar;
2956 vector<double> kp;
2957 vector<double> pi1;
2959 vector<double> pi3;
2960 double pdau[16];
2961 pi1.clear();
2963 pi3.clear();
2964 kp.clear();
2965
2966 HepLorentzVector kp_kpipipi = ( kMinus_kkpipi.at( 0 ) );
2967 HepLorentzVector pi1_kpipipi = ( piPlus_4pi.at( 0 ) );
2968 HepLorentzVector pi2_kpipipi = ( piPlus_4pi.at( 1 ) );
2969 HepLorentzVector pi3_kpipipi = ( piMinus_4pi.at( 0 ) );
2970
2971 kp.push_back( kp_kpipipi[0] );
2972 kp.push_back( kp_kpipipi[1] );
2973 kp.push_back( kp_kpipipi[2] );
2974 kp.push_back( kp_kpipipi[3] );
2975 pi1.push_back( pi1_kpipipi[0] );
2976 pi1.push_back( pi1_kpipipi[1] );
2977 pi1.push_back( pi1_kpipipi[2] );
2978 pi1.push_back( pi1_kpipipi[3] );
2979 pi2.push_back( pi2_kpipipi[0] );
2980 pi2.push_back( pi2_kpipipi[1] );
2981 pi2.push_back( pi2_kpipipi[2] );
2982 pi2.push_back( pi2_kpipipi[3] );
2983 pi3.push_back( pi3_kpipipi[0] );
2984 pi3.push_back( pi3_kpipipi[1] );
2985 pi3.push_back( pi3_kpipipi[2] );
2986 pi3.push_back( pi3_kpipipi[3] );
2987
2988 pdau[0] = kp[0];
2989 pdau[1] = kp[1];
2990 pdau[2] = kp[2];
2991 pdau[3] = kp[3];
2992 pdau[4] = pi1[0];
2993 pdau[5] = pi1[1];
2994 pdau[6] = pi1[2];
2995 pdau[7] = pi1[3];
3000 pdau[12] = pi3[0];
3001 pdau[13] = pi3[1];
3002 pdau[14] = pi3[2];
3003 pdau[15] = pi3[3];
3004
3005 D0ToKpipipiLHCb tKpipipi;
3007 D0 = tKpipipi.
AMP( pdau, 1 );
3008
3009 D0TopiKpipi tpiKpipi;
3011 std::complex<double> dcs_offset =
3012 0.0601387 *
exp( std::complex<double>( 0, 1 ) * 1.04827 *
M_PI / 180. );
3013 D0bar = dcs_offset * tpiKpipi.
AMP( pdau, 1 );
3014 deltaD0 = ( std::arg( D0 * std::conj( D0bar ) ) + m_dCF_3 );
3015 r2D0 = std::norm( D0bar ) / std::norm( D0 );
3016 }
3017 else if ( (
num[kKMinus] == 1 &&
num[kPiPlus] == 1 &&
num[kPi0] == 1 ) &&
3018 nDaughters == 3 )
3019 {
3020 decay_mode = kFlavoredCF_1;
3022 r2D0 = pow( m_rCF_1, 2 );
3024 RD0 = m_RCF_1;
3025 }
3026 else
3027 {
3028
3029 if ( m_debug ) cout << "True K-Pi " << endl;
3030 decay_mode = kFlavoredCF_0;
3032 r2D0 = pow( m_rCF_0, 2 );
3034 RD0 = m_RCF_0;
3035 }
3036 }
3037 else
3038 {
3039 if ( (
num[kKMinus] == 1 &&
num[kPiPlus] == 2 &&
num[kPiMinus] == 1 ) &&
3040 nDaughters == 4 )
3041 {
3042 decay_mode = kFlavoredCF_3;
3044
3045 complex<double> D0, D0bar;
3046 vector<double> kp;
3047 vector<double> pi1;
3049 vector<double> pi3;
3050 double pdau[16];
3051 pi1.clear();
3053 pi3.clear();
3054 kp.clear();
3055
3056 HepLorentzVector kp_kpipipi = ( kMinus_kkpipi.at( 0 ) );
3057 HepLorentzVector pi1_kpipipi = ( piPlus_4pi.at( 0 ) );
3058 HepLorentzVector pi2_kpipipi = ( piPlus_4pi.at( 1 ) );
3059 HepLorentzVector pi3_kpipipi = ( piMinus_4pi.at( 0 ) );
3060
3061 kp.push_back( kp_kpipipi[0] );
3062 kp.push_back( kp_kpipipi[1] );
3063 kp.push_back( kp_kpipipi[2] );
3064 kp.push_back( kp_kpipipi[3] );
3065 pi1.push_back( pi1_kpipipi[0] );
3066 pi1.push_back( pi1_kpipipi[1] );
3067 pi1.push_back( pi1_kpipipi[2] );
3068 pi1.push_back( pi1_kpipipi[3] );
3069 pi2.push_back( pi2_kpipipi[0] );
3070 pi2.push_back( pi2_kpipipi[1] );
3071 pi2.push_back( pi2_kpipipi[2] );
3072 pi2.push_back( pi2_kpipipi[3] );
3073 pi3.push_back( pi3_kpipipi[0] );
3074 pi3.push_back( pi3_kpipipi[1] );
3075 pi3.push_back( pi3_kpipipi[2] );
3076 pi3.push_back( pi3_kpipipi[3] );
3077
3078 pdau[0] = kp[0];
3079 pdau[1] = kp[1];
3080 pdau[2] = kp[2];
3081 pdau[3] = kp[3];
3082 pdau[4] = pi1[0];
3083 pdau[5] = pi1[1];
3084 pdau[6] = pi1[2];
3085 pdau[7] = pi1[3];
3090 pdau[12] = pi3[0];
3091 pdau[13] = pi3[1];
3092 pdau[14] = pi3[2];
3093 pdau[15] = pi3[3];
3094
3095 D0ToKpipipiLHCb tKpipipi;
3097 D0 = tKpipipi.
AMP( pdau, 1 );
3098
3099 D0TopiKpipi tpiKpipi;
3101 std::complex<double> dcs_offset =
3102 0.0601387 *
exp( std::complex<double>( 0, 1 ) * 1.04827 *
M_PI / 180. );
3103 D0bar = dcs_offset * tpiKpipi.
AMP( pdau, 1 );
3104 deltaD0 = -( std::arg( D0 * std::conj( D0bar ) ) + m_dCF_3 );
3105 r2D0 = std::norm( D0 ) / std::norm( D0bar );
3106 }
3107 else if ( (
num[kKMinus] == 1 &&
num[kPiPlus] == 1 &&
num[kPi0] == 1 ) &&
3108 nDaughters == 3 )
3109 {
3110 decay_mode = kFlavoredCF_1;
3112 r2D0 = 1. / pow( m_rCF_1, 2 );
3114 RD0 = m_RCF_1;
3115 }
3116 else
3117 {
3118
3119 decay_mode = kFlavoredCF_0;
3121 r2D0 = 1. / pow( m_rCF_0, 2 );
3123 RD0 = m_RCF_0;
3124 }
3125 }
3126 }
3127 else if ( nAntiStrange == nStrange + 1 )
3128 {
3129 if ( charm == -1 )
3130 {
3131 if ( (
num[kKPlus] == 1 &&
num[kPiMinus] == 2 &&
num[kPiPlus] == 1 ) && nDaughters == 4 )
3132 {
3133 decay_mode = kFlavoredCFBar_3;
3135
3136 complex<double> D0, D0bar;
3137 vector<double> kp;
3138 vector<double> pi1;
3140 vector<double> pi3;
3141 double pdau[16];
3142 pi1.clear();
3144 pi3.clear();
3145 kp.clear();
3146
3147 HepLorentzVector kp_kpipipi = ( kPlus_kkpipi.at( 0 ) );
3148 HepLorentzVector pi1_kpipipi = ( piMinus_4pi.at( 0 ) );
3149 HepLorentzVector pi2_kpipipi = ( piMinus_4pi.at( 1 ) );
3150 HepLorentzVector pi3_kpipipi = ( piPlus_4pi.at( 0 ) );
3151
3152 kp.push_back( -kp_kpipipi[0] );
3153 kp.push_back( -kp_kpipipi[1] );
3154 kp.push_back( -kp_kpipipi[2] );
3155 kp.push_back( kp_kpipipi[3] );
3156 pi1.push_back( -pi1_kpipipi[0] );
3157 pi1.push_back( -pi1_kpipipi[1] );
3158 pi1.push_back( -pi1_kpipipi[2] );
3159 pi1.push_back( pi1_kpipipi[3] );
3160 pi2.push_back( -pi2_kpipipi[0] );
3161 pi2.push_back( -pi2_kpipipi[1] );
3162 pi2.push_back( -pi2_kpipipi[2] );
3163 pi2.push_back( pi2_kpipipi[3] );
3164 pi3.push_back( -pi3_kpipipi[0] );
3165 pi3.push_back( -pi3_kpipipi[1] );
3166 pi3.push_back( -pi3_kpipipi[2] );
3167 pi3.push_back( pi3_kpipipi[3] );
3168
3169 pdau[0] = kp[0];
3170 pdau[1] = kp[1];
3171 pdau[2] = kp[2];
3172 pdau[3] = kp[3];
3173 pdau[4] = pi1[0];
3174 pdau[5] = pi1[1];
3175 pdau[6] = pi1[2];
3176 pdau[7] = pi1[3];
3181 pdau[12] = pi3[0];
3182 pdau[13] = pi3[1];
3183 pdau[14] = pi3[2];
3184 pdau[15] = pi3[3];
3185
3186 D0ToKpipipiLHCb tKpipipi;
3188 D0 = tKpipipi.
AMP( pdau, 1 );
3189
3190 D0TopiKpipi tpiKpipi;
3192 std::complex<double> dcs_offset =
3193 0.0601387 *
exp( std::complex<double>( 0, 1 ) * 1.04827 *
M_PI / 180. );
3194 D0bar = dcs_offset * tpiKpipi.
AMP( pdau, 1 );
3195 deltaD0 = ( std::arg( D0 * std::conj( D0bar ) ) + m_dCF_3 );
3196 r2D0 = std::norm( D0bar ) / std::norm( D0 );
3197 }
3198 else if ( (
num[kKPlus] == 1 &&
num[kPiMinus] == 1 &&
num[kPi0] == 1 ) &&
3199 nDaughters == 3 )
3200 {
3201 decay_mode = kFlavoredCFBar_1;
3203 r2D0 = pow( m_rCF_1, 2 );
3205 RD0 = m_RCF_1;
3206 }
3207 else
3208 {
3209
3210 decay_mode = kFlavoredCFBar_0;
3212 r2D0 = pow( m_rCF_0, 2 );
3214 RD0 = m_RCF_0;
3215 }
3216 }
3217 else
3218 {
3219 if ( (
num[kKPlus] == 1 &&
num[kPiMinus] == 2 &&
num[kPiPlus] == 1 ) && nDaughters == 4 )
3220 {
3221 decay_mode = kFlavoredCFBar_3;
3223
3224 complex<double> D0, D0bar;
3225 vector<double> kp;
3226 vector<double> pi1;
3228 vector<double> pi3;
3229 double pdau[16];
3230 pi1.clear();
3232 pi3.clear();
3233 kp.clear();
3234
3235 HepLorentzVector kp_kpipipi = ( kPlus_kkpipi.at( 0 ) );
3236 HepLorentzVector pi1_kpipipi = ( piMinus_4pi.at( 0 ) );
3237 HepLorentzVector pi2_kpipipi = ( piMinus_4pi.at( 1 ) );
3238 HepLorentzVector pi3_kpipipi = ( piPlus_4pi.at( 0 ) );
3239
3240 kp.push_back( -kp_kpipipi[0] );
3241 kp.push_back( -kp_kpipipi[1] );
3242 kp.push_back( -kp_kpipipi[2] );
3243 kp.push_back( kp_kpipipi[3] );
3244 pi1.push_back( -pi1_kpipipi[0] );
3245 pi1.push_back( -pi1_kpipipi[1] );
3246 pi1.push_back( -pi1_kpipipi[2] );
3247 pi1.push_back( pi1_kpipipi[3] );
3248 pi2.push_back( -pi2_kpipipi[0] );
3249 pi2.push_back( -pi2_kpipipi[1] );
3250 pi2.push_back( -pi2_kpipipi[2] );
3251 pi2.push_back( pi2_kpipipi[3] );
3252 pi3.push_back( -pi3_kpipipi[0] );
3253 pi3.push_back( -pi3_kpipipi[1] );
3254 pi3.push_back( -pi3_kpipipi[2] );
3255 pi3.push_back( pi3_kpipipi[3] );
3256
3257 pdau[0] = kp[0];
3258 pdau[1] = kp[1];
3259 pdau[2] = kp[2];
3260 pdau[3] = kp[3];
3261 pdau[4] = pi1[0];
3262 pdau[5] = pi1[1];
3263 pdau[6] = pi1[2];
3264 pdau[7] = pi1[3];
3269 pdau[12] = pi3[0];
3270 pdau[13] = pi3[1];
3271 pdau[14] = pi3[2];
3272 pdau[15] = pi3[3];
3273
3274 D0ToKpipipiLHCb tKpipipi;
3276 D0 = tKpipipi.
AMP( pdau, 1 );
3277
3278 D0TopiKpipi tpiKpipi;
3280 std::complex<double> dcs_offset =
3281 0.0601387 *
exp( std::complex<double>( 0, 1 ) * 1.04827 *
M_PI / 180. );
3282 D0bar = dcs_offset * tpiKpipi.
AMP( pdau, 1 );
3283 deltaD0 = -( std::arg( D0 * std::conj( D0bar ) ) + m_dCF_3 );
3284 r2D0 = std::norm( D0 ) / std::norm( D0bar );
3285 }
3286 else if ( (
num[kKPlus] == 1 &&
num[kPiMinus] == 1 &&
num[kPi0] == 1 ) &&
3287 nDaughters == 3 )
3288 {
3289 decay_mode = kFlavoredCFBar_1;
3291 r2D0 = 1. / pow( m_rCF_1, 2 );
3293 RD0 = m_RCF_1;
3294 }
3295 else
3296 {
3297
3298 decay_mode = kFlavoredCFBar_0;
3300 r2D0 = 1. / pow( m_rCF_0, 2 );
3302 RD0 = m_RCF_0;
3303 }
3304 }
3305 }
3306 else if ( nStrange == nAntiStrange )
3307 {
3308 if ( (
num[kKPlus] > 0 && (
num[kKPlus] ==
num[kFVMinus] ||
3309 num[kKPlus] == nFV0Bar ) ) ||
3310 ( nK0 > 0 && nFV0 != nFV0Bar && nK0 == nFV0Bar ) ||
3311 (
num[kPiPlus] > 0 &&
num[kPiPlus] ==
num[kUFVMinus] ) )
3312 {
3313 decay_mode = kFlavoredCS;
3315
3316 if ( charm == 1 )
3317 {
3318 r2D0 = pow( m_rCS, 2 );
3320 }
3321 else
3322 {
3323 r2D0 = 1. / pow( m_rCS, 2 );
3325 }
3326 }
3327 else if ( (
num[kKMinus] > 0 &&
3328 (
num[kKMinus] ==
num[kFVPlus] ||
num[kKMinus] == nFV0 ) ) ||
3329 ( nK0 > 0 && nFV0 != nFV0Bar && nK0 == nFV0 ) ||
3330 (
num[kPiMinus] > 0 &&
num[kPiMinus] ==
num[kUFVPlus] ) )
3331 {
3332 decay_mode = kFlavoredCSBar;
3334
3335 if ( charm == -1 )
3336 {
3337 r2D0 = pow( m_rCS, 2 );
3339 }
3340 else
3341 {
3342 r2D0 = 1. / pow( m_rCS, 2 );
3344 }
3345 }
3346
3347
3348
3349
3350 else if ( ( nDaughters >= 3 &&
num[kPiPlus] ==
num[kPiMinus] &&
3351 num[kKPlus] ==
num[kKMinus] && nChargedPiK + nCPEig == nDaughters ) ||
3352 nUFV0 == nDaughters || (
num[kKStar0] > 0 &&
num[kKStar0] ==
num[kKStar0Bar] ) ||
3353 (
num[kK10] > 0 &&
num[kK10] ==
num[kK10Bar] ) ||
3354 (
num[kUFVPlus] == 1 &&
num[kUFVMinus] == 1 )
3355
3356 )
3357 {
3358 log << MSG::DEBUG << " [ Self-conjugate mixed-CP ]" << endmsg;
3359
3360 if ( RandFlat::shoot() > 0.5 )
3361 {
3362 if ( RandFlat::shoot() > 0.5 )
3363 {
3364 decay_mode = kCPPlus;
3366
3367 r2D0 = 1.;
3369 }
3370 else
3371 {
3372 decay_mode = kCPMinus;
3374
3375 r2D0 = 1.;
3376 deltaD0 = 0.;
3377 }
3378 }
3379 else
3380 {
3381
3382 if ( nK0 % 2 )
3383 {
3384
3386
3387 if ( charm == -1 ) { cutoff = 1. - cutoff; }
3388
3389 log << MSG::DEBUG << " [ cutoff = " << cutoff << " ]" << endmsg;
3390
3391 decay_mode = ( RandFlat::shoot() > cutoff ) ? kFlavoredCF_0 : kFlavoredCFBar_0;
3392
3393 if ( ( decay_mode == kFlavoredCF_0 && charm == 1 ) ||
3394 ( decay_mode == kFlavoredCFBar_0 && charm == -1 ) )
3395 {
3397
3398 r2D0 = sqrt( m_rCF_0 );
3400 }
3401 else
3402 {
3404
3405 r2D0 = 1. / sqrt( m_rCF_0 );
3407 }
3408 }
3409 else
3410 {
3411
3413
3414 if ( charm == -1 ) { cutoff = 1. - cutoff; }
3415
3416 log << MSG::DEBUG << " [ cutoff = " << cutoff << " ]" << endmsg;
3417
3418 decay_mode = ( RandFlat::shoot() > cutoff ) ? kFlavoredCS : kFlavoredCSBar;
3420
3421 if ( ( decay_mode == kFlavoredCS && charm == 1 ) ||
3422 ( decay_mode == kFlavoredCSBar && charm == -1 ) )
3423 {
3424 r2D0 = sqrt( m_rCS );
3426 }
3427 else
3428 {
3429 r2D0 = 1. / sqrt( m_rCS );
3431 }
3432 }
3433 }
3434 }
3435 }
3436
3437 if (
num[kUnknown] >= 1 )
3438 {
3439 cout << "decay mode " << decay_mode << endl;
3440 cout << "D #" << charm << endl;
3441 cout <<
"pi+: " <<
num[kPiPlus] << endl;
3442 cout <<
"pi-: " <<
num[kPiMinus] << endl;
3443 cout <<
"pi0: " <<
num[kPi0] << endl;
3444 cout <<
"eta: " <<
num[kEta] << endl;
3445 cout <<
"eta': " <<
num[kEtaPrime] << endl;
3446 cout <<
"f0/a0: " <<
num[kNeutralScalar] << endl;
3447 cout <<
"UFV+: " <<
num[kUFVPlus] << endl;
3448 cout <<
"UFV-: " <<
num[kUFVMinus] << endl;
3449 cout <<
"rho0: " <<
num[kRho0] << endl;
3450 cout <<
"omega: " <<
num[kOmega] << endl;
3451 cout <<
"phi: " <<
num[kPhi] << endl;
3452 cout <<
"K+: " <<
num[kKPlus] << endl;
3453 cout <<
"K-: " <<
num[kKMinus] << endl;
3454 cout <<
"K0S: " <<
num[kK0S] << endl;
3455 cout <<
"K0L: " <<
num[kK0L] << endl;
3456 cout <<
"FV+: " <<
num[kFVPlus] << endl;
3457 cout <<
"FV-: " <<
num[kFVMinus] << endl;
3458 cout <<
"K*0: " <<
num[kKStar0] << endl;
3459 cout <<
"K*0b: " <<
num[kKStar0Bar] << endl;
3460 cout <<
"K10: " <<
num[kK10] << endl;
3461 cout <<
"K10b: " <<
num[kK10Bar] << endl;
3462 cout <<
"l+: " <<
num[kLeptonPlus] << endl;
3463 cout <<
"l-: " <<
num[kLeptonMinus] << endl;
3464 cout <<
"nu: " <<
num[kNeutrino] << endl;
3465 cout <<
"gamma: " <<
num[kGamma] << endl;
3466 cout <<
"Unknown: " <<
num[25] << endl;
3467 }
3468
3469 d0_info[0] = decay_mode;
3470 d0_info[1] = r2D0;
3471 d0_info[2] = deltaD0;
3472 d0_info[3] = RD0;
3473 d0_info[4] = FCP;
3474 d0_info[5] = mnm_gen;
3475 d0_info[6] = mpn_gen;
3476 d0_info[7] = double( isKsPiPi );
3477 d0_info[8] = mpm_gen;
3478 return d0_info;
3479}
character *LEPTONflag integer iresonances real pi2
EvtComplex exp(const EvtComplex &c)
double m_PipPim2Pi0Numer2
double m_PipPim2Pi0Numer1
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations xmb DOUBLE PRECISION xcb DOUBLE PRECISION xmpi0
complex< double > Amp(vector< double > Pip1, vector< double > Pim1, vector< double > Pip2, vector< double > Pim2)
complex< double > AMP(double const *x0, const int &x1)
complex< double > Amp_PFT(vector< double > k0l, vector< double > pip, vector< double > pim)
void init(int Daug0Id, int Uspin)
complex< double > Amp(vector< double > k0l, vector< double > kp, vector< double > km, int Daug0Id, int Uspin)
complex< double > Amp_PFT(vector< double > k0l, vector< double > pip, vector< double > pim)
complex< double > Amp(vector< double > ks0, vector< double > pip, vector< double > pim, vector< double > pi0)
std::complex< double > AMP(const double *x0, const int &x1)
complex< double > AMP(double const *x0, const int &x1)
complex< double > Amp(vector< double > Pip, vector< double > Pim, vector< double > Pi0)
complex< double > Amp(vector< double > Pip, vector< double > Pim, vector< double > Pi01, vector< double > Pi02)
const McParticle & mother() const
access to the mother particle