226 :
230{
231
232
233 if (!objIn) {
234 std::cout << "ERROR while adding " << nameIn << ": Histogram pointer is NULL" << std::endl;
235 return;
236 }
237
238 char howToMerge[256]={};
239 char mdName[256]={};
240 strcpy(howToMerge,"<default>");
241 if (!md) {
242 std::cout << "ERROR while adding " << nameIn << ": No metadata tree. Use default merging method" << std::endl;
243 }
244 else {
245 md->SetBranchAddress("MergeMethod", howToMerge);
246 md->SetBranchAddress("Name", mdName);
247 unsigned nEntries = md->GetEntries();
249 md->GetEntry(i);
250 if (
name.compare(mdName)==0)
break;
251 }
252 }
253
254 if (dbg) std::cout << "Name:" << mdName << " mergeMethod=" << howToMerge << std::endl;
255 if (
nullptr!=
dynamic_cast<TH1*
>(
obj)) {
256 if (!strcmp(howToMerge,"<default>"))
258 else if (!strcmp(howToMerge,"weightedAverage"))
260 else if (!strcmp(howToMerge,"weightedEff"))
262 else if (!strcmp(howToMerge,"mergeRMS"))
264 else if (!strcmp(howToMerge,"RMSpercentDeviation"))
266 else if (!strcmp(howToMerge,"perBinEffPerCent"))
268 else if (!strcmp(howToMerge,"lowerLB"))
270 else if (!strcmp(howToMerge,"identical"))
272
273 else {
274 std::cout << "ERROR: Unknown merging method (" << howToMerge << ") for object of type TH1 named " << nameIn << std::endl;
276 }
277 }
278 else if (
nullptr!=
dynamic_cast<TH2*
>(
obj)) {
279 if (!strcmp(howToMerge,"<default>"))
281 else if (!strcmp(howToMerge,"weightedAverage"))
283 else {
284 std::cout << "ERROR: Unknown merging method (" << howToMerge << ") for object of type TH2 named " << nameIn << std::endl;
286 }
287
288 }
289 else {
290 std::cout <<
"Object "<<
name <<
" has unkown type" << std::endl;
292 }
293}
void defaultMerge(TObject *a, const TObject *b)
void(* mergeMethod)(TObject *a, const TObject *b)