CMS 3D CMS Logo

SurveyAlignment.cc
Go to the documentation of this file.
4 
6 
7 using namespace align;
8 
9 SurveyAlignment::SurveyAlignment(const Alignables& sensors, const std::vector<StructureType>& levels)
10  : theSensors(sensors), theLevels(levels) {}
11 
13  unsigned int nSensor = theSensors.size();
14 
15  for (unsigned int i = 0; i < nSensor; ++i) {
16  Alignable* ali = theSensors[i];
17 
18  const AlignableSurface& surf = ali->surface();
19  const AlgebraicVector& pars = ali->alignmentParameters()->parameters();
20 
22 
23  angles(1) = pars[3];
24  angles(2) = pars[4];
25  angles(3) = pars[5];
26 
28 
29  rectify(rot); // correct for rounding errors
30 
31  ali->move(surf.toGlobal(align::LocalVector(pars[0], pars[1], pars[2])));
33  }
34 }
35 
36 void SurveyAlignment::iterate(unsigned int nIteration, const std::string& fileName, bool bias) {
37  static const double tolerance = 1e-4; // convergence criteria
38 
40 
41  out.write(0);
42 
43  for (unsigned int i = 1; i <= nIteration; ++i) {
44  std::cout << "***** Iteration " << i << " *****\n";
45  findAlignPars(bias);
46  shiftSensors();
47  out.write(i);
48 
49  // Check convergence
50 
51  double parChi2 = 0.;
52 
53  unsigned int nSensor = theSensors.size();
54 
55  for (unsigned int j = 0; j < nSensor; ++j) {
56  AlignmentParameters* alignPar = theSensors[j]->alignmentParameters();
57 
58  const AlgebraicVector& par = alignPar->parameters();
59  const AlgebraicSymMatrix& cov = alignPar->covariance();
60 
61  int dummy;
62 
63  parChi2 += cov.inverse(dummy).similarity(par);
64  }
65 
66  parChi2 /= static_cast<double>(nSensor);
67  std::cout << "chi2 = " << parChi2 << std::endl;
68  if (parChi2 < tolerance)
69  break; // converges, so exit loop
70  }
71 }
Vector3DBase
Definition: Vector3DBase.h:8
TkRotation< Scalar >
mps_fire.i
i
Definition: mps_fire.py:428
align
Definition: AlignableIndexer.h:30
SurveyAlignment::iterate
void iterate(unsigned int nIteration, const std::string &fileName, bool bias=false)
Run the iteration: find residuals, write to output, shift sensors.
Definition: SurveyAlignment.cc:36
Alignable::rotateInGlobalFrame
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
Alignable
Definition: Alignable.h:27
gather_cfg.cout
cout
Definition: gather_cfg.py:144
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
AlignmentParameters
Definition: AlignmentParameters.h:35
SurveyAlignment::SurveyAlignment
SurveyAlignment(const align::Alignables &sensors, const std::vector< align::StructureType > &levels)
Constructor to set the sensors and residual levels.
Definition: SurveyAlignment.cc:9
AlignmentParameters.h
AlgebraicVector
CLHEP::HepVector AlgebraicVector
Definition: AlgebraicObjects.h:13
SurveyAlignment.h
align::rectify
void rectify(RotationType &)
Correct a rotation matrix for rounding errors.
Definition: Utilities.cc:185
AlignableSurface::toGlobal
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
Definition: AlignableSurface.cc:15
Alignable::surface
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:132
SurveyOutput
Definition: SurveyOutput.h:21
tolerance
const double tolerance
Definition: HGCalGeomParameters.cc:29
AlgebraicSymMatrix
CLHEP::HepSymMatrix AlgebraicSymMatrix
Definition: AlgebraicObjects.h:15
align::EulerAngles
AlgebraicVector EulerAngles
Definition: Definitions.h:34
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Alignable::move
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
SurveyAlignment::findAlignPars
virtual void findAlignPars(bool bias=false)=0
Find the alignment parameters for all sensors.
align::Alignables
std::vector< Alignable * > Alignables
Definition: Utilities.h:31
AlignmentParameters::covariance
const AlgebraicSymMatrix & covariance(void) const
Get parameter covariance matrix.
Definition: AlignmentParameters.cc:67
particleFlowDisplacedVertex_cfi.angles
angles
Definition: particleFlowDisplacedVertex_cfi.py:84
AlignableSurface
Definition: AlignableSurface.h:20
SurveyAlignment::theSensors
const align::Alignables & theSensors
Definition: SurveyAlignment.h:38
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
Alignable.h
align::toMatrix
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
Definition: Utilities.cc:34
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
dummy
Definition: DummySelector.h:38
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
AlignmentParameters::parameters
const AlgebraicVector & parameters(void) const
Get alignment parameters.
Definition: AlignmentParameters.cc:64
Alignable::alignmentParameters
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
Definition: Alignable.h:58
SurveyOutput.h
SurveyAlignment::shiftSensors
virtual void shiftSensors()
Apply the alignment parameters to all sensors.
Definition: SurveyAlignment.cc:12
jets_cff.levels
levels
Definition: jets_cff.py:21
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37