MakeClass and "::" characters in branch names

Dear ROOT experts,

I have a TTree with branch names such as:
trig_RoI_EF_e_Rec::TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID

(unfortunately this branch name is automatically generated and I cannot change the code that does that …)

When I run MakeClass for this TTree (with ROOT 5.26/00e), I get a class like the one that follows my message.
As you can see the “::” are substituted by “__” in some places, but not at the member variable declaration, where it is not allowed (in ANSI C++, at least).
So, when I try to compile this (with “.L BjetTree.C+”), I get thousands of errors …

It seems that the “::” is correctly substituted everywhere else, but the member variable declaration and at the first argument of SetBranchAddress call (where this is correct).
Is this a bug or am I missing something here?

Best regards,
Danilo


class BjetTree {
...
   vector<vector<int> > *trig_RoI_EF_e_Rec::TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID;
...
   TBranch        *b_trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID;   //!
...

void BjetTree::Init(TTree *tree)
{
...
trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID = 0;
...
   fChain->SetBranchAddress("trig_RoI_EF_e_Rec::TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID", &trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID, &b_trig_RoI_EF_e_Rec__TrackParticleContainer_HLT_InDetTrigParticleCreation_Electron_EFID);
...
}
...

HI Danielo,

Thanks for reporting this problem. It is fixed by revision 37409 of the trunk.

Cheers,
Philippe.