Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:30:27

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   const edm::ParameterSet& params_;
0021   CLHEP::HepRandomEngine& rndEngine_;
0022   RPDetId det_id_;
0023 
0024   bool fluctuateCharge_;
0025   int chargedivisionsPerStrip_;
0026   int chargedivisionsPerThickness_;
0027   double deltaCut_;
0028   double pitch_;
0029   double thickness_;
0030   simromanpot::energy_path_distribution the_energy_path_distribution_;
0031   std::unique_ptr<SiG4UniversalFluctuation> fluctuate_;
0032   int verbosity_;
0033 
0034   void FluctuateEloss(int pid,
0035                       double particleMomentum,
0036                       double eloss,
0037                       double length,
0038                       int NumberOfSegs,
0039                       simromanpot::energy_path_distribution& elossVector);
0040 };
0041 
0042 #endif  //SimPPS_RPDigiProducer_RP_LINEAR_CHARGE_DIVIDER_H