CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/FastSimulation/MuonSimHitProducer/interface/MuonSimHitProducer.h

Go to the documentation of this file.
00001 #ifndef FastSimulation_MuonSimHitProducer_MuonSimHitProducer_h
00002 #define FastSimulation_MuonSimHitProducer_MuonSimHitProducer_h
00003 
00004 //
00005 // Package:    MuonSimHitProducer
00006 // Class:      MuonSimHitProducer
00007 // 
00015 //
00016 //  Author:  Martijn Mulders
00017 // Created:  Wed July 11 12:37:24 CET 2007
00018 // $Id: MuonSimHitProducer.h,v 1.10 2010/05/13 15:23:21 aperrott Exp $
00019 //
00020 
00021 
00022 // system include files
00023 #include <memory>
00024 
00025 // user include files
00026 #include "FWCore/Framework/interface/EDProducer.h"
00027 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h"
00028 
00029 // FastSimulation headers
00030 class RandomEngine;
00031 class MagneticField;
00032 class TrackerGeometry;
00033 class DTGeometry;
00034 class CSCGeometry;
00035 class RPCGeometry;
00036 class MuonServiceProxy;
00037 class MaterialEffects;
00038 class TrajectoryStateOnSurface;
00039 class Propagator;
00040 
00041 /*
00042 namespace reco { 
00043   class Muon;
00044 }
00045 */
00046 
00047 namespace edm { 
00048   class ParameterSet;
00049   class Event;
00050   class EventSetup;
00051 }
00052 
00053 //
00054 // class declaration
00055 //
00056 
00057 class MuonSimHitProducer : public edm::EDProducer {
00058    public:
00059 
00060       explicit MuonSimHitProducer(const edm::ParameterSet&);
00061       ~MuonSimHitProducer();
00062 
00063    private:
00064 
00065       const RandomEngine * random;
00066       MuonServiceProxy *theService;
00067       Chi2MeasurementEstimator theEstimator;
00068 
00069       const MagneticField*  magfield;
00070       const DTGeometry*     dtGeom;
00071       const CSCGeometry*    cscGeom;
00072       const RPCGeometry*    rpcGeom;
00073       const Propagator*     propagatorWithMaterial;
00074             Propagator* propagatorWithoutMaterial;
00075 
00076       MaterialEffects* theMaterialEffects;
00077   
00078       virtual void beginRun(edm::Run & run, const edm::EventSetup & es);
00079       virtual void produce(edm::Event&, const edm::EventSetup&);
00080       virtual void endJob() ;
00081       void readParameters(const edm::ParameterSet&, 
00082                           const edm::ParameterSet&,
00083                           const edm::ParameterSet& );
00084 
00085       // Parameters to emulate the muonSimHit association inefficiency due to delta's
00086       double kDT;
00087       double fDT;
00088       double kCSC;
00089       double fCSC;
00090 
00092       void applyMaterialEffects(TrajectoryStateOnSurface& tsosWithdEdx,
00093                                 TrajectoryStateOnSurface& tsos,
00094                                 double radPath);
00095 
00096           
00097   // ----------- parameters ---------------------------- 
00098       bool fullPattern_;
00099       bool doL1_ , doL3_ , doGL_;
00100       std::string theSimModuleLabel_ , theSimModuleProcess_, theTrkModuleLabel_ ;
00101 };
00102 
00103 #endif