code: 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;
      }
docs: calculate effective atom polarizability.
  
  @param  atomContainer                     IAtomContainer
  @param  atom                   atom for which effective atom polarizability should be calculated
  @param  influenceSphereCutOff  cut off for spheres which should taken into account for calculation
  @param addExplicitH if set to true, then explicit H's will be added, otherwise it assumes that they have
  been added to the molecule before being called
  @return polarizabilitiy