I am confused about the math and Roblox physics used to make the object orient around its own pivot point, as well as have its position orbit around the pivot point of the tornado.
If you know how to do this, please reply with math/the Roblox object used to do this.
I was gonna write out the code but it would be hard to know how you would use it so ill just explain the steps.
Get the relative position (object - tornado) and note the distance (on the x and z axes) at the start
Get the angle of the object relative to the tornado (use atan2 with x and z of the relative position)
Have a while loop that waits for the renderstepped each iteration that ends after a time limit or connect to renderstepped (and make sure to disconnect after time limit)
Calculate the distance (with interpolation) and angle at the current time
Update the object CFrame by first converting the polar coordinates back in to cartesian coordinates with sine and cosine and the current distance and lastly add CFrame angles to manipulate the object along its own pivot point
Another option if you want a more Roblox-physics approach is to have the tornado-part spinning using a AngularVelocity, then add a attachment with an offset. Lastly, have objects get picked up by the tornado by using a AlignPosition and have their target be the attachment.