This algorithm generates a realisation of the
  general Poisson cluster process, with the cluster mechanism
  given by the function rcluster.
First, the algorithm
  generates a Poisson point process of ``parent'' points 
  with intensity kappa in an expanded
  window as explained below.. Here kappa may be a single
  positive number, a function kappa(x, y), or a pixel image
  object of class "im" (see im.object).
  See rpoispp for details.
  
Second, each parent point is replaced by a random cluster of points,
  created by calling the function rcluster.  These clusters are
  combined together to yield a single point pattern, and the restriction
  of this pattern to the window win is then returned as the
  result of rPoissonCluster.
The expanded window consists of as.rectangle(win)
  extended by the amount expand in each direction. The size of
  the expansion is saved in the attribute "expand" and may be
  extracted by attr(X, "expand") where X is the generated
  point pattern.
The function rcluster should expect to be called as
  rcluster(xp[i],yp[i],…) for each parent point at a location
  (xp[i],yp[i]). The return value of rcluster
  should be a list with elements
  x,y which are vectors of equal length giving the absolute
  \(x\) and y coordinates of the points in the cluster.
If the return value of rcluster is a point pattern (object of
  class "ppp") then it may have marks. The result of
  rPoissonCluster will then be a marked point pattern.
If required, the intermediate stages of the simulation (the parents
  and the individual clusters) can also be extracted from
  the return value of rPoissonCluster
  through the attributes "parents" and "parentid".
  The attribute "parents" is the point pattern of parent points.
  The attribute "parentid" is an integer vector specifying
  the parent for each of the points in the simulated pattern.
  (If these data are not required, it is more efficient to
  set saveparents=FALSE.)