Have you used python before? You could use a searchcursor to loop through the catchments. For each catchment you could then mask the raster and perform whatever calculations you needed. Sample code is below, you would just need to add the mask and calculations.import arcpy
shapefile = r"catchments" ##Folder path of your catchments
rows = arcpy.SearchCursor(shapefile, "", "", "FID")
# Iterate through the rows in the cursor
for row in rows:
in_select = shapefile ##Folder path of your catchments
out_select = r"outputfeature" ##Output for each catchment
where_clause = "\"FID\" = %d"% (row.FID)
arcpy.Select_analysis(in_select, out_select, where_clause) ##selects feature
###Mask and perform calculations
arcpy.Delete_management(out_select) ###Delete your catchment and start loop over