CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/SimMuon/CSCDigitizer/src/CSCDigitizer.h

Go to the documentation of this file.
00001 #ifndef MU_END_DIGITIZER
00002 #define MU_END_DIGITIZER
00003 
00004 // This is CSCDigitizer.h
00005 
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
00015 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h"
00016 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h"
00017 #include "DataFormats/CSCDigi/interface/CSCComparatorDigiCollection.h"
00018 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
00019 #include "MagneticField/Engine/interface/MagneticField.h"
00020 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
00021 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
00022 #include "CLHEP/Random/RandomEngine.h"
00023 #include <boost/utility.hpp>
00024 
00025 #include "DataFormats/Common/interface/DetSetVector.h"
00026 #include "SimDataFormats/TrackerDigiSimLink/interface/StripDigiSimLink.h"
00027 
00028 class CSCDriftSim;
00029 class CSCWireHitSim;
00030 class CSCStripHitSim;
00031 class CSCWireElectronicsSim;
00032 class CSCStripElectronicsSim;
00033 class CSCLayer;
00034 class CSCNeutronReader;
00035 class CSCStripConditions;
00036 
00037 class CSCDigitizer : public boost::noncopyable
00038 {
00039 public:
00040   typedef edm::DetSetVector<StripDigiSimLink> DigiSimLinks;
00041 
00043   explicit CSCDigitizer(const edm::ParameterSet & p);
00044   
00045   ~CSCDigitizer();
00046 
00049   void doAction(MixCollection<PSimHit> & simHits,
00050                 CSCWireDigiCollection & wireDigis,
00051                 CSCStripDigiCollection & stripDigis,
00052                 CSCComparatorDigiCollection & comparators,
00053                 DigiSimLinks & wireDigiSimLinks,
00054                 DigiSimLinks & stripDigiSimLinks);
00055 
00057   void setGeometry(const CSCGeometry * geom) {theCSCGeometry = geom;}
00058 
00060   void setMagneticField(const MagneticField * field);
00061 
00062   void setStripConditions(CSCStripConditions * cond);
00063 
00064   void setParticleDataTable(const ParticleDataTable * pdt);
00065 
00066   void setRandomEngine(CLHEP::HepRandomEngine& engine);
00067 
00068 private:
00070   const CSCLayer * findLayer(int detId) const;
00071 
00073   std::list<int> layersMissing(const CSCStripDigiCollection & stripDigis) const;
00074 
00075   CSCDriftSim            * theDriftSim;
00076   CSCWireHitSim          * theWireHitSim;
00077   CSCStripHitSim         * theStripHitSim;
00078   CSCWireElectronicsSim  * theWireElectronicsSim;
00079   CSCStripElectronicsSim * theStripElectronicsSim;
00080   CSCNeutronReader       * theNeutronReader;
00081   const CSCGeometry      * theCSCGeometry;
00082   CSCStripConditions     * theConditions;
00083   unsigned int theLayersNeeded;
00084   bool digitizeBadChambers_;
00085 };
00086 
00087 #endif
00088