26 #include "CLHEP/Random/RandGauss.h" 42 : theAlignableTracker(0)
62 if (m_radialEpsilon > -990.0){
65 if (m_telescopeEpsilon > -990.0){
68 if (m_layerRotEpsilon > -990.0){
71 if (m_bowingEpsilon > -990.0){
74 if (m_zExpEpsilon > -990.0){
77 if (m_twistEpsilon > -990.0){
80 if (m_ellipticalEpsilon > -990.0){
83 if (m_skewEpsilon > -990.0){
86 if (m_sagittaEpsilon > -990.0){
94 edm::LogWarning(
"MisalignedTracker") <<
"Blind movements suppressed (TIB/TOB in z, TID/TEC in r)";
101 edm::LogWarning(
"MisalignedTracker") <<
"Old z convention: dz --> -dz";
153 Alignments* myAlignments = theAlignableTracker->alignments() ;
158 std::string theAlignRecordName =
"TrackerAlignmentRcd";
159 std::string theErrorRecordName =
"TrackerAlignmentErrorExtendedRcd";
163 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
173 unsigned int nComp = comp.size();
176 bool usecomps =
true;
178 for (
unsigned int i = 0;
i < nComp; ++
i){
183 bool blindToZ(
false), blindToR(
false);
205 if ((level == 1)||(level == 2)){
219 const double oldX = globalPos.
x();
220 const double oldY = globalPos.
y();
221 const double oldZ = globalPos.
z();
222 const double oldPhi = globalPos.
phi();
223 const double oldR =
sqrt(globalPos.
x()*globalPos.
x() + globalPos.
y()*globalPos.
y());
235 const double Roffset = 57.0;
238 deltaX += (xP - oldX);
239 deltaY += (yP - oldY);
242 const double trackeredgePlusZ=271.846;
243 const double bowfactor=
m_bowingEpsilon*(trackeredgePlusZ*trackeredgePlusZ-oldZ*oldZ);
244 deltaX += oldX*bowfactor;
245 deltaY += oldY*bowfactor;
253 deltaX += (xP - oldX);
254 deltaY += (yP - oldY);
void applySystematicMisalignment(Alignable *)
T getUntrackedParameter(std::string const &, T const &) const
Class to update a given geometry with a set of alignments.
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
def setup(process, global_tag, zero_tesla=False)
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
AlignableTracker * theAlignableTracker
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
virtual Alignables components() const =0
Return vector of all direct components.
double m_telescopeEpsilon
cond::Time_t beginOfTime() const
align::GlobalVector findSystematicMis(const align::PositionType &, const bool blindToZ, const bool blindToR)
void get(HolderT &iHolder) const
Cos< T >::type cos(const T &t)
TrackerSystematicMisalignments(const edm::ParameterSet &)
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
virtual void beginJob()
Read ideal tracker geometry from DB.
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
double m_ellipticalEpsilon
std::vector< Alignable * > Alignables
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
const PositionType & globalPosition() const
Return the global position of the object.
T const * product() const
const DetId & geomDetId() const
virtual void analyze(const edm::Event &, const edm::EventSetup &)