00001 #ifndef Egamma_ConversionFastHelix_H_ 00002 #define Egamma_ConversionFastHelix_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 00011 00016 class ConversionFastHelix { 00017 00018 private: 00019 00020 typedef FreeTrajectoryState FTS; 00021 00022 public: 00023 00024 ConversionFastHelix(const GlobalPoint& outerHit, 00025 const GlobalPoint& middleHit, 00026 const GlobalPoint& aVertex, 00027 const MagneticField* field 00028 ); 00029 00030 ~ConversionFastHelix() {} 00031 00032 void makeHelix(); 00033 00034 00035 bool isValid() {return validStateAtVertex; } 00036 00037 FTS stateAtVertex() ; 00038 00039 FTS helixStateAtVertex() ; 00040 00041 FTS straightLineStateAtVertex() ; 00042 00043 private: 00044 00045 FTS theHelix_; 00046 bool validStateAtVertex; 00047 GlobalPoint theOuterHit; 00048 GlobalPoint theMiddleHit; 00049 GlobalPoint theVertex; 00050 FastCircle theCircle; 00051 const MagneticField* mField; 00052 00053 }; 00054 00055 #endif //Egamma_ConversionFastHelix_H_ 00056 00057 00058 00059