File indexing completed on 2021-02-14 14:30:27
0001 #ifndef SimPPS_RPDigiProducer_RP_DET_DIGITIZER_H
0002 #define SimPPS_RPDigiProducer_RP_DET_DIGITIZER_H
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "DataFormats/CTPPSDigi/interface/TotemRPDigi.h"
0006 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0007
0008 #include "SimGeneral/NoiseGenerators/interface/GaussianTailNoiseGenerator.h"
0009
0010 #include "SimPPS/RPDigiProducer/interface/RPSimTypes.h"
0011 #include "SimPPS/RPDigiProducer/plugins/RPHitChargeConverter.h"
0012 #include "SimPPS/RPDigiProducer/plugins/RPVFATSimulator.h"
0013 #include "SimPPS/RPDigiProducer/plugins/RPDisplacementGenerator.h"
0014 #include "SimPPS/RPDigiProducer/plugins/RPGaussianTailNoiseAdder.h"
0015 #include "SimPPS/RPDigiProducer/plugins/RPPileUpSignals.h"
0016
0017 #include <vector>
0018 #include <string>
0019
0020 namespace CLHEP {
0021 class HepRandomEngine;
0022 }
0023
0024 class RPDetDigitizer {
0025 public:
0026 RPDetDigitizer(const edm::ParameterSet ¶ms,
0027 CLHEP::HepRandomEngine &eng,
0028 RPDetId det_id,
0029 const edm::EventSetup &iSetup);
0030 void run(const std::vector<PSimHit> &input,
0031 const std::vector<int> &input_links,
0032 std::vector<TotemRPDigi> &output_digi,
0033 simromanpot::DigiPrimaryMapType &output_digi_links);
0034
0035 private:
0036 std::unique_ptr<RPGaussianTailNoiseAdder> theRPGaussianTailNoiseAdder;
0037 std::unique_ptr<RPPileUpSignals> theRPPileUpSignals;
0038 std::unique_ptr<RPHitChargeConverter> theRPHitChargeConverter;
0039 std::unique_ptr<RPVFATSimulator> theRPVFATSimulator;
0040 std::unique_ptr<RPDisplacementGenerator> theRPDisplacementGenerator;
0041
0042 private:
0043 int numStrips_;
0044 double theNoiseInElectrons;
0045 double theStripThresholdInE;
0046 bool noNoise_;
0047 RPDetId det_id_;
0048 bool misalignment_simulation_on_;
0049 int verbosity_;
0050 bool links_persistence_;
0051 };
0052
0053 #endif