]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/EMCAL/AliEMCALConfigHandler.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEMCALConfigHandler.cxx
CommitLineData
1cee71ae 1/*
2 * AliEMCALConfigHandler.cxx
3 *
4 * Created on: 06.11.2014
5 * Author: markusfasel
6 */
7
8#include <sstream>
9#include <TList.h>
10
11#include "AliEMCALConfigHandler.h"
12#include "AliEMCALConfiguration.h"
c4109efb 13#include "AliJSONData.h"
1cee71ae 14
15ClassImp(AliEMCALConfigHandler)
16
17AliEMCALConfigHandler::AliEMCALConfigHandler() :
18 TObject(),
19 fConfiguration(NULL)
20{
21 fConfiguration = new TList;
22 fConfiguration->SetOwner();
23}
24
25AliEMCALConfigHandler::~AliEMCALConfigHandler() {
26 delete fConfiguration;
27}
28
29AliEMCALConfiguration *AliEMCALConfigHandler::CreateConfiguration(const char* name) {
30 AliEMCALConfiguration *config = FindConfiguration(name);
31 if(config)
32 this->Error("AliEMCALConfigHandler::CreateConfiguration", "Configuration with name %s already exists, not duplicating", name);
33 else{
34 config = new AliEMCALConfiguration(name);
35 fConfiguration->Add(config);
36 }
37 return config;
38}
39
40void AliEMCALConfigHandler::AddParam(const char* configName, const char* key,
c4109efb 41 AliJSONValue* value) {
1cee71ae 42 AliEMCALConfiguration *config = FindConfiguration(configName);
43 if(!config){
44 this->Warning("AliEMCALConfigHandler", "Configuration with name %s does not exist, creating it", configName);
45d3c73e 45 config = CreateConfiguration(configName);
1cee71ae 46 }
47 config->AddParam(key, value);
48}
49
29c5adc8 50std::string AliEMCALConfigHandler::GetConfigurationString() const {
1cee71ae 51 std::stringstream jsonbuilder;
52 jsonbuilder << "{";
53 TIter confentries(fConfiguration);
54 bool isFirst = true;
97bf0336 55 for(TIter it = confentries.Begin(); it != confentries.End(); ++it){
1cee71ae 56 AliEMCALConfiguration *conf = static_cast<AliEMCALConfiguration *>(*it);
57 if(!isFirst) jsonbuilder << ",";
58 jsonbuilder << "\"" << conf->GetName() << "\":" << conf->CreateJSONString();
59 if(isFirst) isFirst = false;
60 }
61 jsonbuilder << "}";
29c5adc8 62 return jsonbuilder.str();
1cee71ae 63}
64
29c5adc8 65std::string AliEMCALConfigHandler::GetConfigurationString(const char* configname) const {
97bf0336 66 AliEMCALConfiguration *conf = FindConfiguration(configname);
67 if(!conf) return "";
68 return conf->CreateJSONString();
69}
70
71AliEMCALConfiguration* AliEMCALConfigHandler::FindConfiguration(const char* configName) const {
72 return dynamic_cast<AliEMCALConfiguration *>(fConfiguration->FindObject(configName));
1cee71ae 73}