CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/RecoEgamma/EgammaHLTAlgos/interface/EgammaHLTPixelMatchElectronAlgo.h

Go to the documentation of this file.
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