4 from AnaAlgorithm.AnaAlgSequence
import AnaAlgSequence
5 from AnaAlgorithm.DualUseConfig
import createAlgorithm, addPrivateTool
6 from AnalysisAlgorithmsConfig.ConfigAccumulator
import DataType
7 from Campaigns.Utils
import Campaign
10 log = logging.getLogger(
'makePileupAnalysisSequence')
12 def makePileupAnalysisSequence( dataType, campaign=None, files=None, useDefaultConfig=False, userLumicalcFiles=None, userPileupConfigs=None ):
13 """Create a PRW analysis algorithm sequence
16 dataType -- The data type enum
19 if isinstance(dataType, str):
21 "data": DataType.Data,
22 "fullsim": DataType.FullSim,
23 "fastsim": DataType.FastSim,
24 "mc": DataType.FullSim,
25 "afii": DataType.FastSim,
29 raise ValueError (
"invalid data type")
32 seq = AnaAlgSequence(
"PileupAnalysisSequence" )
37 toolLumicalcFiles = []
38 if files
is not None and (campaign
is None or campaign
is Campaign.Unknown
or userPileupConfigs
is None):
39 if campaign
is None or campaign
is Campaign.Unknown:
40 from Campaigns.Utils
import getMCCampaign
43 log.info(f
'Autoconfiguring PRW with campaign: {campaign}')
45 log.info(
'Campaign could not be determined.')
48 if userPileupConfigs
is None:
49 if dataType
is DataType.Data:
50 log.info(
'Data needs no configuration files')
52 from PileupReweighting.AutoconfigurePRW
import getConfigurationFiles
53 toolConfigFiles =
getConfigurationFiles(campaign=campaign, files=files, useDefaultConfig=useDefaultConfig)
54 log.info(
'Setting PRW configuration based on input files')
57 log.info(f
'Using PRW configuration: {", ".join(toolConfigFiles)}')
59 log.info(
'Using user provided PRW configuration')
61 if userPileupConfigs
is not None:
62 toolConfigFiles = userPileupConfigs[:]
64 if userLumicalcFiles
is not None:
65 toolLumicalcFiles = userLumicalcFiles[:]
66 log.info(f
'Using user-provided lumicalc files: {", ".join(toolLumicalcFiles)}')
68 from PileupReweighting.AutoconfigurePRW
import getLumicalcFiles
70 log.info(f
'Using autoconfigured lumicalc files: {", ".join(toolLumicalcFiles)}')
73 alg =
createAlgorithm(
'CP::PileupReweightingAlg',
'PileupReweightingAlg' )
74 addPrivateTool( alg,
'pileupReweightingTool',
'CP::PileupReweightingTool' )
75 alg.pileupReweightingTool.ConfigFiles = toolConfigFiles
76 if not toolConfigFiles
and dataType
is not DataType.Data:
77 log.info(
"No PRW config files provided. Disabling reweighting")
79 alg.pileupWeightDecoration =
""
80 alg.pileupReweightingTool.LumiCalcFiles = toolLumicalcFiles
82 seq.append( alg, inputPropName = {} )