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