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

imported still missing class PVectorRelBg

parent e41958df
No related branches found
No related tags found
No related merge requests found
//************************************************************************//
// //
// Copyright 2013 Bertram Kopf (bertram@ep1.rub.de) //
// Julian Pychy (julian@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 "PwaDynamics/PVectorRelBg.hh"
#include "PwaDynamics/PPole.hh"
#include "PwaDynamics/AbsPhaseSpace.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
#include "qft++/matrix/IdentityMatrix.hh"
#include "ErrLogger/ErrLogger.hh"
PVectorRelBg::PVectorRelBg(vector<std::shared_ptr<PPole> > Ppoles, vector<std::shared_ptr<AbsPhaseSpace> > phpVecs, unsigned int orderBg) :
PVectorRel(Ppoles, phpVecs)
,_orderBgP(orderBg)
{
_bgPTerms.resize(orderBg+1);
for(unsigned int i=0; i<=_orderBgP; ++i){
_bgPTerms.at(i).resize(_nOfChannels);
}
}
PVectorRelBg::PVectorRelBg(vector<std::shared_ptr<AbsPhaseSpace> > phpVecs, unsigned int orderBg) :
PVectorRel(phpVecs)
,_orderBgP(orderBg)
{
_bgPTerms.resize(orderBg);
for(unsigned int i=0; i<=_orderBgP; ++i){
_bgPTerms.at(i).resize(_nOfChannels);
}
}
PVectorRelBg::~PVectorRelBg(){
}
void PVectorRelBg::evalMatrix(const double mass, Spin OrbMom){
Matrix< complex<double> > thePVector(NumRows(), 1);
vector<std::shared_ptr<PPole> >::iterator it;
for (it =_Ppoles.begin(); it != _Ppoles.end(); ++it){
(*it)->evalMatrix(mass, OrbMom);
thePVector += *(*it);
}
for (int i=0; i<thePVector.NumRows(); ++i){
complex<double> currentBg(0.,0.);
for(unsigned int bgOrder=0; bgOrder<=_orderBgP; ++bgOrder) currentBg+=_bgPTerms.at(bgOrder).at(i)*pow(mass*mass,bgOrder);
this->operator()(i,0)=thePVector(i,0)+currentBg;
}
}
void PVectorRelBg::updateBgTerms(unsigned int order, unsigned int channel, double theVal){
if(order>_orderBgP){
Alert << "background parameter for order " << order << " not available!!!" << endmsg;
exit(0);
}
if(channel>_nOfChannels){
Alert << "channel id " << channel << " exceeds number of channels " << order << endmsg;
exit(0);
}
_bgPTerms.at(order).at(channel)=theVal;
}
//************************************************************************//
// //
// Copyright 2013 Bertram Kopf (bertram@ep1.rub.de) //
// Julian Pychy (julian@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/>. //
// //
//************************************************************************//
// PVectorRel class definition file. -*- C++ -*-
// Copyright 2010 Bertram Kopf
#pragma once
//_____________________________________________________________________________
// @file PVectorRel.h
//_____________________________________________________________________________
#include "PwaDynamics/PVectorRel.hh"
#include "qft++/topincludes/relativistic-quantum-mechanics.hh"
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
//_____________________________________________________________________________
//_____________________________________________________________________________
class PVectorRelBg : public PVectorRel {
public:
/// Constructor
PVectorRelBg(vector<std::shared_ptr<PPole> > Ppoles, vector<std::shared_ptr<AbsPhaseSpace> > phpVecs, unsigned int orderBg);
PVectorRelBg(vector<std::shared_ptr<AbsPhaseSpace> > phpVecs, unsigned int orderBg);
/// Destructor
virtual ~PVectorRelBg();
virtual void evalMatrix(const double mass, Spin OrbMom=0);
virtual void updateBgTerms(unsigned int order, unsigned int channel, double theVal);
protected:
unsigned int _orderBgP;
vector< vector<double> > _bgPTerms;
};
//_____________________________________________________________________________
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