From a207e4b9b5a3b40d30f81e6b74ff08cb4b5fec43 Mon Sep 17 00:00:00 2001 From: Bertram Kopf <bertram@ep1.rub.de> Date: Thu, 10 Apr 2025 16:54:55 +0200 Subject: [PATCH] added mathematica scripts for calculation Chew-Mandelstam LUTs for unstable decay particles --- .../CMs/InputParamsDoubleOmegaPhi.m | 69 ++++++++ .../CMs/InputParamsDoubleSigmaSigma.m | 66 ++++++++ .../Mathematica/CMs/InputParamsKstar892Pi.m | 58 +++++++ Scripts/Mathematica/CMs/InputParamsPi1300Pi.m | 60 +++++++ Scripts/Mathematica/CMs/InputParamsRho770Pi.m | 57 +++++++ Scripts/Mathematica/CMs/Integrals.m | 157 ++++++++++++++++++ Scripts/Mathematica/CMs/KinUtils.m | 114 +++++++++++++ .../CMs/LUTsDouble/CMDudekDoubleViaBBLUT.m | 88 ++++++++++ .../CMs/LUTsDouble/CMDudekDoubleViaBWLUT.m | 89 ++++++++++ .../CMs/LUTsDouble/CMDudekDoubleViaDudekLUT.m | 67 ++++++++ .../CMs/LUTsSingle/CMDudekViaBBLUT.m | 72 ++++++++ .../CMs/LUTsSingle/CMDudekViaBWLUT.m | 72 ++++++++ .../CMs/LUTsSingle/CMDudekViaDudekLUT.m | 74 +++++++++ .../ParamExtraction/PoleExtractDouble_CM.m | 90 ++++++++++ .../CMs/ParamExtraction/PoleExtract_CM.m | 71 ++++++++ .../CMs/SmearDouble/CMDudekDoubleUnstable.m | 34 ++++ .../CMs/SmearDouble/PlotSmearingDoubleBB.m | 41 +++++ .../CMs/SmearDouble/PlotSmearingDoubleBW.m | 45 +++++ .../CMs/SmearDouble/PlotSmearingDoubleDudek.m | 42 +++++ .../CMs/SmearSingle/CMBBUnstable.m | 56 +++++++ .../CMs/SmearSingle/CMDudekUnstable.m | 57 +++++++ .../CMs/SmearSingle/PlotSmearingBB.m | 62 +++++++ .../CMs/SmearSingle/PlotSmearingBW.m | 50 ++++++ .../CMs/SmearSingle/PlotSmearingDudek.m | 64 +++++++ 24 files changed, 1655 insertions(+) create mode 100644 Scripts/Mathematica/CMs/InputParamsDoubleOmegaPhi.m create mode 100644 Scripts/Mathematica/CMs/InputParamsDoubleSigmaSigma.m create mode 100644 Scripts/Mathematica/CMs/InputParamsKstar892Pi.m create mode 100644 Scripts/Mathematica/CMs/InputParamsPi1300Pi.m create mode 100644 Scripts/Mathematica/CMs/InputParamsRho770Pi.m create mode 100644 Scripts/Mathematica/CMs/Integrals.m create mode 100644 Scripts/Mathematica/CMs/KinUtils.m create mode 100644 Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBBLUT.m create mode 100644 Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBWLUT.m create mode 100644 Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaDudekLUT.m create mode 100644 Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBBLUT.m create mode 100644 Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBWLUT.m create mode 100644 Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaDudekLUT.m create mode 100644 Scripts/Mathematica/CMs/ParamExtraction/PoleExtractDouble_CM.m create mode 100644 Scripts/Mathematica/CMs/ParamExtraction/PoleExtract_CM.m create mode 100644 Scripts/Mathematica/CMs/SmearDouble/CMDudekDoubleUnstable.m create mode 100644 Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBB.m create mode 100644 Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBW.m create mode 100644 Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleDudek.m create mode 100644 Scripts/Mathematica/CMs/SmearSingle/CMBBUnstable.m create mode 100644 Scripts/Mathematica/CMs/SmearSingle/CMDudekUnstable.m create mode 100644 Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBB.m create mode 100644 Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBW.m create mode 100644 Scripts/Mathematica/CMs/SmearSingle/PlotSmearingDudek.m diff --git a/Scripts/Mathematica/CMs/InputParamsDoubleOmegaPhi.m b/Scripts/Mathematica/CMs/InputParamsDoubleOmegaPhi.m new file mode 100644 index 00000000..47f7bf36 --- /dev/null +++ b/Scripts/Mathematica/CMs/InputParamsDoubleOmegaPhi.m @@ -0,0 +1,69 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +(* Precision[12/10]; *) + +(* masses of the decay products *) +mpi:=0.13957; +mpi0:=0.1349768; + +mKp:=0.493677; +mKm:=0.493677; + +valImag := 0.00; + +(* Masses of the unstable resonance*) +MBW1:=0.78266; +MBW2:=1.019461; + +(*Widths of unstable resonance*) +GammaBW1:=0.00868; +GammaBW2:=0.004249; + +(* Masses of the decay particles *) +mDec11:=2 mpi; +mDec12:=mpi0; + +mDec21:=mKp; +mDec22:=mKm; + + +orbMomBW1 = 1; +orbMomBW2 = 1; + +f2PoleBB1 := 0.02275031992477571786636110849745549994; +m2PoleBB1 := 0.61238097137475222594286512618182349074; + +f2PoleBB2 := 0.67110752879828435237795796451561483007; +m2PoleBB2 := 1.05187282169299207701471933416642866246; + +f2PoleDudek1 := 0.0225865133682695854973481933446531801; +m2PoleDudek1 := 0.60741971755426057356854570645121124506; + +f2PoleDudek2 := 0.5596430172817635954719483569269226501; +m2PoleDudek2 := 1.03873920225401985970974681359698101954; + + +scalingFacBBSmearing:= 1. / 3.287318346901323; +scalingFacDudekSmearing:=1. / 3.8866039897112796; +scalingFacBWSmearing:= 1. / 0.7454720957505188; + diff --git a/Scripts/Mathematica/CMs/InputParamsDoubleSigmaSigma.m b/Scripts/Mathematica/CMs/InputParamsDoubleSigmaSigma.m new file mode 100644 index 00000000..d5d9b322 --- /dev/null +++ b/Scripts/Mathematica/CMs/InputParamsDoubleSigmaSigma.m @@ -0,0 +1,66 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +(* Precision[12/10]; *) + +(* masses of the decay products *) +mpi:=0.13957; +mpi0:=0.1349768; + +valImag := 0.00; + +(* Masses of the unstable resonance*) +MBW1:=0.475; +MBW2:=0.475; + +(*Widths of unstable resonance*) +GammaBW1:=0.550; +GammaBW2:=0.550; + +(* Masses of the decay particles *) +mDec11:=mpi; +mDec12:=mpi; + +mDec21:=mpi0; +mDec22:=mpi0; + + +orbMomBW1 = 0; +orbMomBW2 = 0; + +f2PoleBB1 := 0.53525549369732492365844555006462551715; +m2PoleBB1 := 0.02072166534172146370023379334682632026; + +f2PoleBB2 := 0.52537598909653228136099257201590318318; +m2PoleBB2 := 0.01303711145733995864252490339790527583; + +f2PoleDudek1 := 0.53525549368142545098154277118417779544; +m2PoleDudek1 := -0.32003256520041713522826607205769323751; + +f2PoleDudek2 := 0.52537598910691176848144924060406008584; +m2PoleDudek2 := -0.32142763113897706864276934163696308259; + + +scalingFacBBSmearing:= 1. / 1.1927781712395298; +scalingFacDudekSmearing:=1. / 1.1927781669814008; +scalingFacBWSmearing:= 1./ 1.1245037531410065; + diff --git a/Scripts/Mathematica/CMs/InputParamsKstar892Pi.m b/Scripts/Mathematica/CMs/InputParamsKstar892Pi.m new file mode 100644 index 00000000..c0dae739 --- /dev/null +++ b/Scripts/Mathematica/CMs/InputParamsKstar892Pi.m @@ -0,0 +1,58 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +(* Precision[12/10]; *) + +(* masses of the decay products *) +mK:=0.49761 +mpi:=0.13957; +mpi0:=0.1349768; + +valImag := 0.00; + +(**** parameters K*(892)0 pi0 -> (K- pi+) pi0 based on BB CM ****) +(* Mass of the unstable resonance*) +MBW:=0.8955; + +(*Width of unstable resonance*) +GammaBW:=0.0514; + +(* Masses of the decay particles *) +mDec1:=mK; +mDec2:=mpi; + +(* Mass of the decay recoil particle *) +mRec=mpi0; + +orbMomBW = 1; + + +f2PoleBB := 0.31133809685087025051448922330820490963; +m2PoleBB := 0.8238329330807920326010290727540961481; + +f2PoleDudek := 0.28759507372364078839913006596975963494; +m2PoleDudek := 0.78197101092932291878039859817243872515; + +scalingFacBBSmearing:= 1. / 1.105361310555928; +scalingFacDudekSmearing:=1. / 1.105361310555928; +scalingFacBWSmearing:= 1.; +(* scalingFacBWSmearing:= 1. / 0.08802808902167991; *) diff --git a/Scripts/Mathematica/CMs/InputParamsPi1300Pi.m b/Scripts/Mathematica/CMs/InputParamsPi1300Pi.m new file mode 100644 index 00000000..7cb33edd --- /dev/null +++ b/Scripts/Mathematica/CMs/InputParamsPi1300Pi.m @@ -0,0 +1,60 @@ +(* Copyright 2023 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +(* Precision[12/10]; *) + +(* masses of the decay products *) +mpi:=0.13957; +mpi0:=0.1349768; + +valImag := 0.00; + + + +(**** CM parameters for pi(1300)0 pi0 w/ pi(1300)0 -> (pi+ pi0) pi- ****) + +(* Mass of the unstable resonance*) +MBW:=1.300; + +(*Width of unstable resonance*) +GammaBW:=0.400; + +(* Masses of the decay particles *) +mDec1:=mpi+mpi0; +mDec2:=mpi; + +(* Mass of the decay recoil particle *) +mRec=mpi0; + +(* Momentum of the decay pi(1300) -> (pi+ pi0) pi- *) +orbMomBW = 0; + +f2PoleBB := 0.62562280402090093702928976311097271904; +m2PoleBB := 1.35581006495341548877557531562277255115; + +f2PoleDudek := 0.62562280398394301015550122301071064861; +m2PoleDudek := 0.97194445334541372054996097989249217186; + +scalingFacBBSmearing:= 1.; +scalingFacDudekSmearing:= 1.; +scalingFacBWSmearing:= 1. / 0.8336427551137701; +(* scalingFacBWSmearing:= 1. / 0.43630464471242414; *) diff --git a/Scripts/Mathematica/CMs/InputParamsRho770Pi.m b/Scripts/Mathematica/CMs/InputParamsRho770Pi.m new file mode 100644 index 00000000..11fbfc0f --- /dev/null +++ b/Scripts/Mathematica/CMs/InputParamsRho770Pi.m @@ -0,0 +1,57 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +(* Precision[12/10]; *) + +(* masses of the decay products *) +mpi:=0.13957; +mpi0:=0.1349768; + +valImag := 0.00; + +(**** parameters rho(700)+ pi- -> (pi+ pi0) pi- based on BB CM ****) +(* Mass of the unstable resonance*) +MBW:=0.77511; + +(*Width of unstable resonance*) +GammaBW:=0.1491; + +(* Masses of the decay particles *) +mDec1:=mpi+mpi0; +mDec2:=mpi; + +(* Mass of the decay recoil particle *) +mRec=mpi0; + +orbMomBW = 1; + + +f2PoleBB := 0.4207051462764408283327900815775571806; +m2PoleBB := 0.60605788493333204795276935269551359375; + +f2PoleDudek := 0.36966524147228358938226916212290303466; +m2PoleDudek := 0.52303101506895045228388878328917860629; + +scalingFacBBSmearing:= 1./ 1.0655618168689487; +scalingFacDudekSmearing:=1. / 1.1786373003089863; +scalingFacBWSmearing:= 1. / 0.7697543609311899; +(* scalingFacBWSmearing:= 1. / 0.08802808902167991; *) diff --git a/Scripts/Mathematica/CMs/Integrals.m b/Scripts/Mathematica/CMs/Integrals.m new file mode 100644 index 00000000..36d1ecc6 --- /dev/null +++ b/Scripts/Mathematica/CMs/Integrals.m @@ -0,0 +1,157 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +dsDudek[sprime_,m1_,m2_,f2R_,m2R_, s0_, orbL_] := m2R - sprime + f2R BarrierSimple[sprime, (m1+m2)^2, s0, orbL] cmDudek[sprime,m1,m2]; + +ImagSigmads2Dudek[sprime_,m1_,m2_,f2R_,m2R_, s0_, orbL_] := If[Abs[dsDudek[sprime,m1,m2,f2R,m2R, s0, orbL]]^2 < 10^30, - BarrierSimple[sprime, (m1+m2)^2, s0, orbL] Im[cmDudek[sprime, m1, m2]] / Abs[dsDudek[sprime,m1,m2,f2R,m2R, s0, orbL]]^2, 0.]; + +RNIntDudek[m1_, m2_, f2R_, m2R_, s0_, orbL_, scalingFac_, smax_] := + scalingFac /\[Pi] NIntegrate[ f2R ImagSigmads2Dudek[sb,m1,m2,f2R,m2R, s0, orbL] + , {sb, (m1 + m2)^2, smax}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + + +dsBB[sprime_,m1_,m2_,f2R_,m2R_, s0_, orbL_] := m2R - sprime - f2R BarrierSimple[sprime, (m1+m2)^2, s0, orbL] cmReid[sprime,m1,m2]; + +ImagSigmads2BB[sprime_,m1_,m2_,f2R_,m2R_, s0_, orbL_] := If[Abs[dsBB[sprime,m1,m2,f2R,m2R, s0, orbL]]^2 < 10^30, BarrierSimple[sprime, (m1+m2)^2, s0, orbL] Im[cmReid[sprime, m1, m2]] / Abs[dsBB[sprime,m1,m2,f2R,m2R, s0, orbL]]^2, 0.]; + +RNIntBB[m1_, m2_, f2R_, m2R_, s0_, orbL_, scalingFac_, smax_] := + scalingFac /\[Pi] NIntegrate[ f2R ImagSigmads2BB[sb,m1,m2,f2R, m2R, s0, orbL] + , {sb, (m1 + m2)^2, smax}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntBW[M0_, Width_, m1_, m2_, orbMom_, scalingFac_, smax_] := + scalingFac /\[Pi] NIntegrate[ rho[sb, m1, m2] Abs[BreitWignerBlattWRelNorm[sb, orbMom, M0, Width, m1, m2]]^2 + , {sb, (m1 + m2)^2, smax}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntDudekviaBB[s_][m1_, m2_, mRecoil_, f2R_, m2R_, s0_, orbL_, scalingFac_] := + scalingFac /\[Pi] NIntegrate[ f2R ImagSigmads2BB[sb,m1,m2,f2R, m2R, s0, orbL] cmDudek[s,Sqrt[sb], mRecoil] + , {sb, (m1 + m2)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntDudekviaDudek[s_][m1_, m2_, mRecoil_, f2R_, m2R_, s0_, orbL_, scalingFac_] := + scalingFac /\[Pi] NIntegrate[ f2R ImagSigmads2Dudek[sb,m1,m2,f2R, m2R, s0, orbL] cmDudek[s,Sqrt[sb], mRecoil] + , {sb, (m1 + m2)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntDudekviaBW[s_][m1_, m2_, mrec_, orbMom_, M0_, Width_, scale_] := + scale /\[Pi] NIntegrate[ rho[sb, m1, m2] Abs[BreitWignerBlattWRelNorm[sb, orbMom, M0, Width, m1, m2]]^2 cmDudek[s, Sqrt[sb], mrec] + , {sb, (m1 + m2)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntBBviaBB[s_][m1_, m2_, mRecoil_, f2R_, m2R_, s0_, orbL_, scalingFac_] := + scalingFac /\[Pi] NIntegrate[ f2R ImagSigmads2BB[sb,m1,m2,f2R, m2R, s0, orbL] cmReid[s,Sqrt[sb], mRecoil] + , {sb, (m1 + m2)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntBBviaDudek[s_][m1_, m2_, mRecoil_, f2R_, m2R_, s0_, orbL_, scalingFac_] := + scalingFac /\[Pi] NIntegrate[ f2R ImagSigmads2Dudek[sb,m1,m2,f2R, m2R, s0, orbL] cmReid[s,Sqrt[sb], mRecoil] + , {sb, (m1 + m2)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntBBviaBW[s_][m1_, m2_, mrec_, orbMom_, M0_, Width_, scale_] := + scale /\[Pi] NIntegrate[ rho[sb, m1, m2] Abs[BreitWignerBlattWRelNorm[sb, orbMom, M0, Width, m1, m2]]^2 cmReid[s, Sqrt[sb], mrec] + , {sb, (m1 + m2)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + + + + +RNIntDudekDouble[m11_, m12_, f2R1_, m2R1_, orbL1_, s01_, m21_, m22_, f2R2_, m2R2_, orbL2_, s02_, scalingFac_, smax_] := + scalingFac /\[Pi] NIntegrate[ f2R1 ImagSigmads2Dudek[sb1,m11,m12,f2R1,m2R1, s01, orbL1] + f2R2 ImagSigmads2Dudek[sb2,m21,m22,f2R2,m2R2, s02, orbL2] + , {sb1, (m11 + m12)^2, smax}, {sb2, (m21 + m22)^2, smax}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntDudekDoubleViaDudek[s_][m11_, m12_, f2R1_, m2R1_, orbL1_, s01_, m21_, m22_, f2R2_, m2R2_, orbL2_, s02_, scalingFac_] := + scalingFac /\[Pi] NIntegrate[ f2R1 ImagSigmads2Dudek[sb1,m11,m12,f2R1,m2R1, s01, orbL1] + f2R2 ImagSigmads2Dudek[sb2,m21,m22,f2R2,m2R2, s02, orbL2] + cmDudek[s, Sqrt[sb1], Sqrt[sb2]] + , {sb1, (m11 + m12)^2, Infinity}, {sb2, (m21 + m22)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + + + + +RNIntBBDouble[m11_, m12_, f2R1_, m2R1_, orbL1_, s01_, m21_, m22_, f2R2_, m2R2_, orbL2_, s02_, scalingFac_, smax_] := + scalingFac /\[Pi] NIntegrate[ f2R1 ImagSigmads2BB[sb1,m11,m12,f2R1,m2R1, s01, orbL1] + f2R2 ImagSigmads2BB[sb2,m21,m22,f2R2,m2R2, s02, orbL2] + , {sb1, (m11 + m12)^2, smax}, {sb2, (m21 + m22)^2, smax}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + + +RNIntDudekDoubleViaBB[s_][m11_, m12_, f2R1_, m2R1_, orbL1_, s01_, m21_, m22_, f2R2_, m2R2_, orbL2_, s02_, scalingFac_] := + scalingFac /\[Pi] NIntegrate[ f2R1 ImagSigmads2BB[sb1,m11,m12,f2R1,m2R1, s01, orbL1] + f2R2 ImagSigmads2BB[sb2,m21,m22,f2R2,m2R2, s02, orbL2] + cmDudek[s, Sqrt[sb1], Sqrt[sb2]] + , {sb1, (m11 + m12)^2, Infinity}, {sb2, (m21 + m22)^2, Infinity}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + +RNIntBWDouble[M01_, Width1_, m11_, m12_, orbMom1_, M02_, Width2_, m21_, m22_, orbMom2_,scalingFac_, smax_] := + scalingFac /\[Pi] NIntegrate[ rho[sb1, m11, m12] Abs[BreitWignerBlattWRelNorm[sb1, orbMom1, M01, Width1, m11, m12]]^2 + rho[sb2, m21, m22] Abs[BreitWignerBlattWRelNorm[sb2, orbMom2, M02, Width2, m21, m22]]^2 + , {sb1, (m11 + m12)^2, smax}, {sb2, (m21 + m22)^2, smax}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; + + +RNIntDudekDoubleViaBW[s_][M01_, Width1_, m11_, m12_, orbMom1_, M02_, Width2_, m21_, m22_, orbMom2_,scalingFac_] := + scalingFac /\[Pi] NIntegrate[ rho[sb1, m11, m12] Abs[BreitWignerBlattWRelNorm[sb1, orbMom1, M01, Width1, m11, m12]]^2 + rho[sb2, m21, m22] Abs[BreitWignerBlattWRelNorm[sb2, orbMom2, M02, Width2, m21, m22]]^2 + cmDudek[s, Sqrt[sb1], Sqrt[sb2]] + , {sb1, (m11 + m12)^2, 10000.}, {sb2, (m21 + m22)^2, 10000.}, + Method -> {"GaussKronrodRule", "SymbolicProcessing" -> 0}, + MaxRecursion -> 20, + AccuracyGoal -> 5]; diff --git a/Scripts/Mathematica/CMs/KinUtils.m b/Scripts/Mathematica/CMs/KinUtils.m new file mode 100644 index 00000000..8ef6e028 --- /dev/null +++ b/Scripts/Mathematica/CMs/KinUtils.m @@ -0,0 +1,114 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universität Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + This Mathematica-script is a colletion of functions which are needed to perform calculations with the K-matrix formalism. + *) + +(* phase space factor *) +rho[s_,m1_,m2_]:= Sqrt[1-(m1+m2)^2/s] Sqrt[1-(m1-m2)^2/s]; + +(* break up momentum *) +BreakupMomQDefaultFromS[s_, s1_, s2_]:= + Module[{result}, + result=rho[s, Sqrt[s1], Sqrt[s2]] Sqrt[s]/2.; + (* result = Sqrt[s*s + s1*s1 + s2*s2 - 2. * ( s*s1 + s*s2 + s1*s2)]/Sqrt[4.*s]; *) + result + ]; + +(* CM Function based on Dudek et al Phys. Rev. D91, 054008 (2015), Appendix B; subtraction constant at s=s_thresh CM(s_thresh)=0 *) +xi[s_,m1_,m2_]:=1-(m1+m2)^2/s; +cmDudekPre[s_,m_,u_] := rho[s,m,u]/\[Pi] Log[(xi[s,m,u]+rho[s,m,u])/(xi[s,m,u]-rho[s,m,u])]-xi[s,m,u]/\[Pi] (u-m)/(u+m) Log[u/m]; + +(* making sure to be in the 1 quadrant for s=real *) +cmDudek[s_,m_,u_] := cmDudekPre[s + I * If[Im[s] == 0, 10.^-8, 0.], m, u]; + + +(* CM Function based on Reid with subtraction constant at s=0 CM(0)=0 *) +(* cmReid[s_,m_,u_]:= - ( cmDudek[s,m,u] - 1/\[Pi] (1. + 2 m u / (u u - m m) Log[u/m] ) ); *) + +(* proteted case for u==m with L'Hospital *) +cmReid[s_,m_,u_]:= - ( cmDudek[s,m,u] - If[m != u, 1/\[Pi] (1. + 2 m u / (u u - m m) Log[u/m]), 2./\[Pi]] ); + +(* cmReid[s_,m_,u_]:= - ( cmDudek[s,m,u] - If[m != u, 1/\[Pi] (1. + 2 m u / (u u - m m) Log[u/m] ), 2./\[Pi] *) + + +(* Blatt-Weisskopf factors *) +BlattWeisskopf[l_, z_]:= + Module[{result}, + result = Which[l==0, 1.0 + 0. I, l==1, Sqrt[2. z / (z+1.)] + 0. I, l==2, Sqrt[13. z z / (z z + 3. z + 9.)]+ 0. I]; + result + ]; + +BWBarrier[l_, q_, q0_]:= + Module[{result}, + qR:=0.1973; + z:=(Norm[q] Norm[q])/(Norm[qR] Norm[qR]); + (* Print["z: ", z]; *) + z0:=(Norm[q0] Norm[q0])/(Norm[qR] Norm[qR]); + (* Print["z0: ", z0]; *) + result:= BlattWeisskopf[l,z]/BlattWeisskopf[l,z0]; + result + ]; + +(* elasticity *) +Sii[s_, m1_, m2_, Tii_] := 1. + 2. I Sqrt[Re[rho[s,m1,m2]]] Tii Sqrt[Re[rho[s,m1,m2]]]; + + +(* extract delta phase of an Argand plot *) +deltaArgand[mass_, m1_, m2_, Tii_]:= + Module[{delta}, + Tiirho :=rho[mass*mass,m1,m2] Tii; + ReE := Re[Tiirho]; + ImE := Im[Tiirho] - 0.5; + tmpdelta := ArcTan[Abs[ReE], ImE]; + delta := 0.5 tmpdelta 180./Pi + 45.0; + Which[ReE < 0.0, delta = 180.0 - delta]; + delta + ]; + +(* Breit-Wigner function w/ Blatt-Weisskopf factors *) +BreitWignerBlattWRel[sCurrent_, orbMom_, M0_, Width_, Ma_, Mb_]:= + Module[{BW}, + s0=M0 M0; + rho0=rho[s0, Ma, Mb]; + rhoCurrent=rho[sCurrent, Ma, Mb]; + momQ0=BreakupMomQDefaultFromS[s0, Ma Ma, Mb Mb]; + momQCurrent=BreakupMomQDefaultFromS[sCurrent, Ma Ma, Mb Mb]; + bwBarrierFac=If[orbMom==0, 1., BWBarrier[orbMom, momQCurrent, momQ0]]; + BW = M0 Width bwBarrierFac / (s0 - sCurrent - I (rhoCurrent/rho0) M0 Width bwBarrierFac bwBarrierFac); + BW + ]; + +BreitWignerBlattWRelNorm[sCurrent_, orbMom_, M0_, Width_, Ma_, Mb_]:= + Module[{BW}, + s0=M0 M0; + rho0=rho[s0, Ma, Mb]; + rhoCurrent=rho[sCurrent, Ma, Mb]; + momQ0=BreakupMomQDefaultFromS[s0, Ma Ma, Mb Mb]; + momQCurrent=BreakupMomQDefaultFromS[sCurrent, Ma Ma, Mb Mb]; + bwBarrierFac=If[orbMom==0, 1., BWBarrier[orbMom, momQCurrent, momQ0]]; + GammaM= Width (rhoCurrent/rho0) bwBarrierFac bwBarrierFac; + BW = Sqrt[M0 GammaM] / (s0 - sCurrent - I M0 GammaM); + BW + ]; + +(* sinplified barrier function based on s *) +BarrierSimple[s_, sthresh_, s0_, orbMom_]:= If[orbMom==0, 1., ( (s-sthresh) / (s+s0) )^orbMom ]; + diff --git a/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBBLUT.m b/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBBLUT.m new file mode 100644 index 00000000..0ec76c8c --- /dev/null +++ b/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBBLUT.m @@ -0,0 +1,88 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +(* +mrealstepsize:= 0.0005; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.002; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.002; + *) + +(* +mrealstepsize:= 0.001; +mrealmin:= 0.026; +mrealmax:= 3.6; + +mimagstepsize := 0.01; +numOfCores := 8; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.01; + *) + +mrealstepsize:= 0.01; +mrealmin:= 0.026; +mrealmax:= 3.6; + +mimagstepsize := 0.01; +numOfCores := 8; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.1; +mimagmax := 0.01; + +(* +{t1,b1} = + AbsoluteTiming[ + *) +For[ mreal=mrealmin, mreal<=mrealmax, mreal+=mrealstepsize, + Print["mreal: ", mreal]; + ofile=OpenAppend["./CMDudekDoubleViaBBLUT.dat"]; + For[ mimag = mimagmax, mimag >= mimagmin, mimag -= mimagstepsizeNoCtimes,{ + SetSharedVariable[list]; + list = {}; + ParallelDo[{ + currentCM = RNIntDudekDoubleViaBB[(mreal + I mimag) (mreal + I mimag)][mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing]; + AppendTo[list, {mimag, currentCM}]}, + {mimag, mimag, mimag-mimagstepsizeNoCtimes+mimagstepsize, -mimagstepsize} + ], + list = SortBy[list, First, Greater]; + WriteString[ofile, NumberForm[mreal,5], "\t", NumberForm[#[[1]], 5], "\t", NumberForm[Re[#[[2]]], 16], "\t", NumberForm[Im[#[[2]]], 16], "\n"] & /@ list; + }; + ] + Close[ofile]; + ]; + (* +]; + +Print["t1: ", t1,"\tb1: ", b1]; + *) diff --git a/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBWLUT.m b/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBWLUT.m new file mode 100644 index 00000000..642bab46 --- /dev/null +++ b/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaBWLUT.m @@ -0,0 +1,89 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +(* +mrealstepsize:= 0.0005; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.002; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.002; + *) + + +mrealstepsize:= 0.001; +mrealmin:= 0.026; +mrealmax:= 3.6; + +mimagstepsize := 0.01; +numOfCores := 8; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.01; + +(* +mrealstepsize:= 0.01; +mrealmin:= 0.026; +mrealmax:= 3.6; + +mimagstepsize := 0.01; +numOfCores := 8; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.1; +mimagmax := 0.01; + *) + +(* +{t1,b1} = + AbsoluteTiming[ + *) +For[ mreal=mrealmin, mreal<=mrealmax, mreal+=mrealstepsize, + Print["mreal: ", mreal]; + ofile=OpenAppend["./CMDudekDoubleViaBWLUT.dat"]; + For[ mimag = mimagmax, mimag >= mimagmin, mimag -= mimagstepsizeNoCtimes,{ + SetSharedVariable[list]; + list = {}; + ParallelDo[{ + currentCM = RNIntDudekDoubleViaBW[(mreal + I mimag) (mreal + I mimag)][MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing]; + AppendTo[list, {mimag, currentCM}]}, + {mimag, mimag, mimag-mimagstepsizeNoCtimes+mimagstepsize, -mimagstepsize} + ], + list = SortBy[list, First, Greater]; + WriteString[ofile, NumberForm[mreal,5], "\t", NumberForm[#[[1]], 5], "\t", NumberForm[Re[#[[2]]], 16], "\t", NumberForm[Im[#[[2]]], 16], "\n"] & /@ list; + }; + ] + Close[ofile]; + ]; + (* +]; + +Print["t1: ", t1,"\tb1: ", b1]; + *) diff --git a/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaDudekLUT.m b/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaDudekLUT.m new file mode 100644 index 00000000..2c745b6c --- /dev/null +++ b/Scripts/Mathematica/CMs/LUTsDouble/CMDudekDoubleViaDudekLUT.m @@ -0,0 +1,67 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsDoubleOmegaPhi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + + + +mrealstepsize:= 0.0005; +mrealmin:= 0.026; +mrealmax:= 2.8; + +mimagstepsize := 0.01; +numOfCores := 8; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.5; +mimagmax := 0.01; + +(* +{t1,b1} = + AbsoluteTiming[ + *) +For[ mreal=mrealmin, mreal<=mrealmax, mreal+=mrealstepsize, + Print["mreal: ", mreal]; + ofile=OpenAppend["./CMDudekDoubleViaDudekLUT.dat"]; + For[ mimag = mimagmax, mimag >= mimagmin, mimag -= mimagstepsizeNoCtimes,{ + SetSharedVariable[list]; + list = {}; + ParallelDo[{ + currentCM = RNIntDudekDoubleViaDudek[(mreal + I mimag) (mreal + I mimag)][mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing]; + AppendTo[list, {mimag, currentCM}]}, + {mimag, mimag, mimag-mimagstepsizeNoCtimes+mimagstepsize, -mimagstepsize} + ], + list = SortBy[list, First, Greater]; + WriteString[ofile, NumberForm[mreal,5], "\t", NumberForm[#[[1]], 5], "\t", NumberForm[Re[#[[2]]], 16], "\t", NumberForm[Im[#[[2]]], 16], "\n"] & /@ list; + }; + ] + Close[ofile]; + ]; + (* +]; + +Print["t1: ", t1,"\tb1: ", b1]; + *) diff --git a/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBBLUT.m b/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBBLUT.m new file mode 100644 index 00000000..bd195056 --- /dev/null +++ b/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBBLUT.m @@ -0,0 +1,72 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +(* +mrealstepsize:= 0.0005; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.001; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.005; + *) + +mrealstepsize:= 0.1; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.1; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.005; + +{t1,b1} = + AbsoluteTiming[ +For[ mreal=mrealmin, mreal<=mrealmax, mreal+=mrealstepsize, + Print["mreal: ", mreal]; + ofile=OpenAppend["./CMDudekViaBBLUT.dat"]; + For[ mimag = mimagmax, mimag >= mimagmin, mimag -= mimagstepsizeNoCtimes,{ + SetSharedVariable[list]; + list = {}; + ParallelDo[{ + currentCM = RNIntDudekviaBB[(mreal + I mimag) (mreal + I mimag)][mDec1, mDec2, mRec, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing]; + AppendTo[list, {mimag, currentCM}]}, + {mimag, mimag, mimag-mimagstepsizeNoCtimes+mimagstepsize, -mimagstepsize} + ], + list = SortBy[list, First, Greater]; + WriteString[ofile, NumberForm[mreal,5], "\t", NumberForm[#[[1]], 5], "\t", NumberForm[Re[#[[2]]], 16], "\t", NumberForm[Im[#[[2]]], 16], "\n"] & /@ list; + }; + ] + Close[ofile]; + ]; +]; + +Print["t1: ", t1,"\tb1: ", b1]; diff --git a/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBWLUT.m b/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBWLUT.m new file mode 100644 index 00000000..5e39192d --- /dev/null +++ b/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaBWLUT.m @@ -0,0 +1,72 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +(* +mrealstepsize:= 0.0005; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.001; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.005; + *) + +mrealstepsize:= 0.1; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.1; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.005; + +{t1,b1} = + AbsoluteTiming[ +For[ mreal=mrealmin, mreal<=mrealmax, mreal+=mrealstepsize, + Print["mreal: ", mreal]; + ofile=OpenAppend["./CMDudekViaBWLUT.dat"]; + For[ mimag = mimagmax, mimag >= mimagmin, mimag -= mimagstepsizeNoCtimes,{ + SetSharedVariable[list]; + list = {}; + ParallelDo[{ + currentCM = RNIntDudekviaBW[(mreal + I mimag) (mreal + I mimag)][mDec1, mDec2, mRec, orbMomBW, MBW, GammaBW, scalingFacBWSmearing]; + AppendTo[list, {mimag, currentCM}]}, + {mimag, mimag, mimag-mimagstepsizeNoCtimes+mimagstepsize, -mimagstepsize} + ], + list = SortBy[list, First, Greater]; + WriteString[ofile, NumberForm[mreal,5], "\t", NumberForm[#[[1]], 5], "\t", NumberForm[Re[#[[2]]], 16], "\t", NumberForm[Im[#[[2]]], 16], "\n"] & /@ list; + }; + ] + Close[ofile]; + ]; +]; + +Print["t1: ", t1,"\tb1: ", b1]; diff --git a/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaDudekLUT.m b/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaDudekLUT.m new file mode 100644 index 00000000..c61b3bf0 --- /dev/null +++ b/Scripts/Mathematica/CMs/LUTsSingle/CMDudekViaDudekLUT.m @@ -0,0 +1,74 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) + +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +mrealstepsize:= 0.0005; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.002; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.002; + +(* +mrealstepsize:= 0.1; +mrealmin:= 0.005; +mrealmax:= 3.5; + +mimagstepsize := 0.1; +numOfCores := 1; +mimagstepsizeNoCtimes := numOfCores mimagstepsize; +mimagmin := -0.6; +mimagmax := 0.005; + +{t1,b1} = + AbsoluteTiming[ + *) +For[ mreal=mrealmin, mreal<=mrealmax, mreal+=mrealstepsize, + Print["mreal: ", mreal]; + ofile=OpenAppend["./CMDudekViaDudekLUT.dat"]; + For[ mimag = mimagmax, mimag >= mimagmin, mimag -= mimagstepsizeNoCtimes,{ + SetSharedVariable[list]; + list = {}; + ParallelDo[{ + currentCM = RNIntDudekviaDudek[(mreal + I mimag) (mreal + I mimag)][mDec1, mDec2, mRec, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing]; + AppendTo[list, {mimag, currentCM}]}, + {mimag, mimag, mimag-mimagstepsizeNoCtimes+mimagstepsize, -mimagstepsize} + ], + list = SortBy[list, First, Greater]; + WriteString[ofile, NumberForm[mreal,5], "\t", NumberForm[#[[1]], 5], "\t", NumberForm[Re[#[[2]]], 16], "\t", NumberForm[Im[#[[2]]], 16], "\n"] & /@ list; + }; + ] + Close[ofile]; + ]; + (* +]; + +Print["t1: ", t1,"\tb1: ", b1]; + *) diff --git a/Scripts/Mathematica/CMs/ParamExtraction/PoleExtractDouble_CM.m b/Scripts/Mathematica/CMs/ParamExtraction/PoleExtractDouble_CM.m new file mode 100644 index 00000000..80924d55 --- /dev/null +++ b/Scripts/Mathematica/CMs/ParamExtraction/PoleExtractDouble_CM.m @@ -0,0 +1,90 @@ +(* Copyright 2020 + Meike Kuessner + mail: mkuessner@ep1.rub.de + Ruhr-Universität Bochum + + modified by Bertram Kopf (bertram@ep1.rub.de) + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************** +This Script computes the bare masses and bare coupling strengths of a resonance +by its physical mass, width and masses of the decay products in case of a +two-body decay. +The calculation is based on K-matrix descriptions with Chew-Mandelstam functions + as defined in Phys.Rev.D 19 (1979) 239 ("BB") and in + Dudek et al Phys. Rev. D91, 054008 (2015), Appendix B ("Dudek") +*********************************************************************** +*) + +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsDoubleOmegaPhi.m"}]] + +Print["MBW1: ", MBW1,"\tGammaBW1: ", GammaBW1,"\tmDec11: ", mDec11,"\tmDec12: ", mDec12,"\torbMomBW1: ", orbMomBW1]; +Print["MBW2: ", MBW2,"\tGammaBW2: ", GammaBW2,"\tmDec21: ", mDec21,"\tmDec22: ", mDec22,"\torbMomBW2: ", orbMomBW2]; + + +ds2BB[s_,m1_,m2_,fR2_,mR2_, s0_, orbL_]:= Abs[mR2 - s - fR2 BarrierSimple[s, (m1+m2)^2, s0, orbL] Conjugate[cmReid[s,m1,m2]]]^2; + + + +(* Determine Minimum and save *) +resultBB1=FindMinimum[SetPrecision[ds2BB[(MBW1 - I GammaBW1 /2.)^2,mDec11,mDec12,a,b, (MBW1 MBW1), orbMomBW1],30],{a,b},WorkingPrecision->20]; +{fsqBB1,msqBB1}={a,b}/.resultBB1[[2]]; +Print["m^2(BB1) = ", msqBB1, " ", "f^2(BB1) = ", fsqBB1]; +Print["m(BB1) = ", Sqrt[msqBB1], " ", "f(BB1) = ", Sqrt[fsqBB1]]; + +(* Plot Contour around Minimum and Save Plot, change plot style here if needed or comment to not save the plot*) +plotBB1=ContourPlot[Log[ds2BB[(MBW1-I 2 GammaBW1)^2,mDec11,mDec12,f,m, (MBW1 MBW1), orbMomBW1]],{f,fsqBB1-0.1,fsqBB1+0.1},{m,msqBB1-0.1,msqBB1+0.1},Contours->100,PlotLegends->Automatic,WorkingPrecision->30,ContourStyle->None, ColorFunction->"Rainbow", Epilog->({Black,PointSize[.03],Point[{fsqBB,msqBB}],Text["minimum BB 1",{fsqBB1,msqBB1*0.975}]}),FrameLabel->{f^2PoleBB1,m^2PoleBB1}]; + +Export["PoleBB1.pdf",plotBB1]; + +resultBB2=FindMinimum[SetPrecision[ds2BB[(MBW2 - I GammaBW2 /2.)^2,mDec21,mDec22,a,b, (MBW2 MBW2), orbMomBW2],30],{a,b},WorkingPrecision->20]; +{fsqBB2,msqBB2}={a,b}/.resultBB2[[2]]; +Print["m^2(BB2) = ", msqBB2, " ", "f^2(BB2) = ", fsqBB2]; +Print["m(BB2) = ", Sqrt[msqBB2], " ", "f(BB2) = ", Sqrt[fsqBB2]]; + +(* Plot Contour around Minimum and Save Plot, change plot style here if needed or comment to not save the plot*) +plotBB2=ContourPlot[Log[ds2BB[(MBW2-I 2 GammaBW2)^2,mDec21,mDec22,f,m, (MBW2 MBW2), orbMomBW2]],{f,fsqBB2-0.1,fsqBB2+0.1},{m,msqBB2-0.1,msqBB2+0.1},Contours->100,PlotLegends->Automatic,WorkingPrecision->30,ContourStyle->None, ColorFunction->"Rainbow", Epilog->({Black,PointSize[.03],Point[{fsqBB,msqBB}],Text["minimum BB 2",{fsqBB2,msqBB2*0.975}]}),FrameLabel->{f^2PoleBB2,m^2PoleBB2}]; + +Export["PoleBB2.pdf",plotBB2]; + + +(* Extraction for Dudek CM *) +ds2Dudek[s_,m1_,m2_,fR2_,mR2_, s0_, orbL_]:= Abs[mR2 - s + fR2 BarrierSimple[s, (m1+m2)^2, s0, orbL] Conjugate[cmDudek[s,m1,m2]]]^2; + +(* Determine Minimum and save *) +resultDudek1=FindMinimum[SetPrecision[ds2Dudek[(MBW1 - I GammaBW1 /2.)^2,mDec11,mDec12,a,b, (MBW1 MBW1), orbMomBW1],30],{a,b},WorkingPrecision->20]; +{fsqDudek1,msqDudek1}={a,b}/.resultDudek1[[2]]; +Print["m^2(Dudek1)= ", msqDudek1, " ", "f^2(Dudek1)= ", fsqDudek1]; +Print["m(Dudek1)= ", Sqrt[msqDudek1], " ", "f(Dudek1)= ", Sqrt[fsqDudek1]]; + +(* Plot Contour around Minimum and Save Plot, change plot style here if needed or comment to not save the plot*) +plotDudek1=ContourPlot[Log[ds2[(MBW1-I 2 GammaBW1)^2,mDec11,mDec12,f,m, (MBW1 MBW1), orbMomBW1]],{f,fsqDudek1-0.1,fsqDudek1+0.1},{m,msqDudek1-0.1,msqDudek1+0.1},Contours->100,PlotLegends->Automatic,WorkingPrecision->30,ContourStyle->None, ColorFunction->"Rainbow", Epilog->({Black,PointSize[.03],Point[{fsqDudek1,msqDudek1}],Text["minimum Dudek 1",{fsqDudek1,msqDudek1*0.975}]}),FrameLabel->{f^2,m^2}]; + +Export["PoleDudek1.pdf",plotDudek1]; + + +resultDudek2=FindMinimum[SetPrecision[ds2Dudek[(MBW2 - I GammaBW2 /2.)^2,mDec21,mDec22,a,b, (MBW2 MBW2), orbMomBW2],30],{a,b},WorkingPrecision->20]; +{fsqDudek2,msqDudek2}={a,b}/.resultDudek2[[2]]; +Print["m^2(Dudek2)= ", msqDudek2, " ", "f^2(Dudek2)= ", fsqDudek2]; +Print["m(Dudek2)= ", Sqrt[msqDudek2], " ", "f(Dudek2)= ", Sqrt[fsqDudek2]]; + +(* Plot Contour around Minimum and Save Plot, change plot style here if needed or comment to not save the plot*) +plotDudek2=ContourPlot[Log[ds2[(MBW2-I 2 GammaBW2)^2,mDec21,mDec22,f,m, (MBW2 MBW2), orbMomBW2]],{f,fsqDudek2-0.1,fsqDudek2+0.1},{m,msqDudek2-0.1,msqDudek2+0.1},Contours->100,PlotLegends->Automatic,WorkingPrecision->30,ContourStyle->None, ColorFunction->"Rainbow", Epilog->({Black,PointSize[.03],Point[{fsqDudek2,msqDudek2}],Text["minimum Dudek 2",{fsqDudek2,msqDudek2*0.975}]}),FrameLabel->{f^2,m^2}]; + +Export["PoleDudek2.pdf",plotDudek2]; diff --git a/Scripts/Mathematica/CMs/ParamExtraction/PoleExtract_CM.m b/Scripts/Mathematica/CMs/ParamExtraction/PoleExtract_CM.m new file mode 100644 index 00000000..936ab68e --- /dev/null +++ b/Scripts/Mathematica/CMs/ParamExtraction/PoleExtract_CM.m @@ -0,0 +1,71 @@ +(* Copyright 2020 + Meike Kuessner + mail: mkuessner@ep1.rub.de + Ruhr-Universität Bochum + + modified by Bertram Kopf (bertram@ep1.rub.de) + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************** +This Script computes the bare masses and bare coupling strengths of a resonance +by its physical mass, width and masses of the decay products in case of a +two-body decay. +The calculation is based on K-matrix descriptions with Chew-Mandelstam functions + as defined in Phys.Rev.D 19 (1979) 239 ("BB") and in + Dudek et al Phys. Rev. D91, 054008 (2015), Appendix B ("Dudek") +*********************************************************************** +*) + +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsPi1300Pi.m"}]] *) +(* Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] *) + +Get[FileNameJoin[{Directory[], "../InputParamsKstar892Pi.m"}]] + +Print["MBW: ", MBW,"\tGammaBW: ", GammaBW,"\tmDec1: ", mDec1,"\tmDec2: ", mDec2,"\torbL: ", orbMomBW]; + +(* Singularity of denominator |d(s)|^2 of dispersion relation defines pole position, see Basdevant & Berger, Phys.Rev.D 19 (1979) 239 eq(12) and eq(14) *) + +ds2BB[s_,m1_,m2_,fR2_,mR2_, s0_, orbL_]:= Abs[mR2 - s - fR2 BarrierSimple[s, (m1+m2)^2, s0, orbL] Conjugate[cmReid[s,m1,m2]]]^2; + + + +(* Determine Minimum and save *) +resultBB=FindMinimum[SetPrecision[ds2BB[(MBW - I GammaBW /2.)^2,mDec1,mDec2,a,b, (MBW MBW), orbMomBW],30],{a,b},WorkingPrecision->20]; +{fsqBB,msqBB}={a,b}/.resultBB[[2]]; +Print["m^2(BB) = ", msqBB, " ", "f^2(BB) = ", fsqBB]; +Print["m(BB) = ", Sqrt[msqBB], " ", "f(BB) = ", Sqrt[fsqBB]]; + +(* Plot Contour around Minimum and Save Plot, change plot style here if needed or comment to not save the plot*) +plotBB=ContourPlot[Log[ds2BB[(MBW-I 2 GammaBW)^2,mDec1,mDec2,f,m, (MBW MBW), orbMomBW]],{f,fsqBB-0.1,fsqBB+0.1},{m,msqBB-0.1,msqBB+0.1},Contours->100,PlotLegends->Automatic,WorkingPrecision->30,ContourStyle->None, ColorFunction->"Rainbow", Epilog->({Black,PointSize[.03],Point[{fsqBB,msqBB}],Text["minimum BB",{fsqBB,msqBB*0.975}]}),FrameLabel->{f^2PoleBB,m^2PoleBB}]; + +Export["PoleBB.pdf",plotBB]; + + +(* Extraction for Dudek CM *) +ds2Dudek[s_,m1_,m2_,fR2_,mR2_, s0_, orbL_]:= Abs[mR2 - s + fR2 BarrierSimple[s, (m1+m2)^2, s0, orbL] Conjugate[cmDudek[s,m1,m2]]]^2; + +(* Determine Minimum and save *) +resultDudek=FindMinimum[SetPrecision[ds2Dudek[(MBW - I GammaBW /2.)^2,mDec1,mDec2,a,b, (MBW MBW), orbMomBW],30],{a,b},WorkingPrecision->20]; +{fsqDudek,msqDudek}={a,b}/.resultDudek[[2]]; +Print["m^2(Dudek)= ", msqDudek, " ", "f^2(Dudek)= ", fsqDudek]; +Print["m(Dudek)= ", Sqrt[msqDudek], " ", "f(Dudek)= ", Sqrt[fsqDudek]]; + +(* Plot Contour around Minimum and Save Plot, change plot style here if needed or comment to not save the plot*) +plotDudek=ContourPlot[Log[ds2[(MBW-I 2 GammaBW)^2,mDec1,mDec2,f,m, (MBW MBW), orbMomBW]],{f,fsqDudek-0.1,fsqDudek+0.1},{m,msqDudek-0.1,msqDudek+0.1},Contours->100,PlotLegends->Automatic,WorkingPrecision->30,ContourStyle->None, ColorFunction->"Rainbow", Epilog->({Black,PointSize[.03],Point[{fsqDudek,msqDudek}],Text["minimum Dudek",{fsqDudek,msqDudek*0.975}]}),FrameLabel->{f^2,m^2}]; + +Export["PoleDudek.pdf",plotDudek]; diff --git a/Scripts/Mathematica/CMs/SmearDouble/CMDudekDoubleUnstable.m b/Scripts/Mathematica/CMs/SmearDouble/CMDudekDoubleUnstable.m new file mode 100644 index 00000000..c1428ddf --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearDouble/CMDudekDoubleUnstable.m @@ -0,0 +1,34 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +Print["RNIntDudekDoubleViaDudek[(1.0 - I 0.1) (1.0 - I 0.1)][mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing]: " , RNIntDudekDoubleViaDudek[(1.0 - I 0.1) (1.0 - I 0.1)][mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing]]; + +plotCMDudekDoubleviaDudekUnstable = ReImPlot[RNIntDudekDoubleViaDudek[(b + I valImag) (b + I valImag)][mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing], {b, 0., 2.5}, PlotStyle -> {Purple,{Purple,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM Dudek double via Dudek unstable}]; + +Export["CMDudekDoubleViaDudek.pdf", plotCMDudekDoubleviaDudekUnstable]; + diff --git a/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBB.m b/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBB.m new file mode 100644 index 00000000..9b373e43 --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBB.m @@ -0,0 +1,41 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsDoubleOmegaPhi.m"}]] +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotIntegrFuncBB3Mass1 = Plot[ {f2PoleBB1 ImagSigmads2BB[b b, mDec11, mDec12, f2PoleBB1, m2PoleBB1, (MBW1 MBW1), orbMomBW1]},{b, (mDec11+mDec12), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncBB3Mass1.pdf", plotIntegrFuncBB3Mass1]; + +plotIntegrFuncBB3Mass2 = Plot[ {f2PoleBB2 ImagSigmads2BB[b b, mDec21, mDec22, f2PoleBB2, m2PoleBB2, (MBW2 MBW2), orbMomBW2]},{b, (mDec21+mDec22), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncBB3Mass2.pdf", plotIntegrFuncBB3Mass2]; + +Print["RNIntBBDouble[mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing, 10.]: ", RNIntBBDouble[mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing, 10.]]; + +Print["RNIntBBDouble[mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing, 1000.]: ", RNIntBBDouble[mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing, 1000.]]; + +Print["RNIntBBDouble[mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing, 100000.]: ", RNIntBBDouble[mDec11, mDec12, f2PoleBB1, m2PoleBB1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleBB2, m2PoleBB2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacBBSmearing, 100000.]]; + + diff --git a/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBW.m b/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBW.m new file mode 100644 index 00000000..acc50f03 --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleBW.m @@ -0,0 +1,45 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsDoubleOmegaPhi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotIntegrFuncBW3Mass1 = Plot[ {rho[b b, mDec11, mDec12] Abs[BreitWignerBlattWRelNorm[b b, orbMomBW1, MBW1, GammaBW1, mDec11, mDec12]]^2},{b, (mDec11+mDec12), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncBW3Mass1.pdf", plotIntegrFuncBW3Mass1]; + +plotIntegrFuncBW3Mass2 = Plot[ {rho[b b, mDec21, mDec22] Abs[BreitWignerBlattWRelNorm[b b, orbMomBW2, MBW2, GammaBW2, mDec21, mDec22]]^2},{b, (mDec21+mDec22), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncBW3Mass2.pdf", plotIntegrFuncBW3Mass2]; + + +Print["RNIntBWDouble[MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing, 10.]: ", RNIntBWDouble[MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing, 10.]]; + + +Print["RNIntBWDouble[MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing, 1000.]: ", RNIntBWDouble[MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing, 1000.]]; + +Print["RNIntBWDouble[MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing, 100000.]: ", RNIntBWDouble[MBW1, GammaBW1, mDec11, mDec12, orbMomBW1, MBW2, GammaBW2, mDec21, mDec22, orbMomBW2, scalingFacBWSmearing, 100000.]]; + + + diff --git a/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleDudek.m b/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleDudek.m new file mode 100644 index 00000000..7a7df434 --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearDouble/PlotSmearingDoubleDudek.m @@ -0,0 +1,42 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsDoubleSigmaSigma.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsDoubleOmegaPhi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotIntegrFuncDudek3Mass1 = Plot[ {f2PoleDudek1 ImagSigmads2Dudek[b b, mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, (MBW1 MBW1), orbMomBW1]},{b, (mDec11+mDec12), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncDudek3Mass1.pdf", plotIntegrFuncDudek3Mass1]; + +plotIntegrFuncDudek3Mass2 = Plot[ {f2PoleDudek2 ImagSigmads2Dudek[b b, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, (MBW2 MBW2), orbMomBW2]},{b, (mDec21+mDec22), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncDudek3Mass2.pdf", plotIntegrFuncDudek3Mass2]; + +Print["RNIntDudekDouble[mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing, 10.]: ", RNIntDudekDouble[mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing, 10.]]; + +Print["RNIntDudekDouble[mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing, 1000.]: ", RNIntDudekDouble[mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing, 1000.]]; + +Print["RNIntDudekDouble[mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing, 100000.]: ", RNIntDudekDouble[mDec11, mDec12, f2PoleDudek1, m2PoleDudek1, orbMomBW1, (mDec11+mDec12)^2, mDec21, mDec22, f2PoleDudek2, m2PoleDudek2, orbMomBW2,(mDec21+mDec22)^2 , scalingFacDudekSmearing, 100000.]]; + + diff --git a/Scripts/Mathematica/CMs/SmearSingle/CMBBUnstable.m b/Scripts/Mathematica/CMs/SmearSingle/CMBBUnstable.m new file mode 100644 index 00000000..8dbca1cd --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearSingle/CMBBUnstable.m @@ -0,0 +1,56 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsPi1300Pi.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotCMBBStable = ReImPlot[cmReid[(b + I valImag) (b + I valImag), mRec, MBW], {b, 0., 4.0}, PlotStyle -> {Red,{Red,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM BB stable}]; +Export["CMBBStable.pdf", plotCMBBStable]; + +plotCMBBviaBBUnstable = ReImPlot[RNIntBBviaBB[(b + I valImag) (b + I valImag)][mDec1, mDec2, mRec, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing], {b, 0., 4.0}, PlotStyle -> {Blue,{Blue,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM BB via BB unstable}]; +Export["CMBBViaBBUnstable.pdf", plotCMBBviaBBUnstable]; + +plCMBBviaBBComp=Show[plotCMBBStable, plotCMBBviaBBUnstable]; +Export["CMBBViaBB_compare.pdf", plCMBBviaBBComp]; + + plotCMBBviaDudekUnstable = ReImPlot[RNIntBBviaDudek[(b + I valImag) (b + I valImag)][mDec1, mDec2, mRec, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing], {b, 0., 4.0}, PlotStyle -> {Purple,{Purple,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM BB via BB unstable}]; +Export["CMBBViaDudekUnstable.pdf", plotCMBBviaDudekUnstable]; + +plCMBBviaDudekComp=Show[plotCMBBStable, plotCMBBviaDudekUnstable]; +Export["CMBBViaDudek_compare.pdf", plCMBBviaDudekComp]; + +plCMBBviaDudekvsBBComp=Show[plotCMBBviaBBUnstable, plotCMBBviaDudekUnstable]; +Export["CMBBviaDudekvsBB_compare.pdf", plCMBBviaDudekvsBBComp]; + + +plotCMBBviaBWUnstable = ReImPlot[RNIntBBviaBW[(b + I valImag) (b + I valImag)][mDec1, mDec2, mRec, orbMomBW, MBW, GammaBW, scalingFacBWSmearing], {b, 0., 4.0}, PlotStyle -> {Purple,{Purple,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM BB via BB unstable}]; +Export["CMBBViaBWUnstable.pdf", plotCMBBviaBWUnstable]; + +plCMBBviaBWComp=Show[plotCMBBStable, plotCMBBviaBWUnstable]; +Export["CMBBViaBW_compare.pdf", plCMBBviaBWComp]; + +plCMBBviaDudekvsBWComp=Show[plotCMBBviaBWUnstable, plotCMBBviaDudekUnstable]; +Export["CMBBviaDudekvsBW_compare.pdf", plCMBBviaDudekvsBWComp]; diff --git a/Scripts/Mathematica/CMs/SmearSingle/CMDudekUnstable.m b/Scripts/Mathematica/CMs/SmearSingle/CMDudekUnstable.m new file mode 100644 index 00000000..49581635 --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearSingle/CMDudekUnstable.m @@ -0,0 +1,57 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsPi1300Pi.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotCMDudekStable = ReImPlot[cmDudek[(b + I valImag) (b + I valImag), mRec, MBW], {b, 0., 4.0}, PlotStyle -> {Red,{Red,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM Dudek stable}]; +Export["CMDudekStable.pdf", plotCMDudekStable]; + +plotCMDudekviaBBUnstable = ReImPlot[RNIntDudekviaBB[(b + I valImag) (b + I valImag)][mDec1, mDec2, mRec, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing], {b, 0., 4.0}, PlotStyle -> {Blue,{Blue,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM Dudek via BB unstable}]; +Export["CMDudekViaBBUnstable.pdf", plotCMDudekviaBBUnstable]; + +plCMDudekviaBBComp=Show[plotCMDudekStable, plotCMDudekviaBBUnstable]; +Export["CMDudekViaBB_compare.pdf", plCMDudekviaBBComp]; + + plotCMDudekviaDudekUnstable = ReImPlot[RNIntDudekviaDudek[(b + I valImag) (b + I valImag)][mDec1, mDec2, mRec, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing], {b, 0., 4.0}, PlotStyle -> {Purple,{Purple,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM Dudek via Dudek unstable}]; +Export["CMDudekViaDudekUnstable.pdf", plotCMDudekviaDudekUnstable]; + +plCMDudekviaDudekComp=Show[plotCMDudekStable, plotCMDudekviaDudekUnstable]; +Export["CMDudekViaDudek_compare.pdf", plCMDudekviaDudekComp]; + + +plCMDudekviaDudekvsBBComp=Show[plotCMDudekviaBBUnstable, plotCMDudekviaDudekUnstable]; +Export["CMDudekviaDudekvsBB_compare.pdf", plCMDudekviaDudekvsBBComp]; + + +plotCMDudekviaBWUnstable = ReImPlot[RNIntDudekviaBW[(b + I valImag) (b + I valImag)][mDec1, mDec2, mRec, orbMomBW, MBW, GammaBW, scalingFacBWSmearing], {b, 0., 4.0}, PlotStyle -> {Purple,{Purple,Dashed}}, PlotLegends->Automatic, AxesLabel->{Sqrt[s] [GeV/(c c)], CM Dudek via BW unstable}]; +Export["CMDudekViaBWUnstable.pdf", plotCMDudekviaBWUnstable]; + +plCMDudekviaBWComp=Show[plotCMDudekStable, plotCMDudekviaBWUnstable]; +Export["CMDudekViaBW_compare.pdf", plCMDudekviaBWComp]; + +plCMDudekviaDudekvsBWComp=Show[plotCMDudekviaBWUnstable, plotCMDudekviaDudekUnstable]; +Export["CMDudekviaDudekvsBW_compare.pdf", plCMDudekviaDudekvsBWComp]; diff --git a/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBB.m b/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBB.m new file mode 100644 index 00000000..4d44f9b1 --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBB.m @@ -0,0 +1,62 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsPi1300Pi.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] +(* Precision[1.2]; *) +(* Precision[12/10]; *) + + +plotIntegrFuncBB3Mass = Plot[ {f2PoleBB ImagSigmads2BB[b b, mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncBB3Mass.pdf", plotIntegrFuncBB3Mass]; + +plotIntegrFuncBB3 = Plot[ {f2PoleBB ImagSigmads2BB[b, mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 3.}, AxesLabel->{sprime [GeV/(c c)], integr} ]; +Export["IntegrFuncBB3.pdf", plotIntegrFuncBB3]; + +plotIntegrFuncBB10 = Plot[ {f2PoleBB ImagSigmads2BB[b, mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 10.}, AxesLabel->{sprime [GeV/(c c c c)], integr} ]; +Export["IntegrFuncBB10.pdf", plotIntegrFuncBB10]; + +plotIntegrFuncBB100 = Plot[ {f2PoleBB ImagSigmads2BB[b, mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 100.}, AxesLabel->{sprime [GeV GeV/(c c c c)], integr} ]; +Export["IntegrFuncBB100.pdf", plotIntegrFuncBB100]; + +plotIntegrFuncBB1000 = Plot[ {f2PoleBB ImagSigmads2BB[b, mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 1000.}, AxesLabel->{sprime [GeV GeV/(c c c c)], integr} ]; +Export["IntegrFuncBB1000.pdf", plotIntegrFuncBB1000]; + +plotIntegrFuncBB10000 = Plot[ {f2PoleBB ImagSigmads2BB[b, mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 10000.}, AxesLabel->{sprime [GeV GeV/(c c c c)], integr} ]; +Export["IntegrFuncBB10000.pdf", plotIntegrFuncBB10000]; + +Print["intergal s<3: ", RNIntBB[mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing, 3.]]; +Print["intergal s<100000: ", RNIntBB[mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing, 100000.]]; + +plotIntegralBBsmax10 = Plot[{RNIntBB[mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing, b]}, {b, 3., 10.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBBsmax10.pdf", plotIntegralBBsmax10]; + +plotIntegralBBsmax100 = Plot[{RNIntBB[mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing, b]}, {b, 3., 100.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBBsmax100.pdf", plotIntegralBBsmax100]; + +plotIntegralBBsmax1000 = Plot[{RNIntBB[mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing, b]}, {b, 3., 1000.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBBsmax1000.pdf", plotIntegralBBsmax1000]; + +plotIntegralBBsmax10000 = Plot[{RNIntBB[mDec1, mDec2, f2PoleBB, m2PoleBB, (MBW MBW), orbMomBW, scalingFacBBSmearing, b]}, {b, 3., 10000.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBBsmax10000.pdf", plotIntegralBBsmax10000]; + diff --git a/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBW.m b/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBW.m new file mode 100644 index 00000000..e33cc12d --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingBW.m @@ -0,0 +1,50 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsPi1300Pi.m"}]] *) +Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] + +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotIntegrFuncBW3Mass = Plot[ {scalingFacBWSmearing rho[b b, mDec1, mDec2] Abs[BreitWignerBlattWRelNorm[b b, orbMomBW, MBW, GammaBW, mDec1, mDec2]]^2},{b, (mDec1+mDec2), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncBW3Mass.pdf", plotIntegrFuncBW3Mass]; + + +Print["intergal s<3: ", RNIntBW[MBW, GammaBW, mDec1, mDec2, orbMomBW, scalingFacBWSmearing, 3.]]; +Print["intergal s<100000: ", RNIntBW[MBW, GammaBW, mDec1, mDec2, orbMomBW, scalingFacBWSmearing, 100000.]]; + + +plotIntegralBWsmax10 = Plot[{RNIntBW[MBW, GammaBW, mDec1, mDec2, orbMomBW, scalingFacBWSmearing, b]}, {b, 3., 10.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBWsmax10.pdf", plotIntegralBWsmax10]; + +plotIntegralBWsmax100 = Plot[{RNIntBW[MBW, GammaBW, mDec1, mDec2, orbMomBW, scalingFacBWSmearing,b]}, {b, 3., 100.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBWsmax100.pdf", plotIntegralBWsmax100]; + +plotIntegralBWsmax1000 = Plot[{RNIntBW[MBW, GammaBW, mDec1, mDec2, orbMomBW, scalingFacBWSmearing, b]}, {b, 3., 1000.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBWsmax1000.pdf", plotIntegralBWsmax1000]; + +plotIntegralBWsmax10000 = Plot[{RNIntBW[MBW, GammaBW, mDec1, mDec2, orbMomBW, scalingFacBWSmearing, b]}, {b, 3., 10000.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralBWsmax10000.pdf", plotIntegralBWsmax10000]; + + diff --git a/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingDudek.m b/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingDudek.m new file mode 100644 index 00000000..8dfcb65d --- /dev/null +++ b/Scripts/Mathematica/CMs/SmearSingle/PlotSmearingDudek.m @@ -0,0 +1,64 @@ +(* Copyright 2025 + Bertram Kopf (bertram@ep1.rub.de) + Ruhr-Universit<C3><A4>t Bochum + + This file is part of Pawian. + + Pawian is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Pawian is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Pawian. If not, see <http://www.gnu.org/licenses/> + +*********************************************************************************************** + *) +Get[FileNameJoin[{Directory[], "../KinUtils.m"}]] +Get[FileNameJoin[{Directory[], "../Integrals.m"}]] +(* Get[FileNameJoin[{Directory[], "../InputParamsPi1300Pi.m"}]] *) +(* Get[FileNameJoin[{Directory[], "../InputParamsRho770Pi.m"}]] *) + +Get[FileNameJoin[{Directory[], "../InputParamsKstar892Pi.m"}]] +(* Precision[1.2]; *) +(* Precision[12/10]; *) + +plotIntegrFuncDudek3Mass = Plot[ {f2PoleDudek ImagSigmads2Dudek[b b, mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2), 3.}, AxesLabel->{M [GeV/(c c)], integr} ]; +Export["IntegrFuncDudek3Mass.pdf", plotIntegrFuncDudek3Mass]; + + +plotIntegrFuncDudek3 = Plot[ {f2PoleDudek ImagSigmads2Dudek[b, mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 3.}, AxesLabel->{sprime [GeV/(c c)], integr} ]; +Export["IntegrFuncDudek3.pdf", plotIntegrFuncDudek3]; + +plotIntegrFuncDudek10 = Plot[ {f2PoleDudek ImagSigmads2Dudek[b, mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 10.}, AxesLabel->{sprime [GeV/(c c c c)], integr} ]; +Export["IntegrFuncDudek10.pdf", plotIntegrFuncDudek10]; + +plotIntegrFuncDudek100 = Plot[ {f2PoleDudek ImagSigmads2Dudek[b, mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 100.}, AxesLabel->{sprime [GeV GeV/(c c c c)], integr} ]; +Export["IntegrFuncDudek100.pdf", plotIntegrFuncDudek100]; + +plotIntegrFuncDudek1000 = Plot[ {f2PoleDudek ImagSigmads2Dudek[b, mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 1000.}, AxesLabel->{sprime [GeV GeV/(c c c c)], integr} ]; +Export["IntegrFuncDudek1000.pdf", plotIntegrFuncDudek1000]; + +plotIntegrFuncDudek10000 = Plot[ {f2PoleDudek ImagSigmads2Dudek[b, mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW]},{b, (mDec1+mDec2)^2, 10000.}, AxesLabel->{sprime [GeV GeV/(c c c c)], integr} ]; +Export["IntegrFuncDudek10000.pdf", plotIntegrFuncDudek10000]; + +Print["intergal s<3: ", RNIntDudek[mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing, 3.]]; +Print["intergal s<100000: ", RNIntDudek[mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing, 100000.]]; + + plotIntegralDudeksmax10 = Plot[{RNIntDudek[mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing, b]}, {b, 3., 10.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralDudeksmax10.pdf", plotIntegralDudeksmax10]; + +plotIntegralDudeksmax100 = Plot[{RNIntDudek[mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing, b]}, {b, 3., 100.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralDudeksmax100.pdf", plotIntegralDudeksmax100]; + +plotIntegralDudeksmax1000 = Plot[{RNIntDudek[mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing, b]}, {b, 3., 1000.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralDudeksmax1000.pdf", plotIntegralDudeksmax1000]; + +plotIntegralDudeksmax10000 = Plot[{RNIntDudek[mDec1, mDec2, f2PoleDudek, m2PoleDudek, (MBW MBW), orbMomBW, scalingFacDudekSmearing, b]}, {b, 3., 10000.}, AxesLabel->{smax [GeV GeV/(c c c c)], integral} ]; +Export["IntegralDudeksmax10000.pdf", plotIntegralDudeksmax10000]; + -- GitLab