File indexing completed on 2024-04-06 12:30:52
0001 #ifndef SimPPS_PPSPixelDigiProducer_LINEAR_CHARGE_DIVIDER_H
0002 #define SimPPS_PPSPixelDigiProducer_LINEAR_CHARGE_DIVIDER_H
0003
0004 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0005 #include "SimTracker/Common/interface/SiG4UniversalFluctuation.h"
0006 #include "SimPPS/PPSPixelDigiProducer/interface/RPixEnergyDepositUnit.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008
0009 namespace CLHEP {
0010 class HepRandomEngine;
0011 }
0012
0013 class RPixLinearChargeDivider {
0014 public:
0015 RPixLinearChargeDivider(const edm::ParameterSet& params, CLHEP::HepRandomEngine& eng, uint32_t det_id);
0016 ~RPixLinearChargeDivider();
0017
0018 std::vector<RPixEnergyDepositUnit> divide(const PSimHit& hit);
0019
0020 private:
0021 CLHEP::HepRandomEngine& rndEngine_;
0022 uint32_t det_id_;
0023 bool fluctuateCharge_;
0024 int chargedivisions_;
0025 double deltaCut_;
0026 double pitch_;
0027 double thickness_;
0028
0029 std::vector<RPixEnergyDepositUnit> the_energy_path_distribution_;
0030 SiG4UniversalFluctuation* fluctuate;
0031 int verbosity_;
0032
0033 void FluctuateEloss(int pid,
0034 double particleMomentum,
0035 double eloss,
0036 double length,
0037 int NumberOfSegs,
0038 std::vector<RPixEnergyDepositUnit>& elossVector);
0039 };
0040
0041 #endif