CMS 3D CMS Logo

Phase2StripCPE.cc
Go to the documentation of this file.
4 
6  const MagneticField& magf,
7  const TrackerGeometry& geom,
9  : magfield_(magf),
10  geom_(geom),
11  lorentzAngleMap_(LorentzAngle),
12  tanLorentzAnglePerTesla_(conf.getParameter<double>("TanLorentzAnglePerTesla")) {
13  use_LorentzAngle_DB_ = conf.getParameter<bool>("LorentzAngle_DB");
14  fillParam();
15 }
16 
18  const GeomDetUnit& detunit) const {
19  auto const& p = m_Params[detunit.index() - m_off];
20  auto const& topo = *p.topology;
21  float ix = cluster.center() - 0.5f * p.coveredStrips;
22  float iy = float(cluster.column()) + 0.5f; // halfway the column
23 
24  LocalPoint lp(topo.localX(ix), topo.localY(iy), 0); // x, y, z
25 
26  return std::make_pair(lp, p.localErr);
27 }
28 
30  LocalVector lbfield = (det.surface()).toLocal(magfield_.inTesla(det.surface().position()));
31 
32  float langle =
34 
35  float dir_x = -langle * lbfield.y();
36  float dir_y = langle * lbfield.x();
37  float dir_z = 1.f; // E field always in z direction
38 
39  return LocalVector(dir_x, dir_y, dir_z);
40 }
41 
43  // in phase 2 they are all pixel topologies...
44  auto const& dus = geom_.detUnits();
45  m_off = dus.size();
46  // skip Barrel and Foward pixels...
47  for (unsigned int i = 3; i < 7; ++i) {
48  LogDebug("LookingForFirstPhase2OT") << " Subdetector " << i << " GeomDetEnumerator "
49  << GeomDetEnumerators::tkDetEnum[i] << " offset "
51  if (geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]) != dus.size()) {
54  }
55  }
56  LogDebug("LookingForFirstPhase2OT") << " Chosen offset: " << m_off;
57 
58  m_Params.resize(dus.size() - m_off);
59  // very very minimal, for sure it will need to expand...
60  for (auto i = m_off; i != dus.size(); ++i) {
61  auto& p = m_Params[i - m_off];
62 
63  const Phase2TrackerGeomDetUnit& det = (const Phase2TrackerGeomDetUnit&)(*dus[i]);
64  assert(det.index() == int(i));
65  p.topology = &det.specificTopology();
66 
67  auto pitch_x = p.topology->pitch().first;
68  auto pitch_y = p.topology->pitch().second;
69 
70  // see https://github.com/cms-sw/cmssw/blob/CMSSW_8_1_X/RecoLocalTracker/SiStripRecHitConverter/src/StripCPE.cc
71  auto thickness = det.specificSurface().bounds().thickness();
72  auto drift = driftDirection(det) * thickness;
73  auto lvec = drift + LocalVector(0, 0, -thickness);
74  p.coveredStrips = lvec.x() / pitch_x; // simplifies wrt Phase0 tracker because only rectangular modules
75 
76  constexpr float o12 = 1. / 12;
77  p.localErr = LocalError(o12 * pitch_x * pitch_x, 0, o12 * pitch_y * pitch_y); // e2_xx, e2_xy, e2_yy
78  }
79 }
Vector3DBase< float, LocalTag >
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
mps_fire.i
i
Definition: mps_fire.py:428
MessageLogger.h
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
GeomDet
Definition: GeomDet.h:27
SiStripSimParameters_cfi.LorentzAngle
LorentzAngle
Definition: SiStripSimParameters_cfi.py:93
PixelTopology.h
Phase2TrackerCluster1D
Definition: Phase2TrackerCluster1D.h:10
Phase2TrackerCluster1D::column
unsigned int column() const
Definition: Phase2TrackerCluster1D.h:26
Phase2StripCPE::localParameters
LocalValues localParameters(const Phase2TrackerCluster1D &cluster, const GeomDetUnit &det) const override
Definition: Phase2StripCPE.cc:17
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ClusterParameterEstimator< Phase2TrackerCluster1D >::LocalValues
std::pair< LocalPoint, LocalError > LocalValues
Definition: ClusterParameterEstimator.h:14
Phase2StripCPE::tanLorentzAnglePerTesla_
float tanLorentzAnglePerTesla_
Definition: Phase2StripCPE.h:43
cms::cuda::assert
assert(be >=bs)
Phase2StripCPE::Phase2StripCPE
Phase2StripCPE(edm::ParameterSet &conf, const MagneticField &, const TrackerGeometry &, const SiPhase2OuterTrackerLorentzAngle &)
Definition: Phase2StripCPE.cc:5
GeomDet::index
int index() const
Definition: GeomDet.h:83
Phase2TrackerCluster1D::center
float center() const
Definition: Phase2TrackerCluster1D.h:29
SiPhase2OuterTrackerLorentzAngle
Definition: SiPhase2OuterTrackerLorentzAngle.h:26
SiPhase2OuterTrackerLorentzAngle::getLorentzAngle
float getLorentzAngle(const uint32_t &) const
Definition: SiPhase2OuterTrackerLorentzAngle.cc:15
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
shallow::drift
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
Definition: ShallowTools.cc:36
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:115
GeomDetEnumerators::tkDetEnum
constexpr SubDetector tkDetEnum[8]
Definition: GeomDetEnumerators.h:37
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
Phase2StripCPE.h
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
Point3DBase< float, LocalTag >
Phase2StripCPE::m_off
unsigned int m_off
Definition: Phase2StripCPE.h:44
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
Bounds::thickness
virtual float thickness() const =0
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
LocalError
Definition: LocalError.h:12
Phase2StripCPE::lorentzAngleMap_
const SiPhase2OuterTrackerLorentzAngle & lorentzAngleMap_
Definition: Phase2StripCPE.h:41
PixelGeomDetUnit::specificTopology
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
Definition: PixelGeomDetUnit.cc:17
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
LocalVector
Local3DVector LocalVector
Definition: LocalVector.h:12
createfilelist.int
int
Definition: createfilelist.py:10
toLocal
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
Definition: ConversionProducer.cc:202
GeomDet::specificSurface
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
Definition: GeomDet.h:40
Phase2StripCPE::geom_
const TrackerGeometry & geom_
Definition: Phase2StripCPE.h:40
Phase2StripCPE::fillParam
void fillParam()
Definition: Phase2StripCPE.cc:42
GloballyPositioned::position
const PositionType & position() const
Definition: GloballyPositioned.h:36
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
Phase2StripCPE::driftDirection
LocalVector driftDirection(const Phase2TrackerGeomDetUnit &det) const
Definition: Phase2StripCPE.cc:29
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Phase2StripCPE::m_Params
std::vector< Param > m_Params
Definition: Phase2StripCPE.h:37
MagneticField
Definition: MagneticField.h:19
TrackerGeometry::offsetDU
unsigned int offsetDU(SubDetector sid) const
Definition: TrackerGeometry.h:72
Phase2StripCPE::magfield_
const MagneticField & magfield_
Definition: Phase2StripCPE.h:39
Phase2StripCPE::use_LorentzAngle_DB_
bool use_LorentzAngle_DB_
Definition: Phase2StripCPE.h:46
TrackerGeometry
Definition: TrackerGeometry.h:14