Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Tools/Campaigns/python/Utils.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 from AthenaConfiguration.Enums import FlagEnum
3 class Campaign(FlagEnum):
4  Unknown = ''
5  MC16a = 'mc16a'
6  MC16d = 'mc16d'
7  MC16e = 'mc16e'
8  MC20a = 'mc20a'
9  MC20d = 'mc20d'
10  MC20e = 'mc20e'
11  MC21a = 'mc21a'
12  MC23a = 'mc23a'
13  MC23c = 'mc23c'
14  MC23d = 'mc23d'
15  MC23e = 'mc23e'
16  MC23g = 'mc23g'
17  PhaseII = 'phaseII'
18 
19  def __lt__(self, other):
20  if not isinstance(other, Campaign):
21  return NotImplemented
22  return self.value < other.value
23 
24  def __le__(self, other):
25  if not isinstance(other, Campaign):
26  return NotImplemented
27  return self.value <= other.value
28 
29 # Campaign run numbers (only latest campaigns that do not have metadata present)
30 campaign_runs = {
31  284500: Campaign.MC20a,
32  300000: Campaign.MC20d,
33  310000: Campaign.MC20e,
34  410000: Campaign.MC21a,
35 }
36 
37 # Function to get the campaign
38 def getMCCampaign(files):
39  # Auto-configure from file
40  from AthenaConfiguration.AutoConfigFlags import GetFileMD
41  metadata = GetFileMD(files)
42  mc_campaign = Campaign(metadata.get('mc_campaign', ''))
43  project_name = metadata.get('project_name', '')
44  run_numbers = metadata.get('runNumbers', [])
45 
46  if mc_campaign is not Campaign.Unknown:
47  return mc_campaign
48 
49  if run_numbers:
50  mc_campaign = campaign_runs.get(run_numbers[0], Campaign.Unknown)
51 
52  # MC-equivalent projects for data
53  if 'data25' in project_name:
54  return Campaign.MC23g
55  elif 'data24' in project_name:
56  return Campaign.MC23e
57  elif 'data23' in project_name:
58  return Campaign.MC23c
59  elif 'data22' in project_name:
60  return Campaign.MC21a
61  elif 'data18' in project_name:
62  return Campaign.MC20e
63  elif 'data17' in project_name:
64  return Campaign.MC20d
65  elif 'data16' in project_name or 'data15' in project_name:
66  return Campaign.MC20a
67 
68  return mc_campaign
python.AutoConfigFlags.GetFileMD
def GetFileMD(filenames, allowEmpty=True, maxLevel='peeker')
Definition: AutoConfigFlags.py:65
python.Utils.Campaign.__le__
def __le__(self, other)
Definition: Tools/Campaigns/python/Utils.py:24
python.Utils.Campaign.__lt__
def __lt__(self, other)
Definition: Tools/Campaigns/python/Utils.py:19
python.Utils.Campaign
Definition: Tools/Campaigns/python/Utils.py:3
python.Utils.getMCCampaign
def getMCCampaign(files)
Definition: Tools/Campaigns/python/Utils.py:38