Problem with LayerMasks

Hi,

I am having some problems working with Layermasks.
I want to create a Layermask which only interacts with the Layer of the gameobject and another Layer which is always 4 Layers below the gameobject Layer.
However I can´t use specific Layer numbers since my gameobject has to switch Layers all the time.
Would love if someone can help me out.

bool CollisionCheck(Vector2 v2StartOffSet, Vector2 v2EndOffSet)
{
    //This is the part I can´t figure out
    int iWorldLayer = gameObject.layer - 4;    //Currently Layer: 11
    int iPlayerLayer = gameObject.layer;    //Currently Layer: 15

    int iTargetLayer = iWorldLayer | iPlayerLayer;
    LayerMask lmTargetLayer = 1 << iTargetLayer;






    Vector2 v2LineStart = (Vector2)gameObject.transform.position + v2BoxColliderCenter + v2StartOffSet;
    Vector2 v2LineEnd = (Vector2)gameObject.transform.position + v2BoxColliderCenter + v2EndOffSet;

    if(bRenderRaysInEditor == true)
    {
        Debug.DrawLine(v2LineStart, v2LineEnd, Color.blue);
    }

    RaycastHit2D Hit;
    Hit = Physics2D.Linecast(v2LineStart, v2LineEnd, lmTargetLayer);
    return Hit;
}

Close

LayerMask A = 1<< worldLayer
LayerMask B = 1<<playerLayer
layermask Both = A | B