Looking around the web, this seems like it should be the way to do it. The arrow appears to disappear behind the TF1, since it will show up when I don’t draw the TF1. No amount of updating the canvas, changing the order of drawing or adding the “same” keyword appears to make a difference.
If you change the arrow coordinates in your example to something that will fit on-screen with your TF1, you can see the arrow: ar1->DrawArrow(0,200,0,0.4e-6,0.05,"|>")
your arrow is outside of your histogram. Your histogram spans -800 < x < 800 and 0 < y < 0.7e-6. And you try to draw the arrow at around x=0.4, y=0.4. Try changing the arrow ctor to something like
TArrow *ar1 = new TArrow(100, 0.1e-6, 200, 0.3e-6, 0.05, "|>");