615def retrieveHistoToolConf(alias):
616 """Return a HistoSpec from alias :
617 * if alias is a string look up in JetStandardHistoSpecs.knownHistos
618 --> if found, return a full clone (so client can modify it safely)
619 --> if not found and contain a ';' build a HistoSpec for a 2D histograms
620 * if alias is a ToolSpec, returns it directly
621 """
622 if isinstance(alias, ToolSpec):
623 return alias
624 elif isinstance(alias,str):
625 from JetMonitoring.JetStandardHistoSpecs import knownHistos
626
627 c = knownHistos.get(alias,None)
628 if c :
629
630
631 return c.clone(c.name)
632 if ';' not in alias:
633 raise JetMonSpecException(" Unknown Histo specification : '{}' ".format(alias))
634
635
636
637 aliases = alias.split(';')
638 aliasX, aliasY = aliases[0], aliases[1]
639 cX = knownHistos.get(aliasX,None)
640 cY = knownHistos.get(aliasY,None)
641 if len(aliases) == 2:
642 if None in (cX,cY):
643 print(
"ERROR unknown Histo Filler specification ", cX
if cX
is None else cY)
644 return None
645
646 return cX.to2DSpec(cY)
647 else:
648 aliasZ = aliases[2]
649 cZ = knownHistos.get(aliasZ,None)
650 if cZ is None:
651
652
653
654 vZ = retrieveVarToolConf(aliasZ)
655 cZ = HistoSpec(vZ.Name, (10,0,1) , title=vZ.Name+';'+vZ.Name+';', xvar=vZ )
656 return cX.to2DSpec(cY, zspec=cZ)
657
658 else:
659
660 print(
'ERROR can not instantiate a tool from ', alias)
661 return None
662
663