let rec add_pdg_selection to_select pdg sel_mark = match to_select with
  | [] -> 
      let l = match sel_mark with None -> [] | Some m -> [m] in [(pdg, l)]
  | (p, ln) :: tl ->
      if Db.Pdg.from_same_fun p pdg 
      then 
        let ln = match sel_mark with None -> ln 
          | Some sel_mark -> sel_mark::ln 
        in (p, ln)::tl
      else (p, ln)::(add_pdg_selection tl pdg sel_mark)