'Return a TensorHead object or a list of TensorHead objects.
``s``  name or string of names
``comm``: commutation group number
see ``_TensorManager.set_comm``
Examples
Define symmetric tensors ``V``, ``W`` and ``G``, respectively
commuting, anticommuting and with no commutation symmetry
>>> from sympy.tensor.tensor import TensorIndexType, tensor_indices, tensorsymmetry, TensorType, canon_bp
>>> Lorentz = TensorIndexType(\'Lorentz\', dummy_fmt=\'L\')
>>> a, b = tensor_indices(\'a,b\', Lorentz)
>>> sym2 = tensorsymmetry([1]*2)
>>> S2 = TensorType([Lorentz]*2, sym2)
>>> V = S2(\'V\')
>>> W = S2(\'W\', 1)
>>> G = S2(\'G\', 2)
>>> canon_bp(V(a, b)*V(-b, -a))
V(L_0, L_1)*V(-L_0, -L_1)
>>> canon_bp(W(a, b)*W(-b, -a))
0'

def __call__(self, s, comm=0):

    if isinstance(s, str):
        names = [x.name for x in symbols(s, seq=True)]
    else:
        raise ValueError('expecting    a    string')
    if (len(names) == 1):
        return TensorHead(names[0], self, comm)
    else:
        return [TensorHead(name, self, comm) for name in names]
