Main Page
Namespaces
Classes
Package Documentation
src
SimTracker
SiStripDigitizer
plugins
SiLinearChargeDivider.h
Go to the documentation of this file.
1
#ifndef Tracker_SiLinearChargeDivider_H
2
#define Tracker_SiLinearChargeDivider_H
3
4
#include <memory>
5
6
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
7
8
#include "
SiChargeDivider.h
"
9
#include "
SimTracker/Common/interface/SiG4UniversalFluctuation.h
"
10
#include "
SimDataFormats/TrackingHit/interface/PSimHit.h
"
11
#include "
Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h
"
12
#include "
Geometry/CommonTopologies/interface/StripTopology.h
"
13
14
#include "
SimGeneral/HepPDTRecord/interface/ParticleDataTable.h
"
15
16
namespace
CLHEP
{
17
class
HepRandomEngine;
18
}
19
27
class
SiLinearChargeDivider
:
public
SiChargeDivider
{
28
public
:
29
// constructor
30
SiLinearChargeDivider
(
const
edm::ParameterSet
& conf);
31
32
// destructor
33
~
SiLinearChargeDivider
()
override
;
34
35
// main method: divide the charge (from the PSimHit) into several energy deposits in the bulk
36
SiChargeDivider::ionization_type
divide
(
37
const
PSimHit
*,
const
LocalVector
&,
double
,
const
StripGeomDetUnit
& det, CLHEP::HepRandomEngine*)
override
;
38
39
// set the ParticleDataTable (used to fluctuate the charge properly)
40
void
setParticleDataTable
(
const
ParticleDataTable
* pdt)
override
{ theParticleDataTable = pdt; }
41
42
private
:
43
// configuration data
44
const
bool
peakMode
;
45
const
bool
fluctuateCharge
;
46
const
int
chargedivisionsPerStrip
;
47
const
double
deltaCut
;
48
const
double
cosmicShift
;
49
const
ParticleDataTable
*
theParticleDataTable
;
50
double
pulseResolution
;
51
unsigned
int
pulset0Idx
;
52
std::vector<double>
pulseValues
;
53
54
// Geant4 engine used by fluctuateEloss()
55
std::unique_ptr<SiG4UniversalFluctuation>
fluctuate
;
56
// utility: drifts the charge to the surface to estimate the number of relevant strips
57
inline
float
driftXPos
(
const
Local3DPoint
&
pos
,
const
LocalVector
&
drift
,
double
thickness) {
58
return
pos.
x
() + (thickness / 2. - pos.
z
()) * drift.
x
() / drift.
z
();
59
}
60
// fluctuate the Eloss
61
void
fluctuateEloss(
double
const
particleMass,
62
float
momentum,
63
float
eloss,
64
float
length,
65
int
NumberOfSegmentation,
66
float
elossVector[],
67
CLHEP::HepRandomEngine*);
68
// time response (from the pulse shape)
69
float
TimeResponse(
const
PSimHit
*
hit
,
const
StripGeomDetUnit
& det);
70
void
readPulseShape(
const
std::string
& pulseShapeFileName);
71
};
72
73
#endif
SiChargeDivider
Definition:
SiChargeDivider.h:19
SiLinearChargeDivider::pulseResolution
double pulseResolution
Definition:
SiLinearChargeDivider.h:50
SiLinearChargeDivider::theParticleDataTable
const ParticleDataTable * theParticleDataTable
Definition:
SiLinearChargeDivider.h:49
ParticleDataTable
HepPDT::ParticleDataTable ParticleDataTable
Definition:
ParticleDataTable.h:8
Vector3DBase< float, LocalTag >
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition:
AlCaHLTBitMon_QueryRunRegistry.py:256
SiLinearChargeDivider::setParticleDataTable
void setParticleDataTable(const ParticleDataTable *pdt) override
Definition:
SiLinearChargeDivider.h:40
shallow::drift
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
Definition:
ShallowTools.cc:37
SiLinearChargeDivider::cosmicShift
const double cosmicShift
Definition:
SiLinearChargeDivider.h:48
SiLinearChargeDivider
Definition:
SiLinearChargeDivider.h:27
SiLinearChargeDivider::driftXPos
float driftXPos(const Local3DPoint &pos, const LocalVector &drift, double thickness)
Definition:
SiLinearChargeDivider.h:57
SiChargeDivider.h
StripGeomDetUnit
Definition:
StripGeomDetUnit.h:15
ParameterSet.h
CLHEP
Definition:
CocoaGlobals.h:27
ParticleDataTable.h
StripTopology.h
SiLinearChargeDivider::fluctuateCharge
const bool fluctuateCharge
Definition:
SiLinearChargeDivider.h:45
PV3DBase::z
T z() const
Definition:
PV3DBase.h:64
SiG4UniversalFluctuation.h
pos
Definition:
PixelAliasList.h:18
SiLinearChargeDivider::fluctuate
std::unique_ptr< SiG4UniversalFluctuation > fluctuate
Definition:
SiLinearChargeDivider.h:55
SiLinearChargeDivider::deltaCut
const double deltaCut
Definition:
SiLinearChargeDivider.h:47
PSimHit.h
StripGeomDetUnit.h
divide
void divide(MonitorElement *eff, const MonitorElement *numerator, const MonitorElement *denominator)
Function to fill an efficiency histograms with binomial errors.
Definition:
Histograms.h:22
hit
Definition:
SiStripHitEffFromCalibTree.cc:87
Point3DBase< float, LocalTag >
SiLinearChargeDivider::chargedivisionsPerStrip
const int chargedivisionsPerStrip
Definition:
SiLinearChargeDivider.h:46
PSimHit
Definition:
PSimHit.h:15
edm::ParameterSet
Definition:
ParameterSet.h:36
SiChargeDivider::ionization_type
std::vector< EnergyDepositUnit > ionization_type
Definition:
SiChargeDivider.h:21
PV3DBase::x
T x() const
Definition:
PV3DBase.h:62
SiLinearChargeDivider::pulseValues
std::vector< double > pulseValues
Definition:
SiLinearChargeDivider.h:52
SiLinearChargeDivider::pulset0Idx
unsigned int pulset0Idx
Definition:
SiLinearChargeDivider.h:51
SiLinearChargeDivider::peakMode
const bool peakMode
Definition:
SiLinearChargeDivider.h:44
Generated for CMSSW Reference Manual by
1.8.11