Preheat the oven to 200°C. Bring a large saucepan of lightly salted water to the boil. Add the macaroni and cook, uncovered, at a rolling boil for about 12 minutes, or as directed on the packet.
Meanwhile, melt the butter in a saucepan, stir in the flour and cook on low heat for 1 minute. Gradually stir in the milk, or the milk and cream. Bring to the boil over medium heat, stirring continuously until the mixture thickens. Remove the pan from the heat and season the sauce to taste with mustard powder, salt and cayenne pepper. Add the Cheddar and Gruyère cheeses to the sauce and stir until the cheeses have melted.
Drain the macaroni well, then mix into the sauce and pour into a large, shallow ovenproof dish. Sprinkle the Parmesan cheese on top and cook in the centre of the oven for 35 minutes, or until the top is golden and bubbling.
Arrange the tomato slices on top and return to the oven for 5 minutes. Garnish with celery leaves and serve with a celery, walnut and watercress salad.