O2-DQ User Interface 1.0.0
Loading...
Searching...
No Matches
tableMakerMC.py
Go to the documentation of this file.
1#!/usr/bin/env python
2# PYTHON_ARGCOMPLETE_OK
3# -*- coding: utf-8 -*-
4
5# Copyright 2019-2020 CERN and copyright holders of ALICE O2.
6# See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
7# All rights not expressly granted are reserved.
8#
9# This software is distributed under the terms of the GNU General Public
10# License v3 (GPL Version 3), copied verbatim in the file "COPYING".
11#
12# In applying this license CERN does not waive the privileges and immunities
13# granted to it by virtue of its status as an Intergovernmental Organization
14# or submit itself to any jurisdiction.
15
16# \Author: ionut.cristian.arsene@cern.ch
17# \Interface: cevat.batuhan.tolon@cern.ch
18
19# Orginal Task: https://github.com/AliceO2Group/O2Physics/blob/master/PWGDQ/TableProducer/tableMakerMC.cxx
20
21import argparse
22
23from argcomplete.completers import ChoicesCompleter
24import argcomplete
25from extramodules.choicesCompleterList import ChoicesCompleterList
26from extramodules.helperOptions import HelperOptions
27from extramodules.actionHandler import NoAction
28from extramodules.actionHandler import ChoicesAction
29from extramodules.converters import O2Converters
30
31from commondeps.centralityTable import CentralityTable
32from commondeps.eventSelection import EventSelectionTask
33from commondeps.multiplicityTable import MultiplicityTable
34from commondeps.pidTOFBase import TofEventTime
35from commondeps.pidTOFBeta import TofPidBeta
36from commondeps.pidTPCTOFFull import TpcTofPidFull
37from commondeps.trackPropagation import TrackPropagation
38from commondeps.trackselection import TrackSelectionTask
39from commondeps.dplAodReader import DplAodReader
40
41from extramodules.dqLibGetter import DQLibGetter
42
43
44class TableMakerMC(object):
45
46 """
47 Class for Interface -> tableMakerMC.cxx Task -> Configurable, Process Functions
48
49 Args:
50 object (parser_args() object): tableMakerMC.cxx Interface
51 """
52
54 self, parserTableMakerMC = argparse.ArgumentParser(
55 formatter_class = argparse.ArgumentDefaultsHelpFormatter,
56 description = "Example Usage: ./runTableMakerMC.py <yourConfig.json> --arg value",
57 ), eventSelection = EventSelectionTask(), centralityTable = CentralityTable(), multiplicityTable = MultiplicityTable(),
58 tofEventTime = TofEventTime(), tofPidBeta = TofPidBeta(), tpcTofPidFull = TpcTofPidFull(), trackPropagation = TrackPropagation(),
59 trackSelection = TrackSelectionTask(), helperOptions = HelperOptions(), o2Converters = O2Converters(), dplAodReader = DplAodReader()
60 ):
61 super(TableMakerMC, self).__init__()
62 self.parserTableMakerMC = parserTableMakerMC
63 self.eventSelection = eventSelection
64 self.centralityTable = centralityTable
65 self.multiplicityTable = multiplicityTable
66 self.tofEventTime = tofEventTime
67 self.tofPidBeta = tofPidBeta
68 self.tpcTofPidFull = tpcTofPidFull
69 self.trackPropagation = trackPropagation
70 self.trackSelection = trackSelection
71 self.helperOptions = helperOptions
72 self.o2Converters = o2Converters
73 self.dplAodReader = dplAodReader
74 self.parserTableMakerMC.register("action", "none", NoAction)
75 self.parserTableMakerMC.register("action", "store_choice", ChoicesAction)
76
77 def addArguments(self):
78 """
79 This function allows to add arguments for parser_args() function
80 """
81
82 # Predefined Selections
83 tableMakerProcessSelections = {
84 "Full": "Build full DQ skimmed data model, w/o centrality",
85 "FullWithCov": "Build full DQ skimmed data model, w/ track and fwdtrack covariance tables",
86 "BarrelOnly": "Build barrel-only DQ skimmed data model, w/o centrality",
87 "BarrelOnlyWithCov": "Build barrel-only DQ skimmed data model, w/ track cov matrix",
88 "BarrelOnlyWithCent": "Build barrel-only DQ skimmed data model, w/ centrality",
89 "MuonOnlyWithCov": "Build muon-only DQ skimmed data model, w/ muon cov matrix",
90 "MuonOnlyWithCent": "Build muon-only DQ skimmed data model, w/ centrality",
91 "OnlyBCs": "Analyze the BCs to store sampled lumi",
92 }
93 tableMakerProcessSelectionsList = []
94 for k, v in tableMakerProcessSelections.items():
95 tableMakerProcessSelectionsList.append(k)
96
97 booleanSelections = ["true", "false"]
98
99 # init for get DQ libraries
100 allAnalysisCuts, allMCSignals, allSels, allMixing = DQLibGetter.getAnalysisSelections(self)
101
102 # Interface
103 groupTableMakerConfigs = self.parserTableMakerMC.add_argument_group(title = "Data processor options: table-maker-m-c")
104 groupTableMakerConfigs.add_argument(
105 "--cfgEventCuts", help = "Space separated list of event cuts", nargs = "*", action = "store", type = str,
106 metavar = "CFGEVENTCUTS", choices = allAnalysisCuts,
107 ).completer = ChoicesCompleterList(allAnalysisCuts)
108 groupTableMakerConfigs.add_argument(
109 "--cfgBarrelTrackCuts", help = " Space separated list of barrel track cuts", nargs = "*", action = "store", type = str,
110 metavar = "CFGBARRELTRACKCUTS", choices = allAnalysisCuts,
111 ).completer = ChoicesCompleterList(allAnalysisCuts)
112 groupTableMakerConfigs.add_argument(
113 "--cfgMuonCuts", help = "Space separated list of muon cuts in table-maker", action = "store", nargs = "*", type = str,
114 metavar = "CFGMUONCUTS", choices = allAnalysisCuts,
115 ).completer = ChoicesCompleterList(allAnalysisCuts)
116 groupTableMakerConfigs.add_argument("--cfgBarrelLowPt", help = "Low pt cut for tracks in the barrel", action = "store", type = str)
117 groupTableMakerConfigs.add_argument("--cfgMuonLowPt", help = "Low pt cut for muons", action = "store", type = str)
118 groupTableMakerConfigs.add_argument(
119 "--cfgNoQA", help = "If true, no QA histograms", action = "store", type = str.lower, choices = booleanSelections,
120 ).completer = ChoicesCompleter(booleanSelections)
121 groupTableMakerConfigs.add_argument(
122 "--cfgDetailedQA", help = "If true, include more QA histograms (BeforeCuts classes and more)", action = "store",
123 type = str.lower, choices = booleanSelections,
124 ).completer = ChoicesCompleter(booleanSelections)
125 # groupTableMakerConfigs.add_argument("--cfgIsRun2", help="Run selection true or false", action="store", choices=["true","false"], type=str) # no need
126 groupTableMakerConfigs.add_argument("--cfgMinTpcSignal", help = "Minimum TPC signal", action = "store", type = str)
127 groupTableMakerConfigs.add_argument("--cfgMaxTpcSignal", help = "Maximum TPC signal", action = "store", type = str)
128 groupTableMakerConfigs.add_argument(
129 "--cfgMCsignals", help = "Space separated list of MC signals", action = "store", nargs = "*", type = str,
130 metavar = "CFGMCSIGNALS", choices = allMCSignals,
131 ).completer = ChoicesCompleterList(allMCSignals)
132
133 groupProcessTableMaker = self.parserTableMakerMC.add_argument_group(title = "Data processor options: table-maker-m-c")
134 groupProcessTableMaker.add_argument(
135 "--process", help = "Process Selection options for tableMaker/tableMakerMC Data Processing and Skimming", action = "store",
136 type = str, nargs = "*", metavar = "PROCESS", choices = tableMakerProcessSelectionsList,
137 ).completer = ChoicesCompleterList(tableMakerProcessSelectionsList)
138 for key, value in tableMakerProcessSelections.items():
139 groupProcessTableMaker.add_argument(key, help = value, action = "none")
140
141 # Core Part
142 groupCoreSelections = self.parserTableMakerMC.add_argument_group(title = "Core configurations that must be configured")
143 groupCoreSelections.add_argument("-runMC", help = "Run over MC", action = "store_true", default = True)
144
145 def parseArgs(self):
146 """
147 This function allows to save the obtained arguments to the parser_args() function
148
149 Returns:
150 Namespace: returns parse_args()
151 """
152 argcomplete.autocomplete(self.parserTableMakerMC, always_complete_options = False)
153 return self.parserTableMakerMC.parse_args()
154
155 def mergeArgs(self):
156 """
157 This function allows to merge parser_args argument information from different classes
158 """
159
160 self.eventSelection.parserEventSelectionTask = self.parserTableMakerMC
162
163 self.centralityTable.parserCentralityTable = self.parserTableMakerMC
165
166 self.multiplicityTable.parserMultiplicityTable = self.parserTableMakerMC
168
169 self.tofEventTime.parserTofEventTime = self.parserTableMakerMC
171
172 self.tofPidBeta.parserTofPidBeta = self.parserTableMakerMC
174
175 self.tpcTofPidFull.parserTpcTofPidFull = self.parserTableMakerMC
177
178 self.trackPropagation.parserTrackPropagation = self.parserTableMakerMC
180
181 self.trackSelection.parserTrackSelectionTask = self.parserTableMakerMC
183
184 self.helperOptions.parserHelperOptions = self.parserTableMakerMC
186
187 # self.o2Converters.parserO2Converters = self.parserTableMakerMC
188 # self.o2Converters.addArguments()
189
190 self.dplAodReader.parserDplAodReader = self.parserTableMakerMC
192
193 self.addArguments()
def __init__(self, parserTableMakerMC=argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Example Usage: ./runTableMakerMC.py <yourConfig.json> --arg value",), eventSelection=EventSelectionTask(), centralityTable=CentralityTable(), multiplicityTable=MultiplicityTable(), tofEventTime=TofEventTime(), tofPidBeta=TofPidBeta(), tpcTofPidFull=TpcTofPidFull(), trackPropagation=TrackPropagation(), trackSelection=TrackSelectionTask(), helperOptions=HelperOptions(), o2Converters=O2Converters(), dplAodReader=DplAodReader())
Definition: tableMakerMC.py:60