[docs]defget_column_list(self,file):column_read_method=self.config.get('processor.columns.method',None)ifnotcolumn_read_method:raiseValueError("processor.columns.method must be specified!")tree=self.open_nanoaod(file)ifcolumn_read_method=='collections':collections_to_read=self.config.get('processor.columns.values',[])# All columns from given collectionsmissing_collections=[collectionforcollectionincollections_to_readifnotany(column.startswith(collection)forcolumnintree.keys())]ifmissing_collections:raiseValueError(f"Missing collections: {', '.join(missing_collections)}")self.columns=[columnforcolumnintree.keys()ifany(column.startswith(collection)forcollectionincollections_to_read)]elifcolumn_read_method=='column_list':columns_to_read=self.config.get('processor.columns.values',[])# Explicitly specified columnsmissing_columns=[cforcincolumns_to_readifcnotintree.keys()]ifmissing_columns:raiseValueError(f"Error reading columns: {', '.join(missing_columns)}")self.columns=columns_to_read# elif isinstance(columns_to_read, int):elifcolumn_read_method=='n_columns':n_columns_to_read=self.config.get('processor.columns.values',0)# Number of columns to readifn_columns_to_read<0:raiseValueError("Number of columns can't be negative.")self.columns=list(tree.keys())[:n_columns_to_read]iflen(self.columns)<n_columns_to_read:print(f"Trying to read {n_columns_to_read} columns, but only {len(self.columns)} present in file -> will read all of them.")else:raiseValueError(f"Invalid value of processor.columns.method parameter: {column_read_method}")
[docs]defrun_worker_operation(self):timeout=self.config.get('processor.worker_operation_time',0)iftimeout==0:return# compute pi until timeoutstart_time=time.time()pi=k=0whileTrue:pi+=(4.0*(-1)**k)/(2*k+1)k+=1iftime.time()-start_time>timeout:return