O2-DQ User Interface 1.0.0
Loading...
Searching...
No Matches
dqFlow.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/dqFlow.cxx
20
21import argparse
22import os
23import re
24from urllib.request import Request, urlopen
25import ssl
26import argcomplete
27
28from argcomplete.completers import ChoicesCompleter
29from extramodules.choicesCompleterList import ChoicesCompleterList
30from extramodules.actionHandler import NoAction
31from extramodules.actionHandler import ChoicesAction
32from extramodules.dqLibGetter import DQLibGetter
33from extramodules.helperOptions import HelperOptions
34from extramodules.converters import O2Converters
35
36from commondeps.centralityTable import CentralityTable
37from commondeps.eventSelection import EventSelectionTask
38from commondeps.multiplicityTable import MultiplicityTable
39from commondeps.pidTOFBase import TofEventTime
40from commondeps.pidTOFBeta import TofPidBeta
41from commondeps.pidTPCTOFFull import TpcTofPidFull
42from commondeps.trackPropagation import TrackPropagation
43from commondeps.trackselection import TrackSelectionTask
44from commondeps.dplAodReader import DplAodReader
45
46
47class AnalysisQvector(object):
48
49 """
50 Class for Interface -> dqFlow.cxx Task -> Configurable, Process Functions
51
52 Args:
53 object (parser_args() object): dqFlow.cxx Interface
54 """
55
57 self, parserAnalysisQvector = argparse.ArgumentParser(
58 formatter_class = argparse.ArgumentDefaultsHelpFormatter,
59 description = "Example Usage: ./runDQFlow.py <yourConfig.json> --arg value "
60 ), eventSelection = EventSelectionTask(), centralityTable = CentralityTable(), multiplicityTable = MultiplicityTable(),
61 tofEventTime = TofEventTime(), tofPidBeta = TofPidBeta(), tpcTofPidFull = TpcTofPidFull(), trackPropagation = TrackPropagation(),
62 trackSelection = TrackSelectionTask(), helperOptions = HelperOptions(), o2Converters = O2Converters(), dplAodReader = DplAodReader()
63 ):
64 super(AnalysisQvector, self).__init__()
65 self.parserAnalysisQvector = parserAnalysisQvector
66 self.eventSelection = eventSelection
67 self.centralityTable = centralityTable
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.parserAnalysisQvector.register("action", "none", NoAction)
78 self.parserAnalysisQvector.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 booleanSelections = ["true", "false"]
87
88 # init for get DQ libraries
89 allAnalysisCuts, allMCSignals, allSels, allMixing = DQLibGetter.getAnalysisSelections(self)
90
91 # Interface
92 groupAnalysisQvector = self.parserAnalysisQvector.add_argument_group(title = "Data processor options: analysis-qvector")
93 groupAnalysisQvector.add_argument(
94 "--cfgBarrelTrackCuts", help = "Space separated list of barrel track cuts", choices = allAnalysisCuts, nargs = "*",
95 action = "store", type = str, metavar = "CFGBARRELTRACKCUTS",
96 ).completer = ChoicesCompleterList(allAnalysisCuts)
97 groupAnalysisQvector.add_argument(
98 "--cfgMuonCuts", help = "Space separated list of muon cuts", action = "store", choices = allAnalysisCuts, nargs = "*",
99 type = str, metavar = "CFGMUONCUTS",
100 ).completer = ChoicesCompleterList(allAnalysisCuts)
101 groupAnalysisQvector.add_argument(
102 "--cfgEventCuts", help = "Space separated list of event cuts", choices = allAnalysisCuts, nargs = "*", action = "store",
103 type = str, metavar = "CFGEVENTCUT",
104 ).completer = ChoicesCompleterList(allAnalysisCuts)
105 groupAnalysisQvector.add_argument(
106 "--cfgWithQA", help = "If true, fill QA histograms", action = "store", type = str.lower, choices = booleanSelections,
107 ).completer = ChoicesCompleter(booleanSelections)
108 groupAnalysisQvector.add_argument(
109 "--cfgCutPtMin", help = "Minimal pT for tracks", action = "store", type = str, metavar = "CFGCUTPTMIN",
110 )
111 groupAnalysisQvector.add_argument(
112 "--cfgCutPtMax", help = "Maximal pT for tracks", action = "store", type = str, metavar = "CFGCUTPTMAX",
113 )
114 groupAnalysisQvector.add_argument(
115 "--cfgCutEta", help = "Eta range for tracks", action = "store", type = str, metavar = "CFGCUTETA",
116 )
117 groupAnalysisQvector.add_argument(
118 "--cfgEtaLimit", help = "Eta gap separation, only if using subEvents", action = "store", type = str, metavar = "CFGETALIMIT",
119 )
120 groupAnalysisQvector.add_argument(
121 "--cfgNPow", help = "Power of weights for Q vector", action = "store", type = str, metavar = "CFGNPOW",
122 )
123 groupAnalysisQvector.add_argument("--cfgEfficiency", help = "CCDB path to efficiency object", action = "store", type = str)
124 groupAnalysisQvector.add_argument("--cfgAcceptance", help = "CCDB path to acceptance object", action = "store", type = str)
125
126 def parseArgs(self):
127 """
128 This function allows to save the obtained arguments to the parser_args() function
129
130 Returns:
131 Namespace: returns parse_args()
132 """
133 argcomplete.autocomplete(self.parserAnalysisQvector, always_complete_options = False)
134 return self.parserAnalysisQvector.parse_args()
135
136 def mergeArgs(self):
137 """
138 This function allows to merge parser_args argument information from different classes
139 """
140
141 self.eventSelection.parserEventSelectionTask = self.parserAnalysisQvector
143
144 self.centralityTable.parserCentralityTable = self.parserAnalysisQvector
146
147 self.multiplicityTable.parserMultiplicityTable = self.parserAnalysisQvector
149
150 self.tofEventTime.parserTofEventTime = self.parserAnalysisQvector
152
153 self.tofPidBeta.parserTofPidBeta = self.parserAnalysisQvector
155
156 self.tpcTofPidFull.parserTpcTofPidFull = self.parserAnalysisQvector
158
159 self.trackPropagation.parserTrackPropagation = self.parserAnalysisQvector
161
162 self.trackSelection.parserTrackSelectionTask = self.parserAnalysisQvector
164
165 self.helperOptions.parserHelperOptions = self.parserAnalysisQvector
167
168 # self.o2Converters.parserO2Converters = self.parserAnalysisQvector
169 # self.o2Converters.addArguments()
170
171 self.dplAodReader.parserDplAodReader = self.parserAnalysisQvector
173
174 self.addArguments()
def parseArgs(self)
Definition: dqFlow.py:126
def addArguments(self)
Definition: dqFlow.py:80
def mergeArgs(self)
Definition: dqFlow.py:136
def __init__(self, parserAnalysisQvector=argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Example Usage: ./runDQFlow.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: dqFlow.py:63