Cross coverage between transaction coverage and RAL coverage

In my environment, I have written coverage for transaction class fields. I want some of those coverpoint to cross with some of RAL coverage coverpoints. As they are different covergroup, I am not able to sample data and report shows 0% coverage for cross.

  // Coverage for transaction
  covergroup cg_trans(trans trans_inst);
    cp_a1 : trans_inst.a1;
  endgroup
  // Cross of transaction coverage and ral coverage
  covergroup cross_ral(cg_trans cg_trans_inst, ral_model ral_cov);
    cp_cross : cg_trans_inst.cp_a1, ral_cov.cg_vals.cp_var1;
  endgroup
  // Coverage class
  class trans_coverage extends uvm_componet;
    ral_model cov_ral;
    cg_trans cg_trans_inst;
    trans trans_inst;
    cross_ral cross_ral_inst

    function new(string name, uvm_componet parent=null);
      super.new(name,parent);
      trans_inst = new();
      // Getting ral through config db
      cg_trans_inst = new(trans_inst);
      cross_ral_inst = new(cg_trans_inst, cov_ral);
    endfunction 
  endclass

Can I do this way? How to sample data fpr cross_ral such that I can get coverage?

In reply to Nidhi12:
Unfortunately, the SystemVerilog standard provides no way of defining a cross between two covergroups. The sampling semantics between multiple covergroups would need to be coordinated.

The only workaround is to repeat the coverpoints within the covergroup that has the cross.