CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
TwoBowedSurfacesAlignmentParameters Class Reference

#include <TwoBowedSurfacesAlignmentParameters.h>

Inheritance diagram for TwoBowedSurfacesAlignmentParameters:
AlignmentParameters

Public Types

enum  AlignmentParameterName {
  dx1 = BowedDerivs::dx, dy1 = BowedDerivs::dy, dz1 = BowedDerivs::dz, dslopeX1 = BowedDerivs::dslopeX,
  dslopeY1 = BowedDerivs::dslopeY, drotZ1 = BowedDerivs::drotZ, dsagittaX1 = BowedDerivs::dsagittaX, dsagittaXY1 = BowedDerivs::dsagittaXY,
  dsagittaY1 = BowedDerivs::dsagittaY, dx2 = BowedDerivs::dx + BowedDerivs::N_PARAM, dy2 = BowedDerivs::dy + BowedDerivs::N_PARAM, dz2 = BowedDerivs::dz + BowedDerivs::N_PARAM,
  dslopeX2 = BowedDerivs::dslopeX + BowedDerivs::N_PARAM, dslopeY2 = BowedDerivs::dslopeY + BowedDerivs::N_PARAM, drotZ2 = BowedDerivs::drotZ + BowedDerivs::N_PARAM, dsagittaX2 = BowedDerivs::dsagittaX + BowedDerivs::N_PARAM,
  dsagittaXY2 = BowedDerivs::dsagittaXY + BowedDerivs::N_PARAM, dsagittaY2 = BowedDerivs::dsagittaY + BowedDerivs::N_PARAM, N_PARAM = BowedDerivs::N_PARAM + BowedDerivs::N_PARAM
}
 
typedef BowedSurfaceAlignmentDerivatives BowedDerivs
 Give parameters a name (do not change order, see derivatives(..)!) More...
 
- Public Types inherited from AlignmentParameters
typedef AlignmentParametersData::DataContainer DataContainer
 

Public Member Functions

void apply () override
 apply parameters to alignable More...
 
TwoBowedSurfacesAlignmentParametersclone (const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
 Clone all parameters (for update of parameters) More...
 
TwoBowedSurfacesAlignmentParameterscloneFromSelected (const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
 Clone selected parameters (for update of parameters) More...
 
AlgebraicMatrix derivatives (const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &aliDet) const override
 Get all derivatives. More...
 
virtual void print () const
 print parameters to screen More...
 
 TwoBowedSurfacesAlignmentParameters (Alignable *alignable)
 Constructor with empty parameters/covariance. More...
 
 TwoBowedSurfacesAlignmentParameters (Alignable *alignable, const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix)
 Constructor for full set of parameters. More...
 
 TwoBowedSurfacesAlignmentParameters (Alignable *alignable, const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix, const std::vector< bool > &selection)
 Constructor for selection. More...
 
int type () const override
 tell type (AlignmentParametersFactory::ParametersType - but no circular dependency) More...
 
double ySplit () const
 
 ~TwoBowedSurfacesAlignmentParameters () override
 Destructor. More...
 
- Public Member Functions inherited from AlignmentParameters
Alignablealignable (void) const
 Get pointer to corresponding alignable. More...
 
 AlignmentParameters ()
 Default constructor. More...
 
 AlignmentParameters (Alignable *object, const AlgebraicVector &par, const AlgebraicSymMatrix &cov)
 Constructor from given input. More...
 
 AlignmentParameters (Alignable *object, const AlgebraicVector &par, const AlgebraicSymMatrix &cov, const std::vector< bool > &sel)
 Constructor including selection of active parameters. More...
 
 AlignmentParameters (Alignable *object, const DataContainer &data)
 Constructor. More...
 
const AlgebraicSymMatrixcovariance (void) const
 Get parameter covariance matrix. More...
 
virtual unsigned int hierarchyLevel () const
 
bool isValid (void) const
 Get validity flag. More...
 
int numSelected (void) const
 Get number of selected parameters. More...
 
const AlgebraicVectorparameters (void) const
 Get alignment parameters. More...
 
AlgebraicSymMatrix selectedCovariance (void) const
 Get covariance matrix of selected parameters. More...
 
virtual AlgebraicMatrix selectedDerivatives (const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &alidet) const
 
AlgebraicVector selectedParameters (void) const
 Get selected parameters. More...
 
const std::vector< bool > & selector (void) const
 Get alignment parameter selector vector. More...
 
void setUserVariables (AlignmentUserVariables *auv)
 Set pointer to user variables. More...
 
void setValid (bool v)
 Set validity flag. More...
 
int size (void) const
 Get number of parameters. More...
 
AlignmentUserVariablesuserVariables (void) const
 Get pointer to user variables. More...
 
virtual ~AlignmentParameters ()
 Destructor. More...
 

Private Member Functions

double ySplitFromAlignable (const Alignable *ali) const
 

Private Attributes

double ySplit_
 

Additional Inherited Members

- Protected Member Functions inherited from AlignmentParameters
AlgebraicSymMatrix collapseSymMatrix (const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
 
AlgebraicVector collapseVector (const AlgebraicVector &m, const std::vector< bool > &sel) const
 
AlgebraicSymMatrix expandSymMatrix (const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
 
AlgebraicVector expandVector (const AlgebraicVector &m, const std::vector< bool > &sel) const
 
- Protected Attributes inherited from AlignmentParameters
bool bValid
 True if parameters are valid. More...
 
AlignabletheAlignable
 
DataContainer theData
 
AlignmentUserVariablestheUserVariables
 

Detailed Description

Concrete class for alignment parameters and associated quantities [derived from AlignmentParameters]. The alignable is assumed to have in fact two surfaces devided at a specific local ySplit. The number of parameters N_PARAM is 2x9, i.e. one set of

the half differences of the movements and rotations, to be taken into account, with positive/negative sign, for corrections for the surface at lower/higher y,

Definition at line 43 of file TwoBowedSurfacesAlignmentParameters.h.

Member Typedef Documentation

◆ BowedDerivs

Give parameters a name (do not change order, see derivatives(..)!)

Definition at line 46 of file TwoBowedSurfacesAlignmentParameters.h.

Member Enumeration Documentation

◆ AlignmentParameterName

Enumerator
dx1 
dy1 
dz1 
dslopeX1 
dslopeY1 
drotZ1 
dsagittaX1 
dsagittaXY1 
dsagittaY1 
dx2 
dy2 
dz2 
dslopeX2 
dslopeY2 
drotZ2 
dsagittaX2 
dsagittaXY2 
dsagittaY2 
N_PARAM 

Definition at line 47 of file TwoBowedSurfacesAlignmentParameters.h.

47  {
48  // 1st surface
52  dslopeX1 = BowedDerivs::dslopeX, // NOTE: slope(u) -> halfWidth*tan(beta),
53  dslopeY1 = BowedDerivs::dslopeY, // slope(v) -> halfLength*tan(alpha)
54  drotZ1 = BowedDerivs::drotZ, // rot(w) -> g-scale*gamma
58  // 2nd surface
62  dslopeX2 = BowedDerivs::dslopeX + BowedDerivs::N_PARAM, // NOTE: slope(u) -> k*tan(beta),
63  dslopeY2 = BowedDerivs::dslopeY + BowedDerivs::N_PARAM, // slope(v) -> k*tan(alpha)
64  drotZ2 = BowedDerivs::drotZ + BowedDerivs::N_PARAM, // rot(w) -> m*gamma
68  // number of parameters
70  };

Constructor & Destructor Documentation

◆ TwoBowedSurfacesAlignmentParameters() [1/3]

TwoBowedSurfacesAlignmentParameters::TwoBowedSurfacesAlignmentParameters ( Alignable alignable)

Constructor with empty parameters/covariance.

Definition at line 27 of file TwoBowedSurfacesAlignmentParameters.cc.

Referenced by clone().

◆ TwoBowedSurfacesAlignmentParameters() [2/3]

TwoBowedSurfacesAlignmentParameters::TwoBowedSurfacesAlignmentParameters ( Alignable alignable,
const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
)

Constructor for full set of parameters.

Definition at line 32 of file TwoBowedSurfacesAlignmentParameters.cc.

35  : AlignmentParameters(alignable, parameters, covMatrix), ySplit_(this->ySplitFromAlignable(alignable)) {
36  if (parameters.num_row() != N_PARAM) {
37  throw cms::Exception("BadParameters") << "in TwoBowedSurfacesAlignmentParameters(): " << parameters.num_row()
38  << " instead of " << N_PARAM << " parameters.";
39  }
40 }

References Exception, N_PARAM, and AlignmentParameters::parameters().

◆ TwoBowedSurfacesAlignmentParameters() [3/3]

TwoBowedSurfacesAlignmentParameters::TwoBowedSurfacesAlignmentParameters ( Alignable alignable,
const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix,
const std::vector< bool > &  selection 
)

Constructor for selection.

Definition at line 43 of file TwoBowedSurfacesAlignmentParameters.cc.

48  if (parameters.num_row() != N_PARAM) {
49  throw cms::Exception("BadParameters") << "in TwoBowedSurfacesAlignmentParameters(): " << parameters.num_row()
50  << " instead of " << N_PARAM << " parameters.";
51  }
52 }

References Exception, N_PARAM, and AlignmentParameters::parameters().

◆ ~TwoBowedSurfacesAlignmentParameters()

TwoBowedSurfacesAlignmentParameters::~TwoBowedSurfacesAlignmentParameters ( )
inlineoverride

Destructor.

Definition at line 87 of file TwoBowedSurfacesAlignmentParameters.h.

87 {};

Member Function Documentation

◆ apply()

void TwoBowedSurfacesAlignmentParameters::apply ( )
overridevirtual

apply parameters to alignable

Implements AlignmentParameters.

Definition at line 115 of file TwoBowedSurfacesAlignmentParameters.cc.

115  {
116  Alignable *alignable = this->alignable();
117  if (!alignable) {
118  throw cms::Exception("BadParameters") << "TwoBowedSurfacesAlignmentParameters::apply: parameters without "
119  "alignable";
120  }
121 
122  // Some repeatedly needed variables
123  const AlignableSurface &surface = alignable->surface();
124  const double halfLength = surface.length() * 0.5; // full module
125  const double halfLength1 = (halfLength + ySplit_) * 0.5; // low-y surface
126  const double halfLength2 = (halfLength - ySplit_) * 0.5; // high-y surface
127 
128  // first copy the parameters into separate parts for the two surfaces
129  const AlgebraicVector &params = theData->parameters();
130  std::vector<double> rigidBowPar1(BowedDerivs::N_PARAM); // 1st surface (y < ySplit_)
131  std::vector<double> rigidBowPar2(BowedDerivs::N_PARAM); // 2nd surface (y >= ySplit_)
132  for (unsigned int i = 0; i < BowedDerivs::N_PARAM; ++i) {
133  rigidBowPar1[i] = params[i];
134  rigidBowPar2[i] = params[i + BowedDerivs::N_PARAM];
135  }
136  // Now adjust slopes to angles, note that dslopeX <-> -beta & dslopeY <->
137  // alpha, see BowedSurfaceAlignmentParameters::rotation(): FIXME: use atan?
138  rigidBowPar1[3] = params[dslopeY1] / halfLength1; // alpha1
139  rigidBowPar2[3] = params[dslopeY2] / halfLength2; // alpha2
140  rigidBowPar1[4] = -params[dslopeX1] / (surface.width() * 0.5); // beta1
141  rigidBowPar2[4] = -params[dslopeX2] / (surface.width() * 0.5); // beta2
142  // gamma is simply scaled
143  const double gammaScale1 = BowedDerivs::gammaScale(surface.width(), 2.0 * halfLength1);
144  rigidBowPar1[5] = params[drotZ1] / gammaScale1;
145  // const double gammaScale2 = std::sqrt(halfLength2 * halfLength2
146  // + surface.width() * surface.width()/4.);
147  const double gammaScale2 = BowedDerivs::gammaScale(surface.width(), 2.0 * halfLength2);
148  rigidBowPar2[5] = params[drotZ2] / gammaScale2;
149 
150  // Get rigid body rotations of full module as mean of the two surfaces:
151  align::EulerAngles angles(3); // to become 'common' rotation in local frame
152  for (unsigned int i = 0; i < 3; ++i) {
153  angles[i] = (rigidBowPar1[i + 3] + rigidBowPar2[i + 3]) * 0.5;
154  }
155  // Module rotations are around other axes than the one we determined,
156  // so we have to correct that the surfaces are shifted by the rotation around
157  // the module axis - in linear approximation just an additional shift:
158  const double yMean1 = -halfLength + halfLength1; // y of alpha1 rotation axis in module frame
159  const double yMean2 = halfLength - halfLength2; // y of alpha2 rotation axis in module frame
160  rigidBowPar1[dz1] -= angles[0] * yMean1; // correct w1 for alpha
161  rigidBowPar2[dz1] -= angles[0] * yMean2; // correct w2 for alpha
162  // Nothing for beta1/2 since anyway both around the y-axis of the module.
163  rigidBowPar1[dx1] += angles[2] * yMean1; // correct x1 for gamma
164  rigidBowPar2[dx1] += angles[2] * yMean2; // correct x1 for gamma
165 
166  // Get rigid body shifts of full module as mean of the two surfaces:
167  const align::LocalVector shift((rigidBowPar1[dx1] + rigidBowPar2[dx1]) * 0.5, // dx1!
168  (rigidBowPar1[dy1] + rigidBowPar2[dy1]) * 0.5, // dy1!
169  (rigidBowPar1[dz1] + rigidBowPar2[dz1]) * 0.5); // dz1!
170  // Apply module shift and rotation:
171  alignable->move(surface.toGlobal(shift));
172  // original code:
173  // alignable->rotateInLocalFrame( align::toMatrix(angles) );
174  // correct for rounding errors:
178 
179  // only update the surface deformations if they were selected for alignment
182  // Fill surface structures with mean bows and half differences for all
183  // parameters:
184  std::vector<align::Scalar> deformations;
185  deformations.reserve(13);
186  // first part: average bows
187  deformations.push_back((params[dsagittaX1] + params[dsagittaX2]) * 0.5);
188  deformations.push_back((params[dsagittaXY1] + params[dsagittaXY2]) * 0.5);
189  deformations.push_back((params[dsagittaY1] + params[dsagittaY2]) * 0.5);
190  // second part: half difference of all corrections
191  for (unsigned int i = 0; i < BowedDerivs::N_PARAM; ++i) {
192  // sign means that we have to apply e.g.
193  // - sagittaX for sensor 1: deformations[0] + deformations[9]
194  // - sagittaX for sensor 2: deformations[0] - deformations[9]
195  // - additional dx for sensor 1: deformations[3]
196  // - additional dx for sensor 2: -deformations[3]
197  deformations.push_back((rigidBowPar1[i] - rigidBowPar2[i]) * 0.5);
198  }
199  // finally: keep track of where we have split the module
200  deformations.push_back(ySplit_); // index is 12
201 
202  const TwoBowedSurfacesDeformation deform{deformations};
203 
204  // FIXME: true to propagate down?
205  // Needed for hierarchy with common deformation parameter,
206  // but that is not possible now anyway.
207  alignable->addSurfaceDeformation(&deform, false);
208  }
209 }

References Alignable::addSurfaceDeformation(), AlignmentParameters::alignable(), particleFlowDisplacedVertex_cfi::angles, drotZ1, drotZ2, dsagittaX1, dsagittaX2, dsagittaXY1, dsagittaXY2, dsagittaY1, dsagittaY2, dslopeX1, dslopeX2, dslopeY1, dslopeY2, dx1, dy1, dz1, Exception, BowedSurfaceAlignmentDerivatives::gammaScale(), mps_fire::i, AlignableSurface::length(), Alignable::move(), BowedSurfaceAlignmentDerivatives::N_PARAM, CalibrationSummaryClient_cfi::params, align::rectify(), makeMuonMisalignmentScenario::rot, Alignable::rotateInGlobalFrame(), AlignmentParameters::selector(), edm::shift, Alignable::surface(), AlignmentParameters::theData, AlignableSurface::toGlobal(), align::toMatrix(), AlignableSurface::width(), and ySplit_.

Referenced by heavyIonTools.ConfigureHeavyIons::__call__(), coreTools.RunOnData::__call__(), trackTools.MakeAODTrackCandidates::__call__(), runJetUncertainties.RunJetUncertainties::__call__(), metTools.AddMETCollection::__call__(), heavyIonTools.ProductionDefaults::__call__(), cmsswVersionTools.PickRelValInputFiles::__call__(), coreTools.RemoveMCMatching::__call__(), trackTools.MakePATTrackCandidates::__call__(), trigTools.SwitchOnTrigger::__call__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties::__call__(), heavyIonTools.SelectionDefaults::__call__(), heavyIonTools.DisbaleMonteCarloDeps::__call__(), trigTools.SwitchOnTriggerStandAlone::__call__(), tauTools.AddTauCollection::__call__(), trackTools.MakeTrackCandidates::__call__(), trigTools.SwitchOnTriggerMatching::__call__(), trigTools.SwitchOnTriggerMatchingStandAlone::__call__(), trigTools.SwitchOnTriggerMatchEmbedding::__call__(), jetTools.AddJetCollection::__call__(), jetTools.SwitchJetCollection::__call__(), jetTools.UpdateJetCollection::__call__(), jetTools.AddJetID::__call__(), and jetTools.SetTagInfos::__call__().

◆ clone()

TwoBowedSurfacesAlignmentParameters * TwoBowedSurfacesAlignmentParameters::clone ( const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
) const
overridevirtual

◆ cloneFromSelected()

TwoBowedSurfacesAlignmentParameters * TwoBowedSurfacesAlignmentParameters::cloneFromSelected ( const AlgebraicVector parameters,
const AlgebraicSymMatrix covMatrix 
) const
overridevirtual

Clone selected parameters (for update of parameters)

Implements AlignmentParameters.

Definition at line 68 of file TwoBowedSurfacesAlignmentParameters.cc.

69  {
70  return this->clone(this->expandVector(parameters, this->selector()),
71  this->expandSymMatrix(covMatrix, this->selector()));
72 }

References clone(), AlignmentParameters::expandSymMatrix(), AlignmentParameters::expandVector(), and AlignmentParameters::selector().

◆ derivatives()

AlgebraicMatrix TwoBowedSurfacesAlignmentParameters::derivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr aliDet 
) const
overridevirtual

Get all derivatives.

Implements AlignmentParameters.

Definition at line 75 of file TwoBowedSurfacesAlignmentParameters.cc.

76  {
77  const Alignable *ali = this->alignable(); // Alignable of these parameters
78  AlgebraicMatrix result(N_PARAM, 2); // initialised with zeros
79 
80  if (ali == alidet) {
81  const AlignableSurface &surf = ali->surface();
82 
83  // matrix of dimension BowedDerivs::N_PARAM x 2
84  const AlgebraicMatrix derivs(BowedDerivs()(tsos, surf.width(), surf.length(), true, ySplit_)); // split at ySplit_!
85 
86  // Parameters belong to surface part with y < ySplit_ or y >= ySplit_?
87  const double localY = tsos.localParameters().mixedFormatVector()[4];
88  const unsigned int indexOffset = (localY < ySplit_ ? 0 : dx2);
89  // Copy derivatives to relevant part of result
90  for (unsigned int i = BowedDerivs::dx; i < BowedDerivs::N_PARAM; ++i) {
91  result[indexOffset + i][0] = derivs[i][0];
92  result[indexOffset + i][1] = derivs[i][1];
93  }
94  } else {
95  // The following is even more difficult for
96  // TwoBowedSurfacesAlignmentParameters than for
97  // BowedSurfaceAlignmentParameters where this text comes from:
98  //
99  // We could give this a meaning by applying frame-to-frame derivatives
100  // to the rigid body part of the parameters (be careful that alpha ~=
101  // dslopeY and beta ~= -dslopeX, but with changed scale!) and keep the
102  // surface structure parameters untouched in local meaning. In this way we
103  // could do higher level alignment and determine 'average' surface
104  // structures for the components.
105  throw cms::Exception("MisMatch") << "TwoBowedSurfacesAlignmentParameters::derivatives: The hit "
106  "alignable must match the "
107  << "aligned one (i.e. bowed surface parameters cannot be used for "
108  "composed alignables)\n";
109  }
110 
111  return result;
112 }

References AlignmentParameters::alignable(), BowedSurfaceAlignmentDerivatives::dx, dx2, Exception, mps_fire::i, AlignableSurface::length(), TrajectoryStateOnSurface::localParameters(), phase1PixelTopology::localY(), LocalTrajectoryParameters::mixedFormatVector(), BowedSurfaceAlignmentDerivatives::N_PARAM, N_PARAM, mps_fire::result, Alignable::surface(), AlignableSurface::width(), and ySplit_.

◆ print()

void TwoBowedSurfacesAlignmentParameters::print ( void  ) const
virtual

print parameters to screen

Definition at line 215 of file TwoBowedSurfacesAlignmentParameters.cc.

215  {
216  std::cout << "Contents of TwoBowedSurfacesAlignmentParameters:"
217  << "\nParameters: " << theData->parameters() << "\nCovariance: " << theData->covariance() << std::endl;
218 }

References gather_cfg::cout, and AlignmentParameters::theData.

◆ type()

int TwoBowedSurfacesAlignmentParameters::type ( ) const
overridevirtual

◆ ySplit()

double TwoBowedSurfacesAlignmentParameters::ySplit ( ) const
inline

Definition at line 105 of file TwoBowedSurfacesAlignmentParameters.h.

105 { return ySplit_; }

References ySplit_.

Referenced by ParametersToParametersDerivatives::init2BowedRigid().

◆ ySplitFromAlignable()

double TwoBowedSurfacesAlignmentParameters::ySplitFromAlignable ( const Alignable ali) const
private

Definition at line 221 of file TwoBowedSurfacesAlignmentParameters.cc.

221  {
222  if (!ali)
223  return 0.;
224 
225  const align::PositionType pos(ali->globalPosition());
226  const double r = pos.perp();
227 
228  // The returned numbers for TEC are calculated as stated below from
229  // what is found in CMS-NOTE 2003/20.
230  // Note that at that time it was planned to use ST sensors for the outer TEC
231  // while in the end there are only a few of them in the tracker - the others
232  // are HPK. No idea whether there are subtle changes in geometry. The numbers
233  // have been cross checked with y-residuals in data, see
234  // https://hypernews.cern.ch/HyperNews/CMS/get/recoTracking/1018/1/1/2/1/1/1/2/1.html.
235 
236  if (r < 58.) { // Pixel, TIB, TID or TEC ring 1-4
237  edm::LogError("Alignment") << "@SUB=TwoBowedSurfacesAlignmentParameters::ySplitFromAlignable"
238  << "There are no split modules for radii < 58, but r = " << r;
239  return 0.;
240  } else if (fabs(pos.z()) < 118.) { // TOB
241  return 0.;
242  } else if (r > 90.) { // TEC ring 7
243  // W7a Height active= 106.900mm (Tab. 2) (but 106.926 mm p. 40!?)
244  // W7a R min active = 888.400mm (Paragraph 5.5.7)
245  // W7a R max active = W7a R min active + W7a Height active =
246  // = 888.400mm + 106.900mm = 995.300mm
247  // W7b Height active= 94.900mm (Tab. 2) (but 94.876 mm p. 41!?)
248  // W7b R min active = 998.252mm (Paragraph 5.5.8)
249  // W7b R max active = 998.252mm + 94.900mm = 1093.152mm
250  // mean radius module = 0.5*(1093.152mm + 888.400mm) = 990.776mm
251  // mean radius gap = 0.5*(998.252mm + 995.300mm) = 996.776mm
252  // ySplit = (mean radius gap - mean radius module) // local y and r have
253  // same directions!
254  // = 996.776mm - 990.776mm = 6mm
255  return 0.6;
256  } else if (r > 75.) { // TEC ring 6
257  // W6a Height active= 96.100mm (Tab. 2) (but 96.136 mm p. 38!?)
258  // W6a R min active = 727.000mm (Paragraph 5.5.5)
259  // W6a R max active = W6a R min active + W6a Height active =
260  // = 727.000mm + 96.100mm = 823.100mm
261  // W6b Height active= 84.900mm (Tab. 2) (but 84.936 mm p. 39!?)
262  // W6b R min active = 826.060mm (Paragraph 5.5.6)
263  // W6b R max active = 826.060mm + 84.900mm = 910.960mm
264  // mean radius module = 0.5*(910.960mm + 727.000mm) = 818.980mm
265  // mean radius gap = 0.5*(826.060mm + 823.100mm) = 824.580mm
266  // -1: local y and r have opposite directions!
267  // ySplit = -1*(mean radius gap - mean radius module)
268  // = -1*(824.580mm - 818.980mm) = -5.6mm
269  return -0.56;
270  } else { // TEC ring 5 - smaller radii alreay excluded before
271  // W5a Height active= 81.200mm (Tab. 2) (but 81.169 mm p. 36!?)
272  // W5a R min active = 603.200mm (Paragraph 5.5.3)
273  // W5a R max active = W5a R min active + W5a Height active =
274  // = 603.200mm + 81.200mm = 684.400mm
275  // W5b Height active= 63.200mm (Tab. 2) (63.198 mm on p. 37)
276  // W5b R min active = 687.293mm (Abschnitt 5.5.4 der note)
277  // W5b R max active = 687.293mm + 63.200mm = 750.493mm
278  // mean radius module = 0.5*(750.493mm + 603.200mm) = 676.8465mm
279  // mean radius gap = 0.5*(687.293mm + 684.400mm) = 685.8465mm
280  // -1: local y and r have opposite directions!
281  // ySplit = -1*(mean radius gap - mean radius module)
282  // = -1*(685.8465mm - 676.8465mm) = -9mm
283  return -0.9;
284  }
285  // return 0.;
286 }

References Alignable::globalPosition(), and alignCSCRings::r.

Member Data Documentation

◆ ySplit_

double TwoBowedSurfacesAlignmentParameters::ySplit_
private

Definition at line 110 of file TwoBowedSurfacesAlignmentParameters.h.

Referenced by apply(), derivatives(), and ySplit().

Vector3DBase
Definition: Vector3DBase.h:8
TwoBowedSurfacesAlignmentParameters::dsagittaXY1
Definition: TwoBowedSurfacesAlignmentParameters.h:56
TwoBowedSurfacesAlignmentParameters::drotZ1
Definition: TwoBowedSurfacesAlignmentParameters.h:54
AlignmentParameters::expandVector
AlgebraicVector expandVector(const AlgebraicVector &m, const std::vector< bool > &sel) const
Definition: AlignmentParameters.cc:215
TkRotation< Scalar >
mps_fire.i
i
Definition: mps_fire.py:428
BowedSurfaceAlignmentDerivatives::gammaScale
static double gammaScale(double width, double splitLength)
Definition: BowedSurfaceAlignmentDerivatives.cc:88
AlignmentParameters::theData
DataContainer theData
Definition: AlignmentParameters.h:123
BowedSurfaceAlignmentDerivatives::dz
Definition: BowedSurfaceAlignmentDerivatives.h:30
TwoBowedSurfacesAlignmentParameters::dsagittaXY2
Definition: TwoBowedSurfacesAlignmentParameters.h:66
TwoBowedSurfacesAlignmentParameters::dsagittaY2
Definition: TwoBowedSurfacesAlignmentParameters.h:67
phase1PixelTopology::localY
constexpr uint16_t localY(uint16_t py)
Definition: phase1PixelTopology.h:151
BowedSurfaceAlignmentDerivatives::N_PARAM
Definition: BowedSurfaceAlignmentDerivatives.h:37
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
Alignable::rotateInGlobalFrame
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
Alignable
Definition: Alignable.h:27
gather_cfg.cout
cout
Definition: gather_cfg.py:144
pos
Definition: PixelAliasList.h:18
TwoBowedSurfacesAlignmentParameters::dy1
Definition: TwoBowedSurfacesAlignmentParameters.h:50
AlignmentParameters::userVariables
AlignmentUserVariables * userVariables(void) const
Get pointer to user variables.
Definition: AlignmentParameters.cc:101
TwoBowedSurfacesAlignmentParameters::dslopeX1
Definition: TwoBowedSurfacesAlignmentParameters.h:52
AlignableSurface::length
align::Scalar length() const
Definition: AlignableSurface.h:32
AlignmentParameters::isValid
bool isValid(void) const
Get validity flag.
Definition: AlignmentParameters.cc:134
AlignmentParametersFactory::kTwoBowedSurfaces
Definition: AlignmentParametersFactory.h:28
TwoBowedSurfacesAlignmentParameters::dslopeY1
Definition: TwoBowedSurfacesAlignmentParameters.h:53
BowedSurfaceAlignmentDerivatives::dsagittaX
Definition: BowedSurfaceAlignmentDerivatives.h:34
AlgebraicVector
CLHEP::HepVector AlgebraicVector
Definition: AlgebraicObjects.h:13
BowedSurfaceAlignmentDerivatives::dslopeX
Definition: BowedSurfaceAlignmentDerivatives.h:31
corrVsCorr.selection
selection
main part
Definition: corrVsCorr.py:100
TwoBowedSurfacesAlignmentParameters::dslopeY2
Definition: TwoBowedSurfacesAlignmentParameters.h:63
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
Point3DBase< Scalar, GlobalTag >
TwoBowedSurfacesAlignmentParameters::dx2
Definition: TwoBowedSurfacesAlignmentParameters.h:59
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition: TrajectoryStateOnSurface.h:73
BowedSurfaceAlignmentDerivatives::dx
Definition: BowedSurfaceAlignmentDerivatives.h:28
TwoBowedSurfacesAlignmentParameters::ySplit_
double ySplit_
Definition: TwoBowedSurfacesAlignmentParameters.h:110
BowedSurfaceAlignmentDerivatives::drotZ
Definition: BowedSurfaceAlignmentDerivatives.h:33
AlignmentParameters::AlignmentParameters
AlignmentParameters()
Default constructor.
Definition: AlignmentParameters.cc:9
TwoBowedSurfacesAlignmentParameters::dy2
Definition: TwoBowedSurfacesAlignmentParameters.h:60
TwoBowedSurfacesDeformation
Definition: TwoBowedSurfacesDeformation.h:19
TwoBowedSurfacesAlignmentParameters::drotZ2
Definition: TwoBowedSurfacesAlignmentParameters.h:64
TwoBowedSurfacesAlignmentParameters
Definition: TwoBowedSurfacesAlignmentParameters.h:43
TwoBowedSurfacesAlignmentParameters::dz1
Definition: TwoBowedSurfacesAlignmentParameters.h:51
AlgebraicSymMatrix
CLHEP::HepSymMatrix AlgebraicSymMatrix
Definition: AlgebraicObjects.h:15
LocalTrajectoryParameters::mixedFormatVector
AlgebraicVector5 mixedFormatVector() const
Definition: LocalTrajectoryParameters.h:135
BowedSurfaceAlignmentDerivatives::dsagittaXY
Definition: BowedSurfaceAlignmentDerivatives.h:35
TwoBowedSurfacesAlignmentParameters::clone
TwoBowedSurfacesAlignmentParameters * clone(const AlgebraicVector &parameters, const AlgebraicSymMatrix &covMatrix) const override
Clone all parameters (for update of parameters)
Definition: TwoBowedSurfacesAlignmentParameters.cc:55
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
AlignmentParameters::expandSymMatrix
AlgebraicSymMatrix expandSymMatrix(const AlgebraicSymMatrix &m, const std::vector< bool > &sel) const
Definition: AlignmentParameters.cc:190
align::EulerAngles
AlgebraicVector EulerAngles
Definition: Definitions.h:34
TwoBowedSurfacesAlignmentParameters::dslopeX2
Definition: TwoBowedSurfacesAlignmentParameters.h:62
Alignable::move
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
TwoBowedSurfacesAlignmentParameters::TwoBowedSurfacesAlignmentParameters
TwoBowedSurfacesAlignmentParameters(Alignable *alignable)
Constructor with empty parameters/covariance.
Definition: TwoBowedSurfacesAlignmentParameters.cc:27
alignCSCRings.r
r
Definition: alignCSCRings.py:93
TwoBowedSurfacesAlignmentParameters::BowedDerivs
BowedSurfaceAlignmentDerivatives BowedDerivs
Give parameters a name (do not change order, see derivatives(..)!)
Definition: TwoBowedSurfacesAlignmentParameters.h:46
TwoBowedSurfacesAlignmentParameters::dsagittaX2
Definition: TwoBowedSurfacesAlignmentParameters.h:65
TwoBowedSurfacesAlignmentParameters::N_PARAM
Definition: TwoBowedSurfacesAlignmentParameters.h:69
AlgebraicMatrix
CLHEP::HepMatrix AlgebraicMatrix
Definition: AlgebraicObjects.h:14
particleFlowDisplacedVertex_cfi.angles
angles
Definition: particleFlowDisplacedVertex_cfi.py:84
AlignmentParameters::setValid
void setValid(bool v)
Set validity flag.
Definition: AlignmentParameters.cc:137
edm::shift
static unsigned const int shift
Definition: LuminosityBlockID.cc:7
AlignableSurface
Definition: AlignableSurface.h:20
AlignableSurface::width
align::Scalar width() const
Definition: AlignableSurface.h:30
BowedSurfaceAlignmentDerivatives::dslopeY
Definition: BowedSurfaceAlignmentDerivatives.h:32
Exception
Definition: hltDiff.cc:245
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
TwoBowedSurfacesAlignmentParameters::dsagittaY1
Definition: TwoBowedSurfacesAlignmentParameters.h:57
TwoBowedSurfacesAlignmentParameters::dx1
Definition: TwoBowedSurfacesAlignmentParameters.h:49
align::toMatrix
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
Definition: Utilities.cc:34
AlignmentParameters::alignable
Alignable * alignable(void) const
Get pointer to corresponding alignable.
Definition: AlignmentParameters.cc:104
AlignmentParameters::selector
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
Definition: AlignmentParameters.cc:48
mps_fire.result
result
Definition: mps_fire.py:311
TwoBowedSurfacesAlignmentParameters::ySplitFromAlignable
double ySplitFromAlignable(const Alignable *ali) const
Definition: TwoBowedSurfacesAlignmentParameters.cc:221
Alignable::globalPosition
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:135
AlignmentParameters::parameters
const AlgebraicVector & parameters(void) const
Get alignment parameters.
Definition: AlignmentParameters.cc:64
BowedSurfaceAlignmentDerivatives::dy
Definition: BowedSurfaceAlignmentDerivatives.h:29
Alignable::addSurfaceDeformation
virtual void addSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown)=0
BowedSurfaceAlignmentDerivatives::dsagittaY
Definition: BowedSurfaceAlignmentDerivatives.h:36
TwoBowedSurfacesAlignmentParameters::dz2
Definition: TwoBowedSurfacesAlignmentParameters.h:61
TwoBowedSurfacesAlignmentParameters::dsagittaX1
Definition: TwoBowedSurfacesAlignmentParameters.h:55
AlignmentParameters::setUserVariables
void setUserVariables(AlignmentUserVariables *auv)
Set pointer to user variables.
Definition: AlignmentParameters.cc:94