Go to the documentation of this file.00001 #ifndef FastElectronSeedGenerator_H
00002 #define FastElectronSeedGenerator_H
00003
00013
00014 #include "DataFormats/EgammaReco/interface/ElectronSeed.h"
00015 #include "DataFormats/EgammaReco/interface/ElectronSeedFwd.h"
00016 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00017 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
00018
00019 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
00020 #include "FWCore/Utilities/interface/InputTag.h"
00021
00022 #include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSMatchedRecHit2DCollection.h"
00023
00024 #include "DataFormats/Math/interface/Point3D.h"
00025 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
00026
00027 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
00028
00029 #include "TrackingTools/TransientTrackingRecHit/interface/GenericTransientTrackingRecHit.h"
00030
00031 namespace edm {
00032 class EventSetup;
00033 class ParameterSet;
00034 class Event;
00035 }
00036
00037 class TrackerGeometry;
00038 class MagneticField;
00039 class MagneticFieldMap;
00040 class GeometricSearchTracker;
00041 class TrackerInteractionGeometry;
00042
00043 class PropagatorWithMaterial;
00044 class KFUpdator;
00045 class FastPixelHitMatcher;
00046 class TrackerRecHit;
00047 class TrajectorySeed;
00048
00049
00050
00051 class FastElectronSeedGenerator
00052 {
00053 public:
00054
00055
00056 typedef edm::OwnVector<TrackingRecHit> PRecHitContainer;
00057 typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer;
00058 typedef TransientTrackingRecHit::RecHitPointer RecHitPointer;
00059 typedef TransientTrackingRecHit::RecHitContainer RecHitContainer;
00060
00061
00062 enum mode{HLT, offline, unknown};
00063
00064 FastElectronSeedGenerator(const edm::ParameterSet &pset,
00065 double pTMin,
00066 const edm::InputTag& beamSpot);
00067
00068 ~FastElectronSeedGenerator();
00069
00070 void setup(bool);
00071
00072 void setupES(const edm::EventSetup& setup);
00073
00074
00075
00076
00077
00078
00079
00080
00081 void run(edm::Event& e,
00082 const reco::SuperClusterRefVector &sclRefs,
00083 const SiTrackerGSMatchedRecHit2DCollection* theGSRecHits,
00084 const edm::SimTrackContainer* theSimTracks,
00085 TrajectorySeedCollection *seeds,
00086 reco::ElectronSeedCollection & out);
00087
00088 private:
00089
00090 void addASeedToThisCluster(edm::Ref<reco::SuperClusterCollection> seedCluster,
00091 std::vector<TrackerRecHit>& theHits,
00092 const TrajectorySeed& theTrackerSeed,
00093 std::vector<reco::ElectronSeed>& result);
00094
00095 bool prepareElTrackSeed(ConstRecHitPointer outerhit,
00096 ConstRecHitPointer innerhit,
00097 const GlobalPoint& vertexPos);
00098
00099 bool dynamicphiroad_;
00100
00101 float lowPtThreshold_;
00102 float highPtThreshold_;
00103 float sizeWindowENeg_;
00104 float phimin2_,phimax2_;
00105 float deltaPhi1Low_, deltaPhi1High_;
00106 float deltaPhi2_;
00107 bool searchInTIDTEC;
00108
00109 double zmin1_, zmax1_;
00110 double pTMin2;
00111 math::XYZPoint BSPosition_;
00112
00113 FastPixelHitMatcher *myGSPixelMatcher;
00114
00115
00116 TrajectorySeedCollection* theInitialSeedColl;
00117 bool fromTrackerSeeds_;
00118
00119 const MagneticField* theMagField;
00120 const MagneticFieldMap* theMagneticFieldMap;
00121 const TrackerGeometry* theTrackerGeometry;
00122 const GeometricSearchTracker* theGeomSearchTracker;
00123 const TrackerInteractionGeometry* theTrackerInteractionGeometry;
00124
00125 KFUpdator * theUpdator;
00126 PropagatorWithMaterial * thePropagator;
00127
00128 const edm::EventSetup *theSetup;
00129 const edm::InputTag theBeamSpot;
00130
00131 PRecHitContainer recHits_;
00132 PTrajectoryStateOnDet pts_;
00133
00134 };
00135
00136 #endif // FastElectronSeedGenerator_H
00137
00138