00001 #ifndef EgammaHLTPixelMatchElectronAlgo_H 00002 #define EgammaHLTPixelMatchElectronAlgo_H 00003 00014 #include "DataFormats/EgammaCandidates/interface/Electron.h" 00015 #include "DataFormats/EgammaCandidates/interface/ElectronFwd.h" 00016 00017 #include "FWCore/Framework/interface/ESHandle.h" 00018 #include "FWCore/Framework/interface/EventSetup.h" 00019 #include "FWCore/Framework/interface/Event.h" 00020 00021 #include "MagneticField/Engine/interface/MagneticField.h" 00022 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" 00023 00024 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00025 00026 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00027 00028 class MultiTrajectoryStateMode; 00029 class MultiTrajectoryStateTransform; 00030 00031 class EgammaHLTPixelMatchElectronAlgo { 00032 00033 public: 00034 00035 EgammaHLTPixelMatchElectronAlgo(const edm::ParameterSet& conf); 00036 00037 ~EgammaHLTPixelMatchElectronAlgo(); 00038 00039 //disabling the ability to copy this module (lets hope nobody was actually copying it before as Bad Things (TM) would have happened) 00040 private: 00041 EgammaHLTPixelMatchElectronAlgo(const EgammaHLTPixelMatchElectronAlgo& rhs){} 00042 EgammaHLTPixelMatchElectronAlgo& operator=(const EgammaHLTPixelMatchElectronAlgo& rhs){return *this;} 00043 00044 public: 00045 void setupES(const edm::EventSetup& setup); 00046 void run(edm::Event&, reco::ElectronCollection&); 00047 00048 private: 00049 00050 // create electrons from tracks 00051 //void process(edm::Handle<reco::TrackCollection> tracksH, reco::ElectronCollection & outEle, Global3DPoint & bs); 00052 void process(edm::Handle<reco::TrackCollection> tracksH, edm::Handle<reco::GsfTrackCollection> gsfTracksH, reco::ElectronCollection & outEle, Global3DPoint & bs); 00053 bool isInnerMostWithLostHits(const reco::GsfTrackRef&, const reco::GsfTrackRef&, bool&); 00054 00055 edm::InputTag trackProducer_; 00056 edm::InputTag gsfTrackProducer_; 00057 bool useGsfTracks_; 00058 edm::InputTag bsProducer_; 00059 00060 MultiTrajectoryStateMode* mtsMode_; //its not clear to me why this is a pointer but its not the only one so changing things wouldnt make this class safer 00061 MultiTrajectoryStateTransform* mtsTransform_; 00062 00063 edm::ESHandle<MagneticField> magField_; 00064 edm::ESHandle<TrackerGeometry> trackerGeom_; 00065 int unsigned long long cacheIDTDGeom_; 00066 unsigned long long cacheIDMagField_; 00067 }; 00068 00069 00070 #endif // EgammaHLTPixelMatchElectronAlgo_H 00071 00072