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