#############1 The StMuHelix in StRoot/StMuDSTMaker/COMMON will work, since it does derive from TObject, but you'll have to rebuild it out of the StPhysicalHelix call. That is to say, when you ask for the StMuTrack::helix it actually rebuilds an StPhysicalHelix out of the StMuHelix, so you will have to reverse this. Take a look at the code in $STAR/StRoot/StMuDSTMaker/COMMON/StMuTrack.cxx Alternatively, if you don't want to make the code dependent on StRoot/StMuDSTMaker/COMMON just store all the info that is used to build the StPhysicalHelix, i.e. parse through the various methods of the StPhysicalHelix to get the information so that you can redo this call in your code: StPhysicalHelixD StMuTrack::helix() const{ return StPhysicalHelixD(mHelix.p(),mHelix.origin(), mHelix.b()*kilogauss, mHelix.q());} where mHelix is an StMuHelix, not an StPhysicalHelixD. --J ############2 To be clear, if you have an StMuTrack* track and an StMuDst* mu you can make an StMuHelix *helix = new StMuHelix(track->helix(),mu->event()->runInfo().magneticField()); and store that in your class. Then in your later code you can convert it into an StPhysicalHelixD by doing StPhysicalHelixD thelix = StPhysicalHelixD(mHelix.p(),mHelix.origin(), mHelix.b()*kilogauss, mHelix.q()); where mHelix is an StMuHelix. and use all the methods of StPhysicalHelixD. For example, /// path length at given r (cylindrical r) pair pathLength(double r) const; /// path length at given r (cylindrical r, cylinder axis at x,y) pair pathLength(double r, double x, double y); /// path length at distance of closest approach to a given point double pathLength(const StThreeVector& p, bool scanPeriods = true) const; /// path length at intersection with plane double pathLength(const StThreeVector& r,const StThreeVector& n) const; /// path length at distance of closest approach in the xy-plane to a given point double pathLength(double x, double y) const; /// path lengths at dca between two helices pair pathLengths(const StHelix&) const; /// minimal distance between point and helix double distance(const StThreeVector& p, bool scanPeriods = true) const; as documented in the StarClassLibrary stuff available at http://drupal.star.bnl.gov/STAR/comp/sofi/tutorials/specDocs pp. 45-47. --J ##############3 StPhysicalHelixD *h = new StPhysicalHelixD TFile fout("test.root","RECREATE") TTree *t = new TTree("test","Helix test") t->Branch("helix","StPhysicalHelixD",&h) t->Fill() t->Show(0) --M