531 """Configures Heavy Ion Jet reconstruction."""
532 acc = ComponentAccumulator()
534 if not flags.HeavyIon.isDerivation:
543 eventshapeKey = flags.HeavyIon.HIJetPrefix+
"HIEventShapeWeighted"
544 acc.merge(HIEventShapeMakerCfg(flags,
545 name=
"HIEventShapeMaker_Weighted",
547 InputTowerKey=flags.HeavyIon.Jet.Internal.ClusterKey,
548 OutputContainerKey=eventshapeKey))
552 jetDef2 =
HICaloJetDef(flags, jetradius=2, prefix=flags.HeavyIon.HIJetPrefix, suffix=
"_Unsubtracted")
556 jetRlist = flags.HeavyIon.Jet.RValues
557 for jetR
in jetRlist:
558 jetDef.append(
HICaloJetDef(flags, jetradius=jetR, prefix=flags.HeavyIon.HIJetPrefix, suffix=
"_Unsubtracted"))
559 __log.info(
"HI Jet Collection for Reco: "+jetDef[-1].fullname())
565 pseudoTrkJetCont =
"HIJetTracks"
566 pseudoGhostTrks =
"PseudoJetGhostTracks"
570 flags, name=
"GhostTrackPseudoJets", InputContainer=pseudoTrkJetCont, OutputContainer=pseudoGhostTrks, Label=
"GhostTrack"))
574 pjContNames = [
"PseudoJet"+flags.HeavyIon.Jet.Internal.ClusterKey,pseudoGhostTrks]
576 mergeAlg = CompFactory.PseudoJetMerger(
577 "PJmerge_HIGhostTrack",
578 InputPJContainers = pjContNames,
579 OutputContainer =
"PseudoJet"+flags.HeavyIon.Jet.Internal.ClusterKey+
"_GhostTracks"
581 acc.addEventAlgo(mergeAlg)
590 prefix=flags.HeavyIon.HIJetPrefix,
592 modifiers=[
"HIJetAssoc",
"HIJetMaxOverMean",
"HIJetDiscrim",
"Filter:5000"])
598 InputEventShapeKey=eventshapeKey,
599 CaloJetSeedContainerKey=jetDef_seed0.fullname())
600 iter0 = acc.popToolsAndMerge(acc_iter0)
601 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_iter0", Tools=[iter0]))
608 if not flags.Input.isMC:
609 calib_seq +=
"_Insitu"
613 prefix=flags.HeavyIon.HIJetPrefix,
615 modifiers=[
"HIJetAssoc",
"subtr0",
"HIJetCalib:{}___{}___{}".format(2, calib_seq,
not flags.Input.isMC),
"Filter:{}".format(flags.HeavyIon.Jet.SeedPtMin)])
619 if flags.HeavyIon.Jet.doTrackJetSeed:
620 pseudoTrks =
"PseudoTracks"
623 flags, InputContainer=pseudoTrkJetCont, OutputContainer=pseudoTrks))
627 modifiers=[
"HIJetAssoc",
"Filter:{}".format(flags.HeavyIon.Jet.TrackJetPtMin),
"Sort"])
628 trkJetSeedCont = jetDef_trk.fullname()
632 InputPseudoJets=pseudoTrks))
633 acc.merge(
HIJetAlgCfg(flags, jetDef_trk, Provider=trkJetClust))
640 InputEventShapeKey=eventshapeKey,
641 CaloJetSeedContainerKey=jetDef_seed1.fullname(),
642 TrackJetSeedContainerKey=trkJetSeedCont)
643 iter1 = acc.popToolsAndMerge(acc_iter1)
644 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_iter1", Tools=[iter1]))
648 suffix=
"iter_egamma",
650 InputEventShapeKey=flags.HeavyIon.Global.EventShape,
651 OutputEventShapeKey=flags.HeavyIon.Egamma.EventShape,
652 CaloJetSeedContainerKey=jetDef_seed1.fullname())
653 iter1_eg = acc.popToolsAndMerge(acc_iter1_eg)
654 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_iter1_egamma", Tools=[iter1_eg]))
657 cluster_key_eGamma_deep = flags.HeavyIon.Jet.Internal.ClusterKey+
"_eGamma_deep"
658 if not flags.HeavyIon.isDerivation:
659 subtrToCelltool = acc.popToolsAndMerge(
661 name=
"HIClusterSubtraction_egamma",
662 EventShapeKey=jm_dict1_eg[
"EventShapeKey"],
663 OutClusterKey=cluster_key_eGamma_deep,
664 Modulator=jm_dict1[
"Modulator"],
665 EventShapeMapTool=jm_dict1[
"EventShapeMapTool"],
667 ApplyOriginCorrection=
False)
669 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_subtrToCellTool", Tools=[subtrToCelltool]))
675 clusterKey = cluster_key_eGamma_deep
676 if flags.HeavyIon.isDerivation:
677 clusterKey = flags.HeavyIon.Jet.Internal.ClusterKey
678 subtrToClusterTool = acc.popToolsAndMerge(
680 name=
"HIClusterSubtraction_final",
681 EventShapeKey=jm_dict1[
"EventShapeKey"],
682 ClusterKey=clusterKey,
683 OutClusterKey=flags.HeavyIon.Jet.ClusterKey,
684 Modulator=jm_dict1[
"Modulator"],
685 EventShapeMapTool=jm_dict1[
"EventShapeMapTool"],
686 ApplyOriginCorrection=
False)
688 acc.addEventAlgo(CompFactory.JetAlgorithm(
689 "jetalgHI_subtrToClusterTool", Tools=[subtrToClusterTool]))
693 ClusterKey=flags.HeavyIon.Jet.ClusterKey,
694 Subtractor=jm_dict1[
"Subtractor"])
697 if flags.HeavyIon.Jet.WriteHIClusters:
698 output_hicluster = [
"xAOD::CaloClusterContainer#"+flags.HeavyIon.Jet.ClusterKey,
699 "xAOD::CaloClusterAuxContainer#"+flags.HeavyIon.Jet.ClusterKey+
"Aux."]
700 acc.merge(addToESD(flags, output_hicluster))
701 acc.merge(addToAOD(flags, output_hicluster))
704 extramods = [
"Sort",
"Width",
"CaloEnergies",
"LArHVCorr",
"CaloQuality",
"TrackMoments",
"JVF",
"JVT"]
706 print(
"Printing flags: isDerivation: ", flags.HeavyIon.isDerivation,
"doHIBTagging: ", flags.HeavyIon.doHIBTagging,
"isMC: ", flags.Input.isMC,
"jet radius: ", jd.radius)
707 if flags.HeavyIon.isDerivation
and flags.HeavyIon.doHIBTagging
and jd.radius==0.4:
708 extramods += flags.HeavyIon.FTagModifiers
710 extramods += flags.HeavyIon.FTagTruthModifiers
713 prefix=flags.HeavyIon.HIJetPrefix,
715 modifiers=[
"subtr1",
"consmod",
"HIJetCalib:{}___{}___{}".format(str(float(jd.radius)*10).
replace(
'.0',
''),calib_seq,
not flags.Input.isMC),
"Filter:{}".format(flags.HeavyIon.Jet.RecoOutputPtMin)]+extramods)
716 if flags.HeavyIon.isDerivation
and flags.HeavyIon.doHIBTagging
and flags.Input.isMC
and jd.radius==0.4:
717 jetDef_final.ghostdefs += [
"Truth",
"BHadronsInitial",
"BHadronsFinal",
"BQuarksFinal",
"CHadronsInitial",
"CHadronsFinal",
"CQuarksFinal",
"TausFinal",
"TQuarksFinal",
"Partons"]
718 jetDef_final = solveDependencies(jetDef_final, flags)
719 pjaList = getPseudoJetAlgs(jetDef_final)
720 pjaList = pjaList[1:]
721 for pjalg
in pjaList:
722 if pjalg.Label==
'GhostTrack':
724 pjalg.name=
"GhostTrackPseudoJets"
725 pjalg.InputContainer=pseudoTrkJetCont
726 pjalg.OutputContainer=pseudoGhostTrks
727 if pjalg.Label==
'merged':
728 inpjcnt = pjalg.InputPJContainers
729 inpjcnt.remove(
'PseudoJetGhostJetSelectedTracks')
730 inpjcnt.append(pseudoGhostTrks)
731 pjalg.InputPJContainers = inpjcnt
732 acc.addEventAlgo(pjalg)
733 finalpjs = str(pjalg.OutputContainer)
735 jetDef_final._internalAtt[
'finalPJContainer'] = finalpjs
737 acc.addEventAlgo(jetRecAlg)
741 output = [
"xAOD::JetContainer#"+jetDef_final.fullname(),
742 "xAOD::JetAuxContainer#"+jetDef_final.fullname()+
"Aux.-PseudoJet"]
743 acc.merge(addToESD(flags, output))
744 acc.merge(addToAOD(flags, output))
747 if flags.HeavyIon.Jet.doTrackJetSeed:
748 output = [
"xAOD::JetContainer#"+jetDef_trk.fullname(),
749 "xAOD::JetAuxContainer#"+jetDef_trk.fullname()+
"Aux.-PseudoJet"]
750 acc.merge(addToESD(flags, output))
751 acc.merge(addToAOD(flags, output))