|
|
Go to the documentation of this file.
26 #include "CLHEP/Random/RandGauss.h"
49 theAlignableTracker(nullptr) {
99 edm::LogWarning(
"MisalignedTracker") <<
"Blind movements suppressed (TIB/TOB in z, TID/TEC in r)";
105 edm::LogWarning(
"MisalignedTracker") <<
"Old z convention: dz --> -dz";
147 std::string theAlignRecordName =
"TrackerAlignmentRcd";
148 std::string theErrorRecordName =
"TrackerAlignmentErrorExtendedRcd";
152 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
156 &(*myAlignmentErrorsExtended), poolDbService->
beginOfTime(), theErrorRecordName);
161 unsigned int nComp =
comp.size();
164 bool usecomps =
true;
167 for (
unsigned int i = 0;
i < nComp; ++
i) {
173 bool blindToZ(
false), blindToR(
false);
202 const bool blindToR) {
209 const double oldX = globalPos.
x();
210 const double oldY = globalPos.
y();
211 const double oldZ = globalPos.
z();
212 const double oldPhi = globalPos.
phi();
213 const double oldR =
sqrt(globalPos.
x() * globalPos.
x() + globalPos.
y() * globalPos.
y());
225 const double Roffset = 57.0;
228 deltaX += (xP - oldX);
229 deltaY += (yP - oldY);
232 const double trackeredgePlusZ = 271.846;
233 const double bowfactor =
m_bowingEpsilon * (trackeredgePlusZ * trackeredgePlusZ - oldZ * oldZ);
234 deltaX += oldX * bowfactor;
235 deltaY += oldY * bowfactor;
243 deltaX += (xP - oldX);
244 deltaY += (yP - oldY);
align::GlobalVector findSystematicMis(const align::PositionType &, const bool blindToZ, const bool blindToR)
double m_telescopeEpsilon
cond::Time_t beginOfTime() const
double m_ellipticalEpsilon
const edm::ESGetToken< PTrackerAdditionalParametersPerDet, PTrackerAdditionalParametersPerDetRcd > ptitpToken_
TrackerGeometry * build(const GeometricDet *gd, const PTrackerAdditionalParametersPerDet *ptitp, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
void beginJob() override
Read ideal tracker geometry from DB.
Log< level::Warning, false > LogWarning
void applyAlignments(const C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
Sin< T >::type sin(const T &t)
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
Cos< T >::type cos(const T &t)
#define DEFINE_FWK_MODULE(type)
AlignmentErrorsExtended * alignmentErrors() const override
Return alignment errors, sorted by DetId.
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
const edm::ESGetToken< Alignments, GlobalPositionRcd > gprToken_
static constexpr auto TEC
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
void applySystematicMisalignment(Alignable *)
const DetId & geomDetId() const
const edm::ESGetToken< Alignments, TrackerAlignmentRcd > aliToken_
static constexpr auto TOB
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
static constexpr auto TID
void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< Alignable * > Alignables
AlignableTracker * theAlignableTracker
Alignments * alignments() const override
Return alignments, sorted by DetId.
Hash writeOne(const T *payload, Time_t time, const std::string &recordName)
static constexpr auto TIB
const edm::ESGetToken< AlignmentErrorsExtended, TrackerAlignmentErrorExtendedRcd > aliErrorToken_
const PositionType & globalPosition() const
Return the global position of the object.
virtual const Alignables & components() const =0
Return vector of all direct components.
Geom::Phi< T > phi() const
Class to update a given geometry with a set of alignments.
TrackerSystematicMisalignments(const edm::ParameterSet &)