Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:25:34

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 class CTPPSRPAlignmentCorrectionsData;
0024 class CTPPSGeometry;
0025 
0026 class RPDetDigitizer {
0027 public:
0028   RPDetDigitizer(const edm::ParameterSet &params,
0029                  CLHEP::HepRandomEngine &eng,
0030                  RPDetId det_id,
0031                  const CTPPSRPAlignmentCorrectionsData *alignments,
0032                  const CTPPSGeometry &geom);
0033   void run(const std::vector<PSimHit> &input,
0034            const std::vector<int> &input_links,
0035            std::vector<TotemRPDigi> &output_digi,
0036            simromanpot::DigiPrimaryMapType &output_digi_links);
0037 
0038 private:
0039   std::unique_ptr<RPGaussianTailNoiseAdder> theRPGaussianTailNoiseAdder;
0040   std::unique_ptr<RPPileUpSignals> theRPPileUpSignals;
0041   std::unique_ptr<RPHitChargeConverter> theRPHitChargeConverter;
0042   std::unique_ptr<RPVFATSimulator> theRPVFATSimulator;
0043   std::unique_ptr<RPDisplacementGenerator> theRPDisplacementGenerator;
0044 
0045 private:
0046   int numStrips_;
0047   double theNoiseInElectrons;   // Noise (RMS) in units of electrons.
0048   double theStripThresholdInE;  // Strip noise treshold in electorns.
0049   bool noNoise_;                //if the nos is included
0050   RPDetId det_id_;
0051   bool misalignment_simulation_on_;
0052   int verbosity_;
0053   bool links_persistence_;
0054 };
0055 
0056 #endif  //SimCTPPS_RPDigiProducer_RP_DET_DIGITIZER_H