CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
RPixLinearChargeCollectionDrifter Class Reference

#include <RPixLinearChargeCollectionDrifter.h>

Public Member Functions

std::vector< RPixSignalPointDrift (const std::vector< RPixEnergyDepositUnit > &energy_deposition)
 
 RPixLinearChargeCollectionDrifter (const edm::ParameterSet &params, uint32_t det_id, const PPSPixelTopology &ppt)
 

Private Member Functions

double getSigma_ (double z)
 

Private Attributes

std::vector< double > charge_cloud_sigmas_vect_
 
uint32_t det_id_
 
double det_thickness_
 
double GeV_per_electron_
 
std::vector< RPixSignalPointtemp_
 
int verbosity_
 

Detailed Description

Definition at line 9 of file RPixLinearChargeCollectionDrifter.h.

Constructor & Destructor Documentation

RPixLinearChargeCollectionDrifter::RPixLinearChargeCollectionDrifter ( const edm::ParameterSet params,
uint32_t  det_id,
const PPSPixelTopology ppt 
)

Member Function Documentation

std::vector< RPixSignalPoint > RPixLinearChargeCollectionDrifter::Drift ( const std::vector< RPixEnergyDepositUnit > &  energy_deposition)

Definition at line 14 of file RPixLinearChargeCollectionDrifter.cc.

References det_id_, getSigma_(), GeV_per_electron_, mps_fire::i, PixelTestBeamValidation_cfi::Position, temp_, verbosity_, x, y, and z.

15  {
16  // convert an energy deposit in a point and in a charge of electrons n=E/3.61 (eV)
17  temp_.resize(energy_deposition.size());
18  for (unsigned int i = 0; i < energy_deposition.size(); i++) {
19  temp_[i].setPosition(LocalPoint(energy_deposition[i].Position().x(), energy_deposition[i].Position().y()));
20  temp_[i].setSigma(getSigma_(energy_deposition[i].Position().z()));
21  temp_[i].setCharge(energy_deposition[i].Energy() / GeV_per_electron_);
22  if (verbosity_ > 1) {
23  edm::LogInfo("PPS") << "RPixLinearChargeCollectionDrifter " << det_id_ << " :" << temp_[i].Position() << " "
24  << temp_[i].Sigma() << " " << temp_[i].Charge();
25  }
26  }
27  return temp_;
28 }
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
Log< level::Info, false > LogInfo
double RPixLinearChargeCollectionDrifter::getSigma_ ( double  z)
private

Definition at line 29 of file RPixLinearChargeCollectionDrifter.cc.

References reco::ceil(), charge_cloud_sigmas_vect_, and det_thickness_.

Referenced by Drift().

29  {
30  if (charge_cloud_sigmas_vect_.size() == 1)
31  return charge_cloud_sigmas_vect_[0];
32 
33  double factor = (z / det_thickness_) * (charge_cloud_sigmas_vect_.size() - 1);
34  double lo_i = floor(factor);
35  double hi_i = ceil(factor);
36  if (lo_i == hi_i) {
37  return charge_cloud_sigmas_vect_[(int)factor];
38  } else {
39  double lo_weight = hi_i - factor;
40  double hi_weight = factor - lo_i;
41 
42  return charge_cloud_sigmas_vect_[(int)lo_i] * lo_weight + charge_cloud_sigmas_vect_[(int)hi_i] * hi_weight;
43  }
44 }
constexpr int32_t ceil(float num)

Member Data Documentation

std::vector<double> RPixLinearChargeCollectionDrifter::charge_cloud_sigmas_vect_
private
uint32_t RPixLinearChargeCollectionDrifter::det_id_
private

Definition at line 21 of file RPixLinearChargeCollectionDrifter.h.

Referenced by Drift(), and RPixLinearChargeCollectionDrifter().

double RPixLinearChargeCollectionDrifter::det_thickness_
private
double RPixLinearChargeCollectionDrifter::GeV_per_electron_
private

Definition at line 18 of file RPixLinearChargeCollectionDrifter.h.

Referenced by Drift(), and RPixLinearChargeCollectionDrifter().

std::vector<RPixSignalPoint> RPixLinearChargeCollectionDrifter::temp_
private

Definition at line 15 of file RPixLinearChargeCollectionDrifter.h.

Referenced by Drift().

int RPixLinearChargeCollectionDrifter::verbosity_
private

Definition at line 19 of file RPixLinearChargeCollectionDrifter.h.

Referenced by Drift(), and RPixLinearChargeCollectionDrifter().