16 #include "CLHEP/Random/RandGauss.h" 60 unsigned int nComp =
comp.size();
66 for (
unsigned int i = 0;
i < nComp; ++
i) {
71 int subdetlevel =
id.subdetId();
76 if (subdetlevel > 0) {
79 double value0 = CLHEP::RandGauss::shoot(0,
value[0]);
80 double value1 = CLHEP::RandGauss::shoot(0,
value[1]);
81 double value2 = CLHEP::RandGauss::shoot(0,
value[2]);
82 double value3 = CLHEP::RandGauss::shoot(0,
value[3]);
83 double value4 = CLHEP::RandGauss::shoot(0,
value[4]);
84 double value5 = CLHEP::RandGauss::shoot(0,
value[5]);
104 double value0 = CLHEP::RandGauss::shoot(0, constMis);
105 double value1 = CLHEP::RandGauss::shoot(0, constMis);
106 double value2 = CLHEP::RandGauss::shoot(0, constMis);
107 double value3 = CLHEP::RandGauss::shoot(0, dAngle);
108 double value4 = CLHEP::RandGauss::shoot(0, dAngle);
109 double value5 = CLHEP::RandGauss::shoot(0, dAngle);
125 unsigned int nComp =
comp.size();
128 for (
unsigned int i = 0;
i < nComp; ++
i) {
133 int subdetlevel =
id.subdetId();
138 double error0 =
error[0];
139 double error1 =
error[1];
140 double error2 =
error[2];
141 double error3 =
error[3];
142 double error4 =
error[4];
143 double error5 =
error[5];
148 if ((
level <= 2) && (subdetlevel == 3)) {
151 if ((
level == 2) && (nComp == 2)) {
156 if ((
level <= 2) && (subdetlevel == 4)) {
168 if ((
level == 23) && (subdetlevel == 4)) {
176 if ((
level == 22) && (subdetlevel == 4)) {
185 if ((
level <= 2) && (subdetlevel == 5)) {
193 if ((
level == 2) && (nComp == 2)) {
197 if ((
level == 27) && (subdetlevel == 5)) {
206 if ((
level <= 2) && (subdetlevel == 6)) {
209 if ((
level == 2) && (nComp == 2)) {
213 if ((
level == 34) && (subdetlevel == 6)) {
221 if ((
level == 33) && (subdetlevel == 6)) {
229 if ((
level == 32) && (subdetlevel == 6)) {
241 double* errorData = error_Matrix.Array();
242 errorData[0] = error0 * error0;
243 errorData[2] = error1 * error1;
244 errorData[5] = error2 * error2;
245 errorData[9] = error3 * error3;
246 errorData[14] = error4 * error4;
247 errorData[20] = error5 * error5;
279 if ((
level == 37) && (subdetlevel == 1)) {
288 if ((
level == 38) && (subdetlevel == 3)) {
297 if ((
level == 39) && (subdetlevel == 1)) {
306 if ((
level == 7) && (subdetlevel == 1)) {
314 if ((
level == 6) && (subdetlevel == 1)) {
322 if ((
level == 5) && (subdetlevel == 1)) {
330 if ((
level == 4) && (subdetlevel == 1)) {
338 if ((
level == 2) && (subdetlevel == 1)) {
346 if ((
level == 1) && (subdetlevel == 1)) {
355 if ((
level == 13) && (subdetlevel == 2)) {
363 if ((
level == 12) && (subdetlevel == 2)) {
371 if ((
level == 11) && (subdetlevel == 2)) {
379 if ((
level == 10) && (subdetlevel == 2)) {
387 if ((
level == 9) && (subdetlevel == 2)) {
395 if ((
level == 2) && (subdetlevel == 2)) {
403 if ((
level == 1) && (subdetlevel == 2)) {
412 if ((
level == 20) && (subdetlevel == 3)) {
420 if ((
level == 19) && (subdetlevel == 3)) {
428 if ((
level == 18) && (subdetlevel == 3)) {
436 if ((
level == 17) && (subdetlevel == 3)) {
444 if ((
level == 16) && (subdetlevel == 3)) {
452 if ((
level == 15) && (subdetlevel == 3)) {
460 if ((
level == 2) && (subdetlevel == 3)) {
468 if ((
level == 1) && (subdetlevel == 3)) {
477 if ((
level == 25) && (subdetlevel == 4)) {
485 if ((
level == 24) && (subdetlevel == 4)) {
493 if ((
level == 23) && (subdetlevel == 4)) {
501 if ((
level == 22) && (subdetlevel == 4)) {
509 if ((
level == 2) && (subdetlevel == 4)) {
517 if ((
level == 1) && (subdetlevel == 4)) {
526 if ((
level == 30) && (subdetlevel == 5)) {
534 if ((
level == 29) && (subdetlevel == 5)) {
542 if ((
level == 28) && (subdetlevel == 5)) {
550 if ((
level == 27) && (subdetlevel == 5)) {
558 if ((
level == 2) && (subdetlevel == 5)) {
566 if ((
level == 1) && (subdetlevel == 5)) {
575 if ((
level == 36) && (subdetlevel == 6)) {
583 if ((
level == 35) && (subdetlevel == 6)) {
591 if ((
level == 34) && (subdetlevel == 6)) {
595 deltaRW(4) = 0.00005;
596 deltaRW(5) = 0.00005;
597 deltaRW(6) = 0.00005;
599 if ((
level == 33) && (subdetlevel == 6)) {
607 if ((
level == 32) && (subdetlevel == 6)) {
611 deltaRW(4) = 0.00015;
612 deltaRW(5) = 0.00015;
613 deltaRW(6) = 0.00015;
615 if ((
level == 2) && (subdetlevel == 6)) {
623 if ((
level == 1) && (subdetlevel == 6)) {
646 if ((
level == 37) && (subdetlevel == 1)) {
655 if ((
level == 38) && (subdetlevel == 3)) {
664 if ((
level == 39) && (subdetlevel == 1)) {
673 if ((
level == 7) && (subdetlevel == 1)) {
681 if ((
level == 6) && (subdetlevel == 1)) {
689 if ((
level == 5) && (subdetlevel == 1)) {
697 if ((
level == 4) && (subdetlevel == 1)) {
701 deltaRW(4) = 0.00005;
702 deltaRW(5) = 0.00005;
703 deltaRW(6) = 0.00005;
705 if ((
level == 2) && (subdetlevel == 1)) {
713 if ((
level == 1) && (subdetlevel == 1)) {
722 if ((
level == 13) && (subdetlevel == 2)) {
730 if ((
level == 12) && (subdetlevel == 2)) {
734 deltaRW(4) = 0.00015;
735 deltaRW(5) = 0.00015;
736 deltaRW(6) = 0.00015;
738 if ((
level == 11) && (subdetlevel == 2)) {
746 if ((
level == 10) && (subdetlevel == 2)) {
754 if ((
level == 9) && (subdetlevel == 2)) {
762 if ((
level == 2) && (subdetlevel == 2)) {
770 if ((
level == 1) && (subdetlevel == 2)) {
779 if ((
level == 20) && (subdetlevel == 3)) {
787 if ((
level == 19) && (subdetlevel == 3)) {
795 if ((
level == 18) && (subdetlevel == 3)) {
803 if ((
level == 17) && (subdetlevel == 3)) {
811 if ((
level == 16) && (subdetlevel == 3)) {
819 if ((
level == 15) && (subdetlevel == 3)) {
827 if ((
level == 2) && (subdetlevel == 3)) {
835 if ((
level == 1) && (subdetlevel == 3)) {
844 if ((
level == 25) && (subdetlevel == 4)) {
852 if ((
level == 24) && (subdetlevel == 4)) {
860 if ((
level == 23) && (subdetlevel == 4)) {
864 deltaRW(4) = 0.00004;
865 deltaRW(5) = 0.00004;
866 deltaRW(6) = 0.00004;
868 if ((
level == 22) && (subdetlevel == 4)) {
872 deltaRW(4) = 0.00004;
873 deltaRW(5) = 0.00004;
874 deltaRW(6) = 0.00004;
876 if ((
level == 2) && (subdetlevel == 4)) {
884 if ((
level == 1) && (subdetlevel == 4)) {
893 if ((
level == 30) && (subdetlevel == 5)) {
897 deltaRW(4) = 0.00025;
898 deltaRW(5) = 0.00025;
899 deltaRW(6) = 0.00025;
901 if ((
level == 29) && (subdetlevel == 5)) {
909 if ((
level == 28) && (subdetlevel == 5)) {
917 if ((
level == 27) && (subdetlevel == 5)) {
925 if ((
level == 2) && (subdetlevel == 5)) {
933 if ((
level == 1) && (subdetlevel == 5)) {
942 if ((
level == 36) && (subdetlevel == 6)) {
950 if ((
level == 35) && (subdetlevel == 6)) {
958 if ((
level == 34) && (subdetlevel == 6)) {
962 deltaRW(4) = 0.00005;
963 deltaRW(5) = 0.00005;
964 deltaRW(6) = 0.00005;
966 if ((
level == 33) && (subdetlevel == 6)) {
974 if ((
level == 32) && (subdetlevel == 6)) {
978 deltaRW(4) = 0.00015;
979 deltaRW(5) = 0.00015;
980 deltaRW(6) = 0.00015;
982 if ((
level == 2) && (subdetlevel == 6)) {
990 if ((
level == 1) && (subdetlevel == 6)) {
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
void setSurveyErrors(Alignable *)
module which creates/inserts the survey errors
void analyze(const edm::Event &, const edm::EventSetup &) override
Do nothing for each event.
Alignable * mother() const
Return pointer to container alignable (if any)
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
virtual void rotateAroundLocalZ(Scalar radians)
Rotation around local z-axis.
Class to update a given geometry with a set of alignments.
GlobalVector diffR(const GlobalVectors ¤t, const GlobalVectors &nominal)
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.
void applyAlignments(const C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
void setGeometry(Alignable *)
module which modifies the geometry
AlgebraicVector getStructureErrors(int, int)
default values for survey uncertainty
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
#define DEFINE_FWK_MODULE(type)
virtual const Alignables & components() const =0
Return vector of all direct components.
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
const edm::ESGetToken< Alignments, TrackerAlignmentRcd > aliToken_
CLHEP::HepVector AlgebraicVector
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
void setSurvey(const SurveyDet *)
Set survey info.
align::Scalar length() const
virtual void rotateAroundLocalY(Scalar radians)
Rotation around local y-axis.
const edm::ESGetToken< AlignmentErrorsExtended, TrackerAlignmentErrorExtendedRcd > aliErrToken_
std::vector< Alignable * > Alignables
CreateSurveyRcds(const edm::ParameterSet &)
virtual void rotateAroundLocalX(Scalar radians)
Rotation around local x-axis.
math::Error< 6 >::type ErrorMatrix
AlgebraicVector getStructurePlacements(int, int)
default values for assembly precision