Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
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