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

fix for streaming unsorted parameter lists

parent df547b8c
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,7 @@
#include <fstream>
#include "FitParams/AbsPawianParameters.hh"
#include "FitParams/ParamFactory.hh"
#include "ErrLogger/ErrLogger.hh"
......@@ -63,4 +64,30 @@ void AbsPawianParameters::SetAllValues(const std::vector<double>& values){
}
}
std::shared_ptr<AbsPawianParameters> AbsPawianParameters::paramsWithSameOrder(std::shared_ptr<AbsPawianParameters> toSort){
if(Params().size() != toSort->Params().size() ){
Alert << "parameter lists exhibit differnet sizes: Params().size(): " << Params().size()
<< " toSort->Params().size(): " << toSort->Params().size() << endmsg;
exit(1);
}
std::shared_ptr<AbsPawianParameters> sortedList=ParamFactory::instance()->getParametersPointer(toSort->type());
for(unsigned int id=0; id<Params().size(); ++id){
const std::string currentName=GetName(id);
unsigned int toSortId=toSort->Index(currentName);
if(toSortId >= Params().size()){
Alert << "toSort list does not contain parameter with the name " << currentName << endmsg;
exit(1);
}
sortedList->Add(currentName, toSort->Value(toSortId), toSort->Error(toSortId));
if(toSort->HasLimits(toSortId)){
sortedList->SetLimits(id, toSort->LowerLimit(toSortId), toSort->UpperLimit(toSortId));
}
if(toSort->IsFixed(toSortId)) sortedList->Fix(id);
}
return sortedList;
}
......@@ -28,6 +28,7 @@
#include <iostream>
#include <vector>
#include <memory>
#include "Minuit2/MnUserParameters.h"
using namespace ROOT::Minuit2;
......@@ -123,6 +124,8 @@ public:
virtual void print(std::ostream& os);
virtual void SetAllValues(const std::vector<double>& values);
virtual std::shared_ptr<AbsPawianParameters> paramsWithSameOrder(std::shared_ptr<AbsPawianParameters> toSort);
private:
// MnUserTransformation fTransformation;
......
......@@ -86,7 +86,9 @@ int main(int __argc,char *__argv[]){
}
// Read start param file
std::shared_ptr<AbsPawianParameters> startPawianParams=theAppBase.streamPawianParams();
std::shared_ptr<AbsPawianParameters> unsortedStartPawianParams=theAppBase.streamPawianParams();
GlobalEnv::instance()->setStartPawianParams(unsortedStartPawianParams);
std::shared_ptr<AbsPawianParameters> startPawianParams=GlobalEnv::instance()->startPawianParams();
std::cout << "\n\n**************** Fit parameter **************************" << std::endl;
startPawianParams->print(std::cout);
......@@ -97,7 +99,8 @@ int main(int __argc,char *__argv[]){
std::vector<std::string> fixedChannelParams = (*it).first->parser()->fixedParams();
fixedParams.insert(fixedParams.end(), fixedChannelParams.begin(), fixedChannelParams.end());
}
theAppBase.fixParams(startPawianParams,fixedParams);
theAppBase.fixParams(unsortedStartPawianParams,fixedParams);
//fill param list names for dynamics
std::vector<std::shared_ptr<AbsDynamics> > dynVec=DynRegistry::instance()->getDynVec();
......
......@@ -121,7 +121,10 @@ int main(int __argc,char *__argv[]){
}
// Read start param file
std::shared_ptr<AbsPawianParameters> startPawianParams=theAppBase.streamPawianParams();
std::shared_ptr<AbsPawianParameters> unsortedStartPawianParams=theAppBase.streamPawianParams();
GlobalEnv::instance()->setStartPawianParams(unsortedStartPawianParams);
std::shared_ptr<AbsPawianParameters> startPawianParams=GlobalEnv::instance()->startPawianParams();
// fitParCol theStartparams;
// fitParCol theErrorparams;
// theAppBase.streamParams(theStartparams, theErrorparams);
......
......@@ -127,6 +127,11 @@ std::shared_ptr<AbsPawianParameters> GlobalEnv::defaultPawianParams(){
return result;
}
void GlobalEnv::setStartPawianParams(std::shared_ptr<AbsPawianParameters> startParams){
std::shared_ptr<AbsPawianParameters> defaultParams=GlobalEnv::defaultPawianParams();
_startParams=defaultParams->paramsWithSameOrder(startParams);
}
void GlobalEnv::setup(ParserBase* theParser){
if(_alreadySetUp){
Alert << "GlobalEnv already set up!" << endmsg;
......
......@@ -61,6 +61,8 @@ public:
const ChannelEnvList ChannelEnvs() const {return _channelEnvs;}
const short NoChannels() const {return _channelEnvs.size();}
std::shared_ptr<AbsPawianParameters> defaultPawianParams();
std::shared_ptr<AbsPawianParameters> startPawianParams() {return _startParams;}
void setStartPawianParams(std::shared_ptr<AbsPawianParameters> startParams);
private:
static GlobalEnv* _instance;
......@@ -72,5 +74,6 @@ private:
std::string _serializationFileName;
ChannelEnvList _channelEnvs;
std::shared_ptr<AbsPawianParameters> _startParams;
};
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