ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tools
Campaigns
python
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
69
70
# Get data year corresponding to MC campaign
71
def
getDataYear
(flags):
72
if
flags.Input.isMC:
73
campaign =
getMCCampaign
(flags.Input.Files)
74
dataYear = {
75
Campaign.MC20a: 2016,
# prefer over 2015
76
Campaign.MC20d: 2017,
77
Campaign.MC20e: 2018,
78
Campaign.MC21a: 2022,
79
Campaign.MC23a: 2022,
80
Campaign.MC23c: 2023,
81
Campaign.MC23d: 2023,
82
Campaign.MC23e: 2024,
83
Campaign.MC23g: 2025,
84
Campaign.PhaseII: 2030,
85
}[campaign]
86
else
:
87
dataYear = flags.Input.DataYear
88
return
dataYear
python.Utils.Campaign
Definition
Tools/Campaigns/python/Utils.py:3
python.Utils.Campaign.__lt__
__lt__(self, other)
Definition
Tools/Campaigns/python/Utils.py:19
python.Utils.Campaign.__le__
__le__(self, other)
Definition
Tools/Campaigns/python/Utils.py:24
python.Utils.getDataYear
getDataYear(flags)
Definition
Tools/Campaigns/python/Utils.py:71
python.Utils.getMCCampaign
getMCCampaign(files)
Definition
Tools/Campaigns/python/Utils.py:38
Generated on
for ATLAS Offline Software by
1.17.0