]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/AliEMCALConfigHandler.cxx
Add functionality for debugging
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliEMCALConfigHandler.cxx
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"
13 #include "AliJSONData.h"
14
15 ClassImp(AliEMCALConfigHandler)
16
17 AliEMCALConfigHandler::AliEMCALConfigHandler() :
18   TObject(),
19   fConfiguration(NULL)
20 {
21   fConfiguration = new TList;
22   fConfiguration->SetOwner();
23 }
24
25 AliEMCALConfigHandler::~AliEMCALConfigHandler() {
26   delete fConfiguration;
27 }
28
29 AliEMCALConfiguration *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
40 void AliEMCALConfigHandler::AddParam(const char* configName, const char* key,
41     AliJSONValue* value) {
42   AliEMCALConfiguration *config = FindConfiguration(configName);
43   if(!config){
44     this->Warning("AliEMCALConfigHandler", "Configuration with name %s does not exist, creating it", configName);
45     CreateConfiguration(configName);
46   }
47   config->AddParam(key, value);
48 }
49
50 const char *AliEMCALConfigHandler::GetConfigurationString() const {
51   std::stringstream jsonbuilder;
52   jsonbuilder << "{";
53   TIter confentries(fConfiguration);
54   bool isFirst = true;
55   for(TIter it = confentries.Begin(); it != confentries.End(); ++it){
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 << "}";
62   return jsonbuilder.str().c_str();
63 }
64
65 const char *AliEMCALConfigHandler::GetConfigurationString(const char* configname) const {
66   AliEMCALConfiguration *conf = FindConfiguration(configname);
67   if(!conf) return "";
68   return conf->CreateJSONString();
69 }
70
71 AliEMCALConfiguration* AliEMCALConfigHandler::FindConfiguration(const char* configName) const {
72   return dynamic_cast<AliEMCALConfiguration *>(fConfiguration->FindObject(configName));
73 }