You are specifying the type of image and number of dimensions of the output image as the “template” parameters to ImageFileReader. Some times you need to get the Image information from the ImageIO, then determine what the pixel type and dimension should be. The imread method should do some of that for you.
I am more familiar with SimpleITK so out of curiosity, have you tried reading the image with SimpleITK? Does it read it as expected? What type do you get?
If you can use the utility tiffinfo on the file to print the tags and dictionary that would be helpful to understand the structure of the file.