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