1 from __future__
import print_function
2 from __future__
import absolute_import
11 ROOT.gROOT.SetBatch(
True)
12 ROOT.PyConfig.IgnoreCommandLineOptions =
True 14 from .
import plotting
19 "CMSSW_6_2_0": {
"default":
"PRE_ST62_V8"},
20 "CMSSW_6_2_0_SLHC15": {
"UPG2019withGEM":
"DES19_62_V8",
"UPG2023SHNoTaper":
"DES23_62_V1"},
21 "CMSSW_6_2_0_SLHC17": {
"UPG2019withGEM":
"DES19_62_V8",
"UPG2023SHNoTaper":
"DES23_62_V1"},
22 "CMSSW_6_2_0_SLHC20": {
"UPG2019withGEM":
"DES19_62_V8",
"UPG2023SHNoTaper":
"DES23_62_V1_UPG2023SHNoTaper"},
23 "CMSSW_6_2_0_SLHC22": {
"UPG2023SHNoTaper":
"PH2_1K_FB_V6_UPG23SHNoTaper",
25 "2023GReco":
"PH2_1K_FB_V6_UPG23SHNoTaper",
"2023GRecoPU35":
"",
"2023GRecoPU140":
"",
"2023GRecoPU200":
"",
26 "2023tilted":
"PH2_1K_FB_V6_UPG23SHNoTaper",
"2023tiltedPU35":
"",
"2023tiltedPU140":
"",
"2023tiltedPU200":
""},
27 "CMSSW_6_2_0_SLHC26": {
"LHCCRefPU140":
"DES23_62_V1_LHCCRefPU140",
"LHCCRefPU200":
"DES23_62_V1_LHCCRefPU200",
29 "2023GReco":
"",
"2023GRecoPU35":
"",
"2023GRecoPU140":
"DES23_62_V1_LHCCRefPU140",
"2023GRecoPU200":
"DES23_62_V1_LHCCRefPU200",
30 "2023tilted":
"",
"2023tiltedPU35":
"",
"2023tiltedPU140":
"DES23_62_V1_LHCCRefPU140",
"2023tiltedPU200":
"DES23_62_V1_LHCCRefPU200"},
31 "CMSSW_6_2_0_SLHC27_phase1": {
"default":
"DES17_62_V8_UPG17"},
32 "CMSSW_7_0_0": {
"default":
"POSTLS170_V3",
"fullsim_50ns":
"POSTLS170_V4"},
33 "CMSSW_7_0_0_AlcaCSA14": {
"default":
"POSTLS170_V5_AlcaCSA14",
"fullsim_50ns":
"POSTLS170_V6_AlcaCSA14"},
34 "CMSSW_7_0_7_pmx": {
"default":
"PLS170_V7AN1",
"fullsim_50ns":
"PLS170_V6AN1"},
35 "CMSSW_7_0_9_patch3": {
"default":
"PLS170_V7AN2",
"fullsim_50ns":
"PLS170_V6AN2"},
36 "CMSSW_7_0_9_patch3_Premix": {
"default":
"PLS170_V7AN2",
"fullsim_50ns":
"PLS170_V6AN2"},
37 "CMSSW_7_1_0": {
"default":
"POSTLS171_V15",
"fullsim_50ns":
"POSTLS171_V16"},
38 "CMSSW_7_1_9": {
"default":
"POSTLS171_V17",
"fullsim_50ns":
"POSTLS171_V18"},
39 "CMSSW_7_1_9_patch2": {
"default":
"POSTLS171_V17",
"fullsim_50ns":
"POSTLS171_V18"},
40 "CMSSW_7_1_10_patch2": {
"default":
"MCRUN2_71_V1",
"fullsim_50ns":
"MCRUN2_71_V0"},
41 "CMSSW_7_2_0_pre5": {
"default":
"POSTLS172_V3",
"fullsim_50ns":
"POSTLS172_V4"},
42 "CMSSW_7_2_0_pre7": {
"default":
"PRE_LS172_V11",
"fullsim_50ns":
"PRE_LS172_V12"},
43 "CMSSW_7_2_0_pre8": {
"default":
"PRE_LS172_V15",
"fullsim_50ns":
"PRE_LS172_V16"},
44 "CMSSW_7_2_0": {
"default":
"PRE_LS172_V15",
"fullsim_50ns":
"PRE_LS172_V16"},
45 "CMSSW_7_2_0_PHYS14": {
"default":
"PHYS14_25_V1_Phys14"},
46 "CMSSW_7_2_2_patch1": {
"default":
"MCRUN2_72_V1",
"fullsim_50ns":
"MCRUN2_72_V0"},
47 "CMSSW_7_2_2_patch1_Fall14DR": {
"default":
"MCRUN2_72_V3_71XGENSIM"},
49 "CMSSW_7_3_0_pre1": {
"default":
"PRE_LS172_V15",
"fullsim_50ns":
"PRE_LS172_V16"},
51 "CMSSW_7_3_0_pre2": {
"default":
"MCRUN2_73_V1",
"fullsim_50ns":
"MCRUN2_73_V0"},
52 "CMSSW_7_3_0_pre3": {
"default":
"MCRUN2_73_V5",
"fullsim_50ns":
"MCRUN2_73_V4"},
53 "CMSSW_7_3_0": {
"default":
"MCRUN2_73_V7",
"fullsim_50ns":
"MCRUN2_73_V6"},
54 "CMSSW_7_3_0_71XGENSIM": {
"default":
"MCRUN2_73_V7_71XGENSIM"},
55 "CMSSW_7_3_0_71XGENSIM_FIXGT": {
"default":
"MCRUN2_73_V9_71XGENSIM_FIXGT"},
56 "CMSSW_7_3_1_patch1": {
"default":
"MCRUN2_73_V9",
"fastsim":
"MCRUN2_73_V7"},
57 "CMSSW_7_3_1_patch1_GenSim_7113": {
"default":
"MCRUN2_73_V9_GenSim_7113"},
58 "CMSSW_7_3_3": {
"default":
"MCRUN2_73_V11",
"fullsim_50ns":
"MCRUN2_73_V10",
"fastsim":
"MCRUN2_73_V13"},
59 "CMSSW_7_4_0_pre1": {
"default":
"MCRUN2_73_V5",
"fullsim_50ns":
"MCRUN2_73_V4"},
60 "CMSSW_7_4_0_pre2": {
"default":
"MCRUN2_73_V7",
"fullsim_50ns":
"MCRUN2_73_V6"},
61 "CMSSW_7_4_0_pre2_73XGENSIM": {
"default":
"MCRUN2_73_V7_73XGENSIM_Pythia6",
"fullsim_50ns":
"MCRUN2_73_V6_73XGENSIM_Pythia6"},
62 "CMSSW_7_4_0_pre5": {
"default":
"MCRUN2_73_V7",
"fullsim_50ns":
"MCRUN2_73_V6"},
63 "CMSSW_7_4_0_pre5_BS": {
"default":
"MCRUN2_73_V9_postLS1beamspot",
"fullsim_50ns":
"MCRUN2_73_V8_postLS1beamspot"},
64 "CMSSW_7_4_0_pre6": {
"default":
"MCRUN2_74_V1",
"fullsim_50ns":
"MCRUN2_74_V0"},
65 "CMSSW_7_4_0_pre8": {
"default":
"MCRUN2_74_V7",
"fullsim_25ns":
"MCRUN2_74_V5_AsympMinGT",
"fullsim_50ns":
"MCRUN2_74_V4_StartupMinGT"},
66 "CMSSW_7_4_0_pre8_minimal": {
"default":
"MCRUN2_74_V5_MinGT",
"fullsim_25ns":
"MCRUN2_74_V5_AsympMinGT",
"fullsim_50ns":
"MCRUN2_74_V4_StartupMinGT"},
67 "CMSSW_7_4_0_pre8_25ns_asymptotic": {
"default":
"MCRUN2_74_V7"},
68 "CMSSW_7_4_0_pre8_50ns_startup": {
"default":
"MCRUN2_74_V6"},
69 "CMSSW_7_4_0_pre8_50ns_asympref": {
"default":
"MCRUN2_74_V5A_AsympMinGT"},
70 "CMSSW_7_4_0_pre8_50ns_asymptotic": {
"default":
"MCRUN2_74_V7A_AsympGT"},
71 "CMSSW_7_4_0_pre8_ROOT6": {
"default":
"MCRUN2_74_V7"},
72 "CMSSW_7_4_0_pre8_pmx": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
73 "CMSSW_7_4_0_pre8_pmx_v2": {
"default":
"MCRUN2_74_V7_gs_pre7",
"fullsim_50ns":
"MCRUN2_74_V6_gs_pre7"},
74 "CMSSW_7_4_0_pre8_pmx_v3": {
"default":
"MCRUN2_74_V7_bis",
"fullsim_50ns":
"MCRUN2_74_V6_bis"},
75 "CMSSW_7_4_0_pre9": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
76 "CMSSW_7_4_0_pre9_ROOT6": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
77 "CMSSW_7_4_0_pre9_extended": {
"default":
"MCRUN2_74_V7_extended"},
78 "CMSSW_7_4_0": {
"default":
"MCRUN2_74_V7_gensim_740pre7",
"fullsim_50ns":
"MCRUN2_74_V6_gensim_740pre7",
"fastsim":
"MCRUN2_74_V7"},
79 "CMSSW_7_4_0_71XGENSIM": {
"default":
"MCRUN2_74_V7_GENSIM_7_1_15",
"fullsim_50ns":
"MCRUN2_74_V6_GENSIM_7_1_15"},
80 "CMSSW_7_4_0_71XGENSIM_PU": {
"default":
"MCRUN2_74_V7_gs7115_puProd",
"fullsim_50ns":
"MCRUN2_74_V6_gs7115_puProd"},
81 "CMSSW_7_4_0_71XGENSIM_PXworst": {
"default":
"MCRUN2_74_V7C_pxWorst_gs7115",
"fullsim_50ns":
"MCRUN2_74_V6A_pxWorst_gs7115"},
82 "CMSSW_7_4_0_71XGENSIM_PXbest": {
"default":
"MCRUN2_74_V7D_pxBest_gs7115",
"fullsim_50ns":
"MCRUN2_74_V6B_pxBest_gs7115"},
83 "CMSSW_7_4_0_pmx": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
84 "CMSSW_7_4_1": {
"default":
"MCRUN2_74_V9_gensim_740pre7",
"fullsim_50ns":
"MCRUN2_74_V8_gensim_740pre7",
"fastsim":
"MCRUN2_74_V9"},
85 "CMSSW_7_4_1_71XGENSIM": {
"default":
"MCRUN2_74_V9_gensim71X",
"fullsim_50ns":
"MCRUN2_74_V8_gensim71X"},
86 "CMSSW_7_4_1_extended": {
"default":
"MCRUN2_74_V9_extended"},
87 "CMSSW_7_4_3": {
"default":
"MCRUN2_74_V9",
"fullsim_50ns":
"MCRUN2_74_V8",
"fastsim":
"MCRUN2_74_V9",
"fastsim_25ns":
"MCRUN2_74_V9_fixMem"},
88 "CMSSW_7_4_3_extended": {
"default":
"MCRUN2_74_V9_ext",
"fastsim":
"MCRUN2_74_V9_fixMem"},
89 "CMSSW_7_4_3_pmx": {
"default":
"MCRUN2_74_V9_ext",
"fullsim_50ns":
"MCRUN2_74_V8",
"fastsim":
"MCRUN2_74_V9_fixMem"},
90 "CMSSW_7_4_3_patch1_unsch": {
"default":
"MCRUN2_74_V9_unsch",
"fullsim_50ns":
"MCRUN2_74_V8_unsch"},
91 "CMSSW_7_4_4": {
"default":
"MCRUN2_74_V9_38Tbis",
"fullsim_50ns":
"MCRUN2_74_V8_38Tbis"},
92 "CMSSW_7_4_4_0T": {
"default":
"MCRUN2_740TV1_0Tv2",
"fullsim_50ns":
"MCRUN2_740TV0_0TV2",
"fullsim_25ns":
"MCRUN2_740TV1_0TV2"},
93 "CMSSW_7_4_6_patch6": {
"default":
"MCRUN2_74_V9_scheduled",
"fullsim_50ns":
"MCRUN2_74_V8_scheduled"},
94 "CMSSW_7_4_6_patch6_unsch": {
"default":
"MCRUN2_74_V9",
"fullsim_50ns":
"MCRUN2_74_V8"},
95 "CMSSW_7_4_6_patch6_noCCC": {
"default":
"MCRUN2_74_V9_unsch_noCCC",
"fullsim_50ns":
"MCRUN2_74_V8_unsch_noCCC"},
96 "CMSSW_7_4_6_patch6_noCCC_v3": {
"default":
"MCRUN2_74_V9_unsch_noCCC_v3",
"fullsim_50ns":
"MCRUN2_74_V8_unsch_noCCC_v3"},
97 "CMSSW_7_4_6_patch6_BS": {
"default":
"74X_mcRun2_asymptotic_realisticBS_v0_2015Jul24",
"fullsim_50ns":
"74X_mcRun2_startup_realisticBS_v0_2015Jul24PU",
"fullsim_25ns":
"74X_mcRun2_asymptotic_realisticBS_v0_2015Jul24PU"},
98 "CMSSW_7_4_8_patch1_MT": {
"default":
"MCRUN2_74_V11_mulTrh",
"fullsim_50ns":
"MCRUN2_74_V10_mulTrh",},
99 "CMSSW_7_4_12": {
"default":
"74X_mcRun2_asymptotic_v2",
"fullsim_25ns":
"74X_mcRun2_asymptotic_v2_v2",
"fullsim_50ns":
"74X_mcRun2_startup_v2_v2"},
100 "CMSSW_7_5_0_pre1": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
101 "CMSSW_7_5_0_pre2": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
102 "CMSSW_7_5_0_pre3": {
"default":
"MCRUN2_74_V7",
"fullsim_50ns":
"MCRUN2_74_V6"},
103 "CMSSW_7_5_0_pre4": {
"default":
"MCRUN2_75_V1",
"fullsim_50ns":
"MCRUN2_75_V0"},
104 "CMSSW_7_5_0_pre5": {
"default":
"MCRUN2_75_V5",
"fullsim_50ns":
"MCRUN2_75_V4"},
105 "CMSSW_7_5_0_pre6": {
"default":
"75X_mcRun2_asymptotic_v1",
"fullsim_50ns":
"75X_mcRun2_startup_v1"},
106 "CMSSW_7_5_0": {
"default":
"75X_mcRun2_asymptotic_v1",
"fullsim_50ns":
"75X_mcRun2_startup_v1"},
107 "CMSSW_7_5_0_71XGENSIM": {
"default":
"75X_mcRun2_asymptotic_v1_gs7115",
"fullsim_50ns":
"75X_mcRun2_startup_v1_gs7115"},
108 "CMSSW_7_5_1": {
"default":
"75X_mcRun2_asymptotic_v3",
"fullsim_50ns":
"75X_mcRun2_startup_v3"},
109 "CMSSW_7_5_1_71XGENSIM": {
"default":
"75X_mcRun2_asymptotic_v3_gs7118",
"fullsim_50ns":
"75X_mcRun2_startup_v3_gs7118"},
110 "CMSSW_7_5_2": {
"default":
"75X_mcRun2_asymptotic_v5",
"fullsim_50ns":
"75X_mcRun2_startup_v4"},
111 "CMSSW_7_6_0_pre1": {
"default":
"75X_mcRun2_asymptotic_v1",
"fullsim_50ns":
"75X_mcRun2_startup_v1"},
112 "CMSSW_7_6_0_pre2": {
"default":
"75X_mcRun2_asymptotic_v2",
"fullsim_50ns":
"75X_mcRun2_startup_v2"},
113 "CMSSW_7_6_0_pre3": {
"default":
"75X_mcRun2_asymptotic_v2",
"fullsim_50ns":
"75X_mcRun2_startup_v2"},
114 "CMSSW_7_6_0_pre4": {
"default":
"76X_mcRun2_asymptotic_v1",
"fullsim_50ns":
"76X_mcRun2_startup_v1"},
115 "CMSSW_7_6_0_pre5": {
"default":
"76X_mcRun2_asymptotic_v1",
"fullsim_50ns":
"76X_mcRun2_startup_v1"},
116 "CMSSW_7_6_0_pre6": {
"default":
"76X_mcRun2_asymptotic_v4",
"fullsim_50ns":
"76X_mcRun2_startup_v4"},
117 "CMSSW_7_6_0_pre7": {
"default":
"76X_mcRun2_asymptotic_v5",
"fullsim_50ns":
"76X_mcRun2_startup_v5",
"fastsim":
"76X_mcRun2_asymptotic_v5_resub"},
118 "CMSSW_7_6_0": {
"default":
"76X_mcRun2_asymptotic_v11",
"fullsim_50ns":
"76X_mcRun2_startup_v11"},
119 "CMSSW_7_6_0_71XGENSIM": {
"default":
"76X_mcRun2_asymptotic_v11_gs7120p2rlBS",
"fullsim_50ns":
"76X_mcRun2_startup_v11_gs7120p2rlBS"},
120 "CMSSW_7_6_2": {
"default":
"76X_mcRun2_asymptotic_v12",
"fullsim_50ns":
"76X_mcRun2_startup_v11"},
121 "CMSSW_7_6_3_patch2_0T": {
"default":
"76X_mcRun2_0T_v1_0Tv1GT"},
122 "CMSSW_8_0_0_pre1": {
"default":
"76X_mcRun2_asymptotic_v11",
"fullsim_50ns":
"76X_mcRun2_startup_v11"},
123 "CMSSW_8_0_0_pre2": {
"default":
"76X_mcRun2_asymptotic_v12",
"fullsim_50ns":
"76X_mcRun2_startup_v11"},
124 "CMSSW_8_0_0_pre2_phase1": {
"default":
"76X_upgrade2017_design_v7"},
125 "CMSSW_8_0_0_pre2_phase1_rereco": {
"default":
"76X_upgrade2017_design_v7_rereco"},
126 "CMSSW_8_0_0_pre3_phase1": {
"default":
"76X_upgrade2017_design_v8"},
127 "CMSSW_8_0_0_pre3_phase1_pythia8": {
"default":
"76X_upgrade2017_design_v8_pythia8"},
128 "CMSSW_8_0_0_pre4": {
"default":
"76X_mcRun2_asymptotic_v13",
"fullsim_50ns":
"76X_mcRun2_startup_v12"},
129 "CMSSW_8_0_0_pre4_phase1": {
"default":
"76X_upgrade2017_design_v8_UPG17"},
130 "CMSSW_8_0_0_pre4_phase1_13TeV": {
"default":
"76X_upgrade2017_design_v8_UPG17"},
131 "CMSSW_8_0_0_pre4_ecal15fb": {
"default":
"80X_mcRun2_asymptotic_2016EcalTune_15fb_v0_ecal15fbm1"},
132 "CMSSW_8_0_0_pre4_ecal30fb": {
"default":
"80X_mcRun2_asymptotic_2016EcalTune_30fb_v0_ecal30fbm1"},
133 "CMSSW_8_0_0_pre5": {
"default":
"80X_mcRun2_asymptotic_v1",
"fullsim_50ns":
"80X_mcRun2_startup_v1"},
134 "CMSSW_8_0_0_pre5_phase1": {
"default":
"80X_upgrade2017_design_v1_UPG17"},
135 "CMSSW_8_0_0_pre6": {
"default":
"80X_mcRun2_asymptotic_v4"},
136 "CMSSW_8_0_0_pre6_phase1": {
"default":
"80X_upgrade2017_design_v3_UPG17"},
137 "CMSSW_8_0_0_pre6_MT": {
"default":
"80X_mcRun2_asymptotic_v4_multiCoreResub"},
138 "CMSSW_8_0_0": {
"default":
"80X_mcRun2_asymptotic_v4"},
139 "CMSSW_8_0_0_patch1_phase1": {
"default":
"80X_upgrade2017_design_v4_UPG17"},
140 "CMSSW_8_0_0_patch1_phase1_rereco": {
"default":
"80X_upgrade2017_design_v4_UPG17_rereco"},
141 "CMSSW_8_0_0_patch2": {
"default":
"80X_mcRun2_asymptotic_v5_refGT"},
142 "CMSSW_8_0_0_patch2_pixDynIneff": {
"default":
"80X_mcRun2_asymptotic_v5_2016PixDynIneff_targetGT"},
145 "CMSSW_8_0_0_patch2": {
"default":
"80X_mcRun2_asymptotic_v5_refGT_resub"},
146 "CMSSW_8_0_0_patch2_pixDynIneff": {
"default":
"80X_mcRun2_asymptotic_v5_2016PixDynIneff_targetGT_resub"},
147 "CMSSW_8_0_1": {
"default":
"80X_mcRun2_asymptotic_v6"},
148 "CMSSW_8_0_1_71XGENSIM": {
"default":
"80X_mcRun2_asymptotic_v6_gs7120p2"},
149 "CMSSW_8_0_1_gcc530": {
"default":
"80X_mcRun2_asymptotic_v6_gcc530"},
150 "CMSSW_8_0_3_71XGENSIM": {
"default":
"80X_mcRun2_asymptotic_2016_v3_gs7120p2NewGTv3"},
151 "CMSSW_8_0_3_71XGENSIM_hcal": {
"default":
"80X_mcRun2_asymptotic_2016_v3_gs71xNewGtHcalCust"},
152 "CMSSW_8_0_3_71XGENSIM_tec": {
"default":
"80X_mcRun2_asymptotic_SiStripBad_TEC_CL62_for2016_v1_mc_gs7120p2TrkCoolLoop"},
153 "CMSSW_8_0_5": {
"default":
"80X_mcRun2_asymptotic_v12_gs7120p2",
"fastsim":
"80X_mcRun2_asymptotic_v12"},
154 "CMSSW_8_0_5_pmx": {
"default":
"80X_mcRun2_asymptotic_v12_gs7120p2_resub",
"fastsim":
"80X_mcRun2_asymptotic_v12"},
155 "CMSSW_8_0_10": {
"default":
"80X_mcRun2_asymptotic_v14"},
156 "CMSSW_8_0_10_patch1_BS": {
"default":
"80X_mcRun2_asymptotic_RealisticBS_25ns_13TeV2016_v1_mc_realisticBS2016"},
157 "CMSSW_8_0_11": {
"default":
"80X_mcRun2_asymptotic_v14"},
158 "CMSSW_8_0_15": {
"default":
"80X_mcRun2_asymptotic_v16_gs7120p2",
"fastsim":
"80X_mcRun2_asymptotic_v16"},
159 "CMSSW_8_0_16": {
"default":
"80X_mcRun2_asymptotic_v16_gs7120p2",
"fastsim":
"80X_mcRun2_asymptotic_v16"},
160 "CMSSW_8_0_16_Tranche4GT": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v0_gs7120p2_Tranch4GT",
161 "fastsim": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v0_Tranch4GT",
"RelValTTbar":
"80X_mcRun2_asymptotic_2016_TrancheIV_v0_Tr4GT_resub"},
"fastsim_25ns":
"80X_mcRun2_asymptotic_2016_TrancheIV_v0_Tranch4GT"},
162 "CMSSW_8_0_16_Tranche4GT_v2": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v2_Tr4GT_v2"},
163 "CMSSW_8_0_16_Tranche4GT_pmx": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v0_gs7120p2_Tranch4GT",
"fastsim":
"80X_mcRun2_asymptotic_2016_TrancheIV_v0_resub"},
164 "CMSSW_8_0_19_Tranche4GT_v2": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v2_Tr4GT_v2"},
165 "CMSSW_8_0_20_Tranche4GT": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v4_Tr4GT_v4"},
166 "CMSSW_8_0_21_Tranche4GT": {
"default":
"80X_mcRun2_asymptotic_2016_TrancheIV_v6_Tr4GT_v6"},
167 "CMSSW_8_1_0_pre1": {
"default":
"80X_mcRun2_asymptotic_v6"},
168 "CMSSW_8_1_0_pre1_phase1": {
"default":
"80X_upgrade2017_design_v4_UPG17",
"fullsim_25ns":
"80X_upgrade2017_design_v4_UPG17PU35"},
169 "CMSSW_8_1_0_pre2": {
"default":
"80X_mcRun2_asymptotic_v10_gs810pre2",
"fastsim":
"80X_mcRun2_asymptotic_v10"},
170 "CMSSW_8_1_0_pre2_phase1": {
"default":
"80X_upgrade2017_design_v9_UPG17designGT",
"fullsim_25ns":
"80X_upgrade2017_design_v9_UPG17PU35designGT"},
171 "CMSSW_8_1_0_pre2_phase1_realGT": {
"default":
"80X_upgrade2017_realistic_v1_UPG17realGT",
"fullsim_25ns":
"80X_upgrade2017_realistic_v1_UPG17PU35realGT"},
172 "CMSSW_8_1_0_pre3": {
"default":
"80X_mcRun2_asymptotic_v12"},
173 "CMSSW_8_1_0_pre3_phase1": {
"default":
"80X_upgrade2017_realistic_v3_UPG17",
"fullsim_25ns":
"80X_upgrade2017_realistic_v3_UPG17PU35"},
174 "CMSSW_8_1_0_pre4": {
"default":
"80X_mcRun2_asymptotic_v13"},
175 "CMSSW_8_1_0_pre4_phase1": {
"default":
"80X_upgrade2017_realistic_v4_UPG17",
"fullsim_25ns":
"80X_upgrade2017_realistic_v4_UPG17PU35"},
176 "CMSSW_8_1_0_pre5": {
"default":
"80X_mcRun2_asymptotic_v13"},
177 "CMSSW_8_1_0_pre5_phase1": {
"default":
"80X_upgrade2017_realistic_v4_resubUPG17",
"fullsim_25ns":
"80X_upgrade2017_realistic_v4_resubUPG17PU35"},
178 "CMSSW_8_1_0_pre6": {
"default":
"80X_mcRun2_asymptotic_v14"},
179 "CMSSW_8_1_0_pre6_phase1": {
"default":
"81X_upgrade2017_realistic_v0_UPG17",
"fullsim_25ns":
"81X_upgrade2017_realistic_v0_UPG17PU35"},
180 "CMSSW_8_1_0_pre7": {
"default":
"81X_mcRun2_asymptotic_v0"},
181 "CMSSW_8_1_0_pre7_phase1": {
"default":
"81X_upgrade2017_realistic_v2_UPG17",
"fullsim_25ns":
"81X_upgrade2017_realistic_v2_UPG17PU35"},
182 "CMSSW_8_1_0_pre7_phase1_newGT": {
"default":
"81X_upgrade2017_realistic_v3_UPG17newGT",
"fullsim_25ns":
"81X_upgrade2017_realistic_v3_UPG17PU35newGTresub"},
183 "CMSSW_8_1_0_pre7_phase2": {
"2023GReco":
"81X_mcRun2_asymptotic_v0_2023GReco",
"2023GRecoPU35":
"",
"2023GRecoPU140":
"81X_mcRun2_asymptotic_v0_2023GRecoPU140resubmit2",
"2023GRecoPU200":
"81X_mcRun2_asymptotic_v0_2023GRecoPU200resubmit2",
184 "2023tilted":
"81X_mcRun2_asymptotic_v0_2023tilted",
"2023tiltedPU35":
"",
"2023tiltedPU140":
"81X_mcRun2_asymptotic_v0_2023tiltedPU140resubmit2",
"2023tiltedPU200":
"81X_mcRun2_asymptotic_v0_2023tiltedPU200resubmit2"},
185 "CMSSW_8_1_0_pre8": {
"default":
"81X_mcRun2_asymptotic_v1"},
186 "CMSSW_8_1_0_pre8_phase1": {
"default":
"81X_upgrade2017_realistic_v3_UPG17",
"fullsim_25ns":
"81X_upgrade2017_realistic_v3_UPG17PU35"},
187 "CMSSW_8_1_0_pre8_phase1_newGT": {
"default":
"81X_upgrade2017_realistic_v4_UPG17newGT",
"fullsim_25ns":
"81X_upgrade2017_realistic_v4_UPG17PU35newGT"},
188 "CMSSW_8_1_0_pre8_phase1_newGT2": {
"default":
"81X_upgrade2017_realistic_v5_UPG17newGTset2",
"fullsim_25ns":
"81X_upgrade2017_realistic_v5_UPG17PU35newGTset2"},
189 "CMSSW_8_1_0_pre8_phase2": {
"2023GReco":
"81X_mcRun2_asymptotic_v1_resub2023GReco",
"2023GRecoPU35":
"81X_mcRun2_asymptotic_v1_resub2023GRecoPU35",
"2023GRecoPU140":
"81X_mcRun2_asymptotic_v1_resub2023GRecoPU140",
"2023GRecoPU200":
"81X_mcRun2_asymptotic_v1_resub2023GRecoPU200",
190 "2023tilted":
"81X_mcRun2_asymptotic_v1_2023tilted",
"2023tiltedPU35":
"81X_mcRun2_asymptotic_v1_2023tiltedPU",
"2023tiltedPU140":
"81X_mcRun2_asymptotic_v1_2023tiltedPU140",
"2023tiltedPU200":
"81X_mcRun2_asymptotic_v1_2023tiltedPU200"},
191 "CMSSW_8_1_0_pre9": {
"default":
"81X_mcRun2_asymptotic_v2"},
192 "CMSSW_8_1_0_pre9_Geant4102": {
"default":
"81X_mcRun2_asymptotic_v2"},
193 "CMSSW_8_1_0_pre9_phase1": {
"default":
"81X_upgrade2017_realistic_v5_UPG17",
"fullsim_25ns":
"81X_upgrade2017_realistic_v5_UPG17PU35"},
194 "CMSSW_8_1_0_pre9_phase1_newGT": {
"default":
"81X_upgrade2017_realistic_v6_UPG17newGT",
"fullsim_25ns":
"81X_upgrade2017_realistic_v6_UPG17PU35newGT"},
195 "CMSSW_8_1_0_pre10": {
"default":
"81X_mcRun2_asymptotic_v5_recycle",
"fullsim_25ns":
"81X_mcRun2_asymptotic_v5_resub",
"fastsim":
"81X_mcRun2_asymptotic_v5"},
196 "CMSSW_8_1_0_pre10_pmx": {
"default":
"81X_mcRun2_asymptotic_v5"},
197 "CMSSW_8_1_0_pre10_phase1": {
"default":
"81X_upgrade2017_realistic_v9_UPG17resub",
"fullsim_25ns":
"81X_upgrade2017_realistic_v9_UPG17PU35resub"},
198 "CMSSW_8_1_0_pre11": {
"default":
"81X_mcRun2_asymptotic_Candidate_2016_08_30_11_31_55",
"fullsim_25ns":
"81X_mcRun2_asymptotic_Candidate_2016_08_30_11_31_55_resub",
"fastsim_25ns":
"81X_mcRun2_asymptotic_Candidate_2016_08_30_11_31_55_resub2"},
199 "CMSSW_8_1_0_pre11_pmx": {
"default":
"81X_mcRun2_asymptotic_Candidate_2016_08_30_11_31_55"},
200 "CMSSW_8_1_0_pre11_phase1": {
"default":
"81X_upgrade2017_realistic_v9_UPG17",
"fullsim_25ns":
"81X_upgrade2017_realistic_v9_UPG17PU35"},
201 "CMSSW_8_1_0_pre12": {
"default":
"81X_mcRun2_asymptotic_v8",
"fullsim_25ns":
"81X_mcRun2_asymptotic_v8_resub",
"fastsim":
"81X_mcRun2_asymptotic_v8_resub",
"fastsim_25ns":
"81X_mcRun2_asymptotic_v8"},
202 "CMSSW_8_1_0_pre12_pmx": {
"default":
"81X_mcRun2_asymptotic_v8_resub",
"fastsim_25ns":
"81X_mcRun2_asymptotic_v8_rsub"},
203 "CMSSW_8_1_0_pre12_phase1": {
"default":
"81X_upgrade2017_realistic_v13"},
204 "CMSSW_8_1_0_pre12_phase1_newBPix": {
"default":
"81X_upgrade2017_realistic_newBPix_wAlign_v1_BpixGeom"},
205 "CMSSW_8_1_0_pre12_phase1_newBPixFPix": {
"default":
"81X_upgrade2017_realistic_v13_BpixFpixGeom"},
206 "CMSSW_8_1_0_pre12_phase1_newBPixFPixHCAL": {
"default":
"81X_upgrade2017_HCALdev_v2_BpixFpixHcalGeom"},
207 "CMSSW_8_1_0_pre12_phase1_newHCAL": {
"default":
"81X_upgrade2017_HCALdev_v2_HcalGeom"},
208 "CMSSW_8_1_0_pre12_phase1_newBPixHCAL": {
"default":
"81X_upgrade2017_HCALdev_v2_NewBPix_BpixHcalGeom"},
209 "CMSSW_8_1_0_pre15": {
"default":
"81X_mcRun2_asymptotic_v11"},
210 "CMSSW_8_1_0_pre15_HIP": {
"default":
"81X_mcRun2_asymptotic_v11_hip"},
211 "CMSSW_8_1_0_pre15_PU": {
"default":
"81X_mcRun2_asymptotic_v11_M17"},
212 "CMSSW_8_1_0_pre15_PU_HIP": {
"default":
"81X_mcRun2_asymptotic_v11_hipM17"},
213 "CMSSW_8_1_0_pre15_phase1": {
"default":
"81X_upgrade2017_realistic_v17_BpixFpixHcalGeom",
214 "Design":
"81X_upgrade2017_design_IdealBS_v1_2017design",
"Design_fullsim_25ns":
"81X_upgrade2017_design_IdealBS_v1_design"},
215 "CMSSW_8_1_0_pre16": {
"default":
"81X_mcRun2_asymptotic_v11"},
216 "CMSSW_8_1_0_pre16_phase1": {
"default":
"81X_upgrade2017_realistic_v22",
"Design":
"81X_upgrade2017_design_IdealBS_v6"},
217 "CMSSW_8_1_0": {
"default":
"81X_mcRun2_asymptotic_v12"},
218 "CMSSW_8_1_0_phase1": {
"default":
"81X_upgrade2017_realistic_v26_HLT2017"},
219 "CMSSW_9_0_0_pre1": {
"default":
"90X_mcRun2_asymptotic_v0"},
220 "CMSSW_9_0_0_pre1_phase1": {
"default":
"90X_upgrade2017_realistic_v0",
221 "Design":
"90X_upgrade2017_design_IdealBS_v0",
"Design_fullsim_25ns":
"90X_upgrade2017_design_IdealBS_v0_resub"},
222 "CMSSW_9_0_0_pre2": {
"default":
"90X_mcRun2_asymptotic_v0"},
223 "CMSSW_9_0_0_pre2_ROOT6": {
"default":
"90X_mcRun2_asymptotic_v0"},
224 "CMSSW_9_0_0_pre2_phase1": {
"default":
"90X_upgrade2017_realistic_v0",
225 "Design":
"90X_upgrade2017_design_IdealBS_v0",
"Design_fullsim_25ns":
"90X_upgrade2017_design_IdealBS_v0_resub"},
226 "CMSSW_9_0_0_pre4": {
"default":
"90X_mcRun2_asymptotic_v1",
"fullsim_25ns":
"90X_mcRun2_asymptotic_v1_resub"},
227 "CMSSW_9_0_0_pre4_phase1": {
"default":
"90X_upgrade2017_realistic_v6",
"fullsim_25ns_PU50":
"Nonexistent",
228 "Design":
"90X_upgrade2017_design_IdealBS_v6"},
229 "CMSSW_9_0_0_pre4_GS": {
"default":
"90X_mcRun2_asymptotic_v1_GSval",
"fullsim_25ns":
"90X_mcRun2_asymptotic_v1_GSval"},
230 "CMSSW_9_0_0_pre4_phase1_ecalsrb5": {
"default":
"90X_upgrade2017_realistic_v6_B5"},
231 "CMSSW_9_0_0_pre4_phase1_ecalsrc1": {
"default":
"90X_upgrade2017_realistic_v6_C1"},
232 "CMSSW_9_0_0_pre4_phase1_ecalsrd7": {
"default":
"90X_upgrade2017_realistic_v6_D7"},
233 "CMSSW_9_0_0_pre5": {
"default":
"90X_mcRun2_asymptotic_v4"},
234 "CMSSW_9_0_0_pre5_pmx": {
"default":
"90X_mcRun2_asymptotic_v4",
"fastsim_25ns":
"90X_mcRun2_asymptotic_v4_resub"},
235 "CMSSW_9_0_0_pre5_phase1": {
"default":
"90X_upgrade2017_realistic_v15",
236 "fullsim_25ns_PU35":
"90X_upgrade2017_realistic_v15_resub",
"fullsim_25ns_PU50":
"90X_upgrade2017_realistic_v15_PU50",
237 "Design":
"90X_upgrade2017_design_IdealBS_v15"},
238 "CMSSW_9_0_0_pre6": {
"default":
"90X_mcRun2_asymptotic_v4"},
239 "CMSSW_9_0_0_pre6_phase1": {
"default":
"90X_upgrade2017_realistic_v15",
240 "fullsim_25ns_PU50":
"90X_upgrade2017_realistic_v15_PU50",
241 "Design":
"90X_upgrade2017_design_IdealBS_v15"},
242 "CMSSW_9_0_0": {
"default":
"90X_mcRun2_asymptotic_v5"},
243 "CMSSW_9_0_0_phase1": {
"default":
"90X_upgrade2017_realistic_v20_resub",
244 "fullsim_25ns_PU50":
"90X_upgrade2017_realistic_v20_PU50_resub",
245 "Design":
"90X_upgrade2017_design_IdealBS_v19_resub"},
246 "CMSSW_9_0_0_gcc630": {
"default":
"90X_mcRun2_asymptotic_v5_gcc630"},
247 "CMSSW_9_0_0_phase1_gcc630": {
"default":
"90X_upgrade2017_realistic_v20_gcc630"},
248 "CMSSW_9_0_0_cc7": {
"default":
"90X_mcRun2_asymptotic_v5_cc7"},
249 "CMSSW_9_0_0_phase1_cc7": {
"default":
"90X_upgrade2017_realistic_v20_cc7_rsb"},
250 "CMSSW_9_0_2_phase1": {
"default":
"90X_upgrade2017_realistic_v20",
251 "fullsim_25ns_PU50":
"90X_upgrade2017_realistic_v20_PU50",
252 "Design":
"90X_upgrade2017_design_IdealBS_v19"},
253 "CMSSW_9_1_0_pre1": {
"default":
"90X_mcRun2_asymptotic_v5"},
254 "CMSSW_9_1_0_pre1_phase1": {
"default":
"90X_upgrade2017_realistic_v20",
255 "fullsim_25ns_PU50":
"90X_upgrade2017_realistic_v20_PU50",
256 "Design":
"90X_upgrade2017_design_IdealBS_v19_resub"},
257 "CMSSW_9_1_0_pre2": {
"default":
"90X_mcRun2_asymptotic_v5"},
258 "CMSSW_9_1_0_pre2_phase1": {
"default":
"90X_upgrade2017_realistic_v20",
259 "fullsim_25ns_PU50":
"90X_upgrade2017_realistic_v20_PU50",
260 "Design":
"90X_upgrade2017_design_IdealBS_v19"},
261 "CMSSW_9_1_0_pre3": {
"default":
"91X_mcRun2_asymptotic_v2"},
262 "CMSSW_9_1_0_pre3_phase1": {
"default":
"91X_upgrade2017_realistic_v3",
263 "fullsim_25ns_PU50":
"91X_upgrade2017_realistic_v3_PU50_resub",
264 "Design":
"91X_upgrade2017_design_IdealBS_v3"},
265 "CMSSW_9_2_0": {
"default":
"91X_mcRun2_asymptotic_v3"},
266 "CMSSW_9_2_0_phase1": {
"default":
"91X_upgrade2017_realistic_v5",
267 "fullsim_25ns_PU50":
"91X_upgrade2017_realistic_v5_PU50",
268 "Design":
"91X_upgrade2017_design_IdealBS_v5"},
269 "CMSSW_9_2_0_phase1_PXmap": {
"default":
"91X_upgrade2017_realistic_v5_pixel_ideal_PXgeom"},
270 "CMSSW_9_2_1_phase1": {
"default":
"92X_upgrade2017_realistic_v1",
271 "fullsim_25ns_PU50":
"92X_upgrade2017_realistic_v1_PU50",
272 "Design":
"92X_upgrade2017_design_IdealBS_v1"},
273 "CMSSW_9_2_2": {
"default":
"91X_mcRun2_asymptotic_v3"},
274 "CMSSW_9_2_2_phase1": {
"default":
"92X_upgrade2017_realistic_v1",
275 "fullsim_25ns_PU50":
"92X_upgrade2017_realistic_v1_highPU_AVE50",
276 "Design":
"92X_upgrade2017_design_IdealBS_v1"},
277 "CMSSW_9_2_4_run1": {
"default":
"91X_mcRun1_realistic_v2"},
278 "CMSSW_9_2_4": {
"default":
"91X_mcRun2_asymptotic_v3"},
279 "CMSSW_9_2_7_phase1": {
"default":
"92X_upgrade2017_realistic_v7"},
280 "CMSSW_9_3_0_pre1": {
"default":
"92X_mcRun2_asymptotic_v2"},
281 "CMSSW_9_3_0_pre1_phase1": {
"default":
"92X_upgrade2017_realistic_v7",
282 "fullsim_25ns_PU50":
"92X_upgrade2017_realistic_v7_highPU_AVE50",
283 "Design":
"92X_upgrade2017_design_IdealBS_v7"},
284 "CMSSW_9_3_0_pre1_run1": {
"default":
"92X_mcRun1_realistic_v2"},
285 "CMSSW_9_3_0_pre2": {
"default":
"92X_mcRun2_asymptotic_v2"},
286 "CMSSW_9_3_0_pre2_phase1": {
"default":
"92X_upgrade2017_realistic_v7",
287 "fullsim_25ns_PU50":
"92X_upgrade2017_realistic_v7_highPU_AVE50_resub",
288 "Design":
"92X_upgrade2017_design_IdealBS_v7"},
289 "CMSSW_9_3_0_pre3": {
"default":
"92X_mcRun2_asymptotic_v2"},
290 "CMSSW_9_3_0_pre3_phase1": {
"default":
"92X_upgrade2017_realistic_v10_resub",
291 "fullsim_25ns_PU50":
"92X_upgrade2017_realistic_v10_highPU_AVE50_resub",
292 "Design":
"92X_upgrade2017_design_IdealBS_v10_resub"},
293 "CMSSW_9_3_0_pre3_phase1_pmx": {
"default":
"92X_upgrade2017_realistic_v10_resub2"},
294 "CMSSW_9_3_0_pre4": {
"default":
"93X_mcRun2_asymptotic_v0"},
295 "CMSSW_9_3_0_pre4_phase1": {
"default":
"93X_mc2017_realistic_v1",
296 "fullsim_25ns_PU50":
"93X_mc2017_realistic_v1_highPU_AVE50",
297 "Design":
"93X_mc2017_design_IdealBS_v1"},
298 "CMSSW_9_3_0_pre5": {
"default":
"93X_mcRun2_asymptotic_v0"},
299 "CMSSW_9_3_0_pre5_phase1": {
"default":
"93X_mc2017_realistic_v2",
300 "fullsim_25ns_PU50":
"93X_mc2017_realistic_v2_highPU_AVE50",
301 "Design":
"93X_mc2017_design_IdealBS_v2"},
302 "CMSSW_9_4_0_pre1": {
"default":
"93X_mcRun2_asymptotic_v1"},
303 "CMSSW_9_4_0_pre1_phase1": {
"default":
"93X_mc2017_realistic_v3",
304 "fullsim_25ns_PU50":
"93X_mc2017_realistic_v3_highPU_AVE50",
305 "Design":
"93X_mc2017_design_IdealBS_v3"},
306 "CMSSW_9_4_0_pre2": {
"default":
"93X_mcRun2_asymptotic_v2"},
307 "CMSSW_9_4_0_pre2_phase1": {
"default":
"94X_mc2017_realistic_v1",
308 "fullsim_25ns_PU50":
"94X_mc2017_realistic_v1_highPU_AVE50",
309 "Design":
"94X_mc2017_design_IdealBS_v0"},
310 "CMSSW_9_4_0_pre3": {
"default":
"94X_mcRun2_asymptotic_v0"},
311 "CMSSW_9_4_0_pre3_phase1": {
"default":
"94X_mc2017_realistic_v4",
312 "fullsim_25ns_PU50":
"94X_mc2017_realistic_v4_highPU_AVE50",
313 "Design":
"94X_mc2017_design_IdealBS_v4"},
314 "CMSSW_9_4_0": {
"default":
"94X_mcRun2_asymptotic_v0"},
315 "CMSSW_9_4_0_phase1": {
"default":
"94X_mc2017_realistic_v10",
316 "fullsim_25ns_PU50":
"94X_mc2017_realistic_v10_highPU_AVE50",
317 "Design":
"94X_mc2017_design_IdealBS_v5"},
318 "CMSSW_10_0_0_pre1": {
"default":
"94X_mcRun2_asymptotic_v0"},
319 "CMSSW_10_0_0_pre1_phase1": {
"default":
"94X_mc2017_realistic_v10",
320 "fullsim_25ns_PU50":
"94X_mc2017_realistic_v10_highPU_AVE50",
321 "Design":
"94X_mc2017_design_IdealBS_v5"},
322 "CMSSW_10_0_0_pre2": {
"default":
"100X_mcRun2_asymptotic_v2"},
323 "CMSSW_10_0_0_pre2_2017": {
"default":
"100X_mc2017_realistic_v1",
324 "fullsim_25ns":
"100X_mc2017_realistic_v1_resub",
325 "fullsim_25ns_PU50":
"100X_mc2017_realistic_v1_highPU_AVE50",
326 "Design":
"100X_mc2017_design_IdealBS_v1",
327 "Design_fullsim_25ns_PU50":
"Does_not_exist"},
328 "CMSSW_10_0_0_pre2_2017_pmx": {
"default":
"100X_mc2017_realistic_v1"},
329 "CMSSW_10_0_0_pre2_2018": {
"default":
"100X_upgrade2018_realistic_v1",
330 "fullsim_25ns":
"100X_upgrade2018_realistic_v1_resub",
331 "Design":
"100X_upgrade2018_design_IdealBS_v1",
332 "Design_fullsim_25ns":
"100X_upgrade2018_design_IdealBS_v1_resub"},
333 "CMSSW_10_0_0_pre3": {
"default":
"100X_mcRun2_asymptotic_v2"},
334 "CMSSW_10_0_0_pre3_2017": {
"default":
"100X_mc2017_realistic_v1_mahiOFF",
335 "fullsim_25ns_PU50":
"100X_mc2017_realistic_v1_highPU_AVE50_mahiOFF",
336 "Design":
"100X_mc2017_design_IdealBS_v1_mahiOFF"},
337 "CMSSW_10_0_0_pre3_2018": {
"default":
"100X_upgrade2018_realistic_v4_mahiOFF",
338 "Design":
"100X_upgrade2018_design_IdealBS_v3_mahiOFF"},
339 "CMSSW_10_0_0_pre3_2018_pmx": {
"default":
"100X_upgrade2018_realistic_v4",
340 "Design":
"100X_upgrade2018_design_IdealBS_v3"},
341 "CMSSW_10_0_0_pre3_2017_mahi": {
"default":
"100X_mc2017_realistic_v1_mahiON",
342 "fullsim_25ns_PU50":
"100X_mc2017_realistic_v1_highPU_AVE50_mahiON",
343 "Design":
"100X_mc2017_design_IdealBS_v1_mahiON"},
344 "CMSSW_10_0_0_pre3_2018_mahi": {
"default":
"100X_upgrade2018_realistic_v4_mahiON",
345 "Design":
"100X_upgrade2018_design_IdealBS_v3_mahiON"},
346 "CMSSW_10_0_0_pre3_GEANT4_2018_mahi": {
"default":
"100X_upgrade2018_realistic_v4_mahiON"},
347 "CMSSW_10_0_0_pre3_G4VecGeom2_2018": {
"default":
"100X_upgrade2018_realistic_v4"},
350 _releasePostfixes = [
"_AlcaCSA14",
"_PHYS14",
"_TEST",
"_v2",
"_v3",
"_pmx",
"_Fall14DR",
"_FIXGT",
"_PU",
"_PXbest",
"_PXworst",
"_hcal",
"_tec",
"_71XGENSIM",
"_73XGENSIM",
"_BS",
"_GenSim_7113",
"_extended",
351 "_25ns_asymptotic",
"_50ns_startup",
"_50ns_asympref",
"_50ns_asymptotic",
"_minimal",
"_0T",
"_unsch",
"_noCCC",
"_MT",
"_GS",
"_rereco",
"_pythia8",
"_13TeV",
"_realGT",
"_newGT2",
"_newGT",
"_phase1",
"_phase2",
"_2017",
"_2018",
"_ecal15fb",
"_ecal30fb",
"_ecalsrb5",
"_ecalsrc1",
"_ecalsrd7",
"_pixDynIneff",
"_PXmap",
"_gcc530",
"_gcc630",
"_cc7",
"_Tranche4GT",
"_newBPixFPixHCAL",
"_newBPixFPix",
"_newBPixHCAL",
"_newBPix",
"_newHCAL",
"_HIP",
"_run1",
"_mahi"]
353 for pf
in _releasePostfixes:
363 sample -- Sample object 364 release -- CMSSW release string 366 if not release
in _globalTags:
367 print(
"Release %s not found from globaltag map in validation.py" % release)
369 gtmap = _globalTags[release]
371 if sample.hasOverrideGlobalTag():
372 ogt = sample.overrideGlobalTag()
374 gtmap = _globalTags[ogt[release]]
376 if sample.hasScenario():
377 scenario = sample.scenario()
380 if sample.pileupEnabled():
381 sim =
"fullsim_"+sample.pileupType()
383 sim+
"_PU%d"%sample.pileupNumber(),
386 elif sample.fastsim():
388 if sample.pileupEnabled():
389 sim +=
"_"+sample.pileupType()
390 sims.append(sim+
"_PU%d"%sample.pileupNumber())
397 selectedGT = gtmap.get(scenario+
"_"+sim,
None)
398 if selectedGT
is not None:
401 if selectedGT
is None:
402 selectedGT = gtmap.get(scenario,
None)
404 if selectedGT
is None:
406 selectedGT = gtmap.get(sim,
None)
407 if selectedGT
is not None:
410 if selectedGT
is None:
411 selectedGT = gtmap[
"default"]
413 if isinstance(selectedGT, dict):
414 return selectedGT.get(sample.name(), selectedGT[
"default"])
420 "6_2_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_6_2_x/",
421 "7_0_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_0_x/",
422 "7_1_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_1_x/",
423 "7_2_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_2_x/",
424 "7_3_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_3_x/",
425 "7_4_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_4_x/",
426 "7_5_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_5_x/",
427 "7_6_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_7_6_x/",
428 "8_0_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_8_0_x/",
429 "8_1_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_8_1_x/",
430 "9_0_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_9_0_x/",
431 "9_1_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_9_1_x/",
432 "9_2_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_9_2_x/",
433 "9_3_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_9_3_x/",
434 "9_4_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_9_4_x/",
435 "10_0_X":
"https://cmsweb.cern.ch/dqm/relval/data/browse/ROOT/RelVal/CMSSW_10_0_x/",
438 _doElectronSamples = [
440 "RelValSingleElectronPt35",
441 "RelValSingleElectronPt10",
443 _doConversionSamples = [
445 "RelValH125GGgluonfusion",
447 _doBHadronSamples = [
452 """Get RelVal download URL for a given release.""" 453 version_re = re.compile(
"CMSSW_(?P<X>\d+)_(?P<Y>\d+)")
454 m = version_re.search(release)
456 raise Exception(
"Regex %s does not match to release version %s" % (version_re.pattern, release))
457 version =
"%s_%s_X" % (m.group(
"X"), m.group(
"Y"))
458 if not version
in _relvalUrls:
459 print(
"No RelVal URL for version %s, please update _relvalUrls" % version)
461 return _relvalUrls[version]
464 if plotterFolder.onlyForPileup()
and not sample.pileupEnabled():
466 if plotterFolder.onlyForElectron()
and not sample.doElectron():
468 if plotterFolder.onlyForConversion()
and not sample.doConversion():
470 if plotterFolder.onlyForBHadron()
and not sample.doBHadron():
475 """Represents a RelVal sample.""" 476 def __init__(self, sample, append=None, midfix=None, putype=None, punum=0,
477 fastsim=
False, fastsimCorrespondingFullsimPileup=
None,
478 doElectron=
None, doConversion=
None, doBHadron=
None,
479 version=
"v1", dqmVersion=
"0001", scenario=
None, overrideGlobalTag=
None, appendGlobalTag=
""):
483 sample -- String for name of the sample 486 append -- String for a variable name within the DWM file names, to be directly appended to sample name (e.g. "HS"; default None) 487 midfix -- String for a variable name within the DQM file names, to be appended after underscore to "sample name+append" (e.g. "13", "UP15"; default None) 488 putype -- String for pileup type (e.g. "25ns"/"50ns" for FullSim, "AVE20" for FastSim; default None) 489 punum -- String for amount of pileup (default None) 490 fastsim -- Bool indicating the FastSim status (default False) 491 fastsimCorrespondingFullSimPileup -- String indicating what is the FullSim pileup sample corresponding this FastSim sample. Must be set if fastsim=True and putype!=None (default None) 492 doElectron -- Bool specifying if electron-specific plots should be produced (default depends on sample) 493 doConversion -- Bool specifying if conversion-specific plots should be produced (default depends on sample) 494 doBHadron -- Bool specifying if B-hadron-specific plots should be produced (default depends on sample) 495 version -- String for dataset/DQM file version (default "v1") 496 scenario -- Geometry scenario for upgrade samples (default None) 497 overrideGlobalTag -- GlobalTag obtained from release information (in the form of {"release": "actualRelease"}; default None) 498 appendGlobalTag -- String to append to GlobalTag (intended for one-time hacks; default "") 513 if doElectron
is not None:
517 if doConversion
is not None:
521 if doBHadron
is not None:
524 self.
_doBHadron = (sample
in _doBHadronSamples)
530 """Return a tuple uniquely identifying the sample, to be used e.g. as a key to dict""" 534 """Get the sample name""" 538 """Get the sample name""" 545 """Return True if sample has pileup (for HTML generation)""" 546 return self.
_putype is not None 549 """Return True if pileup plots are enabled (for plot generation)""" 553 """Return "PU"/"noPU" corresponding the pileup status""" 560 """Return the pileup type""" 561 if isinstance(self.
_putype, dict):
562 return self._putype.get(release, self.
_putype[
"default"])
580 return self._version.get(release, self.
_version[
"default"])
597 """Return True for FastSim sample""" 601 """Return True for FullSim sample""" 607 def dirname(self, newRepository, newRelease, newSelection):
608 """Return the output directory name 611 newRepository -- String for base directory for output files 612 newRelease -- String for CMSSW release 613 newSelection -- String for histogram selection 618 return "{newRepository}/{newRelease}/{newSelection}{pileup}/{sample}".
format(
619 newRepository=newRepository, newRelease=newRelease, newSelection=newSelection,
620 pileup=pileup, sample=sample)
623 """Return the DQM file name 626 newRelease -- String for CMSSW release 651 fname =
'DQM_V{dqmVersion}_R000000001__{sample}{midfix}__{newrelease}-{pileup}{globaltag}{appendGlobalTag}{fastsim}-{version}__DQMIO.root'.
format(
652 sample=sample, midfix=midfix, newrelease=
_stripRelease(newRelease),
653 pileup=pileup, globaltag=globalTag, appendGlobalTag=self.
_appendGlobalTag, fastsim=fastsim,
660 """Return the dataset pattern 663 newRelease -- String for CMSSW release 671 fastsim =
"_FastSim-" 676 return "{sample}/{newrelease}-{pileup}{globaltag}{fastsim}{version}/GEN-SIM-{digi}RECO".
format(
677 sample=self.
_sample, newrelease=newRelease,
678 pileup=pileup, globaltag=globalTag, fastsim=fastsim, digi=digi,
679 version=self.
version(newRelease)
683 """Base class for Tracking/Vertex validation.""" 684 def __init__(self, fullsimSamples, fastsimSamples, refRelease, refRepository, newRelease, newRepository, newFileModifier=None, selectionName=""):
688 fullsimSamples -- List of Sample objects for FullSim samples (may be empty) 689 fastsimSamples -- List of Sample objects for FastSim samples (may be empty) 690 refRelease -- String for reference CMSSW release (can be None for no reference release) 691 newRepository -- String for directory whete to put new files 692 newRelease -- CMSSW release to be validated 693 refRepository -- String for directory where reference root files are 694 newFileModifier -- If given, a function to modify the names of the new files (function takes a string and returns a string) 695 selectionName -- If given, use this string as the selection name (appended to GlobalTag for directory names) 700 print(
'Error: CMSSW environment variables are not available.', file=sys.stderr)
701 print(
' Please run cmsenv', file=sys.stderr)
720 """Download DQM files. Requires grid certificate and asks your password for it.""" 724 filenames = [f
for f
in filenames
if not os.path.exists(f)]
725 if len(filenames) == 0:
726 print(
"All files already downloaded")
730 urls = [relvalUrl+f
for f
in filenames]
731 certfile = os.path.join(os.environ[
"HOME"],
".globus",
"usercert.pem")
732 if not os.path.exists(certfile):
733 print(
"Certificate file {certfile} does not exist, unable to download RelVal files from {url}".
format(certfile=certfile, url=relvalUrl))
735 keyfile = os.path.join(os.environ[
"HOME"],
".globus",
"userkey.pem")
736 if not os.path.exists(certfile):
737 print(
"Private key file {keyfile} does not exist, unable to download RelVal files from {url}".
format(keyfile=keyfile, url=relvalUrl))
741 cmd = [
"curl",
"--cert-type",
"PEM",
"--cert", certfile,
"--key", keyfile,
"-k"]
743 cmd.extend([
"-O", u])
744 print(
"Downloading %d files from RelVal URL %s:" % (len(filenames), relvalUrl))
746 print(
"Please provide your private key pass phrase when curl asks it")
747 ret = subprocess.call(cmd)
749 print(
"Downloading failed with exit code %d" % ret)
755 p = subprocess.Popen([
"file", f], stdout=subprocess.PIPE)
756 stdout = p.communicate()[0]
757 if p.returncode != 0:
758 print(
"file command failed with exit code %d" % p.returncode)
760 if not "ROOT" in stdout:
761 print(
"File {f} is not ROOT, please check the correct version, GlobalTag etc. from {url}".
format(f=f, url=relvalUrl))
763 if os.path.exists(f):
771 def doPlots(self, plotter, plotterDrawArgs={}, limitSubFoldersOnlyTo=None, htmlReport=html.HtmlReportDummy(), doFastVsFull=
True, doPhase2PU=
False):
772 """Create validation plots. 775 plotter -- plotting.Plotter object that does the plotting 778 plotterDrawArgs -- Dictionary for additional arguments to Plotter.draw() (default: {}) 779 limitSubFoldersOnlyTo -- If not None, should be a dictionary from string to an object. The string is the name of a PlotFolder, and the object is PlotFolder-type specific to limit the subfolders to be processed. In general case the object is a list of strings, but e.g. for track iteration plots it is a function taking the algo and quality as parameters. 780 htmlReport -- Object returned by createHtmlReport(), in case HTML report generation is desired 781 doFastVsFull -- Do FastSim vs. FullSim comparison? (default: True) 782 doPhase2PU -- Do Phase2 PU 200 vs. 140 comparison (default: False) 791 if not os.path.exists(harvestedFile):
792 print(
"Harvested file %s does not exist!" % harvestedFile)
795 plotterInstance = plotter.readDirs(harvestedFile)
796 htmlReport.beginSample(sample)
797 for plotterFolder, dqmSubFolder
in plotterInstance.iterFolders(limitSubFoldersOnlyTo=limitSubFoldersOnlyTo):
800 plotFiles = self.
_doPlots(sample, harvestedFile, plotterFolder, dqmSubFolder, htmlReport)
801 htmlReport.addPlots(plotterFolder, dqmSubFolder, plotFiles)
813 correspondingFull =
None 815 if fast.name() != full.name():
817 if fast.pileupEnabled():
818 if not full.pileupEnabled():
820 if fast.fastsimCorrespondingFullsimPileup() != full.pileupType():
823 if full.pileupEnabled():
826 if correspondingFull
is None:
827 correspondingFull = full
829 raise Exception(
"Got multiple compatible FullSim samples for FastSim sample %s %s" % (fast.name(), fast.pileup()))
830 if correspondingFull
is None:
831 print(
"WARNING: Did not find compatible FullSim sample for FastSim sample %s %s, omitting FastSim vs. FullSim comparison" % (fast.name(), fast.pileup()))
836 plotterInstance = self._plotter.readDirs(harvestedFile)
837 htmlReport.beginSample(fast, fastVsFull=
True)
838 for plotterFolder, dqmSubFolder
in plotterInstance.iterFolders(limitSubFoldersOnlyTo=limitSubFoldersOnlyTo):
841 plotFiles = self.
_doPlotsFastFull(fast, correspondingFull, plotterFolder, dqmSubFolder, htmlReport)
842 htmlReport.addPlots(plotterFolder, dqmSubFolder, plotFiles)
845 def _stripScenario(name):
846 puindex = name.find(
"PU")
849 return name[:puindex]
853 if sample.pileupNumber() == 140:
854 key = (sample.name(), _stripScenario(sample.scenario()))
855 if key
in pu140samples:
856 raise Exception(
"Duplicate entry for sample %s in scenario %s" % (sample.name(), sample.scenar()))
857 pu140samples[key] = sample
860 if sample.pileupNumber() != 200:
862 key = (sample.name(), _stripScenario(sample.scenario()))
863 if not key
in pu140samples:
866 sample_pu140 = pu140samples[key]
870 plotterInstance = self._plotter.readDirs(harvestedFile)
871 htmlReport.beginSample(sample, pileupComparison=
"vs. PU140")
872 for plotterFolder, dqmSubFolder
in plotterInstance.iterFolders(limitSubFoldersOnlyTo=limitSubFoldersOnlyTo):
875 plotFiles = self.
_doPlotsPileup(sample_pu140, sample, plotterFolder, dqmSubFolder, htmlReport)
876 htmlReport.addPlots(plotterFolder, dqmSubFolder, plotFiles)
884 def _createRefSelection(selectionName):
885 sel = refGlobalTag+selectionNameBase+selectionName
886 if sample.pileupEnabled():
891 refSelection = _createRefSelection(plotterFolder.getSelectionName(dqmSubFolder))
895 triedRefValFiles = []
899 for selName
in plotterFolder.getSelectionNameIterator(dqmSubFolder):
900 refSel = _createRefSelection(selName)
901 refdir = os.path.join(*(tmp+[refSel, sample.name()]))
904 refValFilePath = os.path.join(refdir, valname)
905 if os.path.exists(refValFilePath):
906 refSelection = refSel
907 refValFile = ROOT.TFile.Open(refValFilePath)
910 triedRefValFiles.append(refValFilePath)
911 if refValFile
is None:
912 if len(triedRefValFiles) == 1:
914 print(
"Reference file %s not found" % triedRefValFiles[0])
917 print(
"None of the possible reference files %s not found" %
",".
join(triedRefValFiles))
919 return (refValFile, refSelection)
921 def _doPlots(self, sample, harvestedFile, plotterFolder, dqmSubFolder, htmlReport):
922 """Do the real plotting work for a given sample and DQM subfolder""" 927 selectionNameBase =
"_"+sample.pileup()
928 newSelection = newGlobalTag+selectionNameBase+plotterFolder.getSelectionName(dqmSubFolder)
929 if sample.pileupEnabled():
932 newSelection +=
"_"+newPu
934 valname =
"val.{sample}.root".
format(sample=sample.name())
937 (refValFile, refSelection) = self.
_getRefFileAndSelection(sample, plotterFolder, dqmSubFolder, selectionNameBase, valname)
943 tmp.extend([newSelection, sample.name()])
944 newsubdir = os.path.join(*tmp)
946 if not os.path.exists(newdir):
948 valnameFullPath = os.path.join(newdir, valname)
952 newValFile =
_copySubDir(harvestedFile, valnameFullPath, plotterFolder.getPossibleDQMFolders(), dqmSubFolder.subfolder
if dqmSubFolder
is not None else None)
957 print(
"Comparing ref and new {sim} {sample} {translatedFolder}".
format(
958 sim=
"FullSim" if not sample.fastsim()
else "FastSim",
959 sample=sample.name(), translatedFolder=
str(dqmSubFolder.translated)
if dqmSubFolder
is not None else ""))
960 rootFiles = [refValFile, newValFile]
965 plotterFolder.create(rootFiles, legendLabels, dqmSubFolder, isPileupSample=sample.pileupEnabled())
966 fileList.extend(plotterFolder.draw(directory=newdir, **self.
_plotterDrawArgs))
968 if len(fileList) > 0:
969 fileList.append(valnameFullPath)
972 for tableCreator
in plotterFolder.getTableCreators():
973 htmlReport.addTable(tableCreator.create(rootFiles, legendLabels, dqmSubFolder))
976 if refValFile
is not None:
979 if len(fileList) == 0:
984 print(
"Plotter produced multiple files with names",
", ".
join(dups))
985 print(
"Typically this is a naming problem in the plotter configuration")
989 print(
"Created plots and %s in %s" % (valname, newdir))
990 return map(
lambda n: n.replace(newdir, newsubdir), fileList)
992 def _doPlotsFastFull(self, fastSample, fullSample, plotterFolder, dqmSubFolder, htmlReport):
993 """Do the real plotting work for FastSim vs. FullSim for a given algorithm, quality flag, and sample.""" 999 tmp = plotterFolder.getSelectionName(dqmSubFolder)
1000 fastSelection = fastGlobalTag+
"_"+fastSample.pileup()+tmp
1001 fullSelection = fullGlobalTag+
"_"+fullSample.pileup()+tmp
1002 if fullSample.pileupEnabled():
1003 fullSelection +=
"_"+fullSample.pileupType(self.
_newRelease)
1004 fastSelection +=
"_"+fastSample.pileupType(self.
_newRelease)
1008 fulldir = os.path.join(self.
_newBaseDir, fullSelection, fullSample.name())
1009 newsubdir = os.path.join(
"fastfull", self.
_newRelease, fastSelection, fastSample.name())
1010 newdir = os.path.join(self.
_newBaseDir, newsubdir)
1011 if not os.path.exists(newdir):
1015 valname =
"val.{sample}.root".
format(sample=fastSample.name())
1016 fastValFilePath = os.path.join(fastdir, valname)
1017 if not os.path.exists(fastValFilePath)
and plotting.verbose:
1018 print(
"FastSim file %s not found" % fastValFilePath)
1019 fullValFilePath = os.path.join(fulldir, valname)
1020 if not os.path.exists(fullValFilePath)
and plotting.verbose:
1021 print(
"FullSim file %s not found" % fullValFilePath)
1023 fastValFile = ROOT.TFile.Open(fastValFilePath)
1024 fullValFile = ROOT.TFile.Open(fullValFilePath)
1027 if plotting.verbose:
1028 print(
"Comparing FullSim and FastSim {sample} {translatedFolder}".
format(
1029 sample=fastSample.name(), translatedFolder=
str(dqmSubFolder.translated)
if dqmSubFolder
is not None else ""))
1030 rootFiles = [fullValFile, fastValFile]
1035 plotterFolder.create(rootFiles, legendLabels, dqmSubFolder, isPileupSample=fastSample.pileupEnabled(), requireAllHistograms=
True)
1039 for tableCreator
in plotterFolder.getTableCreators():
1040 htmlReport.addTable(tableCreator.create(rootFiles, legendLabels, dqmSubFolder))
1045 if len(fileList) == 0:
1050 print(
"Plotter produced multiple files with names",
", ".
join(dups))
1051 print(
"Typically this is a naming problem in the plotter configuration")
1055 print(
"Created plots in %s" % (newdir))
1056 return map(
lambda n: n.replace(newdir, newsubdir), fileList)
1058 def _doPlotsPileup(self, pu140Sample, pu200Sample, plotterFolder, dqmSubFolder, htmlReport):
1059 """Do the real plotting work for two pileup scenarios for a given algorithm, quality flag, and sample.""" 1065 tmp = plotterFolder.getSelectionName(dqmSubFolder)
1066 pu140Selection = pu140GlobalTag+
"_"+pu140Sample.pileup()+tmp+
"_"+pu140Sample.pileupType(self.
_newRelease)
1067 pu200Selection = pu200GlobalTag+
"_"+pu200Sample.pileup()+tmp+
"_"+pu200Sample.pileupType(self.
_newRelease)
1070 pu140dir = os.path.join(self.
_newBaseDir, pu140Selection, pu140Sample.name())
1071 pu200dir = os.path.join(self.
_newBaseDir, pu200Selection, pu200Sample.name())
1072 newsubdir = os.path.join(
"pileup", self.
_newRelease, pu200Selection, pu200Sample.name())
1073 newdir = os.path.join(self.
_newBaseDir, newsubdir)
1074 if not os.path.exists(newdir):
1078 valname =
"val.{sample}.root".
format(sample=pu140Sample.name())
1079 pu140ValFilePath = os.path.join(pu140dir, valname)
1080 if not os.path.exists(pu140ValFilePath):
1081 if plotting.verbose:
1082 print(
"PU140 file %s not found" % pu140ValFilePath)
1084 pu200ValFilePath = os.path.join(pu200dir, valname)
1085 if not os.path.exists(pu200ValFilePath):
1086 if plotting.verbose:
1087 print(
"PU200 file %s not found" % pu200ValFilePath)
1090 pu140ValFile = ROOT.TFile.Open(pu140ValFilePath)
1091 pu200ValFile = ROOT.TFile.Open(pu200ValFilePath)
1094 if plotting.verbose:
1095 print(
"Comparing PU140 and PU200 {sample} {translatedFolder}".
format(
1096 sample=pu200Sample.name(), translatedFolder=
str(dqmSubFolder.translated)
if dqmSubFolder
is not None else ""))
1097 rootFiles = [pu140ValFile, pu200ValFile]
1102 plotterFolder.create(rootFiles, legendLabels, dqmSubFolder, isPileupSample=pu140Sample.pileupEnabled(), requireAllHistograms=
True)
1106 for tableCreator
in plotterFolder.getTableCreators():
1107 htmlReport.addTable(tableCreator.create(rootFiles, legendLabels, dqmSubFolder))
1109 pu200ValFile.Close()
1110 pu140ValFile.Close()
1112 if len(fileList) == 0:
1117 print(
"Plotter produced multiple files with names",
", ".
join(dups))
1118 print(
"Typically this is a naming problem in the plotter configuration")
1122 print(
"Created plots in %s" % (newdir))
1123 return map(
lambda n: n.replace(newdir, newsubdir), fileList)
1127 """Copy a subdirectory from oldfile to newfile. 1130 oldfile -- String for source TFile 1131 newfile -- String for destination TFile 1132 basenames -- List of strings for base directories, first existing one is picked 1133 dirname -- String for directory name under the base directory 1135 oldf = ROOT.TFile.Open(oldfile)
1138 for basename
in basenames:
1139 dirold = oldf.GetDirectory(basename)
1143 raise Exception(
"Did not find any of %s directories from file %s" % (
",".
join(basenames), oldfile))
1145 d = dirold.Get(dirname)
1147 raise Exception(
"Did not find directory %s under %s" % (dirname, dirold.GetPath()))
1150 newf = ROOT.TFile.Open(newfile,
"RECREATE")
1152 for d
in basenames[0].
split(
"/"):
1153 dirnew = dirnew.mkdir(d)
1155 dirnew = dirnew.mkdir(dirname)
1162 """Copy non-TTree objects from src TDirectory to dst TDirectory.""" 1163 keys = src.GetListOfKeys()
1165 classname = key.GetClassName()
1166 cl = ROOT.TClass.GetClass(classname)
1169 if not (cl.InheritsFrom(
"TTree")
and cl.InheritsFrom(
"TDirectory")):
1186 def __init__(self, label, name, fileLegends, pileup=True, customPileupLabel=""):
1232 if not os.path.exists(newdir):
1239 raise Exception(
"HTML report object already created. There is probably some logic error in the calling code.")
1243 def doPlots(self, plotters, plotterDrawArgs={}, **kwargs):
1249 self._htmlReport.beginSample(sample)
1252 for f
in sample.files():
1253 if os.path.exists(f):
1254 self._openFiles.append(ROOT.TFile.Open(f))
1256 print(
"File %s not found (from sample %s), ignoring it" % (f, sample.name()))
1257 self._openFiles.append(
None)
1259 for plotter
in plotters:
1268 plotterInstance = plotter.readDirs(*self.
_openFiles)
1269 for plotterFolder, dqmSubFolder
in plotterInstance.iterFolders(limitSubFoldersOnlyTo=limitSubFoldersOnlyTo):
1272 plotFiles = self.
_doPlots(plotterFolder, dqmSubFolder)
1273 if len(plotFiles) > 0:
1274 self._htmlReport.addPlots(plotterFolder, dqmSubFolder, plotFiles)
1278 newsubdir = self.
_subdirprefix+plotterFolder.getSelectionName(dqmSubFolder)
1279 newdir = os.path.join(self.
_newdir, newsubdir)
1280 if not os.path.exists(newdir):
1284 for tableCreator
in plotterFolder.getTableCreators():
1285 self._htmlReport.addTable(tableCreator.create(self.
_openFiles, self.
_labels, dqmSubFolder))
1288 if len(fileList) == 0:
1293 print(
"Plotter produced multiple files with names",
", ".
join(dups))
1294 print(
"Typically this is a naming problem in the plotter configuration")
1297 if self._plotterDrawArgs.get(
"separate",
False):
1298 if not os.path.exists(
"%s/res"%newdir):
1299 os.makedirs(
"%s/res"%newdir)
1300 downloadables = [
"index.php",
"res/jquery-ui.js",
"res/jquery.js",
"res/style.css",
"res/style.js",
"res/theme.css"]
1301 for d
in downloadables:
1302 if not os.path.exists(
"%s/%s" % (newdir,d)):
1303 urllib.urlretrieve(
"https://raw.githubusercontent.com/musella/php-plots/master/%s"%d,
"%s/%s"%(newdir,d))
1305 print(
"Created plots in %s" % newdir)
1306 return map(
lambda n: n.replace(newdir, newsubdir), fileList)
_fastsimCorrespondingFullsimPileup
def _getGlobalTag(sample, release)
def _doPlotsPileup(self, pu140Sample, pu200Sample, plotterFolder, dqmSubFolder, htmlReport)
def createHtmlReport(self, validationName="")
def _getSelectionName(self, args, kwargs)
def customPileupLabel(self)
def dirname(self, newRepository, newRelease, newSelection)
def filename(self, newRelease)
def _getDirectoryName(self, args, kwargs)
def __init__(self, label, name, fileLegends, pileup=True, customPileupLabel="")
def datasetpattern(self, newRelease)
S & print(S &os, JobReport::InputFile const &f)
def _doPlots(self, plotterFolder, dqmSubFolder)
def pileupType(self, release=None)
def _doFastsimFastVsFullPlots(self, limitSubFoldersOnlyTo, htmlReport)
def _getRelValUrl(release)
def _stripRelease(release)
def _processPlotsForSample(plotterFolder, sample)
def hasOverrideGlobalTag(self)
def _doPlotsFastFull(self, fastSample, fullSample, plotterFolder, dqmSubFolder, htmlReport)
def version(self, release=None)
def doPlots(self, plotters, plotterDrawArgs={}, kwargs)
def __init__(self, fullsimSamples, fastsimSamples, refRelease, refRepository, newRelease, newRepository, newFileModifier=None, selectionName="")
static std::string join(char **cmd)
def _copySubDir(oldfile, newfile, basenames, dirname)
def _doPhase2PileupPlots(self, limitSubFoldersOnlyTo, htmlReport)
def doPlots(self, plotter, plotterDrawArgs={}, limitSubFoldersOnlyTo=None, htmlReport=html.HtmlReportDummy(), doFastVsFull=True, doPhase2PU=False)
def __init__(self, sample, append=None, midfix=None, putype=None, punum=0, fastsim=False, fastsimCorrespondingFullsimPileup=None, doElectron=None, doConversion=None, doBHadron=None, version="v1", dqmVersion="0001", scenario=None, overrideGlobalTag=None, appendGlobalTag="")
def fastsimCorrespondingFullsimPileup(self)
def createHtmlReport(self)
def _doPlotsForPlotter(self, plotter, sample, limitSubFoldersOnlyTo=None)
def __init__(self, samples, newdir)
def _getRefFileAndSelection(self, sample, plotterFolder, dqmSubFolder, selectionNameBase, valname)
def _doPlots(self, sample, harvestedFile, plotterFolder, dqmSubFolder, htmlReport)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
def overrideGlobalTag(self)