Back to home page

Project CMSSW displayed by LXR

 
 

    


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  //SimPPS_RPDigiProducer_RP_LINEAR_CHARGE_DIVIDER_H