def _progenitor_setup(self,progenitor,leading,useTMHessian):
        """The part of the setup relating to the progenitor's orbit"""
        #Progenitor orbit: Calculate actions, frequencies, and angles for the progenitor
        self._progenitor= progenitor() #call to get new Orbit
        # Make sure we do not use physical coordinates
        self._progenitor.turn_physical_off()
        acfs= self._aA.actionsFreqsAngles(self._progenitor,
                                          _firstFlip=(not leading),
                                          use_physical=False)
        self._progenitor_jr= acfs[0][0]
        self._progenitor_lz= acfs[1][0]
        self._progenitor_jz= acfs[2][0]
        self._progenitor_Omegar= acfs[3]
        self._progenitor_Omegaphi= acfs[4]
        self._progenitor_Omegaz= acfs[5]
        self._progenitor_Omega= numpy.array([acfs[3],acfs[4],acfs[5]]).reshape(3)
        self._progenitor_angler= acfs[6]
        self._progenitor_anglephi= acfs[7]
        self._progenitor_anglez= acfs[8]
        self._progenitor_angle= numpy.array([acfs[6],acfs[7],acfs[8]]).reshape(3)
        #Calculate dO/dJ Jacobian at the progenitor
        if useTMHessian:
            h, fr,fp,fz,e= self._aAT.hessianFreqs(self._progenitor_jr,
                                                  self._progenitor_lz,
                                                  self._progenitor_jz)
            self._dOdJp= h
            # Replace frequencies with TM frequencies
            self._progenitor_Omegar= fr
            self._progenitor_Omegaphi= fp
            self._progenitor_Omegaz= fz
            self._progenitor_Omega= numpy.array([self._progenitor_Omegar,
                                                 self._progenitor_Omegaphi,
                                                 self._progenitor_Omegaz]).reshape(3)
        else:
            self._dOdJp= calcaAJac(self._progenitor._orb.vxvv,
                                   self._aA,dxv=None,dOdJ=True,
                                   _initacfs=acfs)
        self._dOdJpInv= numpy.linalg.inv(self._dOdJp)
        self._dOdJpEig= numpy.linalg.eig(self._dOdJp)
        return None
The part of the setup relating to the progenitor's orbit