23from extramodules.actionHandler
import NoAction
24from extramodules.actionHandler
import ChoicesAction
25from extramodules.helperOptions
import HelperOptions
26from extramodules.converters
import O2Converters
29from argcomplete.completers
import ChoicesCompleter
30from extramodules.choicesCompleterList
import ChoicesCompleterList
32from commondeps.centralityTable
import CentralityTable
33from commondeps.eventSelection
import EventSelectionTask
34from commondeps.multiplicityTable
import MultiplicityTable
35from commondeps.pidTOFBase
import TofEventTime
36from commondeps.pidTOFBeta
import TofPidBeta
37from commondeps.pidTPCTOFFull
import TpcTofPidFull
38from commondeps.trackPropagation
import TrackPropagation
39from commondeps.trackselection
import TrackSelectionTask
40from commondeps.dplAodReader
import DplAodReader
42from dqtasks.v0selector
import V0selector
44from extramodules.dqLibGetter
import DQLibGetter
52 Class for Interface -> tableMaker.cxx Task -> Configurable, Process Functions.
53 Also this
class includes some
filterPP and
dqFlow task arguments to avoid conflicts
56 object (parser_args() object): tableMaker.cxx Interface
60 self, parserTableMaker = argparse.ArgumentParser(
61 formatter_class = argparse.ArgumentDefaultsHelpFormatter,
62 description =
"Example Usage: ./runTableMaker.py <yourConfig.json> --arg value "
63 ), eventSelection = EventSelectionTask(), centralityTable = CentralityTable(), multiplicityTable = MultiplicityTable(),
64 tofEventTime = TofEventTime(), tofPidBeta = TofPidBeta(), tpcTofPidFull = TpcTofPidFull(), trackPropagation = TrackPropagation(),
65 trackSelection = TrackSelectionTask(), v0selector = V0selector(), helperOptions = HelperOptions(), o2Converters = O2Converters(),
66 dplAodReader = DplAodReader()
87 This function allows to add arguments for parser_args() function
91 tableMakerProcessSelections = {
92 "Full":
"Build full DQ skimmed data model, w/o centrality",
93 "FullWithCov":
"Build full DQ skimmed data model, w/ track and fwdtrack covariance tables",
94 "FullWithCent":
"Build full DQ skimmed data model, w/ centrality",
95 "BarrelOnly":
"Build barrel-only DQ skimmed data model, w/o centrality",
96 "BarrelOnlyWithCov":
"Build barrel-only DQ skimmed data model, w/ track cov matrix",
97 "BarrelOnlyWithV0Bits":
"Build full DQ skimmed data model, w/o centrality, w/ V0Bits",
98 "BarrelOnlyWithEventFilter":
"Build full DQ skimmed data model, w/o centrality, w/ event filter",
99 "BarrelOnlyWithQvector":
"Build full DQ skimmed data model, w/ centrality, w/ q vector",
100 "BarrelOnlyWithCent":
"Build barrel-only DQ skimmed data model, w/ centrality",
101 "MuonOnly":
"Build muon-only DQ skimmed data model",
102 "MuonOnlyWithCov":
"Build muon-only DQ skimmed data model, w/ muon cov matrix",
103 "MuonOnlyWithCent":
"Build muon-only DQ skimmed data model, w/ centrality",
104 "MuonOnlyWithFilter":
"Build muon-only DQ skimmed data model, w/ event filter",
105 "MuonOnlyWithQvector":
"Build muon-only DQ skimmed data model, w/ q vector",
106 "OnlyBCs":
"Analyze the BCs to store sampled lumi",
108 tableMakerProcessSelectionsList = []
109 for k, v
in tableMakerProcessSelections.items():
110 tableMakerProcessSelectionsList.append(k)
112 booleanSelections = [
"true",
"false"]
115 allAnalysisCuts, allMCSignals, allSels, allMixing = DQLibGetter.getAnalysisSelections(self)
120 groupTableMakerConfigs = self.
parserTableMaker.add_argument_group(title =
"Data processor options: table-maker")
121 groupTableMakerConfigs.add_argument(
122 "--cfgEventCuts", help =
"Space separated list of event cuts", nargs =
"*", action =
"store", type = str,
123 metavar =
"CFGEVENTCUTS", choices = allAnalysisCuts,
124 ).completer = ChoicesCompleterList(allAnalysisCuts)
125 groupTableMakerConfigs.add_argument(
126 "--cfgBarrelTrackCuts", help =
" Space separated list of barrel track cuts", nargs =
"*", action =
"store", type = str,
127 metavar =
"CFGBARRELTRACKCUTS", choices = allAnalysisCuts,
128 ).completer = ChoicesCompleterList(allAnalysisCuts)
129 groupTableMakerConfigs.add_argument(
130 "--cfgMuonCuts", help =
"Space separated list of muon cuts in table-maker", action =
"store", nargs =
"*", type = str,
131 metavar =
"CFGMUONCUTS", choices = allAnalysisCuts,
132 ).completer = ChoicesCompleterList(allAnalysisCuts)
133 groupTableMakerConfigs.add_argument(
"--cfgBarrelLowPt", help =
"Low pt cut for tracks in the barrel", action =
"store", type = str)
134 groupTableMakerConfigs.add_argument(
"--cfgMuonLowPt", help =
"Low pt cut for muons", action =
"store", type = str)
135 groupTableMakerConfigs.add_argument(
136 "--cfgNoQA", help =
"If true, no QA histograms", action =
"store", type = str.lower, choices = booleanSelections,
137 ).completer = ChoicesCompleter(booleanSelections)
138 groupTableMakerConfigs.add_argument(
139 "--cfgDetailedQA", help =
"If true, include more QA histograms (BeforeCuts classes and more)", action =
"store",
140 type = str.lower, choices = booleanSelections,
141 ).completer = ChoicesCompleter(booleanSelections)
143 groupTableMakerConfigs.add_argument(
"--cfgMinTpcSignal", help =
"Minimum TPC signal", action =
"store", type = str)
144 groupTableMakerConfigs.add_argument(
"--cfgMaxTpcSignal", help =
"Maximum TPC signal", action =
"store", type = str)
146 groupProcessTableMaker = self.
parserTableMaker.add_argument_group(title =
"Data processor options: table-maker")
147 groupProcessTableMaker.add_argument(
148 "--process", help =
"Process Selection options for tableMaker/tableMakerMC Data Processing and Skimming", action =
"store",
149 type = str, nargs =
"*", metavar =
"PROCESS", choices = tableMakerProcessSelectionsList,
150 ).completer = ChoicesCompleterList(tableMakerProcessSelectionsList)
151 for key, value
in tableMakerProcessSelections.items():
152 groupProcessTableMaker.add_argument(key, help = value, action =
"none")
155 groupDQTrackBarrelTask = self.
parserTableMaker.add_argument_group(title =
"Data processor options: d-q-track barrel-task")
156 groupDQTrackBarrelTask.add_argument(
157 "--isBarrelSelectionTiny",
158 help =
"Run barrel track selection instead of normal(process func. for barrel selection must be true)", action =
"store",
159 type = str.lower, choices = booleanSelections,
160 ).completer = ChoicesCompleter(booleanSelections)
163 groupDQMuonsSelection = self.
parserTableMaker.add_argument_group(title =
"Data processor options: d-q muons-selection")
164 groupDQMuonsSelection.add_argument(
165 "--cfgMuonsCuts", help =
"Space separated list of ADDITIONAL muon track cuts", action =
"store", nargs =
"*", type = str,
166 metavar =
"CFGMUONSCUT", choices = allAnalysisCuts,
167 ).completer = ChoicesCompleterList(allAnalysisCuts)
170 groupDQFilterPP = self.
parserTableMaker.add_argument_group(title =
"Data processor options: d-q-filter-p-p-task")
171 groupDQFilterPP.add_argument(
173 help =
"Configure Barrel Selection <track-cut>:[<pair-cut>]:<n>,[<track-cut>:[<pair-cut>]:<n>],... | example jpsiO2MCdebugCuts2::1 ",
174 action =
"store", type = str, nargs =
"*", metavar =
"CFGBARRELSELS", choices = allSels,
175 ).completer = ChoicesCompleterList(allSels)
176 groupDQFilterPP.add_argument(
177 "--cfgMuonSels", help =
"Configure Muon Selection <muon-cut>:[<pair-cut>]:<n> example muonQualityCuts:pairNoCut:1",
178 action =
"store", type = str, nargs =
"*", metavar =
"CFGMUONSELS", choices = allSels,
179 ).completer = ChoicesCompleterList(allSels)
180 groupDQFilterPP.add_argument(
181 "--isFilterPPTiny", help =
"Run filter tiny task instead of normal (processFilterPP must be true) ", action =
"store",
182 type = str.lower, choices = booleanSelections,
183 ).completer = ChoicesCompleter(booleanSelections)
186 groupAnalysisQvector = self.
parserTableMaker.add_argument_group(title =
"Data processor options: analysis-qvector")
187 groupAnalysisQvector.add_argument(
188 "--cfgCutPtMin", help =
"Minimal pT for tracks", action =
"store", type = str, metavar =
"CFGCUTPTMIN",
190 groupAnalysisQvector.add_argument(
191 "--cfgCutPtMax", help =
"Maximal pT for tracks", action =
"store", type = str, metavar =
"CFGCUTPTMAX",
193 groupAnalysisQvector.add_argument(
194 "--cfgCutEta", help =
"Eta range for tracks", action =
"store", type = str, metavar =
"CFGCUTETA",
196 groupAnalysisQvector.add_argument(
197 "--cfgEtaLimit", help =
"Eta gap separation, only if using subEvents", action =
"store", type = str, metavar =
"CFGETALIMIT",
199 groupAnalysisQvector.add_argument(
200 "--cfgNPow", help =
"Power of weights for Q vector", action =
"store", type = str, metavar =
"CFGNPOW",
202 groupAnalysisQvector.add_argument(
"--cfgEfficiency", help =
"CCDB path to efficiency object", action =
"store", type = str)
203 groupAnalysisQvector.add_argument(
"--cfgAcceptance", help =
"CCDB path to acceptance object", action =
"store", type = str)
207 title =
"Data processor options: d-q-barrel-track-selection-task, d-q-muons-selection, d-q-event-selection-task, d-q-filter-p-p-task, analysis-qvector"
209 groupQASelections.add_argument(
210 "--cfgWithQA", help =
"If true, fill QA histograms", action =
"store", type = str.lower, choices = booleanSelections,
211 ).completer = ChoicesCompleter(booleanSelections)
214 groupCoreSelections = self.
parserTableMaker.add_argument_group(title =
"Core configurations that must be configured")
215 groupCoreSelections.add_argument(
"-runData", help =
"Run over Data", action =
"store_true", default =
True)
219 This function allows to save the obtained arguments to the parser_args() function
222 Namespace: returns parse_args()
225 argcomplete.autocomplete(self.parserTableMaker, always_complete_options = False)
230 This function allows to merge parser_args argument information from different classes
274 def mergeMultiArgs(self, *objects):
276 for object
in objects:
277 object.parser = parser
278 object.addArguments()
def __init__(self, parserTableMaker=argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Example Usage: ./runTableMaker.py <yourConfig.json> --arg value "), eventSelection=EventSelectionTask(), centralityTable=CentralityTable(), multiplicityTable=MultiplicityTable(), tofEventTime=TofEventTime(), tofPidBeta=TofPidBeta(), tpcTofPidFull=TpcTofPidFull(), trackPropagation=TrackPropagation(), trackSelection=TrackSelectionTask(), v0selector=V0selector(), helperOptions=HelperOptions(), o2Converters=O2Converters(), dplAodReader=DplAodReader())