File indexing completed on 2024-09-10 02:59:12
0001 #ifndef RPCDigitizer_RPCSim_h
0002 #define RPCDigitizer_RPCSim_h
0003
0004
0005
0006
0007
0008
0009 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0010 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0012 #include "FWCore/Framework/interface/EventSetup.h"
0013
0014 #include <map>
0015 #include <set>
0016
0017 #include "DataFormats/Common/interface/DetSet.h"
0018 #include "SimDataFormats/TrackerDigiSimLink/interface/StripDigiSimLink.h"
0019 #include "SimDataFormats/RPCDigiSimLink/interface/RPCDigiSimLink.h"
0020
0021 class RPCRoll;
0022 class RPCGeometry;
0023 class RPCSimSetUp;
0024 class PSimHit;
0025
0026 namespace CLHEP {
0027 class HepRandomEngine;
0028 }
0029
0030 class RPCSim {
0031 public:
0032 typedef edm::DetSet<StripDigiSimLink> DigiSimLinks;
0033 typedef edm::DetSet<RPCDigiSimLink> RPCDigiSimLinks;
0034
0035 virtual ~RPCSim() {}
0036
0037 virtual void simulate(const RPCRoll* roll, const edm::PSimHitContainer& rpcHits, CLHEP::HepRandomEngine*) = 0;
0038
0039 virtual void simulateNoise(const RPCRoll* roll, CLHEP::HepRandomEngine*) = 0;
0040
0041 virtual void fillDigis(int rollDetId, RPCDigiCollection& digis);
0042
0043 void setRPCSimSetUp(RPCSimSetUp* setup) { theSimSetUp = setup; }
0044
0045 RPCSimSetUp* getRPCSimSetUp() { return theSimSetUp; }
0046
0047 const DigiSimLinks& digiSimLinks() const { return theDigiSimLinks; }
0048 const RPCDigiSimLinks& rpcDigiSimLinks() const { return theRpcDigiSimLinks; }
0049
0050 protected:
0051 RPCSim(const edm::ParameterSet& config);
0052 virtual void init() = 0;
0053
0054 protected:
0055 std::set<std::pair<int, int> > strips;
0056 std::set<RPCDigi> irpc_digis;
0057
0058
0059
0060
0061
0062 virtual void addLinks(unsigned int strip, int bx);
0063
0064
0065 typedef std::multimap<std::pair<unsigned int, int>, const PSimHit*, std::less<std::pair<unsigned int, int> > >
0066 DetectorHitMap;
0067
0068 DetectorHitMap theDetectorHitMap;
0069 DigiSimLinks theDigiSimLinks;
0070 RPCDigiSimLinks theRpcDigiSimLinks;
0071
0072
0073 protected:
0074 RPCSimSetUp* theSimSetUp;
0075 };
0076 #endif