530 """Configures Heavy Ion Jet reconstruction."""
533 if not flags.HeavyIon.isDerivation:
542 eventshapeKey = flags.HeavyIon.HIJetPrefix+
"HIEventShapeWeighted"
544 name=
"HIEventShapeMaker_Weighted",
546 InputTowerKey=flags.HeavyIon.Jet.Internal.ClusterKey,
547 OutputContainerKey=eventshapeKey))
551 jetDef2 =
HICaloJetDef(flags, jetradius=2, prefix=flags.HeavyIon.HIJetPrefix, suffix=
"_Unsubtracted")
555 jetRlist = flags.HeavyIon.Jet.RValues
556 for jetR
in jetRlist:
557 jetDef.append(
HICaloJetDef(flags, jetradius=jetR, prefix=flags.HeavyIon.HIJetPrefix, suffix=
"_Unsubtracted"))
558 __log.info(
"HI Jet Collection for Reco: "+jetDef[-1].fullname())
564 pseudoTrkJetCont =
"HIJetTracks"
565 pseudoGhostTrks =
"PseudoJetGhostTracks"
569 flags, name=
"GhostTrackPseudoJets", InputContainer=pseudoTrkJetCont, OutputContainer=pseudoGhostTrks, Label=
"GhostTrack"))
573 pjContNames = [
"PseudoJet"+flags.HeavyIon.Jet.Internal.ClusterKey,pseudoGhostTrks]
575 mergeAlg = CompFactory.PseudoJetMerger(
576 "PJmerge_HIGhostTrack",
577 InputPJContainers = pjContNames,
578 OutputContainer =
"PseudoJet"+flags.HeavyIon.Jet.Internal.ClusterKey+
"_GhostTracks"
580 acc.addEventAlgo(mergeAlg)
589 prefix=flags.HeavyIon.HIJetPrefix,
591 modifiers=[
"HIJetAssoc",
"HIJetMaxOverMean",
"HIJetDiscrim",
"Filter:5000"])
597 InputEventShapeKey=eventshapeKey,
598 CaloJetSeedContainerKey=jetDef_seed0.fullname())
599 iter0 = acc.popToolsAndMerge(acc_iter0)
600 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_iter0", Tools=[iter0]))
607 if not flags.Input.isMC:
608 calib_seq +=
"_Insitu"
612 prefix=flags.HeavyIon.HIJetPrefix,
614 modifiers=[
"HIJetAssoc",
"subtr0",
"HIJetCalib:{}___{}___{}".
format(2, calib_seq,
not flags.Input.isMC),
"Filter:{}".
format(flags.HeavyIon.Jet.SeedPtMin)])
618 if flags.HeavyIon.Jet.doTrackJetSeed:
619 pseudoTrks =
"PseudoTracks"
622 flags, InputContainer=pseudoTrkJetCont, OutputContainer=pseudoTrks))
626 modifiers=[
"HIJetAssoc",
"Filter:{}".
format(flags.HeavyIon.Jet.TrackJetPtMin),
"Sort"])
627 trkJetSeedCont = jetDef_trk.fullname()
631 InputPseudoJets=pseudoTrks))
632 acc.merge(
HIJetAlgCfg(flags, jetDef_trk, Provider=trkJetClust))
639 InputEventShapeKey=eventshapeKey,
640 CaloJetSeedContainerKey=jetDef_seed1.fullname(),
641 TrackJetSeedContainerKey=trkJetSeedCont)
642 iter1 = acc.popToolsAndMerge(acc_iter1)
643 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_iter1", Tools=[iter1]))
647 suffix=
"iter_egamma",
649 InputEventShapeKey=flags.HeavyIon.Global.EventShape,
650 OutputEventShapeKey=flags.HeavyIon.Egamma.EventShape,
651 CaloJetSeedContainerKey=jetDef_seed1.fullname())
652 iter1_eg = acc.popToolsAndMerge(acc_iter1_eg)
653 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_iter1_egamma", Tools=[iter1_eg]))
656 cluster_key_eGamma_deep = flags.HeavyIon.Jet.Internal.ClusterKey+
"_eGamma_deep"
657 if not flags.HeavyIon.isDerivation:
658 subtrToCelltool = acc.popToolsAndMerge(
660 name=
"HIClusterSubtraction_egamma",
661 EventShapeKey=jm_dict1_eg[
"EventShapeKey"],
662 OutClusterKey=cluster_key_eGamma_deep,
663 Modulator=jm_dict1[
"Modulator"],
664 EventShapeMapTool=jm_dict1[
"EventShapeMapTool"],
666 ApplyOriginCorrection=
False)
668 acc.addEventAlgo(CompFactory.JetAlgorithm(
"jetalgHI_subtrToCellTool", Tools=[subtrToCelltool]))
674 clusterKey = cluster_key_eGamma_deep
675 if flags.HeavyIon.isDerivation:
676 clusterKey = flags.HeavyIon.Jet.Internal.ClusterKey
677 subtrToClusterTool = acc.popToolsAndMerge(
679 name=
"HIClusterSubtraction_final",
680 EventShapeKey=jm_dict1[
"EventShapeKey"],
681 ClusterKey=clusterKey,
682 OutClusterKey=flags.HeavyIon.Jet.ClusterKey,
683 Modulator=jm_dict1[
"Modulator"],
684 EventShapeMapTool=jm_dict1[
"EventShapeMapTool"],
685 ApplyOriginCorrection=
False)
687 acc.addEventAlgo(CompFactory.JetAlgorithm(
688 "jetalgHI_subtrToClusterTool", Tools=[subtrToClusterTool]))
692 ClusterKey=flags.HeavyIon.Jet.ClusterKey,
693 Subtractor=jm_dict1[
"Subtractor"])
696 if flags.HeavyIon.Jet.WriteHIClusters:
697 output_hicluster = [
"xAOD::CaloClusterContainer#"+flags.HeavyIon.Jet.ClusterKey,
698 "xAOD::CaloClusterAuxContainer#"+flags.HeavyIon.Jet.ClusterKey+
"Aux."]
699 acc.merge(
addToESD(flags, output_hicluster))
700 acc.merge(
addToAOD(flags, output_hicluster))
703 extramods = [
"Sort",
"Width",
"CaloEnergies",
"LArHVCorr",
"CaloQuality",
"TrackMoments",
"JVF",
"JVT"]
705 print(
"Printing flags: isDerivation: ", flags.HeavyIon.isDerivation,
"doHIBTagging: ", flags.HeavyIon.doHIBTagging,
"isMC: ", flags.Input.isMC,
"jet radius: ", jd.radius)
706 if flags.HeavyIon.isDerivation
and flags.HeavyIon.doHIBTagging
and jd.radius==0.4:
707 extramods += flags.HeavyIon.FTagModifiers
709 extramods += flags.HeavyIon.FTagTruthModifiers
712 prefix=flags.HeavyIon.HIJetPrefix,
714 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)
715 if flags.HeavyIon.isDerivation
and flags.HeavyIon.doHIBTagging
and flags.Input.isMC
and jd.radius==0.4:
716 jetDef_final.ghostdefs += [
"Truth",
"BHadronsInitial",
"BHadronsFinal",
"BQuarksFinal",
"CHadronsInitial",
"CHadronsFinal",
"CQuarksFinal",
"TausFinal",
"TQuarksFinal",
"Partons"]
719 pjaList = pjaList[1:]
720 for pjalg
in pjaList:
721 if pjalg.Label==
'GhostTrack':
723 pjalg.name=
"GhostTrackPseudoJets"
724 pjalg.InputContainer=pseudoTrkJetCont
725 pjalg.OutputContainer=pseudoGhostTrks
726 if pjalg.Label==
'merged':
727 inpjcnt = pjalg.InputPJContainers
728 inpjcnt.remove(
'PseudoJetGhostJetSelectedTracks')
729 inpjcnt.append(pseudoGhostTrks)
730 pjalg.InputPJContainers = inpjcnt
731 acc.addEventAlgo(pjalg)
732 finalpjs =
str(pjalg.OutputContainer)
734 jetDef_final._internalAtt[
'finalPJContainer'] = finalpjs
736 acc.addEventAlgo(jetRecAlg)
740 output = [
"xAOD::JetContainer#"+jetDef_final.fullname(),
741 "xAOD::JetAuxContainer#"+jetDef_final.fullname()+
"Aux.-PseudoJet"]
746 if flags.HeavyIon.Jet.doTrackJetSeed:
747 output = [
"xAOD::JetContainer#"+jetDef_trk.fullname(),
748 "xAOD::JetAuxContainer#"+jetDef_trk.fullname()+
"Aux.-PseudoJet"]