CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
SurveyAlignment Class Referenceabstract

#include <SurveyAlignment.h>

Inheritance diagram for SurveyAlignment:
SurveyAlignmentPoints SurveyAlignmentSensor

Public Member Functions

void iterate (unsigned int nIteration, const std::string &fileName, bool bias=false)
 Run the iteration: find residuals, write to output, shift sensors. More...
 
 SurveyAlignment (const align::Alignables &sensors, const std::vector< align::StructureType > &levels)
 Constructor to set the sensors and residual levels. More...
 
virtual ~SurveyAlignment ()
 

Protected Member Functions

virtual void findAlignPars (bool bias=false)=0
 Find the alignment parameters for all sensors. More...
 
virtual void shiftSensors ()
 Apply the alignment parameters to all sensors. More...
 

Protected Attributes

const std::vector< align::StructureType > & theLevels
 
const align::AlignablestheSensors
 

Detailed Description

Alignment using only survey info (no tracks) as a proof of principle.

Date
2007/05/03 20:58:58
Revision
1.4
Author
Chung Khim Lae

Definition at line 16 of file SurveyAlignment.h.

Constructor & Destructor Documentation

SurveyAlignment::SurveyAlignment ( const align::Alignables sensors,
const std::vector< align::StructureType > &  levels 
)

Constructor to set the sensors and residual levels.

Definition at line 9 of file SurveyAlignment.cc.

10  :
11  theSensors(sensors),
13 {
14 }
const align::Alignables & theSensors
const std::vector< align::StructureType > & theLevels
virtual SurveyAlignment::~SurveyAlignment ( )
inlinevirtual

Member Function Documentation

virtual void SurveyAlignment::findAlignPars ( bool  bias = false)
protectedpure virtual

Find the alignment parameters for all sensors.

Implemented in SurveyAlignmentPoints, and SurveyAlignmentSensor.

Referenced by iterate(), and ~SurveyAlignment().

void SurveyAlignment::iterate ( unsigned int  nIteration,
const std::string &  fileName,
bool  bias = false 
)

Run the iteration: find residuals, write to output, shift sensors.

Definition at line 40 of file SurveyAlignment.cc.

References gather_cfg::cout, AlignmentParameters::covariance(), MillePedeFileConverter_cfg::e, findAlignPars(), mps_fire::i, MillePedeFileConverter_cfg::out, AlignmentParameters::parameters(), shiftSensors(), theSensors, RecoTauCleanerPlugins::tolerance, and SurveyOutput::write().

Referenced by ~SurveyAlignment().

43 {
44  static const double tolerance = 1e-4; // convergence criteria
45 
47 
48  out.write(0);
49 
50  for (unsigned int i = 1; i <= nIteration; ++i)
51  {
52  std::cout << "***** Iteration " << i << " *****\n";
53  findAlignPars(bias);
54  shiftSensors();
55  out.write(i);
56 
57  // Check convergence
58 
59  double parChi2 = 0.;
60 
61  unsigned int nSensor = theSensors.size();
62 
63  for (unsigned int j = 0; j < nSensor; ++j)
64  {
65  AlignmentParameters* alignPar = theSensors[j]->alignmentParameters();
66 
67  const AlgebraicVector& par = alignPar->parameters();
68  const AlgebraicSymMatrix& cov = alignPar->covariance();
69 
70  int dummy;
71 
72  parChi2 += cov.inverse(dummy).similarity(par);
73  }
74 
75  parChi2 /= static_cast<double>(nSensor);
76  std::cout << "chi2 = " << parChi2 << std::endl;
77  if (parChi2 < tolerance) break; // converges, so exit loop
78  }
79 }
const align::Alignables & theSensors
virtual void findAlignPars(bool bias=false)=0
Find the alignment parameters for all sensors.
virtual void shiftSensors()
Apply the alignment parameters to all sensors.
const AlgebraicVector & parameters(void) const
Get alignment parameters.
CLHEP::HepVector AlgebraicVector
CLHEP::HepSymMatrix AlgebraicSymMatrix
const AlgebraicSymMatrix & covariance(void) const
Get parameter covariance matrix.
void SurveyAlignment::shiftSensors ( )
protectedvirtual

Apply the alignment parameters to all sensors.

Definition at line 16 of file SurveyAlignment.cc.

References Alignable::alignmentParameters(), particleFlowDisplacedVertex_cfi::angles, mps_fire::i, Alignable::move(), AlignmentParameters::parameters(), align::rectify(), makeMuonMisalignmentScenario::rot, Alignable::rotateInGlobalFrame(), Alignable::surface(), theSensors, AlignableSurface::toGlobal(), and align::toMatrix().

Referenced by iterate(), and ~SurveyAlignment().

17 {
18  unsigned int nSensor = theSensors.size();
19 
20  for (unsigned int i = 0; i < nSensor; ++i)
21  {
22  Alignable* ali = theSensors[i];
23 
24  const AlignableSurface& surf = ali->surface();
25  const AlgebraicVector& pars = ali->alignmentParameters()->parameters();
26 
28 
29  angles(1) = pars[3]; angles(2) = pars[4]; angles(3) = pars[5];
30 
32 
33  rectify(rot); // correct for rounding errors
34 
35  ali->move( surf.toGlobal( align::LocalVector(pars[0], pars[1], pars[2]) ) );
36  ali->rotateInGlobalFrame(rot);
37  }
38 }
const align::Alignables & theSensors
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
Definition: Alignable.h:61
const AlgebraicVector & parameters(void) const
Get alignment parameters.
void rectify(RotationType &)
Correct a rotation matrix for rounding errors.
Definition: Utilities.cc:198
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:135
CLHEP::HepVector AlgebraicVector
AlgebraicVector EulerAngles
Definition: Definitions.h:36
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
Definition: Utilities.cc:42

Member Data Documentation

const std::vector<align::StructureType>& SurveyAlignment::theLevels
protected
const align::Alignables& SurveyAlignment::theSensors
protected