Get physical volume in the detector construction from other class

Hello,
in my research group we have a simulation in which we define each detector, target, ecc as a class in a dedicated file. Then we return the logical volume of that detector and we call it in the detector construction to build the physical volume.
Some collegues from other group would use our simulation for their experimental setup. They gave me their detector construction but it is a big mess! Unfortunately, I don’t have time to rewrite the full experimental setup then I’ve to use it. I just splitted their detector construction in two files, one for the detectors and one for the target.
Now I’ve to set the sensitive detectors. In our reaction it’s very simple, because, as I said the detectors are defined in dedicated files and we return the logical volume. Then I create the physical volume and I simply get the sensitive detectors as:

G4String ClusterspddresdaSDname = "/ClusterspddresdaSD";
  ClusterspddresdaSD* AClusterspddresdaSD = new ClusterspddresdaSD(ClusterspddresdaSDname);
  SDman->AddNewDetector(AClusterspddresdaSD);
  GetSensitiveDetector(APhysicalVolume)->SetSensitiveDetector(AClusterspddresdaSD);  

On the contrary, in the geometry that I got from the other group (clustersdresda.cpp) they only have void function. Then I can’t return anything! The physical volumes are

int CrystalCopyNumber[maxNbOfClusters][maxNbOfCrystals]={{0},{1,2,3},{4,5,6},{7,8,9,10,11,12,13},{14,15,16,17,18,19,20},{21}};
	ActiveCrystal_physical[nbCluster][nbCrystal] = new G4PVPlacement(none,	// position in mother frame
										ActiveCrystal_logical[nbCluster][nbCrystal],		// its logical volume				  
										//"ActiveCrystal_phys"+nameCluster[nbCluster]+std::to_string(nbCrystal),	// its name
										"ActiveCrystal_phys",	// its name
										motherVolume,	// its mother  volume
										false,				// no boolean operations
										CrystalCopyNumber[nbCluster][nbCrystal]);					// copy number

and I should pass it to the detector construction. I tried to define the phyisical volume function

G4VPhysicalVolume* Clusterspddresda::GetActiveCrystalPhyis(G4int nbCluster, G4int nbCrystal, G4VPhysicalVolume* ActiveCrystal_physical)  
{
  

  //If not available at NIST, look for the local version of it
  ActiveCrystal_physicalReturn[nbCluster][nbCrystal] =  ActiveCrystal_physical[nbCluster][nbCrystal];
 
  return ActiveCrystal_physicalReturn;
}

to return the physical volume and get it in the detector construction, but I get error


Clusterspddresda.cc:318:90: error: no match for ‘operator[]’ (operand types are ‘G4VPhysicalVolume’ and ‘G4int’ {aka ‘int’})
  318 |   ActiveCrystal_physicalReturn[nbCluster][nbCrystal] =  ActiveCrystal_physical[nbCluster][nbCrystal];
      |                                                                                          ^
Clusterspddresda.cc:320:10: error: cannot convert ‘G4VPhysicalVolume* (*)[7]’ to ‘G4VPhysicalVolume*’ in return
  320 |   return ActiveCrystal_physicalReturn;
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |          |
      |          G4VPhysicalVolume* (*)[7]

How could I solve?

DetectorConstruction.cc (4.5 KB)
Clusterspddresda.hh (8.0 KB)
Clusterspddresda.cc (97.0 KB)