CMS 3D CMS Logo

DiMuonSeedGeneratorHIC.h

Go to the documentation of this file.
00001 #ifndef _HICDIMUONSEEDGENERATOR_H_
00002 #define _HICDIMUONSEEDGENERATOR_H_
00003 //
00004 // MuSeedGenerator creates track seeds from L1/L2 Muon Trigger
00005 // parametrization works up to 40 GeV tracks.
00006 //
00007 // HIC
00008 
00009 // Producer stuff
00010 #include "FWCore/Framework/interface/EventSetup.h"
00011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00012 #include "FWCore/Framework/interface/ESHandle.h"
00013 #include "FWCore/ParameterSet/interface/InputTag.h"
00014 #include "DataFormats/Common/interface/EDProduct.h"
00015 #include "FWCore/Framework/interface/EDProducer.h"
00016 #include "FWCore/Framework/interface/Event.h"
00017 
00018 // Magnetic field for propagators
00019 #include "MagneticField/Engine/interface/MagneticField.h"
00020 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00021 
00022 // TrackingTools
00023 #include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h"
00024 #include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"
00025 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
00026 #include "TrackingTools/DetLayers/interface/DetLayer.h"
00027 #include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
00028 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
00029 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00030 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
00031 #include "TrackingTools/MeasurementDet/interface/LayerMeasurements.h"
00032 
00033 // Detector geometry
00034 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00035 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00036 #include "Geometry/TrackerGeometryBuilder/interface/TrackerLayerIdAccessor.h"
00037 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00038 
00039 // RecoTracker
00040 #include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
00041 #include "RecoTracker/TkHitPairs/interface/LayerWithHits.h"
00042 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
00043 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
00044 
00045 // Internal stuff 
00046 #include "RecoHIMuon/HiMuSeed/interface/HICSeedMeasurementEstimator.h"
00047 #include "RecoHIMuon/HiMuSeed/interface/HICConst.h"
00048 #include "RecoHIMuon/HiMuSeed/interface/DiMuonTrajectorySeed.h"
00049 
00050 // HICConst
00051 #include "RecoHIMuon/HiMuSeed/interface/HICConst.h"
00052 
00053 // CLHEP includes
00054 #include "CLHEP/Units/PhysicalConstants.h"
00055 //#include "CLHEP/Vector/ThreeVector.h"
00056 //#include <CLHEP/Vector/LorentzVector.h>
00057 
00058 // System includes
00059 #include <cmath>
00060 #include <stdlib.h>
00061 #include <string>
00062 #include <iostream>
00063 #include <vector>
00064 
00065 #include <map>
00066 #include <vector>
00067 
00068 namespace cms
00069 {
00070 class DiMuonSeedGeneratorHIC  {
00071 
00072  public:
00073   typedef std::vector<DiMuonTrajectorySeed> SeedContainer;
00074   typedef SeedContainer::iterator SeedIterator;
00075   
00076   DiMuonSeedGeneratorHIC(edm::InputTag,
00077                          const MagneticField*, 
00078                          const GeometricSearchTracker*,
00079                          const HICConst*,
00080                          const std::string, 
00081                          int aMult);
00082 
00083   virtual std::map<DetLayer*,SeedContainer>  produce(const edm::Event& e, const edm::EventSetup& c,
00084                          FreeTrajectoryState&, 
00085                          TrajectoryStateOnSurface&,
00086                          FreeTrajectoryState&,
00087                     const TransientTrackingRecHitBuilder* RecHitBuilder,
00088                     const MeasurementTracker* measurementTracker,
00089                          std::vector<DetLayer*>* 
00090                        );
00091 
00092   virtual ~DiMuonSeedGeneratorHIC(){} 
00093   
00094 //  SeedContainer seeds();
00095   
00096  private:
00097   FreeTrajectoryState                        theFtsTracker;
00098   FreeTrajectoryState                        theFtsMuon;
00099   const HICConst*                            theHICConst;
00100   Propagator*                                thePropagator; 
00101   std::string                                builderName;    
00102   int                                        theLowMult;
00103   
00104   std::vector<BarrelDetLayer*>               bl;
00105   std::vector<ForwardDetLayer*>              fpos;
00106   std::vector<ForwardDetLayer*>              fneg;
00107   std::vector<const DetLayer*>               theDetLayer;
00108   
00109   std::vector<LayerWithHits*>                allLayersWithHits;
00110   bool                                       isFirstCall;
00111   TrackerLayerIdAccessor                     acc;
00112   
00113   std::pair<TrajectoryMeasurement,bool> barrelUpdateSeed(
00114                                            const FreeTrajectoryState&,
00115                                            const TrajectoryMeasurement&
00116                                          ) const;
00117   std::pair<TrajectoryMeasurement,bool> forwardUpdateSeed(
00118                                            const FreeTrajectoryState&,
00119                                            const TrajectoryMeasurement&
00120                                          ) const;
00121                                          
00122   edm::InputTag rphirecHitsTag;
00123   const TransientTrackingRecHitBuilder * TTRHbuilder;
00124   const MagneticField* magfield;        
00125   const GeometricSearchTracker* theTracker;
00126   const MeasurementTracker*             theMeasurementTracker;
00127   const LayerMeasurements*              theLayerMeasurements;
00128                          
00129 };
00130 }
00131 #endif
00132 

Generated on Tue Jun 9 17:43:36 2009 for CMSSW by  doxygen 1.5.4