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

introduced abstract parameter handler

parent 9fbb8373
No related branches found
No related tags found
No related merge requests found
......@@ -15,8 +15,8 @@
#endif
AbsLh::AbsLh(boost::shared_ptr<const EvtDataBaseList> theEvtList) :
_evtListPtr(theEvtList)
,_cacheAmps(false)
AbsParamHandler()
,_evtListPtr(theEvtList)
,_calcCounter(0)
{
_evtDataVec=_evtListPtr->getDataVecs();
......@@ -24,8 +24,8 @@ AbsLh::AbsLh(boost::shared_ptr<const EvtDataBaseList> theEvtList) :
}
AbsLh::AbsLh(boost::shared_ptr<AbsLh> theAbsLhPtr):
_evtListPtr(theAbsLhPtr->getEventList())
,_cacheAmps(false)
AbsParamHandler()
,_evtListPtr(theAbsLhPtr->getEventList())
,_calcCounter(0)
{
_evtDataVec=_evtListPtr->getDataVecs();
......@@ -38,7 +38,7 @@ AbsLh::~AbsLh()
double AbsLh::calcLogLh(fitParams& theParamVal){
_calcCounter++;
if (_cacheAmps && _calcCounter>1) checkParamVariation(theParamVal);
if (_cacheAmps && _calcCounter>1) checkRecalculation(theParamVal);
updateFitParams(theParamVal);
double logLH=0.;
......@@ -110,36 +110,37 @@ void AbsLh::setHyps( const std::map<const std::string, bool>& theMap, bool& theH
}
}
void AbsLh::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
void AbsLh::cacheAmplitudes(){
_cacheAmps=true;
cacheTheAmps();
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
(*itDecs)->getDefaultParams(fitVal, fitErr);
}
}
void AbsLh::checkParamVariation(fitParams& theParamVal){
std::map<std::string, boost::shared_ptr<AbsXdecAmp> >::iterator it;
for(it = _allDecAmpMap.begin(); it != _allDecAmpMap.end(); ++it){
it->second->checkRecalculation(theParamVal);
void AbsLh::cacheAmplitudes(){
_cacheAmps=true;
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator it;
for (it=_decAmps.begin(); it!=_decAmps.end(); ++it){
(*it)->cacheAmplitudes();
}
return;
}
void AbsLh::cacheTheAmps(){
void AbsLh::updateFitParams(fitParams& theParamVal){
std::map<std::string, boost::shared_ptr<AbsXdecAmp> >::iterator it;
for(it = _allDecAmpMap.begin(); it != _allDecAmpMap.end(); ++it){
it->second->cacheAmplitudes();
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
(*itDecs)->updateFitParams(theParamVal);
}
return;
}
void AbsLh::updateFitParams(fitParams& theParamVal){
std::map<std::string, boost::shared_ptr<AbsXdecAmp> >::iterator it;
for(it = _allDecAmpMap.begin(); it != _allDecAmpMap.end(); ++it){
it->second->updateFitParams(theParamVal);
bool AbsLh::checkRecalculation(fitParams& theParamVal){
bool result=true;
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator it;
for (it=_decAmps.begin(); it!=_decAmps.end(); ++it){
if(!(*it)->checkRecalculation(theParamVal)) result=false;
}
return;
return result;
}
......@@ -10,11 +10,12 @@
#include <string>
#include <boost/shared_ptr.hpp>
#include "PwaUtils/AbsParamHandler.hh"
#include "PwaUtils/EvtDataBaseList.hh"
#include "PwaUtils/FitParamsBase.hh"
#include "PwaUtils/AbsXdecAmp.hh"
class AbsLh {
class AbsLh : public AbsParamHandler{
public:
AbsLh(boost::shared_ptr<const EvtDataBaseList>);
......@@ -27,25 +28,24 @@ public:
virtual boost::shared_ptr<const EvtDataBaseList> getEventList() const {
return _evtListPtr;
}
void cacheAmplitudes();
virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr)=0;
virtual void print(std::ostream& os) const=0;
virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr);
virtual bool checkRecalculation(fitParams& theParamVal);
virtual void cacheAmplitudes();
virtual void updateFitParams(fitParams& theParamVal);
virtual void print(std::ostream& os) const=0;
protected:
boost::shared_ptr<const EvtDataBaseList> _evtListPtr;
std::vector<EvtData*> _evtDataVec;
std::vector<EvtData*> _evtMCVec;
std::vector< boost::shared_ptr<AbsXdecAmp> > _decAmps;
std::map<const std::string, bool> _hypMap;
bool _cacheAmps;
unsigned int _calcCounter;
std::map<std::string, boost::shared_ptr<AbsXdecAmp> > _allDecAmpMap;
virtual void setHyps( const std::map<const std::string, bool>& theMap,
bool& theHyp, std::string& theKey);
virtual void checkParamVariation(fitParams& theParamVal);
// virtual void cacheTheAmps()=0;
virtual void cacheTheAmps();
};
// AbsParamHandler class definition file. -*- C++ -*-
// Copyright 2012 Bertram Kopf
#include "PwaUtils/AbsParamHandler.hh"
AbsParamHandler::AbsParamHandler() :
_cacheAmps(false)
,_recalculate(true)
{
}
AbsParamHandler::~AbsParamHandler()
{
}
// AbsParamHandler class definition file. -*- C++ -*-
// Copyright 2012 Bertram Kopf
#pragma once
#include <iostream>
#include <boost/shared_ptr.hpp>
#include "PwaUtils/EvtDataBaseList.hh"
#include "PwaUtils/FitParamsBase.hh"
class AbsParamHandler {
public:
AbsParamHandler();
virtual ~AbsParamHandler();
virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr)=0;
virtual bool checkRecalculation(fitParams& theParamVal)=0;
virtual void cacheAmplitudes()=0;
virtual void updateFitParams(fitParams& theParamVal)=0;
protected:
bool _cacheAmps;
bool _recalculate;
private:
};
......@@ -97,13 +97,13 @@ double epemBaseLh::calcEvtIntensity(EvtData* theData, fitParams& theParamVal){
void epemBaseLh::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
// void epemBaseLh::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
(*itDecs)->getDefaultParams(fitVal, fitErr);
}
}
// std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
// for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
// (*itDecs)->getDefaultParams(fitVal, fitErr);
// }
// }
void epemBaseLh::print(std::ostream& os) const{
......@@ -139,26 +139,6 @@ std::vector< boost::shared_ptr<IsobarHeliDecay> > theDecs = _epemReactionPtr->pr
}
void epemBaseLh::checkParamVariation(fitParams& theParamVal){
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator it;
for (it=_decAmps.begin(); it!=_decAmps.end(); ++it){
(*it)->checkRecalculation(theParamVal);
}
}
void epemBaseLh::cacheTheAmps(){
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator it;
for (it=_decAmps.begin(); it!=_decAmps.end(); ++it){
(*it)->cacheAmplitudes();
}
}
void epemBaseLh::updateFitParams(fitParams& theParamVal){
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
(*itDecs)->updateFitParams(theParamVal);
}
}
......@@ -39,22 +39,18 @@ public:
pawian::Collection::SharedPtrLess > pbarpAmps);
virtual complex<double> calcSpinDensity(Spin M1, Spin M2, std::string& nameDec, EvtData* theData);
virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr);
// virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr);
virtual void print(std::ostream& os) const;
virtual void updateFitParams(fitParams& theParamVal);
protected:
bool _usePhasespace;
const std::string _phasespaceKey;
boost::shared_ptr<epemReaction> _epemReactionPtr;
std::vector< boost::shared_ptr<AbsXdecAmp> > _decAmps;
int _highestJFsp;
bool _isHighestJaPhoton;
virtual void checkParamVariation(fitParams& theParamVal);
virtual void cacheTheAmps();
private:
void initialize();
......
......@@ -218,6 +218,8 @@ double pbarpBaseLh::calcEvtIntensity(EvtData* theData, fitParams& theParamVal){
void pbarpBaseLh::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
AbsLh::getDefaultParams(fitVal, fitErr);
std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > currentMagValMap;
std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > currentPhiValMap;
std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > currentMagErrMap;
......@@ -236,10 +238,6 @@ void pbarpBaseLh::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
fitErr.Mags["pbarp"]=currentMagErrMap;
fitErr.Phis["pbarp"]=currentPhiErrMap;
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
(*itDecs)->getDefaultParams(fitVal, fitErr);
}
}
void pbarpBaseLh::print(std::ostream& os) const{
......@@ -270,22 +268,10 @@ void pbarpBaseLh::initialize(){
}
void pbarpBaseLh::checkParamVariation(fitParams& theParamVal){
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator it;
for (it=_decAmps.begin(); it!=_decAmps.end(); ++it){
(*it)->checkRecalculation(theParamVal);
}
}
void pbarpBaseLh::cacheTheAmps(){
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator it;
for (it=_decAmps.begin(); it!=_decAmps.end(); ++it){
(*it)->cacheAmplitudes();
}
}
void pbarpBaseLh::updateFitParams(fitParams& theParamVal){
AbsLh::updateFitParams(theParamVal);
std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > magMap=theParamVal.Mags["pbarp"];
std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > phiMap=theParamVal.Phis["pbarp"];
......@@ -297,10 +283,6 @@ void pbarpBaseLh::updateFitParams(fitParams& theParamVal){
_currentParamPhis[*it]=thePhi;
}
std::vector< boost::shared_ptr<AbsXdecAmp> >::iterator itDecs;
for(itDecs=_decAmps.begin(); itDecs!=_decAmps.end(); ++itDecs){
(*itDecs)->updateFitParams(theParamVal);
}
}
void pbarpBaseLh::fillMap(std::vector< boost::shared_ptr<const JPCLS> >& pbarpLSs, std::vector<boost::shared_ptr<AbsXdecAmp> >& decs, std::map< boost::shared_ptr<const JPCLS>, std::vector<boost::shared_ptr<AbsXdecAmp> >, pawian::Collection::SharedPtrLess >& toFill){
......
......@@ -38,16 +38,18 @@ public:
virtual complex<double> calcSpinDensity(Spin M1, Spin M2, std::string& nameDec, EvtData* theData);
virtual double calcSpinDensityNorm(std::string& nameDec, EvtData* theData);
virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr);
virtual void print(std::ostream& os) const;
virtual void updateFitParams(fitParams& theParamVal);
virtual void print(std::ostream& os) const;
protected:
bool _usePhasespace;
const std::string _phasespaceKey;
boost::shared_ptr<pbarpReaction> _pbarpReactionPtr;
std::vector< boost::shared_ptr<const JPCLS> > _jpclsStates;
std::vector< boost::shared_ptr<AbsXdecAmp> > _decAmps;
std::map <boost::shared_ptr<const JPCLS>, std::vector< boost::shared_ptr<AbsXdecAmp> >, pawian::Collection::SharedPtrLess > _decAmpsSinglet;
std::map <boost::shared_ptr<const JPCLS>, std::vector< boost::shared_ptr<AbsXdecAmp> >, pawian::Collection::SharedPtrLess > _decAmpsTriplet0;
std::map <boost::shared_ptr<const JPCLS>, std::vector< boost::shared_ptr<AbsXdecAmp> >, pawian::Collection::SharedPtrLess > _decAmpsTripletp1;
......@@ -58,8 +60,6 @@ protected:
int _highestJFsp;
bool _isHighestJaPhoton;
virtual void checkParamVariation(fitParams& theParamVal);
virtual void cacheTheAmps();
virtual void fillMap(std::vector< boost::shared_ptr<const JPCLS> >& pbarpLSs, std::vector<boost::shared_ptr<AbsXdecAmp> >& decs, std::map< boost::shared_ptr<const JPCLS>, std::vector<boost::shared_ptr<AbsXdecAmp> >, pawian::Collection::SharedPtrLess >& toFill);
private:
......
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