ROOT と Python array の型の一覧

PyROOT から TTree の Branch を設定するときに混乱するので、まとめ。大文字と小文字が入れ替わっていて、ややこしい。

C type ROOT typedef ROOT TTree Python array NumPy FITS
signed char Char_t 'B' 'b' int8 A or S
unsigned char UChar_t 'b' 'B' uint8 B
signed short Short_t 'S' 'h' or 'i' int16 I
unsigned short UShort_t 's' 'H' or 'I' uint16 U
signed int (32 bit) Int_t 'I' (大文字のアイ) 'l' (小文字のエル) int32 J
unsigned int (32 bit) UInt_t 'i' 'L' uint32 V
signed int (64 bit) Long64_t 'L' N/A int64 K
unsigned int (64 bit) ULong64_t 'l'(小文字のエル) N/A uint64 N/A
float Float_t 'F' 'f' float32 E
double Double_t 'D' 'd' float64 D
boolean Bool_t 'O' N/A bool_ X

使うときはこういう感じで。

tree = ROOT.TTree("tree", "title")
arr = array.array("i", [0, 0])
tree.Branch("var1", arr, "var1/S")