C++ 上では NULL な TObject の扱い

PyROOT だと C の NULL が扱えないので、NULL な TObject を返すような ROOT の関数 (TFile::Get など) では、混乱する時があります。自分は毎回ググってるような…。

例えばここなんかに丁寧に説明がありますが、自分用の忘備録として blog にも書いておきます。

>>> import ROOT
>>> f = ROOT.TFile("test.root", "recreate")
>>> obj = f.Get("test")
>>> type(obj)
<class 'ROOT.TObject'>
>>> obj
<ROOT.TObject object at 0x0>
>>> obj == None
True
>>> obj is None
False
>>> not obj
True

こんな感じで、NULL の替わりに None が来ると思って is None で調べちゃ駄目。でも == None で調べるのは OK。ややこしい。