659 geometry=None, autoconfigFromFlags=None, noSystematics=None,
660 onlyNominalOR=False, forceEGammaFullSimConfig=False,
661 returnConfigSeq=False) :
669 trackJets =
not isPhyslite
and not forCompare
671 if autoconfigFromFlags
is not None:
673 geometry = autoconfigFromFlags.GeoModel.Run
675 configSeq = ConfigSequence ()
677 outputContainers = {
'mu_' :
'OutMuons',
678 'ph_' :
'OutPhotons',
679 'tau_':
'OutTauJets',
683 if not(forceEGammaFullSimConfig
and dataType
is DataType.FastSim
and forCompare):
684 outputContainers[
'el_'] =
'OutElectrons'
687 from AnalysisAlgorithmsConfig.ConfigFactory
import ConfigFactory
688 config = ConfigFactory()
690 configSeq += config.makeConfig(
'CommonServices')
691 configSeq.setOptionValue(
'.systematicsHistogram',
'systematicsList')
693 configSeq.setOptionValue(
'.filterSystematics',
"^(?:(?!PseudoData).)*$")
698 configSeq += config.makeConfig(
'PileupReweighting')
699 if dataType
is DataType.FastSim
and forCompare:
701 configSeq.setOptionValue(
'.userPileupConfigs', prwfiles)
702 configSeq.setOptionValue(
'.userLumicalcFiles', lumicalcfiles)
703 configSeq.setOptionValue(
'.useDefaultConfig',
False)
707 vars += [
'EventInfo.runNumber -> runNumber',
708 'EventInfo.eventNumber -> eventNumber',
709 'EventInfo.mcChannelNumber -> mcChannelNumber']
714 configSeq += config.makeConfig (
'EventCleaning')
715 configSeq.setOptionValue (
'.runEventCleaning',
True)
718 configSeq += config.makeConfig(
'Jets',
719 containerName=
'AnaJets',
720 jetCollection=
'AntiKt4EMPFlowJets')
721 configSeq.setOptionValue (
'.runJvtUpdate',
False )
722 configSeq.setOptionValue (
'.runNNJvtUpdate',
True )
724 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
726 configSeq += config.makeConfig(
'Jets.JVT',
727 containerName=
'AnaJets' )
730 btagWP =
"FixedCutBEff_60"
731 configSeq += config.makeConfig(
'Jets.FlavourTagging',
732 containerName=
'AnaJets',
733 selectionName=
'ftag' )
734 configSeq.setOptionValue (
'.noEffSF', forCompare)
735 configSeq.setOptionValue (
'.btagger', btagger)
736 configSeq.setOptionValue (
'.btagWP', btagWP)
737 configSeq.setOptionValue (
'.saveScores',
'All')
740 configSeq += config.makeConfig(
'Jets.FlavourTaggingEventSF',
741 containerName=
'AnaJets.baselineJvt',
742 selectionName=
'ftag')
743 configSeq.setOptionValue (
'.btagger', btagger)
744 configSeq.setOptionValue (
'.btagWP', btagWP)
747 configSeq += config.makeConfig(
'Jets',
748 containerName=
'AnaLargeRJets',
749 jetCollection=
'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' )
750 configSeq.setOptionValue (
'.postfix',
'largeR_jets' )
751 outputContainers[
'larger_jet_'] =
'OutLargeRJets'
753 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
756 configSeq += config.makeConfig(
'Jets',
757 containerName=
'AnaTrackJets',
758 jetCollection=
'AntiKtVR30Rmax4Rmin02PV0TrackJets' )
759 configSeq.setOptionValue (
'.postfix',
'track_jets' )
760 outputContainers[
'track_jet_'] =
'OutTrackJets'
762 configSeq += config.makeConfig (
'Jets.PtEtaSelection',
763 containerName=
'AnaJets')
764 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
765 configSeq.setOptionValue (
'.minPt', jetMinPt)
766 configSeq.setOptionValue (
'.maxEta', jetMaxEta)
768 configSeq += config.makeConfig (
'Jets.PtEtaSelection',
769 containerName=
'AnaLargeRJets')
770 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
771 configSeq.setOptionValue (
'.minPt', jetMinPt)
772 configSeq.setOptionValue (
'.maxEta', jetMaxEta)
774 configSeq += config.makeConfig (
'Jets.PtEtaSelection',
775 containerName=
'AnaTrackJets')
776 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
777 configSeq.setOptionValue (
'.minPt', jetMinPt)
778 configSeq.setOptionValue (
'.maxEta', jetMaxEta)
783 recomputeLikelihood=
False
784 configSeq += config.makeConfig (
'Electrons',
785 containerName=
'AnaElectrons' )
786 configSeq.setOptionValue (
'.forceFullSimConfig', forceEGammaFullSimConfig)
788 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
789 configSeq += config.makeConfig (
'Electrons.WorkingPoint',
790 containerName=
'AnaElectrons',
791 selectionName=
'loose')
792 configSeq.setOptionValue (
'.forceFullSimConfig', forceEGammaFullSimConfig)
794 configSeq.setOptionValue (
'.noEffSF',
True)
796 configSeq.setOptionValue (
'.likelihoodWP',
'LooseBLayerLH')
798 configSeq.setOptionValue (
'.likelihoodWP',
'LooseDNN')
799 configSeq.setOptionValue (
'.isolationWP',
'Loose_VarRad')
800 configSeq.setOptionValue (
'.recomputeLikelihood', recomputeLikelihood)
801 configSeq.setOptionValue (
'.writeTrackD0Z0',
True)
803 configSeq += config.makeConfig (
'Electrons.PtEtaSelection',
804 containerName=
'AnaElectrons')
805 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
806 configSeq.setOptionValue (
'.minPt', electronMinPt)
807 configSeq.setOptionValue (
'.maxEta', electronMaxEta)
811 configSeq += config.makeConfig (
'Photons',
812 containerName=
'AnaPhotons' )
813 configSeq.setOptionValue (
'.forceFullSimConfig', forceEGammaFullSimConfig)
814 configSeq.setOptionValue (
'.recomputeIsEM',
False)
816 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
817 configSeq += config.makeConfig (
'Photons.WorkingPoint',
818 containerName=
'AnaPhotons',
819 selectionName=
'tight')
820 configSeq.setOptionValue (
'.forceFullSimConfig', forceEGammaFullSimConfig)
822 configSeq.setOptionValue (
'.noEffSF',
True)
823 configSeq.setOptionValue (
'.qualityWP',
'Tight')
824 configSeq.setOptionValue (
'.isolationWP',
'FixedCutTight')
825 configSeq.setOptionValue (
'.recomputeIsEM',
False)
827 configSeq += config.makeConfig (
'Photons.PtEtaSelection',
828 containerName=
'AnaPhotons')
829 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
830 configSeq.setOptionValue (
'.minPt', photonMinPt)
831 configSeq.setOptionValue (
'.maxEta', photonMaxEta)
835 configSeq += config.makeConfig (
'Muons',
836 containerName=
'AnaMuons')
838 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
839 configSeq += config.makeConfig (
'Muons.WorkingPoint',
840 containerName=
'AnaMuons',
841 selectionName=
'medium')
842 configSeq.setOptionValue (
'.quality',
'Medium')
843 configSeq.setOptionValue (
'.isolation',
'Loose_VarRad')
845 configSeq.setOptionValue (
'.onlyRecoEffSF',
True)
846 configSeq.setOptionValue (
'.writeTrackD0Z0',
True)
853 configSeq += config.makeConfig (
'Muons.PtEtaSelection',
854 containerName=
'AnaMuons')
855 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
856 configSeq.setOptionValue (
'.minPt', muonMinPt)
857 configSeq.setOptionValue (
'.maxEta', muonMaxEta)
860 configSeq += config.makeConfig (
'TauJets',
861 containerName=
'AnaTauJets')
862 configSeq += config.makeConfig (
'TauJets.WorkingPoint',
863 containerName=
'AnaTauJets',
864 selectionName=
'tight')
865 configSeq.setOptionValue (
'.quality',
'Tight')
868 configSeq += config.makeConfig(
'TauJets.TriggerSF')
869 configSeq.setOptionValue(
'.containerName',
'AnaTauJets')
870 configSeq.setOptionValue(
'.tauID',
'Tight')
871 configSeq.setOptionValue(
'.triggerChainsPerYear', tauTriggerChainsSF)
873 configSeq += config.makeConfig (
'TauJets.PtEtaSelection',
874 containerName=
'AnaTauJets')
875 configSeq.setOptionValue (
'.selectionDecoration',
'selectPtEta')
876 configSeq.setOptionValue (
'.minPt', tauMinPt)
877 configSeq.setOptionValue (
'.maxEta', tauMaxEta)
881 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaJets')
883 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaLargeRJets')
885 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaTrackJets')
886 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaElectrons')
887 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaPhotons')
888 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaMuons')
889 configSeq += config.makeConfig(
'SystObjectLink', containerName=
'AnaTauJets')
892 if dataType
is not DataType.Data :
894 configSeq += config.makeConfig(
'GeneratorLevelAnalysis')
895 configSeq.setOptionValue (
'.saveCutBookkeepers',
True)
896 configSeq.setOptionValue (
'.runNumber', 284500)
897 configSeq.setOptionValue (
'.cutBookkeepersSystematics',
True)
901 configSeq += config.makeConfig (
'MissingET',
902 containerName=
'AnaMET')
903 configSeq.setOptionValue (
'.jets',
'AnaJets')
904 configSeq.setOptionValue (
'.taus',
'AnaTauJets.tight')
905 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose')
906 configSeq.setOptionValue (
'.photons',
'AnaPhotons.tight')
915 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium')
919 configSeq += config.makeConfig(
'OverlapRemoval' )
920 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose')
921 configSeq.setOptionValue (
'.photons',
'AnaPhotons.tight')
924 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium')
925 configSeq.setOptionValue (
'.jets',
'AnaJets')
926 configSeq.setOptionValue (
'.taus',
'AnaTauJets.tight')
927 configSeq.setOptionValue (
'.inputLabel',
'preselectOR')
928 configSeq.setOptionValue (
'.outputLabel',
'passesOR' )
929 configSeq.setOptionValue (
'.nominalOnly', onlyNominalOR )
933 configSeq.setOptionValue (
'.addToAllSelections',
True)
934 configSeq.setOptionValue (
'.addPreselection',
True)
944 from EventSelectionAlgorithms.EventSelectionConfig
import makeMultipleEventSelectionConfigs
946 met =
'AnaMET', btagDecoration =
'ftag_select_ftag',
947 selectionCutsDict = exampleSelectionCuts, noFilter =
True)
951 configSeq += config.makeConfig (
'ObjectCutFlow',
952 containerName=
'AnaJets',
954 configSeq += config.makeConfig (
'ObjectCutFlow',
955 containerName=
'AnaElectrons',
956 selectionName=
'loose')
957 configSeq += config.makeConfig (
'ObjectCutFlow',
958 containerName=
'AnaPhotons',
959 selectionName=
'tight')
960 configSeq += config.makeConfig (
'ObjectCutFlow',
961 containerName=
'AnaMuons',
962 selectionName=
'medium')
963 configSeq += config.makeConfig (
'ObjectCutFlow',
964 containerName=
'AnaTauJets',
965 selectionName=
'tight')
969 configSeq += config.makeConfig (
'Thinning',
970 containerName=
'AnaElectrons')
971 configSeq.setOptionValue (
'.selectionName',
'loose')
972 configSeq.setOptionValue (
'.outputName',
'OutElectrons')
973 configSeq += config.makeConfig (
'Thinning',
974 containerName=
'AnaPhotons')
975 configSeq.setOptionValue (
'.selectionName',
'tight')
976 configSeq.setOptionValue (
'.outputName',
'OutPhotons')
977 configSeq += config.makeConfig (
'Thinning',
978 containerName=
'AnaMuons')
979 configSeq.setOptionValue (
'.selectionName',
'medium')
980 configSeq.setOptionValue (
'.outputName',
'OutMuons')
981 configSeq += config.makeConfig (
'Thinning',
982 containerName=
'AnaTauJets')
983 configSeq.setOptionValue (
'.selectionName',
'tight')
984 configSeq.setOptionValue (
'.outputName',
'OutTauJets')
985 configSeq += config.makeConfig (
'Thinning',
986 containerName=
'AnaJets')
987 configSeq.setOptionValue (
'.outputName',
'OutJets')
989 configSeq += config.makeConfig (
'Thinning',
990 containerName=
'AnaLargeRJets')
991 configSeq.setOptionValue (
'.outputName',
'OutLargeRJets')
993 configSeq += config.makeConfig (
'Thinning',
994 containerName=
'AnaTrackJets')
995 configSeq.setOptionValue (
'.outputName',
'OutTrackJets')
1001 configSeq += config.makeConfig(
'Trigger' )
1002 configSeq.setOptionValue (
'.triggerChainsPerYear', triggerChainsPerYear )
1003 configSeq.setOptionValue (
'.noFilter',
True )
1004 configSeq.setOptionValue (
'.electronID',
'Tight' )
1005 configSeq.setOptionValue (
'.electronIsol',
'Tight_VarRad')
1006 configSeq.setOptionValue (
'.photonIsol',
'TightCaloOnly')
1007 configSeq.setOptionValue (
'.muonID',
'Tight')
1008 configSeq.setOptionValue (
'.electrons',
'AnaElectrons' )
1009 configSeq.setOptionValue (
'.photons',
'AnaPhotons' )
1010 configSeq.setOptionValue (
'.muons',
'AnaMuons' )
1013 configSeq += config.makeConfig (
'Bootstraps')
1014 configSeq.setOptionValue (
'.nReplicas', 2000 )
1015 configSeq.setOptionValue (
'.runOnMC',
True )
1017 configSeq += config.makeConfig (
'Output')
1018 configSeq.setOptionValue (
'.treeName',
'analysis')
1019 configSeq.setOptionValue (
'.vars', vars)
1020 configSeq.setOptionValue (
'.metVars', metVars)
1021 configSeq.setOptionValue (
'.containers', outputContainers)
1022 disable_commands = []
1024 disable_commands += [
1025 'disable jet_select_baselineJvt.*',
1026 'disable mu_select_medium.*',
1027 'disable ph_select_tight.*',
1028 'disable tau_select_tight.*',
1030 if not (dataType
is DataType.FastSim
and forceEGammaFullSimConfig):
1031 disable_commands.append(
'disable el_select_loose.*')
1032 configSeq.setOptionValue (
'.commands', disable_commands)
1038 configAccumulator = ConfigAccumulator (algSeq, dataType, isPhyslite, geometry, autoconfigFromFlags=autoconfigFromFlags, noSystematics=noSystematics)
1039 configSeq.fullConfigure (configAccumulator)
1042 configSeq.printOptions()
1044 from AnaAlgorithm.DualUseConfig
import isAthena, useComponentAccumulator
1045 if isAthena
and useComponentAccumulator:
1046 return configAccumulator.CA