CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
RPDetDigitizer Class Reference

#include <RPDetDigitizer.h>

Public Member Functions

 RPDetDigitizer (const edm::ParameterSet &params, CLHEP::HepRandomEngine &eng, RPDetId det_id, const CTPPSRPAlignmentCorrectionsData *alignments, const CTPPSGeometry &geom)
 
void run (const std::vector< PSimHit > &input, const std::vector< int > &input_links, std::vector< TotemRPDigi > &output_digi, simromanpot::DigiPrimaryMapType &output_digi_links)
 

Private Attributes

RPDetId det_id_
 
bool links_persistence_
 
bool misalignment_simulation_on_
 
bool noNoise_
 
int numStrips_
 
double theNoiseInElectrons
 
std::unique_ptr< RPDisplacementGeneratortheRPDisplacementGenerator
 
std::unique_ptr< RPGaussianTailNoiseAddertheRPGaussianTailNoiseAdder
 
std::unique_ptr< RPHitChargeConvertertheRPHitChargeConverter
 
std::unique_ptr< RPPileUpSignalstheRPPileUpSignals
 
std::unique_ptr< RPVFATSimulatortheRPVFATSimulator
 
double theStripThresholdInE
 
int verbosity_
 

Detailed Description

Definition at line 26 of file RPDetDigitizer.h.

Constructor & Destructor Documentation

◆ RPDetDigitizer()

RPDetDigitizer::RPDetDigitizer ( const edm::ParameterSet params,
CLHEP::HepRandomEngine &  eng,
RPDetId  det_id,
const CTPPSRPAlignmentCorrectionsData alignments,
const CTPPSGeometry geom 
)

Definition at line 9 of file RPDetDigitizer.cc.

References det_id_, RPTopology::DetStripNo(), relativeConstraints::geom, links_persistence_, misalignment_simulation_on_, noNoise_, numStrips_, submitPVValidationJobs::params, theNoiseInElectrons, theRPDisplacementGenerator, theRPGaussianTailNoiseAdder, theRPHitChargeConverter, theRPPileUpSignals, theRPVFATSimulator, theStripThresholdInE, and verbosity_.

15  : det_id_(det_id) {
16  verbosity_ = params.getParameter<int>("RPVerbosity");
18  theNoiseInElectrons = params.getParameter<double>("RPEquivalentNoiseCharge300um");
19  theStripThresholdInE = params.getParameter<double>("RPVFATThreshold");
20  noNoise_ = params.getParameter<bool>("RPNoNoise");
21  misalignment_simulation_on_ = params.getParameter<bool>("RPDisplacementOn");
22  links_persistence_ = params.getParameter<bool>("RPDigiSimHitRelationsPresistence");
23 
24  theRPGaussianTailNoiseAdder = std::make_unique<RPGaussianTailNoiseAdder>(
26  theRPPileUpSignals = std::make_unique<RPPileUpSignals>(params, det_id_);
27  theRPVFATSimulator = std::make_unique<RPVFATSimulator>(params, det_id_);
28  theRPHitChargeConverter = std::make_unique<RPHitChargeConverter>(params, eng, det_id_);
29  theRPDisplacementGenerator = std::make_unique<RPDisplacementGenerator>(
30  params.getParameter<bool>("RPDisplacementOn"), det_id_, alignments, geom);
31 }
double theNoiseInElectrons
std::unique_ptr< RPPileUpSignals > theRPPileUpSignals
double theStripThresholdInE
std::unique_ptr< RPGaussianTailNoiseAdder > theRPGaussianTailNoiseAdder
std::unique_ptr< RPHitChargeConverter > theRPHitChargeConverter
std::unique_ptr< RPVFATSimulator > theRPVFATSimulator
bool misalignment_simulation_on_
Geometrical and topological information on RP silicon detector. Uses coordinate a frame with origin i...
Definition: RPTopology.h:19
std::unique_ptr< RPDisplacementGenerator > theRPDisplacementGenerator
unsigned short DetStripNo() const
Definition: RPTopology.h:42

Member Function Documentation

◆ run()

void RPDetDigitizer::run ( const std::vector< PSimHit > &  input,
const std::vector< int > &  input_links,
std::vector< TotemRPDigi > &  output_digi,
simromanpot::DigiPrimaryMapType output_digi_links 
)

Definition at line 33 of file RPDetDigitizer.cc.

References det_id_, mps_fire::i, input, links_persistence_, LogDebug, misalignment_simulation_on_, noNoise_, theRPDisplacementGenerator, theRPGaussianTailNoiseAdder, theRPHitChargeConverter, theRPPileUpSignals, theRPVFATSimulator, and verbosity_.

36  {
37  if (verbosity_)
38  LogDebug("RPDetDigitizer ") << det_id_ << " received input.size()=" << input.size() << "\n";
39  theRPPileUpSignals->reset();
40 
41  bool links_persistence_checked = links_persistence_ && input_links.size() == input.size();
42 
43  int input_size = input.size();
44  for (int i = 0; i < input_size; ++i) {
45  simromanpot::strip_charge_map the_strip_charge_map;
47  the_strip_charge_map = theRPHitChargeConverter->processHit(theRPDisplacementGenerator->displace(input[i]));
48  else
49  the_strip_charge_map = theRPHitChargeConverter->processHit(input[i]);
50 
51  if (verbosity_)
52  LogDebug("RPHitChargeConverter ") << det_id_ << " returned hits=" << the_strip_charge_map.size() << "\n";
53  if (links_persistence_checked)
54  theRPPileUpSignals->add(the_strip_charge_map, input_links[i]);
55  else
56  theRPPileUpSignals->add(the_strip_charge_map, 0);
57  }
58 
59  const simromanpot::strip_charge_map &theSignal = theRPPileUpSignals->dumpSignal();
60  simromanpot::strip_charge_map_links_type &theSignalProvenance = theRPPileUpSignals->dumpLinks();
62  if (noNoise_)
63  afterNoise = theSignal;
64  else
65  afterNoise = theRPGaussianTailNoiseAdder->addNoise(theSignal);
66 
67  theRPVFATSimulator->ConvertChargeToHits(afterNoise, theSignalProvenance, output_digi, output_digi_links);
68 }
std::unique_ptr< RPPileUpSignals > theRPPileUpSignals
std::map< unsigned short, std::vector< std::pair< int, double > > > strip_charge_map_links_type
Definition: RPSimTypes.h:28
static std::string const input
Definition: EdmProvDump.cc:50
std::unique_ptr< RPGaussianTailNoiseAdder > theRPGaussianTailNoiseAdder
std::unique_ptr< RPHitChargeConverter > theRPHitChargeConverter
std::unique_ptr< RPVFATSimulator > theRPVFATSimulator
bool misalignment_simulation_on_
std::map< unsigned short, double > strip_charge_map
Definition: RPSimTypes.h:14
std::unique_ptr< RPDisplacementGenerator > theRPDisplacementGenerator
#define LogDebug(id)

Member Data Documentation

◆ det_id_

RPDetId RPDetDigitizer::det_id_
private

Definition at line 50 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ links_persistence_

bool RPDetDigitizer::links_persistence_
private

Definition at line 53 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ misalignment_simulation_on_

bool RPDetDigitizer::misalignment_simulation_on_
private

Definition at line 51 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ noNoise_

bool RPDetDigitizer::noNoise_
private

Definition at line 49 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ numStrips_

int RPDetDigitizer::numStrips_
private

Definition at line 46 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer().

◆ theNoiseInElectrons

double RPDetDigitizer::theNoiseInElectrons
private

Definition at line 47 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer().

◆ theRPDisplacementGenerator

std::unique_ptr<RPDisplacementGenerator> RPDetDigitizer::theRPDisplacementGenerator
private

Definition at line 43 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ theRPGaussianTailNoiseAdder

std::unique_ptr<RPGaussianTailNoiseAdder> RPDetDigitizer::theRPGaussianTailNoiseAdder
private

Definition at line 39 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ theRPHitChargeConverter

std::unique_ptr<RPHitChargeConverter> RPDetDigitizer::theRPHitChargeConverter
private

Definition at line 41 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ theRPPileUpSignals

std::unique_ptr<RPPileUpSignals> RPDetDigitizer::theRPPileUpSignals
private

Definition at line 40 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ theRPVFATSimulator

std::unique_ptr<RPVFATSimulator> RPDetDigitizer::theRPVFATSimulator
private

Definition at line 42 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().

◆ theStripThresholdInE

double RPDetDigitizer::theStripThresholdInE
private

Definition at line 48 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer().

◆ verbosity_

int RPDetDigitizer::verbosity_
private

Definition at line 52 of file RPDetDigitizer.h.

Referenced by RPDetDigitizer(), and run().