code: def _apply_mask(self,p,mat):
          
          mask = p.mask
          ms=p.mask_shape
          if ms is not None:
              mask = ms(x=p.x+p.size*(ms.x*np.cos(p.orientation)-ms.y*np.sin(p.orientation)),
                        y=p.y+p.size*(ms.x*np.sin(p.orientation)+ms.y*np.cos(p.orientation)),
                        orientation=ms.orientation+p.orientation,size=ms.size*p.size,
                        bounds=p.bounds,ydensity=p.ydensity,xdensity=p.xdensity)
          if mask is not None:
              mat*=mask
docs: Create (if necessary) and apply the mask to the given matrix mat.