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