1

.rootマージする必要のあるファイルが3つあります。通常haddはファイルをマージするために使用しますが、ファイルに重複するエントリが含まれているため、削除する必要があります。TTreeは読み取り専用であるため、重複したエントリを削除することはできません。一意のエントリのみが保存されるようにしながら、ファイルをマージする簡単な方法はありますか?

4

1 に答える 1

1

を使用して、一意のエントリのみを含むヒストグラムを作成する方法を見つけることができましたTEntryList。これにより、使用するツリーエントリを指定できます。私の場合、各エントリには、それを識別するイベント番号があります。そこで、一意のイベント番号のみに対応するエントリ番号を使用してエントリリストを生成しました。

set<int> eventIds; // keep track of already seen event numbers
int EVENT;
int nEntries = tree->GetEntries();

tree->SetBranchAddress("EVENT",&EVENT); // grab the event number from the tree

TEntryList *tlist = new TEntryList(tree); // initialize entry list for 'TTree* tree'

// loop over the entries in 'tree'
for (int j = 0; j < nEntries; ++j)
{
    tree->GetEvent(j);

    // if we have not seen this event yet, add it to the set
    // and to the entry list
    if (eventIds.count(EVENT) == 0)
    {
        eventIds.insert(EVENT);
        tlist->Enter(j,tree);
    }
}

// apply the entry list to the tree
tree->SetEntryList(tlist);

// histogram of the variable 'var' will be drawn only with the
// entries specified by the entry list.
tree->Draw("var");
于 2012-08-23T07:24:51.297 に答える