ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/mstein/triggerStudy/plotMaker.cpp
Revision: 1.1
Committed: Tue Nov 27 12:50:57 2012 UTC (12 years, 5 months ago) by mstein
Branch: MAIN
CVS Tags: v2, HEAD
Log Message:
first running version

File Contents

# Content
1 #include <iostream>
2 #include <map>
3 #include <vector>
4
5 #include "TString.h"
6 #include "TH1.h"
7 #include "TH1D.h"
8 #include "TFile.h"
9 //#include "TObject.h"
10
11 #include "plotMaker.h"
12
13 // #include "TDirectory.h"
14 #include "tools.h"
15
16
17 //================================================================================= constructor: plotMaker
18 plotMaker::plotMaker(){
19 TH1::SetDefaultSumw2();
20 }
21
22
23 //================================================================================= destructor: plotMaker
24 plotMaker::~plotMaker(){
25 }
26
27
28 //here the new histogram is created
29 //================================================================================= addh1d
30 void plotMaker::addh1d(TString name, TString title, TString xtitle, TString ytitle, Int_t bin, Double_t low, Double_t up){
31 if(isNewh1d(name)){
32 TH1D* temp = new TH1D(name, title, bin, low, up);
33 h1d[name] = temp;
34 h1d[name]->GetXaxis()->SetTitle(xtitle);
35 h1d[name]->GetYaxis()->SetTitle(ytitle);
36 h1d[name]->Sumw2();
37 }
38 }
39
40
41 //add a new histogram if its not present yet, and fill it
42 //================================================================================= addh1d
43 void plotMaker::addh1d(TString name, TString title, TString xtitle, TString ytitle, Int_t bin, Double_t low, Double_t up, Double_t value, Double_t weight){
44 if(isNewh1d(name)) addh1d(name, title, xtitle, ytitle, bin, low, up);
45 h1d[name]->Fill(value, weight);
46 }
47
48
49 //add external histogram to the collection
50 //================================================================================= addh1d
51 void plotMaker::addh1d(TH1D* h){
52 if(!isNewh1d(h->GetName())) cout<<"WARNING: a TH1D with this name (" << h->GetName() << ") exists already! You are overwriting histograms!" << endl;
53 else{h1d[h->GetName()]=h; h->Sumw2();}
54 }
55
56
57 //add external histogram to the collection and rename it
58 //================================================================================= addh1d
59 void plotMaker::addh1d(TString newName, TH1D* h){
60 if(!isNewh1d(newName)) cout<<"WARNING: name (" << h->GetName() << ") already exists! You are overwriting histograms!" << endl;
61 else{
62 h->SetName(newName);
63 h->SetTitle(newName);
64 addh1d(h);
65 }
66 //else {cout<<"TH1D name changed: " << h->GetName() << "--> " << newName << endl; h->SetName(newName); h1d[h->GetName()] = h;}
67 }
68
69
70 //add multiple external histograms to the collection
71 //================================================================================= addh1d
72 void plotMaker::addh1d(vector<TH1D*> h){
73 for(UInt_t i=0,N=h.size(); i<N; ++i){
74 addh1d(h.at(i));
75 }
76 }
77
78
79 //add histogram from external root file
80 //================================================================================= addh1d
81 void plotMaker::addh1d(TString fileName, TString name){
82 TH1D *h = tools::GetHistFromFile<TH1D>(fileName, name);
83 addh1d(h);
84 }
85
86
87 //add histogram from external root file and rename it
88 //================================================================================= addh1d
89 void plotMaker::addh1d(TString newName, TString fileName, TString name){
90 TH1D *h = tools::GetHistFromFile<TH1D>(fileName, name);
91 addh1d(newName, h);
92 }
93
94
95 //add multiple histograms from external root file
96 //================================================================================= addh1d
97 void plotMaker::addh1d(TString fileName, vector<TString> names){
98 for(Int_t i=0,N=names.size(); i<N; ++i) addh1d(fileName, names[i]);
99 }
100
101
102 //================================================================================= isNewh1d
103 bool plotMaker::isNewh1d(TString name){
104 return (h1d.find(name) == h1d.end());
105 }
106
107
108 //================================================================================= savePlots
109 void plotMaker::savePlots(TString fileName, TString option, TString dirName){
110 TFile *outputFile = new TFile(fileName, option);
111 outputFile->mkdir(dirName);
112 outputFile->cd(dirName);
113 for(typename map<TString, TH1D*>::iterator it = h1d.begin(); it != h1d.end(); ++it){
114 //cout<<"name = " << it->second->GetName()<< endl;
115 it->second->Write(it->second->GetName());
116 }
117 outputFile->Close();
118 delete outputFile;
119 if(option=="RECREATE") cout<<"-----> Created File: \"" << fileName << "\" --------> \"" << dirName << "\"" <<endl;
120 if(option=="UPDATE") cout<<"-----> Updated File: \"" << fileName << "\" --------> \"" << dirName << "\"" <<endl;
121
122 //system("ps2pdf "+outputFileDir+".ps "+ "outputFileDir"+".pdf");
123 //cout<<"output File created (*.ps and *.pdf): " << outputFileDir << endl;
124 //system("sleep 1");
125 }
126
127
128 // //================================================================================= saveSinglePlots
129 // template <typename T>
130 // void plotMaker::savePlotsAsImage(TFile *file, map<TString, T> m, TString dir, TDirectory *myDir){
131 //
132 // // TCanvas *c = new TCanvas("temp","temp",0,0,1200,1200);
133 // // for(typename map<TString, T >::iterator it = m.begin(); it != m.end(); ++it){
134 // // //cout<<"name = " << it->second->GetName()<< endl;
135 // // it->second->Write(it->second->GetName());
136 // // it->second->Draw("");
137 // // c->Update();
138 // // //Double_t x = it->second->GetXaxis()->GetXmin() + fabs(it->second->GetXaxis()->GetXmax()-it->second->GetXaxis()->GetXmin())/4;
139 // // //Double_t y = (it->second->GetMaximum());
140 // // }
141 // // c->Close();
142 // }
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164 // //================================================================================= saveSingleFiles
165 // //Usage saveSingleFiles(pl1.h1d, 1, 0, 1);
166 // template <typename T>
167 // void plotMaker::saveSingleFiles(map<TString, T > m, Bool_t root_flg, Bool_t eps_flg, Bool_t gif_flg, TString dir){
168 // Int_t dummy = system("mkdir " + dir); dummy=0;
169 // if(root_flg || eps_flg || gif_flg){
170 // for(typename map<TString, T>::iterator it = m.begin(); it != m.end(); ++it){
171 // it->second->Draw();
172 // TString name=dir; name += it->second->GetName();
173 // if(root_flg){it->second->Print(name+".root");}
174 // if(eps_flg){it->second->Print(name+".eps");}
175 // if(gif_flg){it->second->Print(name+".gif");
176 // }
177 // }
178 // }
179 // }
180
181
182
183
184