Transform.root
var root: Transform;
Transform root;
root as Transform
Description

Returns the topmost transform in the hierarchy.

(This never returns null, if this Transform doesn't have a parent it returns itself.)
	// Is a collision between two objects in different hierarchies?
	function OnCollisionEnter(collision : Collision) {
		if ( collision.transform.root != transform.root ) {
			print("The colliding objects are not in the same hierarchy");
		}
	}
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    void OnCollisionEnter(Collision collision) {
        if (collision.transform.root != transform.root)
            print("The colliding objects are not in the same hierarchy");
        
    }
}
import UnityEngine
import System.Collections

public class Example(MonoBehaviour):

	def OnCollisionEnter(collision as Collision) as void:
		if collision.transform.root != transform.root:
			print('The colliding objects are not in the same hierarchy')