Go to the documentation of this file.00001 #ifndef CtfSpecialSeedGenerator_H
00002 #define CtfSpecialSeedGenerator_H
00003
00008
00009 #include "FWCore/Framework/interface/EDProducer.h"
00010 #include "FWCore/Framework/interface/Event.h"
00011 #include "FWCore/Framework/interface/EventSetup.h"
00012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00013 #include "FWCore/Framework/interface/ESHandle.h"
00014
00015 #include "DataFormats/Common/interface/Handle.h"
00016 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
00017 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
00018
00019 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
00020 #include "RecoTracker/Record/interface/CkfComponentsRecord.h"
00021 #include "RecoTracker/TkSeedingLayers/interface/SeedingLayerSetsBuilder.h"
00022 #include "RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h"
00023 #include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGenerator.h"
00024 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h"
00025 #include "RecoTracker/SpecialSeedGenerators/interface/SeedFromGenericPairOrTriplet.h"
00026
00027
00028
00029 #include "MagneticField/Engine/interface/MagneticField.h"
00030
00031 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
00032 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
00033 #include "TrackingTools/DetLayers/interface/NavigationDirection.h"
00034
00035 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00036
00037 #include <map>
00038
00039 class CtfSpecialSeedGenerator : public edm::EDProducer
00040 {
00041 public:
00042 typedef TrajectoryStateOnSurface TSOS;
00043
00044
00045 CtfSpecialSeedGenerator(const edm::ParameterSet& conf);
00046
00047 virtual ~CtfSpecialSeedGenerator();
00048
00049 virtual void beginRun(edm::Run &, edm::EventSetup const&);
00050 virtual void endRun(edm::Run &, edm::EventSetup const&);
00051
00052 virtual void produce(edm::Event& e, const edm::EventSetup& c);
00053
00054 private:
00055
00056 bool run(const edm::EventSetup& c,
00057 const edm::Event& e,
00058 TrajectorySeedCollection& output);
00059
00060 bool buildSeeds(const edm::EventSetup& iSetup,
00061 const edm::Event& e,
00062 const OrderedSeedingHits& osh,
00063 const NavigationDirection& navdir,
00064 const PropagationDirection& dir,
00065 TrajectorySeedCollection& output);
00066
00067 bool preliminaryCheck(const SeedingHitSet& shs);
00068
00069
00070 bool postCheck(const TrajectorySeed& seed);
00071
00072 private:
00073 edm::ParameterSet conf_;
00074 edm::ESHandle<MagneticField> theMagfield;
00075 edm::ESHandle<TrackerGeometry> theTracker;
00076 edm::ESHandle<TransientTrackingRecHitBuilder> theBuilder;
00077
00078
00079
00080
00081
00082
00083
00084 std::vector<OrderedHitsGenerator*> theGenerators;
00085 std::vector<PropagationDirection> thePropDirs;
00086 std::vector<NavigationDirection> theNavDirs;
00087 TrackingRegionProducer* theRegionProducer;
00088
00089 SeedFromGenericPairOrTriplet* theSeedBuilder;
00090 bool useScintillatorsConstraint;
00091 BoundPlane::BoundPlanePointer upperScintillator;
00092 BoundPlane::BoundPlanePointer lowerScintillator;
00093 bool requireBOFF;
00094 int32_t theMaxSeeds;
00095 };
00096 #endif
00097
00098