O2-DQ User Interface 1.0.0
Loading...
Searching...
No Matches
filterPP.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/Tasks/filterPP.cxx
20
21import argparse
22import os
23import re
24from urllib.request import Request, urlopen
25import ssl
26
27from argcomplete.completers import ChoicesCompleter
28import argcomplete
29from extramodules.choicesCompleterList import ChoicesCompleterList
30
31from extramodules.actionHandler import NoAction
32from extramodules.actionHandler import ChoicesAction
33from extramodules.helperOptions import HelperOptions
34from extramodules.converters import O2Converters
35
36from commondeps.eventSelection import EventSelectionTask
37from commondeps.multiplicityTable import MultiplicityTable
38from commondeps.pidTOFBase import TofEventTime
39from commondeps.pidTOFBeta import TofPidBeta
40from commondeps.pidTPCTOFFull import TpcTofPidFull
41from commondeps.trackPropagation import TrackPropagation
42from commondeps.trackselection import TrackSelectionTask
43from commondeps.dplAodReader import DplAodReader
44
45from extramodules.dqLibGetter import DQLibGetter
46
47
48class DQFilterPPTask(object):
49
50 """
51 Class for Interface -> filterPP.cxx Task -> Configurable, Process Functions
52
53 Args:
54 object (parser_args() object): filterPP.cxx Interface
55 """
56
58 self, parserDQFilterPPTask = argparse.ArgumentParser(
59 formatter_class = argparse.ArgumentDefaultsHelpFormatter,
60 description = "Example Usage: ./runFilterPP.py <yourConfig.json> --arg value",
61 ), eventSelection = EventSelectionTask(), multiplicityTable = MultiplicityTable(), tofEventTime = TofEventTime(),
62 tofPidBeta = TofPidBeta(), tpcTofPidFull = TpcTofPidFull(), trackPropagation = TrackPropagation(),
63 trackSelection = TrackSelectionTask(), helperOptions = HelperOptions(), o2Converters = O2Converters(), dplAodReader = DplAodReader()
64 ):
65 super(DQFilterPPTask, self).__init__()
66 self.parserDQFilterPPTask = parserDQFilterPPTask
67 self.eventSelection = eventSelection
68 self.multiplicityTable = multiplicityTable
69 self.tofEventTime = tofEventTime
70 self.tofPidBeta = tofPidBeta
71 self.tpcTofPidFull = tpcTofPidFull
72 self.trackPropagation = trackPropagation
73 self.trackSelection = trackSelection
74 self.helperOptions = helperOptions
75 self.o2Converters = o2Converters
76 self.dplAodReader = dplAodReader
77 self.parserDQFilterPPTask.register("action", "none", NoAction)
78 self.parserDQFilterPPTask.register("action", "store_choice", ChoicesAction)
79
80 def addArguments(self):
81 """
82 This function allows to add arguments for parser_args() function
83 """
84
85 # Predefined Selections
86 dqSelections = {
87 "eventSelection": "Run DQ event selection",
88 "barrelTrackSelection": "Run DQ barrel track selection",
89 "muonSelection": "Run DQ muon selection",
90 "barrelTrackSelectionTiny": "Run DQ barrel track selection tiny",
91 "filterPPSelectionTiny": "Run filter task tiny",
92 }
93 dqSelectionsList = []
94 for k, v in dqSelections.items():
95 dqSelectionsList.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
104 # DQ Task Selections
105 groupProcessFilterPP = self.parserDQFilterPPTask.add_argument_group(
106 title = "Data processor options: d-q-filter-p-p-task, d-q-event-selection-task, d-q-barrel-track-selection, d-q-muons-selection "
107 )
108 groupProcessFilterPP.add_argument(
109 "--process", help = "DQ Tasks process Selections options", action = "store", type = str, nargs = "*", metavar = "PROCESS",
110 choices = dqSelectionsList,
111 ).completer = ChoicesCompleterList(dqSelectionsList)
112
113 for key, value in dqSelections.items():
114 groupProcessFilterPP.add_argument(key, help = value, action = "none")
115
116 # d-q-filter-p-p-task
117 groupDQFilterPP = self.parserDQFilterPPTask.add_argument_group(title = "Data processor options: d-q-filter-p-p-task")
118 groupDQFilterPP.add_argument(
119 "--cfgBarrelSels",
120 help = "Configure Barrel Selection <track-cut>:[<pair-cut>]:<n>,[<track-cut>:[<pair-cut>]:<n>],... | example jpsiO2MCdebugCuts2::1 ",
121 action = "store", type = str, nargs = "*", metavar = "CFGBARRELSELS", choices = allSels,
122 ).completer = ChoicesCompleterList(allSels)
123 groupDQFilterPP.add_argument(
124 "--cfgMuonSels", help = "Configure Muon Selection <muon-cut>:[<pair-cut>]:<n> example muonQualityCuts:pairNoCut:1",
125 action = "store", type = str, nargs = "*", metavar = "CFGMUONSELS", choices = allSels,
126 ).completer = ChoicesCompleterList(allSels)
127
128 # d-q-event-selection-task
129 groupDQEventSelection = self.parserDQFilterPPTask.add_argument_group(title = "Data processor options: d-q-event-selection-task")
130 groupDQEventSelection.add_argument(
131 "--cfgEventCuts", help = "Space separated list of event cuts", nargs = "*", action = "store", type = str,
132 metavar = "CFGEVENTCUTS", choices = allAnalysisCuts,
133 ).completer = ChoicesCompleterList(allAnalysisCuts)
134
135 # d-q-barrel-track-selection
136 groupDQBarrelTrackSelection = self.parserDQFilterPPTask.add_argument_group(
137 title = "Data processor options: d-q-barrel-track-selection"
138 )
139 groupDQBarrelTrackSelection.add_argument(
140 "--cfgBarrelTrackCuts", help = "Space separated list of barrel track cuts", nargs = "*", action = "store", type = str,
141 metavar = "CFGBARRELTRACKCUTS", choices = allAnalysisCuts,
142 ).completer = ChoicesCompleterList(allAnalysisCuts)
143
144 # d-q-muons-selection
145 groupDQMuonsSelection = self.parserDQFilterPPTask.add_argument_group(title = "Data processor options: d-q-muons-selection")
146 groupDQMuonsSelection.add_argument(
147 "--cfgMuonsCuts", help = "Space separated list of muon cuts in d-q muons selection", action = "store", nargs = "*", type = str,
148 metavar = "CFGMUONSCUT", choices = allAnalysisCuts,
149 ).completer = ChoicesCompleterList(allAnalysisCuts)
150
151 # all d-q tasks and selections
152 groupQASelections = self.parserDQFilterPPTask.add_argument_group(
153 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"
154 )
155 groupQASelections.add_argument(
156 "--cfgWithQA", help = "If true, fill QA histograms", action = "store", type = str.lower, choices = (booleanSelections),
157 ).completer = ChoicesCompleter(booleanSelections)
158
159 def parseArgs(self):
160 """
161 This function allows to save the obtained arguments to the parser_args() function
162
163 Returns:
164 Namespace: returns parse_args()
165 """
166 argcomplete.autocomplete(self.parserDQFilterPPTask, always_complete_options = False)
167 return self.parserDQFilterPPTask.parse_args()
168
169 def mergeArgs(self):
170 """
171 This function allows to merge parser_args argument information from different classes
172 """
173
174 self.eventSelection.parserEventSelectionTask = self.parserDQFilterPPTask
176
177 self.multiplicityTable.parserMultiplicityTable = self.parserDQFilterPPTask
179
180 self.tofEventTime.parserTofEventTime = self.parserDQFilterPPTask
182
183 self.tofPidBeta.parserTofPidBeta = self.parserDQFilterPPTask
185
186 self.tpcTofPidFull.parserTpcTofPidFull = self.parserDQFilterPPTask
188
189 self.trackPropagation.parserTrackPropagation = self.parserDQFilterPPTask
191
192 self.trackSelection.parserTrackSelectionTask = self.parserDQFilterPPTask
194
195 self.helperOptions.parserHelperOptions = self.parserDQFilterPPTask
197
198 # self.o2Converters.parserO2Converters = self.parserDQFilterPPTask
199 # self.o2Converters.addArguments()
200
201 self.dplAodReader.parserDplAodReader = self.parserDQFilterPPTask
203
204 self.addArguments()
def addArguments(self)
Definition: filterPP.py:80
def __init__(self, parserDQFilterPPTask=argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Example Usage: ./runFilterPP.py <yourConfig.json> --arg value",), eventSelection=EventSelectionTask(), multiplicityTable=MultiplicityTable(), tofEventTime=TofEventTime(), tofPidBeta=TofPidBeta(), tpcTofPidFull=TpcTofPidFull(), trackPropagation=TrackPropagation(), trackSelection=TrackSelectionTask(), helperOptions=HelperOptions(), o2Converters=O2Converters(), dplAodReader=DplAodReader())
Definition: filterPP.py:64