CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTracker/SpecialSeedGenerators/interface/CtfSpecialSeedGenerator.h

Go to the documentation of this file.
00001 #ifndef CtfSpecialSeedGenerator_H
00002 #define CtfSpecialSeedGenerator_H
00003 
00008 //FWK
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 //DataFormats
00015 #include "DataFormats/Common/interface/Handle.h"
00016 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"    
00017 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
00018 //RecoTracker
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 //#include "RecoTracker/SpecialSeedGenerators/interface/GenericPairOrTripletGenerator.h"
00027 //#include "RecoTracker/SpecialSeedGenerators/interface/SeedCleaner.h"
00028 //MagneticField
00029 #include "MagneticField/Engine/interface/MagneticField.h"
00030 //TrackingTools
00031 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"
00032 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
00033 #include "TrackingTools/DetLayers/interface/NavigationDirection.h"
00034 //Geometry
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   //checks that the hits used are at positive y and are on different layers
00067   bool preliminaryCheck(const SeedingHitSet& shs);
00068   //We can check if the seed  points in a region covered by scintillators. To be used only in noB case
00069   //because it uses StraightLinePropagation
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   //edm::ESHandle<SeedCleaner> theCleaner;
00078   //OrderedHitsGenerator*  hitsGeneratorOutIn;
00079   //OrderedHitsGenerator*  hitsGeneratorInOut;
00080   //PropagationDirection inOutPropagationDirection;
00081   //PropagationDirection outInPropagationDirection;
00082   //GenericPairOrTripletGenerator* hitsGeneratorOutIn;
00083   //GenericPairOrTripletGenerator* hitsGeneratorInOut;  
00084   std::vector<OrderedHitsGenerator*> theGenerators;
00085   std::vector<PropagationDirection> thePropDirs;
00086   std::vector<NavigationDirection>  theNavDirs; 
00087   TrackingRegionProducer* theRegionProducer;    
00088   //TrajectoryStateTransform theTransformer;
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