void print_decay_channels(int pdgc)
{
  ostringstream pdg_table;
  pdg_table << gSystem->Getenv("GENIE") << "/data/pdg/genie_pdg_table.txt";

  TDatabasePDG * pdglib = TDatabasePDG::Instance();
  pdglib->ReadPDGTable(pdg_table.str().c_str());

  TParticlePDG * p = pdglib->GetParticle(pdgc);

  cout << " *** Printing-out decay channels for: " << p->GetName() << endl;

  double brtot=0;
  for(int j=0; j<p->NDecayChannels(); j++) {
        cout << "\t - decay channel id = " << j << ", channel = " << p->GetName() << " --> ";
	TDecayChannel * dch = p->DecayChannel(j);
        for(int k=0; k<dch->NDaughters(); k++) {
	   cout << pdglib->GetParticle(dch->DaughterPdgCode(k))->GetName();
	   if(k < dch->NDaughters() - 1) cout << " + ";
	}//k
	cout << ", BR = " << dch->BranchingRatio() << endl;
        brtot += dch->BranchingRatio();
  }//j

  cout << "Sum{BR} = " << brtot << endl;
}