24from argcomplete.completers
import ChoicesCompleter
25from commondeps.dplAodReader
import DplAodReader
26from extramodules.dqLibGetter
import DQLibGetter
27from extramodules.choicesCompleterList
import ChoicesCompleterList
28from extramodules.helperOptions
import HelperOptions
30from extramodules.actionHandler
import NoAction
31from extramodules.actionHandler
import ChoicesAction
32from extramodules.helperOptions
import HelperOptions
38 Class for Interface -> tableReader.cxx Task -> Configurable, Process Functions
41 object (parser_args() object): tableReader.cxx Interface
45 self, parserTableReader = argparse.ArgumentParser(
46 formatter_class = argparse.ArgumentDefaultsHelpFormatter,
47 description =
"Example Usage: ./runTableReader.py <yourConfig.json> --arg value",
48 ), helperOptions = HelperOptions(), dplAodReader = DplAodReader()
59 This function allows to add arguments for parser_args() function
62 readerPath = "configs/readerConfiguration_reducedEvent.json"
63 writerPath =
"configs/writerConfiguration_dileptons.json"
66 analysisSelections = {
67 "eventSelection":
"Run event selection on DQ skimmed events",
68 "muonSelection":
"Run muon selection on DQ skimmed muons",
69 "trackSelection":
"Run barrel track selection on DQ skimmed tracks",
70 "eventMixing":
"Run mixing on skimmed tracks based muon and track selections",
71 "eventMixingVn":
"Run vn mixing on skimmed tracks based muon and track selections",
72 "sameEventPairing":
"Run same event pairing selection on DQ skimmed data",
73 "dileptonHadron":
"Run dilepton-hadron pairing, using skimmed data",
75 analysisSelectionsList = []
76 for k, v
in analysisSelections.items():
77 analysisSelectionsList.append(k)
79 sameEventPairingProcessSelections = {
80 "JpsiToEE":
"Run electron-electron pairing, with skimmed tracks",
81 "JpsiToMuMu":
"Run muon-muon pairing, with skimmed muons",
82 "JpsiToMuMuVertexing":
"Run muon-muon pairing and vertexing, with skimmed muons",
83 "VnJpsiToEE":
"Run barrel-barrel vn mixing on skimmed tracks",
84 "VnJpsiToMuMu":
"Run muon-muon vn mixing on skimmed tracks",
85 "ElectronMuon":
"Run electron-muon pairing, with skimmed tracks/muons",
86 "All":
"Run all types of pairing, with skimmed tracks/muons",
88 sameEventPairingProcessSelectionsList = []
89 for k, v
in sameEventPairingProcessSelections.items():
90 sameEventPairingProcessSelectionsList.append(k)
92 booleanSelections = [
"true",
"false"]
95 "Barrel":
"Run barrel-barrel mixing on skimmed tracks",
96 "Muon":
"Run muon-muon mixing on skimmed muons",
97 "BarrelMuon":
"Run barrel-muon mixing on skimmed tracks/muons",
98 "BarrelVn":
"Run barrel-barrel vn mixing on skimmed tracks",
99 "MuonVn":
"Run muon-muon vn mixing on skimmed tracks",
101 mixingSelectionsList = []
102 for k, v
in mixingSelections.items():
103 mixingSelectionsList.append(k)
106 allAnalysisCuts, allMCSignals, allSels, allMixing = DQLibGetter.getAnalysisSelections(self)
112 title =
"Data processor options: analysis-event-selection, analysis-muon-selection, analysis-track-selection, analysis-event-mixing, analysis-dilepton-hadron"
114 groupAnalysisSelections.add_argument(
115 "--analysis", help =
"Skimmed process selections for Data Analysis", action =
"store", nargs =
"*", type = str,
116 metavar =
"ANALYSIS", choices = analysisSelectionsList,
117 ).completer = ChoicesCompleterList(analysisSelectionsList)
119 for key, value
in analysisSelections.items():
120 groupAnalysisSelections.add_argument(key, help = value, action =
"none")
123 groupProcessSEPSelections = self.
parserTableReader.add_argument_group(title =
"Data processor options: analysis-same-event-pairing")
124 groupProcessSEPSelections.add_argument(
125 "--process", help =
"Skimmed process selections for analysis-same-event-pairing task", action =
"store", nargs =
"*",
126 type = str, metavar =
"PROCESS", choices = sameEventPairingProcessSelectionsList,
127 ).completer = ChoicesCompleterList(sameEventPairingProcessSelectionsList)
129 title =
"Choice List for analysis-same-event-pairing task Process options (when a value added to parameter, processSkimmed value is converted from false to true)"
132 for key, value
in sameEventPairingProcessSelections.items():
133 groupProcess.add_argument(key, help = value, action =
"none")
136 groupAnalysisEventMixing = self.
parserTableReader.add_argument_group(title =
"Data processor options: analysis-event-mixing")
137 groupAnalysisEventMixing.add_argument(
138 "--mixing", help =
"Skimmed process selections for Event Mixing manually", nargs =
"*", action =
"store", type = str,
139 choices = mixingSelectionsList,
140 ).completer = ChoicesCompleterList(mixingSelectionsList)
144 title =
"Data processor options: analysis-event-selection, analysis-muon-selection, analysis-track-selection, analysis-event-mixing"
146 groupQASelections.add_argument(
147 "--cfgQA", help =
"If true, fill QA histograms", action =
"store", type = str.lower, choices = booleanSelections,
148 ).completer = ChoicesCompleter(booleanSelections)
151 groupAnalysisEventSelection = self.
parserTableReader.add_argument_group(title =
"Data processor options: analysis-event-selection")
152 groupAnalysisEventSelection.add_argument(
153 "--cfgMixingVars", help =
"Mixing configs separated by a space", nargs =
"*", action =
"store", type = str,
154 metavar =
"CFGMIXINGVARS", choices = allMixing,
155 ).completer = ChoicesCompleterList(allMixing)
156 groupAnalysisEventSelection.add_argument(
157 "--cfgEventCuts", help =
"Space separated list of event cuts", nargs =
"*", action =
"store", type = str,
158 metavar =
"CFGEVENTCUTS", choices = allAnalysisCuts,
159 ).completer = ChoicesCompleterList(allAnalysisCuts)
162 groupAnalysisMuonSelection = self.
parserTableReader.add_argument_group(title =
"Data processor options: analysis-muon-selection")
163 groupAnalysisMuonSelection.add_argument(
164 "--cfgMuonCuts", help =
"Space separated list of muon cuts", nargs =
"*", action =
"store", type = str, metavar =
"CFGMUONCUTS",
165 choices = allAnalysisCuts,
166 ).completer = ChoicesCompleterList(allAnalysisCuts)
169 groupAnalysisTrackSelection = self.
parserTableReader.add_argument_group(title =
"Data processor options: analysis-track-selection")
170 groupAnalysisTrackSelection.add_argument(
171 "--cfgTrackCuts", help =
"Space separated list of barrel track cuts", nargs =
"*", action =
"store", type = str,
172 metavar =
"CFGTRACKCUTS", choices = allAnalysisCuts,
173 ).completer = ChoicesCompleterList(allAnalysisCuts)
176 groupAnalysisDileptonHadron = self.
parserTableReader.add_argument_group(title =
"Data processor options: analysis-dilepton-hadron")
177 groupAnalysisDileptonHadron.add_argument(
178 "--cfgLeptonCuts", help =
"Space separated list of barrel track cuts", nargs =
"*", action =
"store", type = str,
179 metavar =
"CFGLEPTONCUTS", choices = allAnalysisCuts,
180 ).completer = ChoicesCompleterList(allAnalysisCuts)
184 title =
"Data processor options: internal-dpl-aod-reader, internal-dpl-aod-writer"
186 groupDPLReader.add_argument(
188 help =
"Reader config JSON with path. For Standart Analysis use as default, for dilepton analysis change to dilepton JSON config file",
189 action =
"store", default = readerPath, type = str
191 groupDPLReader.add_argument(
192 "--writer", help =
"Argument for producing dileptonAOD.root. Set false for disable", action =
"store", default = writerPath,
198 This function allows to save the obtained arguments to the parser_args() function
201 Namespace: returns parse_args()
203 argcomplete.autocomplete(self.parserTableReader, always_complete_options = False)
208 This function allows to merge parser_args argument information from different classes
def __init__(self, parserTableReader=argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Example Usage: ./runTableReader.py <yourConfig.json> --arg value",), helperOptions=HelperOptions(), dplAodReader=DplAodReader())