@@ -114,6 +114,106 @@ TH2Ratio<T>::TH2Ratio(const char* name, const char* title, int nbinsx, double xm
114114 init ();
115115}
116116
117+ template <class T >
118+ TH2Ratio<T>::TH2Ratio(const char * name, const char * title, int nbinsx, const float *xbins, int nbinsy, const float *ybins, bool uniformScaling)
119+ : T(name, title, nbinsx, xbins, nbinsy, ybins),
120+ o2::mergers::MergeInterface (),
121+ mUniformScaling(uniformScaling)
122+ {
123+ // do not add created histograms to gDirectory
124+ // see https://root.cern.ch/doc/master/TEfficiency_8cxx.html
125+ {
126+ TString nameNum = T::GetName () + TString (" _num" );
127+ TString nameDen = T::GetName () + TString (" _den" );
128+ TString titleNum = T::GetTitle () + TString (" num" );
129+ TString titleDen = T::GetTitle () + TString (" den" );
130+ TDirectory::TContext ctx (nullptr );
131+ mHistoNum = new T (nameNum, titleNum, nbinsx, xbins, nbinsy, ybins);
132+ if (mUniformScaling ) {
133+ mHistoDen = new T (nameDen, titleDen, 1 , -1 , 1 , 1 , -1 , 1 );
134+ } else {
135+ mHistoDen = new T (nameDen, titleDen, nbinsx, xbins, nbinsy, ybins);
136+ }
137+ }
138+
139+ init ();
140+ }
141+
142+ template <class T >
143+ TH2Ratio<T>::TH2Ratio(const char * name, const char * title, int nbinsx, const double *xbins, int nbinsy, const double *ybins, bool uniformScaling)
144+ : T(name, title, nbinsx, xbins, nbinsy, ybins),
145+ o2::mergers::MergeInterface (),
146+ mUniformScaling(uniformScaling)
147+ {
148+ // do not add created histograms to gDirectory
149+ // see https://root.cern.ch/doc/master/TEfficiency_8cxx.html
150+ {
151+ TString nameNum = T::GetName () + TString (" _num" );
152+ TString nameDen = T::GetName () + TString (" _den" );
153+ TString titleNum = T::GetTitle () + TString (" num" );
154+ TString titleDen = T::GetTitle () + TString (" den" );
155+ TDirectory::TContext ctx (nullptr );
156+ mHistoNum = new T (nameNum, titleNum, nbinsx, xbins, nbinsy, ybins);
157+ if (mUniformScaling ) {
158+ mHistoDen = new T (nameDen, titleDen, 1 , -1 , 1 , 1 , -1 , 1 );
159+ } else {
160+ mHistoDen = new T (nameDen, titleDen, nbinsx, xbins, nbinsy, ybins);
161+ }
162+ }
163+
164+ init ();
165+ }
166+
167+ template <class T >
168+ TH2Ratio<T>::TH2Ratio(const char * name, const char * title, int nbinsx, const double *xbins, int nbinsy, double ymin, double ymax, bool uniformScaling)
169+ : T(name, title, nbinsx, xbins, nbinsy, ymin, ymax),
170+ o2::mergers::MergeInterface (),
171+ mUniformScaling(uniformScaling)
172+ {
173+ // do not add created histograms to gDirectory
174+ // see https://root.cern.ch/doc/master/TEfficiency_8cxx.html
175+ {
176+ TString nameNum = T::GetName () + TString (" _num" );
177+ TString nameDen = T::GetName () + TString (" _den" );
178+ TString titleNum = T::GetTitle () + TString (" num" );
179+ TString titleDen = T::GetTitle () + TString (" den" );
180+ TDirectory::TContext ctx (nullptr );
181+ mHistoNum = new T (nameNum, titleNum, nbinsx, xbins, nbinsy, ymin, ymax);
182+ if (mUniformScaling ) {
183+ mHistoDen = new T (nameDen, titleDen, 1 , -1 , 1 , 1 , -1 , 1 );
184+ } else {
185+ mHistoDen = new T (nameDen, titleDen, nbinsx, xbins, nbinsy, ymin, ymax);
186+ }
187+ }
188+
189+ init ();
190+ }
191+
192+ template <class T >
193+ TH2Ratio<T>::TH2Ratio(const char * name, const char * title, int nbinsx, double xmin, double xmax, int nbinsy, const double *ybins, bool uniformScaling)
194+ : T(name, title, nbinsx, xmin, xmax, nbinsy, ybins),
195+ o2::mergers::MergeInterface (),
196+ mUniformScaling(uniformScaling)
197+ {
198+ // do not add created histograms to gDirectory
199+ // see https://root.cern.ch/doc/master/TEfficiency_8cxx.html
200+ {
201+ TString nameNum = T::GetName () + TString (" _num" );
202+ TString nameDen = T::GetName () + TString (" _den" );
203+ TString titleNum = T::GetTitle () + TString (" num" );
204+ TString titleDen = T::GetTitle () + TString (" den" );
205+ TDirectory::TContext ctx (nullptr );
206+ mHistoNum = new T (nameNum, titleNum, nbinsx, xmin, xmax, nbinsy, ybins);
207+ if (mUniformScaling ) {
208+ mHistoDen = new T (nameDen, titleDen, 1 , -1 , 1 , 1 , -1 , 1 );
209+ } else {
210+ mHistoDen = new T (nameDen, titleDen, nbinsx, xmin, xmax, nbinsy, ybins);
211+ }
212+ }
213+
214+ init ();
215+ }
216+
117217template <class T >
118218TH2Ratio<T>::TH2Ratio(const char * name, const char * title, bool uniformScaling)
119219 : T(name, title, 10 , 0 , 10 , 10 , 0 , 10 ),
@@ -177,8 +277,8 @@ void TH2Ratio<T>::update()
177277 }
178278
179279 T::Reset ();
180- T::GetXaxis ()-> Set ( mHistoNum ->GetXaxis ()->GetNbins (), mHistoNum -> GetXaxis ()-> GetXmin (), mHistoNum -> GetXaxis ()-> GetXmax ());
181- T::GetYaxis ()-> Set ( mHistoNum ->GetYaxis ()->GetNbins (), mHistoNum -> GetYaxis ()-> GetXmin (), mHistoNum -> GetYaxis ()-> GetXmax ());
280+ mHistoNum ->GetXaxis ()->Copy (* T:: GetXaxis ());
281+ mHistoNum ->GetYaxis ()->Copy (* T:: GetYaxis ());
182282 T::SetBinsLength ();
183283
184284 // Copy bin labels between histograms.
0 commit comments