00001 #ifndef ElectronPixelSeedGenerator_H
00002 #define ElectronPixelSeedGenerator_H
00003
00016 #include "DataFormats/EgammaReco/interface//ElectronPixelSeed.h"
00017 #include "DataFormats/EgammaReco/interface/ElectronPixelSeedFwd.h"
00018 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00019
00020 #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
00021 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
00022 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00023
00024 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
00025 #include "TrackingTools/PatternTools/interface/TrajectoryStateUpdator.h"
00026 #include "TrackingTools/DetLayers/interface/NavigationSetter.h"
00027
00028 #include "RecoTracker/TransientTrackingRecHit/interface/TSiPixelRecHit.h"
00029 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
00030
00031 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00032 #include "FWCore/Framework/interface/EventSetup.h"
00033 #include "FWCore/Framework/interface/Event.h"
00034 #include "FWCore/Framework/interface/ESHandle.h"
00035
00036
00037 class PropagatorWithMaterial;
00038 class KFUpdator;
00039 class PixelHitMatcher;
00040 class MeasurementTracker;
00041 class NavigationSchool;
00042
00043 class ElectronPixelSeedGenerator
00044 {
00045 public:
00046
00047 typedef edm::OwnVector<TrackingRecHit> PRecHitContainer;
00048 typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer;
00049 typedef TransientTrackingRecHit::RecHitPointer RecHitPointer;
00050 typedef TransientTrackingRecHit::RecHitContainer RecHitContainer;
00051
00052 ElectronPixelSeedGenerator(const edm::ParameterSet&);
00053 ~ElectronPixelSeedGenerator();
00054
00055 void setupES(const edm::EventSetup& setup);
00056 void run(edm::Event&, const edm::EventSetup& setup, const reco::SuperClusterRefVector &, TrajectorySeedCollection *seeds, reco::ElectronPixelSeedCollection&);
00057
00058 private:
00059
00060 void seedsFromThisCluster(edm::Ref<reco::SuperClusterCollection> seedCluster, reco::ElectronPixelSeedCollection & out);
00061 bool prepareElTrackSeed(ConstRecHitPointer outerhit,ConstRecHitPointer innerhit, const GlobalPoint& vertexPos);
00062
00063 bool dynamicphiroad_;
00064 bool fromTrackerSeeds_;
00065
00066
00067 float lowPtThreshold_;
00068 float highPtThreshold_;
00069 float sizeWindowENeg_;
00070 float phimin2_,phimax2_;
00071 float deltaPhi1Low_, deltaPhi1High_;
00072 float deltaPhi2_;
00073
00074 double zmin1_, zmax1_;
00075 edm::Handle<reco::BeamSpot> theBeamSpot;
00076
00077 PixelHitMatcher *myMatchEle;
00078 PixelHitMatcher *myMatchPos;
00079
00080
00081 TrajectorySeedCollection* theInitialSeedColl;
00082
00083 edm::ESHandle<MagneticField> theMagField;
00084 edm::ESHandle<GeometricSearchTracker> theGeomSearchTracker;
00085 KFUpdator * theUpdator;
00086 PropagatorWithMaterial * thePropagator;
00087
00088 const MeasurementTracker* theMeasurementTracker;
00089 const NavigationSchool* theNavigationSchool;
00090
00091 const edm::EventSetup *theSetup;
00092 TrajectoryStateTransform transformer_;
00093
00094 PRecHitContainer recHits_;
00095 PTrajectoryStateOnDet* pts_;
00096
00097
00098 unsigned long long cacheIDMagField_;
00099 unsigned long long cacheIDGeom_;
00100 unsigned long long cacheIDNavSchool_;
00101 unsigned long long cacheIDCkfComp_;
00102 unsigned long long cacheIDTrkGeom_;
00103 };
00104
00105 #endif // ElectronPixelSeedGenerator_H
00106
00107