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

# User Rev Content
1 mstein 1.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