Back to home page

Project CMSSW displayed by LXR

 
 

    


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