Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Pawian
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
PWA
Pawian
Commits
4b81e65c
Commit
4b81e65c
authored
1 year ago
by
Orestis Afedulidis
Browse files
Options
Downloads
Patches
Plain Diff
building with cmake should run now on ep1 pcs if ROOT is sourced
parent
b972d5f5
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
CMakeLists.txt
+1
-1
1 addition, 1 deletion
CMakeLists.txt
PwaUtils/.nfs0000000003d2692b00000057
+0
-263
0 additions, 263 deletions
PwaUtils/.nfs0000000003d2692b00000057
buildallCmake
+1
-1
1 addition, 1 deletion
buildallCmake
with
2 additions
and
265 deletions
CMakeLists.txt
+
1
−
1
View file @
4b81e65c
cmake_minimum_required
(
VERSION 3.2
7
)
cmake_minimum_required
(
VERSION 3.2
0
)
project
(
Pawian
)
project
(
Pawian
)
set
(
CXX_STANDARD 17
)
set
(
CXX_STANDARD 17
)
...
...
This diff is collapsed.
Click to expand it.
PwaUtils/.nfs0000000003d2692b00000057
deleted
100644 → 0
+
0
−
263
View file @
b972d5f5
//************************************************************************//
// //
// 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/>. //
// //
//************************************************************************//
// TensorDecAmps class definition file. -*- C++ -*-
// Copyright 2012 Bertram Kopf
#include <getopt.h>
#include <fstream>
#include <string>
#include <mutex>
#include "PwaUtils/TensorDecAmps.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
#include "PwaUtils/DataUtils.hh"
#include "PwaUtils/IsobarTensorDecay.hh"
#include "Particle/Particle.hh"
#include "ErrLogger/ErrLogger.hh"
TensorDecAmps::TensorDecAmps(std::shared_ptr<IsobarTensorDecay> theDec, ChannelID channelID) :
AbsXdecAmp(theDec, channelID)
,_LSs(theDec->LSAmps())
,_factorMag(1.)
{
initialize();
if(_LSs.size()>0) _factorMag/=sqrt(_LSs.size());
}
TensorDecAmps::TensorDecAmps(std::shared_ptr<AbsDecay> theDec, ChannelID channelID) :
AbsXdecAmp(theDec, channelID)
,_factorMag(1.)
{
initialize();
if(_LSs.size()>0) _factorMag/=sqrt(_LSs.size());
}
TensorDecAmps::~TensorDecAmps()
{
}
complex<double> TensorDecAmps::XdecPartAmp(const Spin& lamX, Spin& lamDec, short fixDaughterNr, EvtData* theData, Spin& lamFs,AbsXdecAmp* grandmaAmp){
Spin lam1Min=-_Jdaughter1;
Spin lam1Max= _Jdaughter1;
Spin lam2Min=-_Jdaughter2;
Spin lam2Max=_Jdaughter2;
if(fixDaughterNr == 1){
lam1Min = lam1Max = lamDec;
}
else if(fixDaughterNr == 2){
lam2Min = lam2Max = lamDec;
}
else{
Alert << "Invalid fixDaughterNr in XdecPartAmp." << endmsg;
}
if(_enabledlamFsDaughter1){
lam1Min=lamFs;
lam1Max=lamFs;
}
else if(_enabledlamFsDaughter2){
lam2Min=lamFs;
lam2Max=lamFs;
}
complex<double> result=lsLoop(grandmaAmp, lamX, theData, lam1Min, lam1Max, lam2Min, lam2Max, false);
return result;
}
complex<double> TensorDecAmps::XdecAmp(const Spin& lamX, EvtData* theData, AbsXdecAmp* grandmaAmp){
complex<double> result(0.,0.);
if( fabs(lamX) > _JPCPtr->J) return result;
short currentSpinIndex=FunctionUtils::spin1IdIndex(_projId,lamX);
if (!_recalculate){
return _cachedAmpIdMap.at(theData->evtNo).at(_absDyn->grandMaId(grandmaAmp)).at(currentSpinIndex);
}
result=lsLoop(grandmaAmp, lamX, theData, _lam1MinProj,
_lam1MaxProj,
_lam2MinProj,
_lam2MaxProj, true);
if ( _cacheAmps){
// _cachedAmpMap[evtNo][_absDyn->grandMaKey(grandmaAmp)][currentSpinIndex]=result;
_cachedAmpIdMap[theData->evtNo][_absDyn->grandMaId(grandmaAmp)][currentSpinIndex]=result;
}
return result;
}
complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData* theData, Spin lam1Min,
Spin lam1Max, Spin lam2Min, Spin lam2Max, bool withDecs) {
complex<double> result(0.,0.);
map<unsigned short, map<Id3StringType, complex<double> > >& currentLS3SpinMap=theData->ComplexLS3Spin.at(_decay->nameId());
std::vector< std::shared_ptr<const LScomb> >::iterator it;
for (it=_LSs.begin(); it!=_LSs.end(); ++it){
map<Id3StringType, complex<double> >& current3SpinMap = currentLS3SpinMap.at((*it)->idnumberLS);
complex<double> theMagExpi=_currentParamMagExpi.at(*it);
complex<double> tmpResult(0.,0.);
for(Spin lambda1=lam1Min; lambda1<=lam1Max; ++lambda1){
for(Spin lambda2=lam2Min; lambda2<=lam2Max; ++lambda2){
Id3StringType IdLamXLam1Lam2=FunctionUtils::spin3Index(lamX, lambda1, lambda2);
complex<double> amp = theMagExpi*current3SpinMap.at(IdLamXLam1Lam2);
if(withDecs) amp *=daughterAmp(lambda1, lambda2, theData);
tmpResult+=amp;
}
}
if (_absDyn->isLdependent()){
tmpResult*=_cachedDynIdLSMap.at((*it)->L).at(_absDyn->grandMaId(grandmaAmp));
}
result+=tmpResult;
}
if (!_absDyn->isLdependent()) result *=_cachedDynIdMap.at(_absDyn->grandMaId(grandmaAmp));
result*=_isospinCG;
return result;
}
// void TensorDecAmps::getDefaultParams(fitParCol& fitVal, fitParCol& fitErr){
// std::map< std::shared_ptr<const LScomb>, double, pawian::Collection::SharedPtrLess > currentMagValMap;
// std::map< std::shared_ptr<const LScomb>, double, pawian::Collection::SharedPtrLess > currentPhiValMap;
// std::map< std::shared_ptr<const LScomb>, double, pawian::Collection::SharedPtrLess > currentMagErrMap;
// std::map< std::shared_ptr<const LScomb>, double, pawian::Collection::SharedPtrLess > currentPhiErrMap;
// std::vector< std::shared_ptr<const LScomb> >::const_iterator itLS;
// for(itLS=_LSs.begin(); itLS!=_LSs.end(); ++itLS){
// currentMagValMap[*itLS]=_factorMag;
// currentPhiValMap[*itLS]=0.;
// currentMagErrMap[*itLS]=_factorMag/3.;
// currentPhiErrMap[*itLS]=0.3;
// }
// fitVal.MagsLS[_key]=currentMagValMap;
// fitVal.PhisLS[_key]=currentPhiValMap;
// fitErr.MagsLS[_key]=currentMagErrMap;
// fitErr.PhisLS[_key]=currentPhiErrMap;
// _absDyn->getDefaultParams(fitVal, fitErr);
// if(!_daughter1IsStable) _decAmpDaughter1->getDefaultParams(fitVal, fitErr);
// if(!_daughter2IsStable) _decAmpDaughter2->getDefaultParams(fitVal, fitErr);
// }
void TensorDecAmps::fillDefaultParams(std::shared_ptr<AbsPawianParameters> fitPar){
std::vector< std::shared_ptr<const LScomb> >::const_iterator itLS;
for(itLS=_LSs.begin(); itLS!=_LSs.end(); ++itLS){
//fill magnitude
std::string magName=(*itLS)->name()+_key+"Mag";
double valMag=_factorMag;
double errMag=_factorMag/2.;
// double minMag=0.;
// double maxMag=_factorMag+30.*errMag;
fitPar->Add(magName, valMag, errMag);
// fitPar->SetLimits(magName, minMag, maxMag);
std::string phiName=(*itLS)->name()+_key+"Phi";
double valPhi=0.;
double errPhi=0.2;
//no limits for phi parameter
fitPar->Add(phiName, valPhi, errPhi);
}
_absDyn->fillDefaultParams(fitPar);
if(!_daughter1IsStable) _decAmpDaughter1->fillDefaultParams(fitPar);
if(!_daughter2IsStable) _decAmpDaughter2->fillDefaultParams(fitPar);
}
void TensorDecAmps::fillParamNameList(){
_paramNameList.clear();
std::vector< std::shared_ptr<const LScomb> >::const_iterator itLS;
for(itLS=_LSs.begin(); itLS!=_LSs.end(); ++itLS){
std::string magName=(*itLS)->name()+_key+"Mag";
_paramNameList.push_back(magName);
std::string phiName=(*itLS)->name()+_key+"Phi";
_paramNameList.push_back(phiName);
}
}
void TensorDecAmps::print(std::ostream& os) const{
return; //dummy
}
void TensorDecAmps::updateFitParams(std::shared_ptr<AbsPawianParameters> fitPar){
std::vector< std::shared_ptr<const LScomb> >::const_iterator itLS;
for(itLS=_LSs.begin(); itLS!=_LSs.end(); ++itLS){
//magnitude
std::string magName=(*itLS)->name()+_key+"Mag";
std::string phiName=(*itLS)->name()+_key+"Phi";
double theMag=fabs(fitPar->Value(magName));
double thePhi=fitPar->Value(phiName);
_currentParamMags[*itLS]=theMag;
_currentParamPhis[*itLS]=thePhi;
complex<double> expi(cos(thePhi), sin(thePhi));
_currentParamMagExpi[*itLS]=theMag*expi;
}
_absDyn->updateFitParams(fitPar);
if(!_daughter1IsStable) _decAmpDaughter1->updateFitParams(fitPar);
if(!_daughter2IsStable) _decAmpDaughter2->updateFitParams(fitPar);
}
void TensorDecAmps::calcDynamics(EvtData* theData, AbsXdecAmp* grandmaAmp){
if(!_recalculate) return;
if(!_absDyn->isLdependent()){
AbsXdecAmp::calcDynamics(theData, grandmaAmp);
return;
}
std::vector< std::shared_ptr<const LScomb> >::iterator it;
for (it=_LSs.begin(); it!=_LSs.end(); ++it){
_cachedDynIdLSMap[(*it)->L][_absDyn->grandMaId(grandmaAmp)]=_absDyn->eval(theData, grandmaAmp, (*it)->L);
}
if(!_daughter1IsStable) _decAmpDaughter1->calcDynamics(theData, this);
if(!_daughter2IsStable) _decAmpDaughter2->calcDynamics(theData, this);
return;
}
This diff is collapsed.
Click to expand it.
buildallCmake
+
1
−
1
View file @
4b81e65c
...
@@ -17,6 +17,6 @@ fi
...
@@ -17,6 +17,6 @@ fi
cd
build
cd
build
cmake ..
-DCMAKE_BUILD_TYPE
=
Release
-DCMAKE_INSTALL_PREFIX
=
..
-DBUILD_SHARED_LIBS
=
ON
cmake ..
-DCMAKE_BUILD_TYPE
=
Release
-DCMAKE_INSTALL_PREFIX
=
..
-DBUILD_SHARED_LIBS
=
ON
-DCMAKE_C_COMPILER
=
/usr/local/bin/gcc
-DCMAKE_CXX_COMPILER
=
/usr/local/bin/g++
make
make
make
install
make
install
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment