class Polarizability {

    public double calculateGHEffectiveAtomPolarizability(IAtomContainer atomContainer, IAtom atom,
            int influenceSphereCutOff, boolean addExplicitH) {
        double polarizabilitiy = 0;

        IAtomContainer acH;
        if (addExplicitH) {
            acH = atomContainer.getBuilder().newInstance(IAtomContainer.class, atomContainer);
            addExplicitHydrogens(acH);
        } else {
            acH = atomContainer;
        }

        List<IAtom> startAtom = new ArrayList<>(1);
        startAtom.add(0, atom);
        double bond;

        polarizabilitiy += getKJPolarizabilityFactor(acH, atom);
        for (int i = 0; i < acH.getAtomCount(); i++) {
            if (!acH.getAtom(i).equals(atom)) {
                bond = PathTools.breadthFirstTargetSearch(acH, startAtom, acH.getAtom(i), 0, influenceSphereCutOff);
                if (bond == 1) {
                    polarizabilitiy += getKJPolarizabilityFactor(acH, acH.getAtom(i));
                } else {
                    polarizabilitiy += (Math.pow(0.5, bond - 1) * getKJPolarizabilityFactor(acH, acH.getAtom(i)));
                }//if bond==0
            }//if !=atom
        }//for
        return polarizabilitiy;
    }

    public  Polarizability();

}