248 brInfo.auxid = auxid;
249 brInfo.attribName =
r.getName(auxid);
259 if (
r.inputRename (
m_key, brInfo.attribName) != brInfo.attribName) {
266 brInfo.branch =
it->second;
270 brInfo.branch =
m_tree->GetBranch( aux_branch_name.c_str() );
274 if( !brInfo.branch ) {
278 if( brInfo.branch->GetExpectedType( brInfo.tclass, brInfo.edtyp) ) {
280 throw string(
"Error getting branch type for ") + brInfo.branch->GetName();
283 if( !
store.standalone() )
284 if( brInfo.tclass && strncmp( brInfo.tclass->GetName(),
"SG::PackedContainer<", 20) == 0)
285 brInfo.isPackedContainer =
true;
287 string elem_tname, branch_tname;
289 const std::type_info* ti = getAuxElementType( brInfo.tclass, brInfo.edtyp,
store.standalone(),
290 elem_tname, branch_tname );
291 const std::type_info* reg_ti =
r.getType(auxid);
293 const std::type_info *io_tinf =
store.getIOType(auxid);
294 const std::type_info *tcls_tinf = brInfo.tclass ? brInfo.tclass->GetTypeInfo() : ti;
298 throw string(
"Error getting IO type for AUX branch ") + brInfo.branch->GetName();
302 brInfo.needsSE = brInfo.tclass ?
303 io_tinf != tcls_tinf && (!tcls_tinf || strcmp(io_tinf->name(), tcls_tinf->name()) != 0)
304 : ti && ti != reg_ti && strcmp(ti->name(), reg_ti->name()) != 0;
305 if( brInfo.needsSE ) {
309 msg <<
"attribute '" << brInfo.attribName <<
"' (id=" << auxid
311 <<
") has different type than the branch: " << branch_tname;
312 msg <<
" Marking for schema evolution.";
314 brInfo.SE_tclass = TClass::GetClass(*io_tinf);
315 brInfo.SE_edt = kOther_t;
316 if( !brInfo.SE_tclass ) {
317 brInfo.SE_edt = TDataType::GetType(*io_tinf);
318 if( brInfo.SE_edt <=0 ) {
320 throw string(
"Error getting ROOT type for AUX branch ") + brInfo.branch->GetName()
321 +
" typeinfo=" + io_tinf->name();