#include "hrich700histmanager.h"
#include "hrich700utils.h"
#include "TH1.h"
#include "TH2.h"
#include "TNamed.h"
#include "TGraph.h"
#include "TGraph2D.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TFile.h"
#include "TDirectory.h"
#include "TKey.h"
#include "TClass.h"
#include <vector>
#include <map>
#include <string>
#include <cassert>
#include <iostream>
#include <algorithm>
#include <climits>
using std::string;
using std::map;
using std::cout;
using std::endl;
using std::vector;
using std::exception;
using std::sort;
class CompareTNamedMore:
public std::binary_function<
const TNamed*,
const TNamed*,
Bool_t>
{
public:
Bool_t operator()(const TNamed* object1, const TNamed* object2) const {
return string(object1->GetName()) > string(object2->GetName());
}
};
HRich700HistManager::HRich700HistManager():
fMap()
{
}
HRich700HistManager::~HRich700HistManager()
{
}
void HRich700HistManager::Add(const string& name,TNamed* object)
{
map<string, TNamed*>::iterator it = fMap.find(name);
if (it != fMap.end()){
cout << "HRich700HistManager::Add Object with name:" << name << " was already added. Set new object." << endl;
}
std::pair<string, TNamed*> newpair = std::make_pair(name, object);
fMap.insert(newpair);
}
TH1* HRich700HistManager::H1(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::H1(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TH1*>(fMap.find(name)->second);
}
TH2* HRich700HistManager::H2(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::H2(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TH2*>(fMap.find(name)->second);
}
TH3* HRich700HistManager::H3(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::H3(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TH3*>(fMap.find(name)->second);
}
TGraph* HRich700HistManager::G1(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::G1(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TGraph*>(fMap.find(name)->second);
}
TGraph2D* HRich700HistManager::G2(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::G2(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TGraph2D*>(fMap.find(name)->second);
}
TProfile* HRich700HistManager::P1(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::P1(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TProfile*>(fMap.find(name)->second);
}
TProfile2D* HRich700HistManager::P2(const string& name) const {
if (fMap.count(name) == 0) {
std::cout << "Error: RichHistManager::P2(name): name=" << name << std::endl;
}
assert(fMap.count(name) != 0);
return dynamic_cast<TProfile2D*>(fMap.find(name)->second);
}
Bool_t HRich700HistManager::Exists(const string& name) const {
return (fMap.count(name) == 0) ? kFALSE : kTRUE;
}
void HRich700HistManager::WriteToFile()
{
map<string, TNamed*>::iterator it;
for (it = fMap.begin(); it != fMap.end(); it++){
it->second->Write();
}
}
void HRich700HistManager::ReadFromFile(
TFile* file)
{
assert(file != NULL);
cout << "-I- HRich700HistManager::ReadFromFile" << endl;
TDirectory* dir = gDirectory;
TIter nextkey(dir->GetListOfKeys());
TKey *key;
while ((key = (TKey*) nextkey())) {
TObject* obj = key->ReadObj();
AddTNamedObject(obj);
AddTDirectoryObject(obj);
}
}
void HRich700HistManager::AddTNamedObject(
TObject* obj)
{
if (obj->IsA()->InheritsFrom (TH1::Class()) || obj->IsA()->InheritsFrom (TGraph::Class()) || obj->IsA()->InheritsFrom (TGraph2D::Class())) {
TNamed* h = (TNamed*) obj;
Add(string(h->GetName()), h);
}
}
void HRich700HistManager::AddTDirectoryObject(
TObject* obj)
{
if (obj->IsA()->InheritsFrom (TDirectoryFile::Class())) {
TDirectoryFile* fileDir = (TDirectoryFile*)obj;
TIter nextkey(fileDir->GetListOfKeys());
TKey *key2;
while ((key2 = (TKey*) nextkey())) {
TObject* obj2 = key2->ReadObj();
AddTNamedObject(obj2);
AddTDirectoryObject(obj2);
}
}
}
void HRich700HistManager::Clear(Option_t*)
{
map<string, TNamed*>::iterator it;
for (it = fMap.begin(); it != fMap.end(); it++) {
delete (*it).second;
}
fMap.clear();
}
void HRich700HistManager::ShrinkEmptyBinsH1(
const string& histName)
{
TH1* hist = H1(histName);
Int_t nofBins = hist->GetNbinsX();
Int_t minShrinkBin = INT_MIN;
Int_t maxShrinkBin = INT_MAX;
Bool_t isSet = kFALSE;
for (Int_t iBin = 1; iBin <= nofBins; iBin++) {
Double_t content = hist->GetBinContent(iBin);
if (content != 0.) {
minShrinkBin = std::min(iBin, minShrinkBin);
maxShrinkBin = std::max(iBin, maxShrinkBin);
isSet = kTRUE;
}
}
if (isSet) {
hist->GetXaxis()->SetRange(minShrinkBin, maxShrinkBin);
}
}
void HRich700HistManager::ShrinkEmptyBinsH2(
const string& histName)
{
TH1* hist = H2(histName);
Int_t nofBinsX = hist->GetNbinsX();
Int_t nofBinsY = hist->GetNbinsY();
Int_t minShrinkBinX = INT_MAX;
Int_t maxShrinkBinX = INT_MIN;
Int_t minShrinkBinY = INT_MAX;
Int_t maxShrinkBinY = INT_MIN;
Bool_t isSet = kFALSE;
for (Int_t iBinX = 1; iBinX <= nofBinsX; iBinX++) {
for (Int_t iBinY = 1; iBinY <= nofBinsY; iBinY++) {
Double_t content = hist->GetBinContent(iBinX, iBinY);
if (content != 0.) {
minShrinkBinX = std::min(iBinX, minShrinkBinX);
maxShrinkBinX = std::max(iBinX, maxShrinkBinX);
minShrinkBinY = std::min(iBinY, minShrinkBinY);
maxShrinkBinY = std::max(iBinY, maxShrinkBinY);
isSet = kTRUE;
}
}
}
if (isSet) {
hist->GetXaxis()->SetRange(minShrinkBinX, maxShrinkBinX);
hist->GetYaxis()->SetRange(minShrinkBinY, maxShrinkBinY);
}
}
void HRich700HistManager::Scale(
const string& histName,
Double_t scale)
{
H1(histName)->Scale(scale);
}
void HRich700HistManager::NormalizeToIntegral(
const string& histName)
{
TH1* hist = H1(histName);
hist->Scale(1. / hist->Integral());
}
void HRich700HistManager::Rebin(
const string& histName,
Int_t ngroup)
{
TH1* hist = H1(histName);
if (ngroup > 1) {
hist->Rebin(ngroup);
hist->Scale(1. / (Double_t)ngroup);
}
}
string HRich700HistManager::ToString() const
{
string str = "HRich700HistManager list of histograms:\n";
map<string, TNamed*>::const_iterator it;
for (it = fMap.begin(); it != fMap.end(); it++){
str += it->first + "\n";
}
return str;
}
TCanvas* HRich700HistManager::CreateCanvas(
const string& name,
const string& title,
Int_t width,
Int_t height)
{
TCanvas* c = new TCanvas(name.c_str(), title.c_str(), width, height);
fCanvases.push_back(c);
return c;
}
void HRich700HistManager::SaveCanvasToImage(
const string& outputDir,
const string& options)
{
for (UInt_t i = 0; i < fCanvases.size(); i++) {
RichUtils::SaveCanvasAsImage(fCanvases[i], outputDir, options);
}
}
ClassImp(HRich700HistManager)
hrich700histmanager.cc:10 hrich700histmanager.cc:11 hrich700histmanager.cc:12 hrich700histmanager.cc:13 hrich700histmanager.cc:14 hrich700histmanager.cc:15 hrich700histmanager.cc:16 hrich700histmanager.cc:17 hrich700histmanager.cc:18 hrich700histmanager.cc:19 hrich700histmanager.cc:20 hrich700histmanager.cc:21 hrich700histmanager.cc:22 hrich700histmanager.cc:23 hrich700histmanager.cc:24 hrich700histmanager.cc:25 hrich700histmanager.cc:26 hrich700histmanager.cc:27 hrich700histmanager.cc:28 hrich700histmanager.cc:29 hrich700histmanager.cc:30 hrich700histmanager.cc:31 hrich700histmanager.cc:32 hrich700histmanager.cc:33 hrich700histmanager.cc:34 hrich700histmanager.cc:35 hrich700histmanager.cc:36 hrich700histmanager.cc:37 hrich700histmanager.cc:38 hrich700histmanager.cc:39 hrich700histmanager.cc:40 hrich700histmanager.cc:41 hrich700histmanager.cc:42 hrich700histmanager.cc:43 hrich700histmanager.cc:44 hrich700histmanager.cc:45 hrich700histmanager.cc:46 hrich700histmanager.cc:47 hrich700histmanager.cc:48 hrich700histmanager.cc:49 hrich700histmanager.cc:50 hrich700histmanager.cc:51 hrich700histmanager.cc:52 hrich700histmanager.cc:53 hrich700histmanager.cc:54 hrich700histmanager.cc:55 hrich700histmanager.cc:56 hrich700histmanager.cc:57 hrich700histmanager.cc:58 hrich700histmanager.cc:59 hrich700histmanager.cc:60 hrich700histmanager.cc:61 hrich700histmanager.cc:62 hrich700histmanager.cc:63 hrich700histmanager.cc:64 hrich700histmanager.cc:65 hrich700histmanager.cc:66 hrich700histmanager.cc:67 hrich700histmanager.cc:68 hrich700histmanager.cc:69 hrich700histmanager.cc:70 hrich700histmanager.cc:71 hrich700histmanager.cc:72 hrich700histmanager.cc:73 hrich700histmanager.cc:74 hrich700histmanager.cc:75 hrich700histmanager.cc:76 hrich700histmanager.cc:77 hrich700histmanager.cc:78 hrich700histmanager.cc:79 hrich700histmanager.cc:80 hrich700histmanager.cc:81 hrich700histmanager.cc:82 hrich700histmanager.cc:83 hrich700histmanager.cc:84 hrich700histmanager.cc:85 hrich700histmanager.cc:86 hrich700histmanager.cc:87 hrich700histmanager.cc:88 hrich700histmanager.cc:89 hrich700histmanager.cc:90 hrich700histmanager.cc:91 hrich700histmanager.cc:92 hrich700histmanager.cc:93 hrich700histmanager.cc:94 hrich700histmanager.cc:95 hrich700histmanager.cc:96 hrich700histmanager.cc:97 hrich700histmanager.cc:98 hrich700histmanager.cc:99 hrich700histmanager.cc:100 hrich700histmanager.cc:101 hrich700histmanager.cc:102 hrich700histmanager.cc:103 hrich700histmanager.cc:104 hrich700histmanager.cc:105 hrich700histmanager.cc:106 hrich700histmanager.cc:107 hrich700histmanager.cc:108 hrich700histmanager.cc:109 hrich700histmanager.cc:110 hrich700histmanager.cc:111 hrich700histmanager.cc:112 hrich700histmanager.cc:113 hrich700histmanager.cc:114 hrich700histmanager.cc:115 hrich700histmanager.cc:116 hrich700histmanager.cc:117 hrich700histmanager.cc:118 hrich700histmanager.cc:119 hrich700histmanager.cc:120 hrich700histmanager.cc:121 hrich700histmanager.cc:122 hrich700histmanager.cc:123 hrich700histmanager.cc:124 hrich700histmanager.cc:125 hrich700histmanager.cc:126 hrich700histmanager.cc:127 hrich700histmanager.cc:128 hrich700histmanager.cc:129 hrich700histmanager.cc:130 hrich700histmanager.cc:131 hrich700histmanager.cc:132 hrich700histmanager.cc:133 hrich700histmanager.cc:134 hrich700histmanager.cc:135 hrich700histmanager.cc:136 hrich700histmanager.cc:137 hrich700histmanager.cc:138 hrich700histmanager.cc:139 hrich700histmanager.cc:140 hrich700histmanager.cc:141 hrich700histmanager.cc:142 hrich700histmanager.cc:143 hrich700histmanager.cc:144 hrich700histmanager.cc:145 hrich700histmanager.cc:146 hrich700histmanager.cc:147 hrich700histmanager.cc:148 hrich700histmanager.cc:149 hrich700histmanager.cc:150 hrich700histmanager.cc:151 hrich700histmanager.cc:152 hrich700histmanager.cc:153 hrich700histmanager.cc:154 hrich700histmanager.cc:155 hrich700histmanager.cc:156 hrich700histmanager.cc:157 hrich700histmanager.cc:158 hrich700histmanager.cc:159 hrich700histmanager.cc:160 hrich700histmanager.cc:161 hrich700histmanager.cc:162 hrich700histmanager.cc:163 hrich700histmanager.cc:164 hrich700histmanager.cc:165 hrich700histmanager.cc:166 hrich700histmanager.cc:167 hrich700histmanager.cc:168 hrich700histmanager.cc:169 hrich700histmanager.cc:170 hrich700histmanager.cc:171 hrich700histmanager.cc:172 hrich700histmanager.cc:173 hrich700histmanager.cc:174 hrich700histmanager.cc:175 hrich700histmanager.cc:176 hrich700histmanager.cc:177 hrich700histmanager.cc:178 hrich700histmanager.cc:179 hrich700histmanager.cc:180 hrich700histmanager.cc:181 hrich700histmanager.cc:182 hrich700histmanager.cc:183 hrich700histmanager.cc:184 hrich700histmanager.cc:185 hrich700histmanager.cc:186 hrich700histmanager.cc:187 hrich700histmanager.cc:188 hrich700histmanager.cc:189 hrich700histmanager.cc:190 hrich700histmanager.cc:191 hrich700histmanager.cc:192 hrich700histmanager.cc:193 hrich700histmanager.cc:194 hrich700histmanager.cc:195 hrich700histmanager.cc:196 hrich700histmanager.cc:197 hrich700histmanager.cc:198 hrich700histmanager.cc:199 hrich700histmanager.cc:200 hrich700histmanager.cc:201 hrich700histmanager.cc:202 hrich700histmanager.cc:203 hrich700histmanager.cc:204 hrich700histmanager.cc:205 hrich700histmanager.cc:206 hrich700histmanager.cc:207 hrich700histmanager.cc:208 hrich700histmanager.cc:209 hrich700histmanager.cc:210 hrich700histmanager.cc:211 hrich700histmanager.cc:212 hrich700histmanager.cc:213 hrich700histmanager.cc:214 hrich700histmanager.cc:215 hrich700histmanager.cc:216 hrich700histmanager.cc:217 hrich700histmanager.cc:218 hrich700histmanager.cc:219 hrich700histmanager.cc:220 hrich700histmanager.cc:221 hrich700histmanager.cc:222 hrich700histmanager.cc:223 hrich700histmanager.cc:224 hrich700histmanager.cc:225 hrich700histmanager.cc:226 hrich700histmanager.cc:227 hrich700histmanager.cc:228 hrich700histmanager.cc:229 hrich700histmanager.cc:230 hrich700histmanager.cc:231 hrich700histmanager.cc:232 hrich700histmanager.cc:233 hrich700histmanager.cc:234 hrich700histmanager.cc:235 hrich700histmanager.cc:236 hrich700histmanager.cc:237 hrich700histmanager.cc:238 hrich700histmanager.cc:239 hrich700histmanager.cc:240 hrich700histmanager.cc:241 hrich700histmanager.cc:242 hrich700histmanager.cc:243 hrich700histmanager.cc:244 hrich700histmanager.cc:245 hrich700histmanager.cc:246 hrich700histmanager.cc:247 hrich700histmanager.cc:248 hrich700histmanager.cc:249 hrich700histmanager.cc:250 hrich700histmanager.cc:251 hrich700histmanager.cc:252 hrich700histmanager.cc:253 hrich700histmanager.cc:254 hrich700histmanager.cc:255 hrich700histmanager.cc:256 hrich700histmanager.cc:257 hrich700histmanager.cc:258 hrich700histmanager.cc:259 hrich700histmanager.cc:260 hrich700histmanager.cc:261 hrich700histmanager.cc:262 hrich700histmanager.cc:263 hrich700histmanager.cc:264 hrich700histmanager.cc:265 hrich700histmanager.cc:266 hrich700histmanager.cc:267 hrich700histmanager.cc:268 hrich700histmanager.cc:269 hrich700histmanager.cc:270 hrich700histmanager.cc:271 hrich700histmanager.cc:272 hrich700histmanager.cc:273 hrich700histmanager.cc:274 hrich700histmanager.cc:275 hrich700histmanager.cc:276 hrich700histmanager.cc:277 hrich700histmanager.cc:278 hrich700histmanager.cc:279 hrich700histmanager.cc:280 hrich700histmanager.cc:281 hrich700histmanager.cc:282 hrich700histmanager.cc:283 hrich700histmanager.cc:284 hrich700histmanager.cc:285 hrich700histmanager.cc:286 hrich700histmanager.cc:287 hrich700histmanager.cc:288 hrich700histmanager.cc:289 hrich700histmanager.cc:290 hrich700histmanager.cc:291 hrich700histmanager.cc:292 hrich700histmanager.cc:293 hrich700histmanager.cc:294 hrich700histmanager.cc:295 hrich700histmanager.cc:296 hrich700histmanager.cc:297 hrich700histmanager.cc:298 hrich700histmanager.cc:299 hrich700histmanager.cc:300 hrich700histmanager.cc:301 hrich700histmanager.cc:302 hrich700histmanager.cc:303 hrich700histmanager.cc:304 hrich700histmanager.cc:305 hrich700histmanager.cc:306 hrich700histmanager.cc:307 hrich700histmanager.cc:308 hrich700histmanager.cc:309 hrich700histmanager.cc:310 hrich700histmanager.cc:311 hrich700histmanager.cc:312 hrich700histmanager.cc:313 hrich700histmanager.cc:314 hrich700histmanager.cc:315 hrich700histmanager.cc:316 hrich700histmanager.cc:317 hrich700histmanager.cc:318 hrich700histmanager.cc:319 hrich700histmanager.cc:320 hrich700histmanager.cc:321 hrich700histmanager.cc:322 hrich700histmanager.cc:323 hrich700histmanager.cc:324 hrich700histmanager.cc:325 hrich700histmanager.cc:326 hrich700histmanager.cc:327 hrich700histmanager.cc:328 hrich700histmanager.cc:329 hrich700histmanager.cc:330 hrich700histmanager.cc:331 hrich700histmanager.cc:332 hrich700histmanager.cc:333 hrich700histmanager.cc:334 hrich700histmanager.cc:335 hrich700histmanager.cc:336 hrich700histmanager.cc:337 hrich700histmanager.cc:338 hrich700histmanager.cc:339 hrich700histmanager.cc:340 hrich700histmanager.cc:341 hrich700histmanager.cc:342 hrich700histmanager.cc:343 hrich700histmanager.cc:344 hrich700histmanager.cc:345 hrich700histmanager.cc:346 hrich700histmanager.cc:347 hrich700histmanager.cc:348 hrich700histmanager.cc:349 hrich700histmanager.cc:350 hrich700histmanager.cc:351 hrich700histmanager.cc:352 hrich700histmanager.cc:353 hrich700histmanager.cc:354 hrich700histmanager.cc:355 hrich700histmanager.cc:356 hrich700histmanager.cc:357 hrich700histmanager.cc:358 hrich700histmanager.cc:359 hrich700histmanager.cc:360 hrich700histmanager.cc:361 hrich700histmanager.cc:362 hrich700histmanager.cc:363 hrich700histmanager.cc:364 hrich700histmanager.cc:365 hrich700histmanager.cc:366 hrich700histmanager.cc:367 hrich700histmanager.cc:368 hrich700histmanager.cc:369 hrich700histmanager.cc:370 hrich700histmanager.cc:371 hrich700histmanager.cc:372 hrich700histmanager.cc:373 hrich700histmanager.cc:374 hrich700histmanager.cc:375 hrich700histmanager.cc:376 hrich700histmanager.cc:377 hrich700histmanager.cc:378 hrich700histmanager.cc:379 hrich700histmanager.cc:380 hrich700histmanager.cc:381 hrich700histmanager.cc:382 hrich700histmanager.cc:383 hrich700histmanager.cc:384 hrich700histmanager.cc:385 hrich700histmanager.cc:386 hrich700histmanager.cc:387 hrich700histmanager.cc:388 hrich700histmanager.cc:389 hrich700histmanager.cc:390 hrich700histmanager.cc:391 hrich700histmanager.cc:392 hrich700histmanager.cc:393 hrich700histmanager.cc:394 hrich700histmanager.cc:395 hrich700histmanager.cc:396 hrich700histmanager.cc:397 hrich700histmanager.cc:398 hrich700histmanager.cc:399 hrich700histmanager.cc:400 hrich700histmanager.cc:401 hrich700histmanager.cc:402 hrich700histmanager.cc:403 hrich700histmanager.cc:404 hrich700histmanager.cc:405 hrich700histmanager.cc:406 hrich700histmanager.cc:407 hrich700histmanager.cc:408 hrich700histmanager.cc:409 hrich700histmanager.cc:410 hrich700histmanager.cc:411 hrich700histmanager.cc:412 hrich700histmanager.cc:413 hrich700histmanager.cc:414 hrich700histmanager.cc:415 hrich700histmanager.cc:416 hrich700histmanager.cc:417 hrich700histmanager.cc:418 hrich700histmanager.cc:419 hrich700histmanager.cc:420 hrich700histmanager.cc:421 hrich700histmanager.cc:422 hrich700histmanager.cc:423 hrich700histmanager.cc:424 hrich700histmanager.cc:425 hrich700histmanager.cc:426 hrich700histmanager.cc:427 hrich700histmanager.cc:428 hrich700histmanager.cc:429 hrich700histmanager.cc:430 hrich700histmanager.cc:431 hrich700histmanager.cc:432 hrich700histmanager.cc:433 hrich700histmanager.cc:434 hrich700histmanager.cc:435 hrich700histmanager.cc:436 hrich700histmanager.cc:437 hrich700histmanager.cc:438 hrich700histmanager.cc:439 hrich700histmanager.cc:440 hrich700histmanager.cc:441 hrich700histmanager.cc:442 hrich700histmanager.cc:443 hrich700histmanager.cc:444 hrich700histmanager.cc:445