00001 #ifndef TR_FastHelix_H_ 00002 #define TR_FastHelix_H_ 00003 00004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00005 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 00006 #include "RecoTracker/TkSeedGenerator/interface/FastCircle.h" 00007 #include "FWCore/Framework/interface/EventSetup.h" 00008 #include "FWCore/Framework/interface/ESHandle.h" 00009 #include "MagneticField/Engine/interface/MagneticField.h" 00010 // You don't really want to know why the rest does not compile on Sun 00011 // whthout this method, and why it compiles with it. 00012 inline GlobalPoint sun_bullshit( const GlobalPoint point) { 00013 return point; 00014 } 00015 00031 class FastHelix { 00032 00033 private: 00034 00035 typedef FreeTrajectoryState FTS; 00036 00037 public: 00038 00039 FastHelix(const GlobalPoint& outerHit, 00040 const GlobalPoint& middleHit, 00041 const GlobalPoint& aVertex, 00042 const edm::EventSetup& iSetup); 00043 00044 ~FastHelix() {} 00045 00046 bool isValid() const {return theCircle.isValid();} 00047 00048 FTS stateAtVertex() const; 00049 00050 FTS helixStateAtVertex() const; 00051 00052 FTS straightLineStateAtVertex() const; 00053 00054 private: 00055 00056 GlobalPoint theOuterHit; 00057 GlobalPoint theMiddleHit; 00058 GlobalPoint theVertex; 00059 FastCircle theCircle; 00060 edm::ESHandle<MagneticField> pSetup; 00061 GlobalVector tesla0; 00062 }; 00063 00064 #endif //TR_FastHelix_H_ 00065 00066 00067 00068