227 :
231{
232
233
234 if (!objIn) {
235 std::cout << "ERROR while adding " << nameIn << ": Histogram pointer is NULL" << std::endl;
236 return;
237 }
238
239 char howToMerge[256]={};
240 char mdName[256]={};
241 strcpy(howToMerge,"<default>");
242 if (!md) {
243 std::cout << "ERROR while adding " << nameIn << ": No metadata tree. Use default merging method" << std::endl;
244 }
245 else {
246 md->SetBranchAddress("MergeMethod", howToMerge);
247 md->SetBranchAddress("Name", mdName);
248 unsigned nEntries = md->GetEntries();
250 md->GetEntry(i);
251 if (
name.compare(mdName)==0)
break;
252 }
253 }
254
255 if (dbg) std::cout << "Name:" << mdName << " mergeMethod=" << howToMerge << std::endl;
256 if (
nullptr!=
dynamic_cast<TH1*
>(
obj)) {
257 if (!strcmp(howToMerge,"<default>"))
259 else if (!strcmp(howToMerge,"weightedAverage"))
261 else if (!strcmp(howToMerge,"weightedEff"))
263 else if (!strcmp(howToMerge,"mergeRMS"))
265 else if (!strcmp(howToMerge,"RMSpercentDeviation"))
267 else if (!strcmp(howToMerge,"perBinEffPerCent"))
269 else if (!strcmp(howToMerge,"lowerLB"))
271 else if (!strcmp(howToMerge,"identical"))
273
274 else {
275 std::cout << "ERROR: Unknown merging method (" << howToMerge << ") for object of type TH1 named " << nameIn << std::endl;
277 }
278 }
279 else if (
nullptr!=
dynamic_cast<TH2*
>(
obj)) {
280 if (!strcmp(howToMerge,"<default>"))
282 else if (!strcmp(howToMerge,"weightedAverage"))
284 else {
285 std::cout << "ERROR: Unknown merging method (" << howToMerge << ") for object of type TH2 named " << nameIn << std::endl;
287 }
288
289 }
290 else {
291 std::cout <<
"Object "<<
name <<
" has unkown type" << std::endl;
293 }
294}
void defaultMerge(TObject *a, const TObject *b)
void(* mergeMethod)(TObject *a, const TObject *b)