56 def makeAlgs (self, config) :
57
58
59 if self.runGRL and (config.dataType() is DataType.Data or self.useRandomRunNumber):
60 if config.dataType() is DataType.Data and self.useRandomRunNumber:
61 raise ValueError ("UseRandomRunNumber is only supported for MC!")
62
63 if self.noFilter:
64
65
66 if not self.GRLDict:
67 raise ValueError ("No GRLDict specified for GRL decoration, please specify a GRLDict")
68
69 for GRLDecoratorName, GRLFileList in self.GRLDict.items():
70 if isinstance(GRLFileList, str):
71 GRLFileList = [GRLFileList]
72
73 alg = config.createAlgorithm("GRLSelectorAlg", GRLDecoratorName)
74 config.addPrivateTool("Tool", "GoodRunsListSelectionTool")
75 alg.Tool.UseRandomRunNumber = self.useRandomRunNumber
76 alg.Tool.GoodRunsListVec = GRLFileList
77 alg.noFilter = True
78 alg.grlKey = f"EventInfo.{GRLDecoratorName}"
79
80 config.addOutputVar("EventInfo", GRLDecoratorName, GRLDecoratorName, noSys=True)
81 else:
82
83 alg = config.createAlgorithm( 'GRLSelectorAlg', 'GRLSelectorAlg' )
84 config.addPrivateTool( 'Tool', 'GoodRunsListSelectionTool' )
85 alg.Tool.UseRandomRunNumber = self.useRandomRunNumber
86 if self.userGRLFiles:
87 alg.Tool.GoodRunsListVec = self.userGRLFiles
88 else:
89 alg.Tool.GoodRunsListVec = self.getDefaultGRLs( config.dataYear() )
90
91
92 if self.runPrimaryVertexSelection:
93 alg = config.createAlgorithm( 'CP::VertexSelectionAlg',
94 'PrimaryVertexSelectorAlg',
95 reentrant=True )
96 alg.VertexContainer = 'PrimaryVertices'
97 alg.MinVertices = 1
98 alg.MinTracks = self.minTracksPerVertex
99
100
101 if self.runEventCleaning:
102 if config.dataType() is DataType.Data:
103 alg = config.createAlgorithm( 'CP::EventStatusSelectionAlg', 'EventStatusSelectionAlg' )
104 alg.FilterKey = 'EventErrorState'
105 alg.FilterDescription = 'selecting events without any error state set'
106
107 alg = config.createAlgorithm( 'CP::EventFlagSelectionAlg', 'EventFlagSelectionAlg' )
108 alg.FilterKey = 'JetCleaning'
109 alg.selectionFlags = [f'{sel},as_char' for sel in self.selectionFlags]
110 alg.invertFlags = self.invertFlags
111 alg.FilterDescription = f"selecting events passing: {','.join(alg.selectionFlags)}"
112
113
114