Skip to content
Snippets Groups Projects
Commit a650f655 authored by Bertram Kopf's avatar Bertram Kopf
Browse files

added one specific parametrization for the sigma pole

parent be9189ed
No related branches found
No related tags found
No related merge requests found
alias install : install-bin install-lib ; alias install : install-bin install-lib ;
explicit install ; explicit install ;
install install-bin : BwShapeApp FlatteShapeApp TwoPolesApp PiPiSWaveApp PhpFactorApp LUTPlotApp install install-bin : BwShapeApp FlatteShapeApp TwoPolesApp PiPiSWaveApp PhpFactorApp LUTPlotApp SigmaParamShapeApp
: <location>$(TOP)/bin : <location>$(TOP)/bin
<install-dependencies>on <install-dependencies>on
<install-type>EXE <install-type>EXE
...@@ -115,3 +115,15 @@ exe LUTPlotApp : LUTPlotApp.cc LineShapes ...@@ -115,3 +115,15 @@ exe LUTPlotApp : LUTPlotApp.cc LineShapes
$(TOP)/qft++//qft++ $(TOP)/qft++//qft++
: ; : ;
exe SigmaParamShapeApp : SigmaParamShapeApp.cc LineShapes
$(TOP)/PwaDynamics//PwaDynamics
$(TOP)/Particle//Particle
$(TOP)/ConfigParser//ConfigParser
$(TOP)/PwaUtils//PwaUtils
$(TOP)/Event//Event
$(TOP)/FitParams//FitParams
$(TOP)/qft++Extension//qft++Extension
$(TOP)/ErrLogger//ErrLogger
$(TOP)/qft++//qft++
: ;
//************************************************************************//
// //
// Copyright 2024 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/>. //
// //
//************************************************************************//
#include <getopt.h>
#include <fstream>
#include <sstream>
#include <string>
#include "Examples/Tutorial/LineShapes/SigmaParamShape.hh"
#include "PwaDynamics/SigmaParameterization.hh"
#include "PwaDynamics/AbsPhaseSpace.hh"
#include "PwaDynamics/PhaseSpaceIsobar.hh"
#include "Utils/PawianConstants.hh"
#include "qft++Extension/PawianUtils.hh"
#include "TFile.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TGraph.h"
#include "TMath.h"
#include "ErrLogger/ErrLogger.hh"
SigmaParamShape::SigmaParamShape() :
_theTFile(0)
,_graphPhase(new TGraph())
,_graphIntensity(new TGraph())
,_graphArgand(new TGraph())
{
std::string rootFileName="./SigmaShape.root";
_theTFile=new TFile(rootFileName.c_str(),"recreate");
_graphPhase->SetName("grPhase");
_graphPhase->SetTitle("#sigma phase #pi #pi");
_graphIntensity->SetName("grIntensity");
_graphIntensity->SetTitle("#sigma intensity #pi #pi");
_graphArgand->SetName("grArgand");
_graphArgand->SetTitle("#sigma Argand #pi #pi");
int size=100;
double massMin=.3;
double massMax=1.2;
double stepSize=(massMax-massMin)/size;
// _histPhase= new TH1F("_histPhase","hist phase",size+1, massMin, massMax);
SigmaParameterization theSigmaParam;
int counter=0;
for (double mass=massMin; mass<massMax; mass+=stepSize){
++counter;
complex<double> currentAmp=theSigmaParam.calc(mass);
// _histPhase->Fill(std::arg(currentAmp)*180./TMath::Pi());
_graphPhase->SetPoint(counter, mass, std::arg(currentAmp)*180./TMath::Pi());
// std::complex<double> rhopipi=PawianQFT::phaseSpaceFacDefault(mass,PawianConstants::mPi, PawianConstants::mPi);
// std::complex<double> breapUpMom=PawianQFT::breakupMomQDefault(mass, PawianConstants::mPi, PawianConstants::mPi);
_graphIntensity->SetPoint(counter, mass, std::norm(currentAmp));
std::complex<double> Tmat=theSigmaParam.calcT(mass);
//_graphArgand->SetPoint(counter, sqrt(rhopipi.real())*Tmat.real(), sqrt(rhopipi.real())*Tmat.imag());
_graphArgand->SetPoint(counter, Tmat.real(), Tmat.imag());
}
}
SigmaParamShape::~SigmaParamShape()
{
_graphPhase->Write();
_graphIntensity->Write();
_graphArgand->Write();
_theTFile->Write();
_theTFile->Close();
}
//************************************************************************//
// //
// Copyright 2024 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/>. //
// //
//************************************************************************//
#pragma once
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cassert>
#include <memory>
#include "TROOT.h"
// #include <TSystem.h>
#include "qft++/topincludes/relativistic-quantum-mechanics.hh"
class TFile;
class TH1F;
class TH2F;
class TGraph;
class SigmaParamShape {
public:
// create/copy/destroy:
///Constructor
SigmaParamShape();
/** Destructor */
virtual ~SigmaParamShape();
// Getters:
protected:
private:
TFile* _theTFile;
// TH1F* _histPhase;
TGraph* _graphPhase;
TGraph* _graphIntensity;
TGraph* _graphArgand;
};
//************************************************************************//
// //
// Copyright 2024 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/>. //
// //
//************************************************************************//
#include <iostream>
#include <cstring>
#include <string>
#include <sstream>
#include <vector>
#include <map>
#include <memory>
#include "Examples/Tutorial/LineShapes/SigmaParamShape.hh"
#include "ErrLogger/ErrLogger.hh"
int main(int __argc,char *__argv[]) {
ErrLogger::instance().setThreshold(logging::log_level::DEBUG);
// if( __argc>1 && ( strcmp( __argv[1], "-help" ) == 0
// || strcmp( __argv[1], "--help" ) == 0 ) ) {
// InfoMsg << "\nThis is a test application for histogramming the line shape of an Voigtian\n"
// << "The switches are:\n\n"
// << "-mass (mass of the resonance;default 1.318)\n\n"
// << "-width (width of the resonance;default 0.1)\n\n"
// << "-sigma (resolution)\n\n"
// << endmsg;
// return 0;
// }
// double mass0=0.782;
// double gamma=0.00849;
// double sigma=0.01;
SigmaParamShape SigmaParamShape;
return 0;
}
//************************************************************************//
// //
// Copyright 2024 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/>. //
// //
//************************************************************************//
// Fixed parametrization for the sigma pole based on
// Phys. Lett B 598 (204) 149-158
#include "PwaDynamics/SigmaParameterization.hh"
#include "ErrLogger/ErrLogger.hh"
#include "Utils/PawianConstants.hh"
#include "qft++Extension/PawianUtils.hh"
//#include <complex>
//using std::complex;
SigmaParameterization::SigmaParameterization() :
_mPole(0.9264)
,_g4pi(0.0024)
,_b1(0.5843)
,_b2(1.6663)
,_a(1.082)
,_sAdler(PawianConstants::mPiSq/2.)
,_mPoleSqr(0.9264*0.9264)
,_g2piDenom(0.9264*0.9264-PawianConstants::mPiSq/2.)
,_rho2pi_mPole(PawianQFT::phaseSpaceFacDefault(0.9264,PawianConstants::mPi, PawianConstants::mPi))
,_rho4pi_mPole(php4pi(0.9264*0.9264))
{
}
SigmaParameterization::SigmaParameterization(double mPole, double g4pi, double b1, double b2, double a) :
_mPole(mPole)
,_g4pi(g4pi)
,_b1(b1)
,_b2(b2)
,_a(a)
,_sAdler(PawianConstants::mPiSq/2.)
,_mPoleSqr(mPole*mPole)
,_g2piDenom(mPole*mPole-PawianConstants::mPiSq/2.)
,_rho2pi_mPole(PawianQFT::phaseSpaceFacDefault(mPole,PawianConstants::mPi, PawianConstants::mPi))
,_rho4pi_mPole(php4pi(mPole*mPole))
{
}
SigmaParameterization::~SigmaParameterization(){
}
complex<double> SigmaParameterization::calc(double currentMass){
//complex<double> result(1.,0.);
double currentM2=currentMass*currentMass;
double fs=_b1+_b2*currentM2;
double g2pi=fs*(currentM2-_sAdler)/_g2piDenom*exp(-(currentM2-_mPoleSqr)/_a);
std::complex<double> rho2pi=PawianQFT::phaseSpaceFacDefault(currentMass,PawianConstants::mPi, PawianConstants::mPi);
std::complex<double> rho4pi=php4pi(currentM2);
std::complex<double> Gamma_tot=g2pi*rho2pi/_rho2pi_mPole+_g4pi*rho4pi/_rho4pi_mPole;
complex<double> result=1./(std::complex<double>(_mPoleSqr,0.)-std::complex<double>(currentM2,0.)-PawianConstants::i*_mPole*Gamma_tot);
return result;
}
std::complex<double> SigmaParameterization::php4pi(double currentMass2){
// if(currentMass2<16.*PawianConstants::mPiSq){
// Alert << "current mass^2 must be larger than 16*m_pi^2!!!\n current mass^2: " << currentMass2 <<"\n16*m_pi^2: " << 16.*PawianConstants::mPiSq << endmsg;
// exit(1);
// }
std::complex<double> result(0.,0.);
if(currentMass2<16.*PawianConstants::mPiSq) return result;
result=std::complex<double>(sqrt(1.-16.*PawianConstants::mPiSq/currentMass2)/(1.+exp(2.8-currentMass2)/3.5),0.);
return result;
}
complex<double> SigmaParameterization::calcT(double currentMass){
double currentM2=currentMass*currentMass;
double fs=_b1+_b2*currentM2;
double g2pi=fs*(currentM2-_sAdler)/_g2piDenom*exp(-(currentM2-_mPoleSqr)/_a);
std::complex<double> rho2pi=PawianQFT::phaseSpaceFacDefault(currentMass,PawianConstants::mPi, PawianConstants::mPi);
std::complex<double> rho4pi=php4pi(currentM2);
std::complex<double> Gamma_tot=g2pi*rho2pi/_rho2pi_mPole+_g4pi*rho4pi/_rho4pi_mPole;
complex<double> result=_mPole*Gamma_tot/(std::complex<double>(_mPoleSqr,0.)-std::complex<double>(currentM2,0.)-PawianConstants::i*_mPole*Gamma_tot);
return result;
}
//************************************************************************//
// //
// Copyright 2024 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/>. //
// //
//************************************************************************//
// SigmaParameterization class definition file. -*- C++ -*-
// Copyright 2024 Bertram Kopf
// Fixed parametrization for the sigma pole based on
// Phys. Lett B 598 (204) 149-158
#pragma once
#include <complex>
using std::complex;
//_____________________________________________________________________________
// @file SigmaParameterization.h
//_____________________________________________________________________________
class SigmaParameterization {
public:
/// Constructor
SigmaParameterization();
SigmaParameterization(double mPole, double g4pi, double b1, double b2, double a);
/// Destructor
~SigmaParameterization();
complex<double> calc(double currentMass);
complex<double> calcT(double currentMass);
protected:
std::complex<double> php4pi(double currentMass2);
double _mPole;
double _g4pi;
double _b1;
double _b2;
double _a;
const double _sAdler;
const double _mPoleSqr;
const double _g2piDenom;
const std::complex<double> _rho2pi_mPole;
const std::complex<double> _rho4pi_mPole;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment