Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
src
SimTracker
SiStripDigitizer
interface
SiLinearChargeDivider.h
Go to the documentation of this file.
1
#ifndef Tracker_SiLinearChargeDivider_H
2
#define Tracker_SiLinearChargeDivider_H
3
4
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
5
6
#include "
SimTracker/SiStripDigitizer/interface/SiChargeDivider.h
"
7
#include "
SimTracker/Common/interface/SiG4UniversalFluctuation.h
"
8
#include "
SimDataFormats/TrackingHit/interface/PSimHit.h
"
9
#include "
Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h
"
10
#include "
Geometry/CommonTopologies/interface/StripTopology.h
"
11
12
#include "
SimGeneral/HepPDTRecord/interface/ParticleDataTable.h
"
13
14
namespace
CLHEP{
15
class
HepRandomEngine;
16
}
17
25
class
SiLinearChargeDivider
:
public
SiChargeDivider
{
26
public
:
27
28
// constructor
29
SiLinearChargeDivider
(
const
edm::ParameterSet
&
conf
, CLHEP::HepRandomEngine&);
30
31
// destructor
32
virtual
~SiLinearChargeDivider
();
33
34
// main method: divide the charge (from the PSimHit) into several energy deposits in the bulk
35
SiChargeDivider::ionization_type
divide
(
const
PSimHit
*,
const
LocalVector
&,
double
,
const
StripGeomDetUnit
& det);
36
37
// set the ParticleDataTable (used to fluctuate the charge properly)
38
void
setParticleDataTable
(
const
ParticleDataTable
* pdt) {
theParticleDataTable
= pdt; }
39
40
private
:
41
// configuration
42
edm::ParameterSet
conf_
;
43
// configuration data
44
bool
peakMode
;
45
bool
fluctuateCharge
;
46
int
chargedivisionsPerStrip
;
47
double
deltaCut
;
48
double
cosmicShift
;
49
const
ParticleDataTable
*
theParticleDataTable
;
50
// Geant4 engine used by fluctuateEloss()
51
SiG4UniversalFluctuation
*
fluctuate
;
52
// random generator
53
CLHEP::HepRandomEngine&
rndEngine
;
54
// utility: drifts the charge to the surface to estimate the number of relevant strips
55
inline
float
driftXPos
(
const
Local3DPoint
&
pos
,
const
LocalVector
&
drift
,
double
thickness) {
56
return
pos.
x
()+(thickness/2.-pos.
z
())*drift.
x
()/drift.
z
();
57
}
58
// fluctuate the Eloss
59
void
fluctuateEloss
(
int
particleId,
float
momentum,
float
eloss,
float
length,
int
NumberOfSegmentation,
float
elossVector[]);
60
// time response (from the pulse shape)
61
inline
float
TimeResponse
(
const
PSimHit
*
hit
,
const
StripGeomDetUnit
& det) {
62
return
(
peakMode
?
PeakShape
(hit,det) :
DeconvolutionShape
(hit,det));
63
}
64
// pulse shape in peak mode
65
float
PeakShape
(
const
PSimHit
*,
const
StripGeomDetUnit
& det);
66
// pulse shape in deconvolution mode
67
float
DeconvolutionShape
(
const
PSimHit
*,
const
StripGeomDetUnit
& det);
68
// data table for pulse shape in peak mode
69
static
float
peakValues
[921];
70
// data table for pulse shape in deconvolution mode
71
static
float
decoValues
[651];
72
73
};
74
75
#endif
SiChargeDivider
Definition:
SiChargeDivider.h:14
SiLinearChargeDivider::theParticleDataTable
const ParticleDataTable * theParticleDataTable
Definition:
SiLinearChargeDivider.h:49
pos
Definition:
Histograms.cc:19
ParticleDataTable
HepPDT::ParticleDataTable ParticleDataTable
Definition:
ParticleDataTable.h:9
Vector3DBase< float, LocalTag >
SiLinearChargeDivider::rndEngine
CLHEP::HepRandomEngine & rndEngine
Definition:
SiLinearChargeDivider.h:53
SiLinearChargeDivider::PeakShape
float PeakShape(const PSimHit *, const StripGeomDetUnit &det)
Definition:
SiLinearChargeDivider.cc:119
shallow::drift
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
Definition:
ShallowTools.cc:39
SiLinearChargeDivider::setParticleDataTable
void setParticleDataTable(const ParticleDataTable *pdt)
Definition:
SiLinearChargeDivider.h:38
SiLinearChargeDivider::TimeResponse
float TimeResponse(const PSimHit *hit, const StripGeomDetUnit &det)
Definition:
SiLinearChargeDivider.h:61
SiLinearChargeDivider
Definition:
SiLinearChargeDivider.h:25
SiLinearChargeDivider::peakMode
bool peakMode
Definition:
SiLinearChargeDivider.h:44
SiLinearChargeDivider::driftXPos
float driftXPos(const Local3DPoint &pos, const LocalVector &drift, double thickness)
Definition:
SiLinearChargeDivider.h:55
SiLinearChargeDivider::divide
SiChargeDivider::ionization_type divide(const PSimHit *, const LocalVector &, double, const StripGeomDetUnit &det)
Definition:
SiLinearChargeDivider.cc:36
SiChargeDivider.h
StripGeomDetUnit
Definition:
StripGeomDetUnit.h:18
ParameterSet.h
ParticleDataTable.h
StripTopology.h
SiLinearChargeDivider::SiLinearChargeDivider
SiLinearChargeDivider(const edm::ParameterSet &conf, CLHEP::HepRandomEngine &)
Definition:
SiLinearChargeDivider.cc:7
SiLinearChargeDivider::conf_
edm::ParameterSet conf_
Definition:
SiLinearChargeDivider.h:42
PV3DBase::z
T z() const
Definition:
PV3DBase.h:63
SiLinearChargeDivider::decoValues
static float decoValues[651]
Definition:
SiLinearChargeDivider.h:71
SiG4UniversalFluctuation.h
SiLinearChargeDivider::deltaCut
double deltaCut
Definition:
SiLinearChargeDivider.h:47
SiLinearChargeDivider::DeconvolutionShape
float DeconvolutionShape(const PSimHit *, const StripGeomDetUnit &det)
Definition:
SiLinearChargeDivider.cc:127
SiChargeDivider::ionization_type
std::vector< EnergyDepositUnit > ionization_type
Definition:
SiChargeDivider.h:16
SiLinearChargeDivider::~SiLinearChargeDivider
virtual ~SiLinearChargeDivider()
Definition:
SiLinearChargeDivider.cc:31
dbtoconf.conf
tuple conf
Definition:
dbtoconf.py:185
PSimHit.h
SiLinearChargeDivider::chargedivisionsPerStrip
int chargedivisionsPerStrip
Definition:
SiLinearChargeDivider.h:46
StripGeomDetUnit.h
SiLinearChargeDivider::cosmicShift
double cosmicShift
Definition:
SiLinearChargeDivider.h:48
SiLinearChargeDivider::peakValues
static float peakValues[921]
Definition:
SiLinearChargeDivider.h:69
SiLinearChargeDivider::fluctuateEloss
void fluctuateEloss(int particleId, float momentum, float eloss, float length, int NumberOfSegmentation, float elossVector[])
Definition:
SiLinearChargeDivider.cc:78
hit
Definition:
SiStripHitEffFromCalibTree.cc:87
Point3DBase< float, LocalTag >
SiG4UniversalFluctuation
Definition:
SiG4UniversalFluctuation.h:67
PSimHit
Definition:
PSimHit.h:15
edm::ParameterSet
Definition:
ParameterSet.h:35
SiLinearChargeDivider::fluctuate
SiG4UniversalFluctuation * fluctuate
Definition:
SiLinearChargeDivider.h:51
PV3DBase::x
T x() const
Definition:
PV3DBase.h:61
SiLinearChargeDivider::fluctuateCharge
bool fluctuateCharge
Definition:
SiLinearChargeDivider.h:45
Generated for CMSSW Reference Manual by
1.8.5