File indexing completed on 2023-10-25 10:04:59
0001 #ifndef SimPPS_RPDigiProducer_RP_LINEAR_CHARGE_DIVIDER_H
0002 #define SimPPS_RPDigiProducer_RP_LINEAR_CHARGE_DIVIDER_H
0003
0004 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0005 #include "SimTracker/Common/interface/SiG4UniversalFluctuation.h"
0006 #include "SimPPS/RPDigiProducer/interface/RPSimTypes.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008
0009 namespace CLHEP {
0010 class HepRandomEngine;
0011 }
0012
0013 class RPLinearChargeDivider {
0014 public:
0015 RPLinearChargeDivider(const edm::ParameterSet& params, CLHEP::HepRandomEngine& eng, RPDetId det_id);
0016 ~RPLinearChargeDivider();
0017 simromanpot::energy_path_distribution divide(const PSimHit& hit);
0018
0019 private:
0020 CLHEP::HepRandomEngine& rndEngine_;
0021 RPDetId det_id_;
0022
0023 bool fluctuateCharge_;
0024 int chargedivisionsPerStrip_;
0025 int chargedivisionsPerThickness_;
0026 double deltaCut_;
0027 double pitch_;
0028 double thickness_;
0029 simromanpot::energy_path_distribution the_energy_path_distribution_;
0030 std::unique_ptr<SiG4UniversalFluctuation> fluctuate_;
0031 int verbosity_;
0032
0033 void FluctuateEloss(int pid,
0034 double particleMomentum,
0035 double eloss,
0036 double length,
0037 int NumberOfSegs,
0038 simromanpot::energy_path_distribution& elossVector);
0039 };
0040
0041 #endif