Extract all previously selected events from the input file and write it to the output. 
  257   bool     new_output = 
false;
 
  258   TBranch *br_in, *br_out;
 
  274     ::printf( 
"+++ Copy refs table to new output file:%s\n", 
m_out->GetName() );
 
  275     br_in = 
m_ref_in->GetBranch( 
"Databases" );
 
  276     br_in->SetAddress( text );
 
  277     br_out = 
m_ref_out->GetBranch( 
"Databases" );
 
  278     br_out->SetAddress( text );
 
  279     for ( 
int i = 0; i < br_in->GetEntries(); ++i ) {
 
  280       br_in->GetEntry( i );
 
  285     br_in = 
m_ref_in->GetBranch( 
"Containers" );
 
  286     br_in->SetAddress( text );
 
  287     br_out = 
m_ref_out->GetBranch( 
"Containers" );
 
  288     br_out->SetAddress( text );
 
  289     for ( 
int i = 0; i < br_in->GetEntries(); ++i ) {
 
  290       br_in->GetEntry( i );
 
  294     br_in = 
m_ref_in->GetBranch( 
"Links" );
 
  295     br_in->SetAddress( text );
 
  296     br_out = 
m_ref_out->GetBranch( 
"Links" );
 
  297     br_out->SetAddress( text );
 
  298     for ( 
int i = 0; i < br_in->GetEntries(); ++i ) {
 
  299       br_in->GetEntry( i );
 
  303     br_in = 
m_ref_in->GetBranch( 
"Params" );
 
  304     br_in->SetAddress( text );
 
  305     br_out = 
m_ref_out->GetBranch( 
"Params" );
 
  306     br_out->SetAddress( text );
 
  307     for ( 
int i = 0; i < br_in->GetEntries(); ++i ) {
 
  308       br_in->GetEntry( i );
 
  309       if ( 
strncmp( text, 
"PFN=", 4 ) == 0 ) { 
 
  310         ::snprintf( text, 
sizeof( text ), 
"PFN=%s", br_out->GetFile()->GetName() );
 
  311         ::printf( 
"+++ PFN of the created output file is:%s\n", text );
 
  312       } 
else if ( 
strncmp( text, 
"FID=", 4 ) == 0 ) { 
 
  313         static const char* 
fmt = 
"FID=%08lX-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX";
 
  315           unsigned char  buf[16];
 
  316           unsigned short sbuf[8];
 
  317           unsigned int   ibuf[4];
 
  320         uuid.GetUUID( d.buf );
 
  321         ::snprintf( text, 
sizeof( text ), 
fmt, d.ibuf[0], d.sbuf[2], d.sbuf[3], d.buf[8], d.buf[9], d.buf[10],
 
  322                     d.buf[11], d.buf[12], d.buf[13], d.buf[14], d.buf[15] );
 
  323         ::printf( 
"+++ FID of the created output file is:%s\n", text );
 
  331   while ( ( br_in = (TBranch*)
next() ) ) {
 
  332     TString 
name     = br_in->GetName();
 
  333     TClass* br_class = gROOT->GetClass( br_in->GetClassName(), kTRUE );
 
  336       ::printf( 
"+++ ERROR: Input and output event trees are incompatible. Selection not possible.\n" );
 
  339     int out_num_entries = br_out->GetEntries();
 
  342       const char* br_type = 
"DataObject";
 
  343       void*       pObject = br_class->New();
 
  344       br_in->SetAddress( &pObject );
 
  345       br_out->SetAddress( &pObject );
 
  346       int num_rd = br_in->GetEntry( num_evt );
 
  348         ::printf( 
"+++ ERROR: Failed to read data from branch:%s\n", 
name.Data() );
 
  351       if ( 
name.EndsWith( 
"_R." ) ) {
 
  353         for ( 
auto& ir : refs->
refs ) {
 
  359       int num_wr = br_out->Fill();
 
  361         ::printf( 
"+++ ERROR: Failed to write data to extraction branch:%s " 
  362                   "read:%d wrote:%d bytes [Length-mismatch]\n",
 
  363                   name.Data(), num_rd, num_wr );
 
  366       ::printf( 
"+++ Copied %8d bytes to %-10s branch %s(%d)\n", num_rd, br_type, 
name.Data(), out_num_entries );
 
  369     m_evt_out->SetEntries( br_out->GetEntries() + 1 );