CMS 3D CMS Logo

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

Builds a scenario from configuration and applies it to the alignable Muon. More...

#include <MuonScenarioBuilder.h>

Inheritance diagram for MuonScenarioBuilder:
MisalignmentScenarioBuilder

Public Member Functions

void applyScenario (const edm::ParameterSet &scenario) override
 Apply misalignment scenario to the Muon. More...
 
align::Scalars extractParameters (const edm::ParameterSet &, const char *)
 
void moveChamberInSector (Alignable *, const align::Scalars &, const align::Scalars &, const align::Scalars &, const align::Scalars &)
 
void moveCSCSectors (const edm::ParameterSet &scenario)
 this special method allows to move a CSCsector by a same amount More...
 
void moveDTSectors (const edm::ParameterSet &scenario)
 This special method allows to move a DTsector by a same amount. More...
 
void moveMuon (const edm::ParameterSet &scenario)
 this special method allows to move the complete muon system by a same amount More...
 
 MuonScenarioBuilder (Alignable *alignable)
 Constructor. More...
 
 ~MuonScenarioBuilder () override
 Destructor. More...
 
- Public Member Functions inherited from MisalignmentScenarioBuilder
 MisalignmentScenarioBuilder (AlignableObjectId::Geometry)
 Constructor. More...
 
virtual ~MisalignmentScenarioBuilder ()=default
 Destructor. More...
 

Private Attributes

AlignableMuontheAlignableMuon
 Pointer to alignable Muon object. More...
 
AlignableModifier theMuonModifier
 

Additional Inherited Members

- Protected Member Functions inherited from MisalignmentScenarioBuilder
void applyMovements_ (Alignable *alignable, const edm::ParameterSet &pSet)
 Apply movements given by parameter set to given alignable. More...
 
void decodeMovements_ (const edm::ParameterSet &, const align::Alignables &)
 Decode movements defined in given parameter set for given set of alignables. More...
 
void decodeMovements_ (const edm::ParameterSet &, const align::Alignables &, const std::string &levelName)
 Decode movements defined in given parameter set for given set of alignables tagged by given name. More...
 
edm::ParameterSet getParameterSet_ (const std::string &levelName, int iComponent, const edm::ParameterSet &pSet) const
 
edm::ParameterSet getParameterSet_ (const std::string &name, const edm::ParameterSet &pSet) const
 
bool hasParameter_ (const std::string &name, const edm::ParameterSet &pSet) const
 Check if given parameter exists in parameter set. More...
 
virtual bool isTopLevel_ (const std::string &parameterSetName) const
 Check if given parameter is for a top-level structure. More...
 
void mergeParameters_ (edm::ParameterSet &localSet, const edm::ParameterSet &globalSet) const
 Merge two sets of parameters into one (the first argument) More...
 
virtual bool possiblyPartOf (const std::string &subStruct, const std::string &largeStruct) const
 
void printParameters_ (const edm::ParameterSet &pSet, const bool showPsets=false) const
 Print all parameters and values for given set. More...
 
void propagateParameters_ (const edm::ParameterSet &pSet, const std::string &globalName, edm::ParameterSet &subSet) const
 Propagate global parameters to sub-parameters. More...
 
const std::string rootName_ (const std::string &parameterSetName) const
 Get root name of a parameter set (e.g. 'Rod' in 'Rods' or 'Rod1') More...
 
- Protected Attributes inherited from MisalignmentScenarioBuilder
std::string indent_
 Depth in hierarchy. More...
 
AlignableModifier theModifier
 Helper class for random movements. More...
 
int theModifierCounter {0}
 Counter for applied modification. More...
 
edm::ParameterSet theScenario
 Misalignment scenario to apply (from config file) More...
 

Detailed Description

Builds a scenario from configuration and applies it to the alignable Muon.

The misalignment scenario builder.

Date
2009/09/15 17:09:58
Revision
1.5
Author
Andre Sznajder - UERJ(Brazil)

Definition at line 19 of file MuonScenarioBuilder.h.

Constructor & Destructor Documentation

◆ MuonScenarioBuilder()

MuonScenarioBuilder::MuonScenarioBuilder ( Alignable alignable)
explicit

Constructor.

Definition at line 25 of file MuonScenarioBuilder.cc.

26  : // muon alignable IDs are (currently) independent of the geometry
28  theAlignableMuon = dynamic_cast<AlignableMuon*>(alignable);
29 
30  if (!theAlignableMuon)
31  throw cms::Exception("TypeMismatch") << "Argument is not an AlignableMuon";
32 }

References Exception, and theAlignableMuon.

◆ ~MuonScenarioBuilder()

MuonScenarioBuilder::~MuonScenarioBuilder ( )
inlineoverride

Destructor.

Definition at line 25 of file MuonScenarioBuilder.h.

25 {};

Member Function Documentation

◆ applyScenario()

void MuonScenarioBuilder::applyScenario ( const edm::ParameterSet scenario)
overridevirtual

Apply misalignment scenario to the Muon.

Implements MisalignmentScenarioBuilder.

Definition at line 35 of file MuonScenarioBuilder.cc.

35  {
36  // Apply the scenario to all main components of Muon.
39 
40  // Seed is set at top-level, and is mandatory
41  if (this->hasParameter_("seed", theScenario))
42  theModifier.setSeed(static_cast<long>(theScenario.getParameter<int>("seed")));
43  else
44  throw cms::Exception("BadConfig") << "No generator seed defined!";
45 
46  // DT Barrel
47  const auto& dtBarrel = theAlignableMuon->DTBarrel();
48  this->decodeMovements_(theScenario, dtBarrel, "DTBarrel");
49  // CSC Endcap
50  const auto& cscEndcaps = theAlignableMuon->CSCEndcaps();
51  this->decodeMovements_(theScenario, cscEndcaps, "CSCEndcap");
52 
55  this->moveMuon(theScenario);
56 
57  edm::LogInfo("TrackerScenarioBuilder") << "Applied modifications to " << theModifierCounter << " alignables";
58 }

References AlignableMuon::CSCEndcaps(), MisalignmentScenarioBuilder::decodeMovements_(), AlignableMuon::DTBarrel(), Exception, edm::ParameterSet::getParameter(), MisalignmentScenarioBuilder::hasParameter_(), moveCSCSectors(), moveDTSectors(), moveMuon(), AlignableModifier::setSeed(), theAlignableMuon, MisalignmentScenarioBuilder::theModifier, MisalignmentScenarioBuilder::theModifierCounter, and MisalignmentScenarioBuilder::theScenario.

Referenced by MuonMisalignedProducer::analyze(), MuonGeometryDBConverter::analyze(), and AlignmentProducerBase::applyMisalignment().

◆ extractParameters()

align::Scalars MuonScenarioBuilder::extractParameters ( const edm::ParameterSet pSet,
const char *  blockId 
)

Definition at line 60 of file MuonScenarioBuilder.cc.

60  {
61  double scale_ = 0, scaleError_ = 0, phiX_ = 0, phiY_ = 0, phiZ_ = 0;
62  double dX_ = 0, dY_ = 0, dZ_ = 0;
63  std::string distribution_;
64  std::ostringstream error;
66  std::vector<std::string> parameterNames = Parameters.getParameterNames();
67  for (std::vector<std::string>::iterator iParam = parameterNames.begin(); iParam != parameterNames.end(); iParam++) {
68  if ((*iParam) == "scale")
69  scale_ = Parameters.getParameter<double>(*iParam);
70  else if ((*iParam) == "distribution")
71  distribution_ = Parameters.getParameter<std::string>(*iParam);
72  else if ((*iParam) == "scaleError")
73  scaleError_ = Parameters.getParameter<double>(*iParam);
74  else if ((*iParam) == "phiX")
75  phiX_ = Parameters.getParameter<double>(*iParam);
76  else if ((*iParam) == "phiY")
77  phiY_ = Parameters.getParameter<double>(*iParam);
78  else if ((*iParam) == "phiZ")
79  phiZ_ = Parameters.getParameter<double>(*iParam);
80  else if ((*iParam) == "dX")
81  dX_ = Parameters.getParameter<double>(*iParam);
82  else if ((*iParam) == "dY")
83  dY_ = Parameters.getParameter<double>(*iParam);
84  else if ((*iParam) == "dZ")
85  dZ_ = Parameters.getParameter<double>(*iParam);
86  else if (Parameters.retrieve(*iParam).typeCode() != 'P') { // Add unknown parameter to list
87  if (!error.str().length())
88  error << "Unknown parameter name(s): ";
89  error << " " << *iParam;
90  }
91  }
92  align::Scalars param;
93  param.push_back(scale_);
94  param.push_back(scaleError_);
95  param.push_back(phiX_);
96  param.push_back(phiY_);
97  param.push_back(phiZ_);
98  param.push_back(dX_);
99  param.push_back(dY_);
100  param.push_back(dZ_);
101  if (distribution_ == "gaussian")
102  param.push_back(0);
103  else if (distribution_ == "flat")
104  param.push_back(1);
105  else if (distribution_ == "fix")
106  param.push_back(2);
107 
108  return param;
109 }

References relativeConstraints::error, MisalignmentScenarioBuilder::getParameterSet_(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by moveCSCSectors(), moveDTSectors(), and moveMuon().

◆ moveChamberInSector()

void MuonScenarioBuilder::moveChamberInSector ( Alignable chamber,
const align::Scalars _disp,
const align::Scalars rotation,
const align::Scalars dispError,
const align::Scalars rotationError 
)

Definition at line 391 of file MuonScenarioBuilder.cc.

395  {
396  align::Scalars disp = _disp;
397  align::RotationType rotx(Basic3DVector<double>(1.0, 0.0, 0.0), rotation[0]);
398  align::RotationType roty(Basic3DVector<double>(0.0, 1.0, 0.0), rotation[1]);
399  align::RotationType rotz(Basic3DVector<double>(0.0, 0.0, 1.0), rotation[2]);
400  align::RotationType rot = rotz * roty * rotx;
401  align::GlobalPoint pos = chamber->globalPosition();
402  align::GlobalPoint dispRot(pos.basicVector() - rot * pos.basicVector());
403  disp[0] += dispRot.x();
404  disp[1] += dispRot.y();
405  disp[2] += dispRot.z();
406  theMuonModifier.moveAlignable(chamber, false, true, disp[0], disp[1], disp[2]);
408  theMuonModifier.addAlignmentPositionError(chamber, dispError[0], dispError[1], dispError[2]);
409  theMuonModifier.addAlignmentPositionErrorFromRotation(chamber, rotationError[0], rotationError[1], rotationError[2]);
410 }

References AlignableModifier::addAlignmentPositionError(), AlignableModifier::addAlignmentPositionErrorFromRotation(), relativeConstraints::chamber, AlignableModifier::moveAlignable(), makeMuonMisalignmentScenario::rot, AlignableModifier::rotateAlignable(), idealTransformation::rotation, theMuonModifier, and PV3DBase< T, PVType, FrameType >::x().

Referenced by moveCSCSectors(), and moveDTSectors().

◆ moveCSCSectors()

void MuonScenarioBuilder::moveCSCSectors ( const edm::ParameterSet scenario)

this special method allows to move a CSCsector by a same amount

Definition at line 202 of file MuonScenarioBuilder.cc.

202  {
203  const auto& CSCchambers = theAlignableMuon->CSCChambers();
204  //Take Parameters
205  align::Scalars param = this->extractParameters(pSet, "CSCSectors");
206  double scale_ = param[0];
207  double scaleError_ = param[1];
208  double phiX_ = param[2];
209  double phiY_ = param[3];
210  double phiZ_ = param[4];
211  double dX_ = param[5];
212  double dY_ = param[6];
213  double dZ_ = param[7];
214  double dist_ = param[8];
215 
216  double dx = scale_ * dX_;
217  double dy = scale_ * dY_;
218  double dz = scale_ * dZ_;
219  double phix = scale_ * phiX_;
220  double phiy = scale_ * phiY_;
221  double phiz = scale_ * phiZ_;
222  double errorx = scaleError_ * dX_;
223  double errory = scaleError_ * dY_;
224  double errorz = scaleError_ * dZ_;
225  double errorphix = scaleError_ * phiX_;
226  double errorphiy = scaleError_ * phiY_;
227  double errorphiz = scaleError_ * phiZ_;
228  align::Scalars errorDisp;
229  errorDisp.push_back(errorx);
230  errorDisp.push_back(errory);
231  errorDisp.push_back(errorz);
232  align::Scalars errorRotation;
233  errorRotation.push_back(errorphix);
234  errorRotation.push_back(errorphiy);
235  errorRotation.push_back(errorphiz);
236 
237  int index[2][4][4][36];
238  int sector_index[2][4][4][36];
239  std::fill_n(index[0][0][0], 2 * 4 * 4 * 36, -1); // initialize to -1
240  std::fill_n(sector_index[0][0][0], 2 * 4 * 4 * 36, -1); // initialize to -1
241  int counter = 0;
242  //Create an index for the chambers in the alignable vector
243  for (const auto& iter : CSCchambers) {
244  CSCDetId myId(iter->geomDetId().rawId());
245  index[myId.endcap() - 1][myId.station() - 1][myId.ring() - 1][myId.chamber() - 1] = counter;
246  sector_index[myId.endcap() - 1][myId.station() - 1][myId.ring() - 1][myId.chamber() - 1] =
249  myId.station());
250  counter++;
251  }
252  for (int endcap = 0; endcap < 2; endcap++) {
253  for (int ring = 0; ring < 2; ring++) {
254  for (int sector = 1; sector < 7; sector++) {
255  align::Scalars disp;
257  if (dist_ == 0) {
258  const std::vector<float> disp_ = theMuonModifier.gaussianRandomVector(dx, dy, dz);
259  const std::vector<float> rotation_ = theMuonModifier.gaussianRandomVector(phix, phiy, phiz);
260  disp.push_back(disp_[0]);
261  disp.push_back(disp_[1]);
262  disp.push_back(disp_[2]);
263  rotation.push_back(rotation_[0]);
264  rotation.push_back(rotation_[1]);
265  rotation.push_back(rotation_[2]);
266  } else if (dist_ == 1) {
267  const std::vector<float> disp_ = theMuonModifier.flatRandomVector(dx, dy, dz);
268  const std::vector<float> rotation_ = theMuonModifier.flatRandomVector(phix, phiy, phiz);
269  disp.push_back(disp_[0]);
270  disp.push_back(disp_[1]);
271  disp.push_back(disp_[2]);
272  rotation.push_back(rotation_[0]);
273  rotation.push_back(rotation_[1]);
274  rotation.push_back(rotation_[2]);
275  } else {
276  disp.push_back(dx);
277  disp.push_back(dy);
278  disp.push_back(dz);
279  rotation.push_back(phix);
280  rotation.push_back(phiy);
281  rotation.push_back(phiz);
282  }
283  //Different cases are considered in order to fit endcap geometry
284  for (int station = 0; station < 4; station++) {
285  if (station == 0) {
286  int r_ring[2];
287  if (ring == 0) {
288  r_ring[0] = 0;
289  r_ring[1] = 3;
290  } else {
291  r_ring[0] = 1;
292  r_ring[1] = 2;
293  }
294  for (int r_counter = 0; r_counter < 2; r_counter++) {
295  for (int chamber = 0; chamber < 36; chamber++) {
296  if (sector == (sector_index[endcap][station][r_ring[r_counter]][chamber] + 1) / 2) {
297  Alignable* myAlign = CSCchambers.at(index[endcap][station][r_ring[r_counter]][chamber]);
298  this->moveChamberInSector(myAlign, disp, rotation, errorDisp, errorRotation);
299  }
300  }
301  }
302  } else if (station == 3 && ring == 1) {
303  continue;
304  } else {
305  for (int chamber = 0; chamber < 36; chamber++) {
306  if (ring == 0 && chamber > 17)
307  continue;
308  if (sector == sector_index[endcap][station][ring][chamber]) {
309  Alignable* myAlign = CSCchambers.at(index[endcap][station][ring][chamber]);
310  this->moveChamberInSector(myAlign, disp, rotation, errorDisp, errorRotation);
311  }
312  }
313  }
314  }
315  }
316  }
317  }
318 }

References relativeConstraints::chamber, counter, AlignableMuon::CSCChambers(), PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, makeMuonMisalignmentScenario::endcap, extractParameters(), AlignableModifier::flatRandomVector(), AlignableModifier::gaussianRandomVector(), moveChamberInSector(), relativeConstraints::ring, idealTransformation::rotation, CSCTriggerNumbering::sectorFromTriggerLabels(), relativeConstraints::station, theAlignableMuon, theMuonModifier, CSCTriggerNumbering::triggerSectorFromLabels(), and CSCTriggerNumbering::triggerSubSectorFromLabels().

Referenced by applyScenario().

◆ moveDTSectors()

void MuonScenarioBuilder::moveDTSectors ( const edm::ParameterSet scenario)

This special method allows to move a DTsector by a same amount.

Definition at line 112 of file MuonScenarioBuilder.cc.

112  {
113  const auto& DTchambers = theAlignableMuon->DTChambers();
114  //Take parameters
115  align::Scalars param = this->extractParameters(pSet, "DTSectors");
116  double scale_ = param[0];
117  double scaleError_ = param[1];
118  double phiX_ = param[2];
119  double phiY_ = param[3];
120  double phiZ_ = param[4];
121  double dX_ = param[5];
122  double dY_ = param[6];
123  double dZ_ = param[7];
124  double dist_ = param[8];
125 
126  double dx = scale_ * dX_;
127  double dy = scale_ * dY_;
128  double dz = scale_ * dZ_;
129  double phix = scale_ * phiX_;
130  double phiy = scale_ * phiY_;
131  double phiz = scale_ * phiZ_;
132  double errorx = scaleError_ * dX_;
133  double errory = scaleError_ * dY_;
134  double errorz = scaleError_ * dZ_;
135  double errorphix = scaleError_ * phiX_;
136  double errorphiy = scaleError_ * phiY_;
137  double errorphiz = scaleError_ * phiZ_;
138  align::Scalars errorDisp;
139  errorDisp.push_back(errorx);
140  errorDisp.push_back(errory);
141  errorDisp.push_back(errorz);
142  align::Scalars errorRotation;
143  errorRotation.push_back(errorphix);
144  errorRotation.push_back(errorphiy);
145  errorRotation.push_back(errorphiz);
146 
147  int index[5][4][14];
148  std::fill_n(index[0][0], 5 * 4 * 14, -1); // initialize to -1
149  int counter = 0;
150  //Create and index for the chambers in the Alignable vector
151  for (const auto& iter : DTchambers) {
152  DTChamberId myId(iter->geomDetId().rawId());
153  index[myId.wheel() + 2][myId.station() - 1][myId.sector() - 1] = counter;
154  counter++;
155  }
156  for (int wheel = 0; wheel < 5; wheel++) {
157  for (int sector = 0; sector < 12; sector++) {
158  align::Scalars disp;
160  if (dist_ == 0) {
161  const std::vector<float> disp_ = theMuonModifier.gaussianRandomVector(dx, dy, dz);
162  const std::vector<float> rotation_ = theMuonModifier.gaussianRandomVector(phix, phiy, phiz);
163  disp.push_back(disp_[0]);
164  disp.push_back(disp_[1]);
165  disp.push_back(disp_[2]);
166  rotation.push_back(rotation_[0]);
167  rotation.push_back(rotation_[1]);
168  rotation.push_back(rotation_[2]);
169  } else if (dist_ == 1) {
170  const std::vector<float> disp_ = theMuonModifier.flatRandomVector(dx, dy, dz);
171  const std::vector<float> rotation_ = theMuonModifier.flatRandomVector(phix, phiy, phiz);
172  disp.push_back(disp_[0]);
173  disp.push_back(disp_[1]);
174  disp.push_back(disp_[2]);
175  rotation.push_back(rotation_[0]);
176  rotation.push_back(rotation_[1]);
177  rotation.push_back(rotation_[2]);
178  } else {
179  disp.push_back(dx);
180  disp.push_back(dy);
181  disp.push_back(dz);
182  rotation.push_back(phix);
183  rotation.push_back(phiy);
184  rotation.push_back(phiz);
185  }
186  for (int station = 0; station < 4; station++) {
187  Alignable* myAlign = DTchambers.at(index[wheel][station][sector]);
188  this->moveChamberInSector(myAlign, disp, rotation, errorDisp, errorRotation);
189  if (sector == 3 && station == 3) {
190  Alignable* myAlignD = DTchambers.at(index[wheel][station][12]);
191  this->moveChamberInSector(myAlignD, disp, rotation, errorDisp, errorRotation);
192  } else if (sector == 9 && station == 3) {
193  Alignable* myAlignD = DTchambers.at(index[wheel][station][13]);
194  this->moveChamberInSector(myAlignD, disp, rotation, errorDisp, errorRotation);
195  }
196  }
197  }
198  }
199 }

References counter, AlignableMuon::DTChambers(), PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, extractParameters(), AlignableModifier::flatRandomVector(), AlignableModifier::gaussianRandomVector(), moveChamberInSector(), idealTransformation::rotation, relativeConstraints::station, theAlignableMuon, theMuonModifier, and makeMuonMisalignmentScenario::wheel.

Referenced by applyScenario().

◆ moveMuon()

void MuonScenarioBuilder::moveMuon ( const edm::ParameterSet scenario)

this special method allows to move the complete muon system by a same amount

Definition at line 321 of file MuonScenarioBuilder.cc.

321  {
322  const auto& DTbarrel = theAlignableMuon->DTBarrel();
323  const auto& CSCendcaps = theAlignableMuon->CSCEndcaps();
324  //Take Parameters
325  align::Scalars param = this->extractParameters(pSet, "Muon");
326  double scale_ = param[0];
327  double scaleError_ = param[1];
328  double phiX_ = param[2];
329  double phiY_ = param[3];
330  double phiZ_ = param[4];
331  double dX_ = param[5];
332  double dY_ = param[6];
333  double dZ_ = param[7];
334  double dist_ = param[8];
335  double dx = scale_ * dX_;
336  double dy = scale_ * dY_;
337  double dz = scale_ * dZ_;
338  double phix = scale_ * phiX_;
339  double phiy = scale_ * phiY_;
340  double phiz = scale_ * phiZ_;
341  double errorx = scaleError_ * dX_;
342  double errory = scaleError_ * dY_;
343  double errorz = scaleError_ * dZ_;
344  double errorphix = scaleError_ * phiX_;
345  double errorphiy = scaleError_ * phiY_;
346  double errorphiz = scaleError_ * phiZ_;
347  //Create an index for the chambers in the alignable vector
348  align::Scalars disp;
350  if (dist_ == 0) {
351  const std::vector<float> disp_ = theMuonModifier.gaussianRandomVector(dx, dy, dz);
352  const std::vector<float> rotation_ = theMuonModifier.gaussianRandomVector(phix, phiy, phiz);
353  disp.push_back(disp_[0]);
354  disp.push_back(disp_[1]);
355  disp.push_back(disp_[2]);
356  rotation.push_back(rotation_[0]);
357  rotation.push_back(rotation_[1]);
358  rotation.push_back(rotation_[2]);
359  } else if (dist_ == 1) {
360  const std::vector<float> disp_ = theMuonModifier.flatRandomVector(dx, dy, dz);
361  const std::vector<float> rotation_ = theMuonModifier.flatRandomVector(phix, phiy, phiz);
362  disp.push_back(disp_[0]);
363  disp.push_back(disp_[1]);
364  disp.push_back(disp_[2]);
365  rotation.push_back(rotation_[0]);
366  rotation.push_back(rotation_[1]);
367  rotation.push_back(rotation_[2]);
368  } else {
369  disp.push_back(dx);
370  disp.push_back(dy);
371  disp.push_back(dz);
372  rotation.push_back(phix);
373  rotation.push_back(phiy);
374  rotation.push_back(phiz);
375  }
376  for (const auto& iter : DTbarrel) {
377  theMuonModifier.moveAlignable(iter, false, true, disp[0], disp[1], disp[2]);
378  theMuonModifier.rotateAlignable(iter, false, true, rotation[0], rotation[1], rotation[2]);
379  theMuonModifier.addAlignmentPositionError(iter, errorx, errory, errorz);
380  theMuonModifier.addAlignmentPositionErrorFromRotation(iter, errorphix, errorphiy, errorphiz);
381  }
382  for (const auto& iter : CSCendcaps) {
383  theMuonModifier.moveAlignable(iter, false, true, disp[0], disp[1], disp[2]);
384  theMuonModifier.rotateAlignable(iter, false, true, rotation[0], rotation[1], rotation[2]);
385  theMuonModifier.addAlignmentPositionError(iter, errorx, errory, errorz);
386  theMuonModifier.addAlignmentPositionErrorFromRotation(iter, errorphix, errorphiy, errorphiz);
387  }
388 }

References AlignableModifier::addAlignmentPositionError(), AlignableModifier::addAlignmentPositionErrorFromRotation(), AlignableMuon::CSCEndcaps(), AlignableMuon::DTBarrel(), PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, extractParameters(), AlignableModifier::flatRandomVector(), AlignableModifier::gaussianRandomVector(), AlignableModifier::moveAlignable(), AlignableModifier::rotateAlignable(), idealTransformation::rotation, theAlignableMuon, and theMuonModifier.

Referenced by applyScenario().

Member Data Documentation

◆ theAlignableMuon

AlignableMuon* MuonScenarioBuilder::theAlignableMuon
private

Pointer to alignable Muon object.

Definition at line 45 of file MuonScenarioBuilder.h.

Referenced by applyScenario(), moveCSCSectors(), moveDTSectors(), moveMuon(), and MuonScenarioBuilder().

◆ theMuonModifier

AlignableModifier MuonScenarioBuilder::theMuonModifier
private

Definition at line 47 of file MuonScenarioBuilder.h.

Referenced by moveChamberInSector(), moveCSCSectors(), moveDTSectors(), and moveMuon().

MuonScenarioBuilder::theMuonModifier
AlignableModifier theMuonModifier
Definition: MuonScenarioBuilder.h:47
CSCTriggerNumbering::triggerSectorFromLabels
static int triggerSectorFromLabels(int station, int ring, int chamber)
Definition: CSCTriggerNumbering.cc:76
TkRotation< Scalar >
counter
Definition: counter.py:1
MisalignmentScenarioBuilder::hasParameter_
bool hasParameter_(const std::string &name, const edm::ParameterSet &pSet) const
Check if given parameter exists in parameter set.
Definition: MisalignmentScenarioBuilder.cc:271
align::Scalars
std::vector< Scalar > Scalars
Definition: Utilities.h:26
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
relativeConstraints.station
station
Definition: relativeConstraints.py:67
Alignable
Definition: Alignable.h:27
pos
Definition: PixelAliasList.h:18
AlignableModifier::flatRandomVector
const std::vector< float > flatRandomVector(float sigmaX, float sigmaY, float sigmaZ) const
Return a vector of random numbers (flat distribution)
Definition: AlignableModifier.cc:486
CSCTriggerNumbering::triggerSubSectorFromLabels
static int triggerSubSectorFromLabels(int station, int chamber)
Definition: CSCTriggerNumbering.cc:105
AlignableObjectId::Geometry::General
AlignableMuon::CSCChambers
align::Alignables CSCChambers()
Definition: AlignableMuon.cc:348
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
makeMuonMisalignmentScenario.endcap
endcap
Definition: makeMuonMisalignmentScenario.py:320
relativeConstraints.error
error
Definition: relativeConstraints.py:53
AlignableModifier::moveAlignable
void moveAlignable(Alignable *alignable, bool random, bool gaussian, float sigmaX, float sigmaY, float sigmaZ)
Move alignable in global space according to parameters.
Definition: AlignableModifier.cc:295
AlignableMuon::DTChambers
align::Alignables DTChambers()
Definition: AlignableMuon.cc:305
MuonScenarioBuilder::moveMuon
void moveMuon(const edm::ParameterSet &scenario)
this special method allows to move the complete muon system by a same amount
Definition: MuonScenarioBuilder.cc:321
MisalignmentScenarioBuilder::theModifierCounter
int theModifierCounter
Counter for applied modification.
Definition: MisalignmentScenarioBuilder.h:80
Point3DBase< Scalar, GlobalTag >
cmsdt::scenario
scenario
Definition: constants.h:166
AlignableMuon::DTBarrel
align::Alignables DTBarrel()
Definition: AlignableMuon.cc:326
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
MuonScenarioBuilder::moveChamberInSector
void moveChamberInSector(Alignable *, const align::Scalars &, const align::Scalars &, const align::Scalars &, const align::Scalars &)
Definition: MuonScenarioBuilder.cc:391
edm::ParameterSet
Definition: ParameterSet.h:47
idealTransformation.rotation
dictionary rotation
Definition: idealTransformation.py:1
MisalignmentScenarioBuilder::theModifier
AlignableModifier theModifier
Helper class for random movements.
Definition: MisalignmentScenarioBuilder.h:78
AlignableModifier::gaussianRandomVector
const std::vector< float > gaussianRandomVector(float sigmaX, float sigmaY, float sigmaZ) const
Return a vector of random numbers (gaussian distribution)
Definition: AlignableModifier.cc:457
MuonScenarioBuilder::moveCSCSectors
void moveCSCSectors(const edm::ParameterSet &scenario)
this special method allows to move a CSCsector by a same amount
Definition: MuonScenarioBuilder.cc:202
AlignableModifier::rotateAlignable
void rotateAlignable(Alignable *alignable, bool random, bool gaussian, float sigmaPhiX, float sigmaPhiY, float sigmaPhiZ)
Rotate alignable in global space according to parameters.
Definition: AlignableModifier.cc:387
CSCDetId
Definition: CSCDetId.h:26
makeMuonMisalignmentScenario.wheel
wheel
Definition: makeMuonMisalignmentScenario.py:319
MuonScenarioBuilder::moveDTSectors
void moveDTSectors(const edm::ParameterSet &scenario)
This special method allows to move a DTsector by a same amount.
Definition: MuonScenarioBuilder.cc:112
MuonScenarioBuilder::extractParameters
align::Scalars extractParameters(const edm::ParameterSet &, const char *)
Definition: MuonScenarioBuilder.cc:60
PVValHelper::dy
Definition: PVValidationHelpers.h:49
counter
static std::atomic< unsigned int > counter
Definition: SharedResourceNames.cc:17
AlignableModifier::addAlignmentPositionErrorFromRotation
void addAlignmentPositionErrorFromRotation(Alignable *alignable, float phiX, float phiY, float phiZ)
Add alignment position error resulting from rotation in global frame.
Definition: AlignableModifier.cc:588
MisalignmentScenarioBuilder::getParameterSet_
edm::ParameterSet getParameterSet_(const std::string &name, const edm::ParameterSet &pSet) const
Definition: MisalignmentScenarioBuilder.cc:197
AlignableMuon::CSCEndcaps
align::Alignables CSCEndcaps()
Definition: AlignableMuon.cc:369
PVValHelper::dz
Definition: PVValidationHelpers.h:50
MisalignmentScenarioBuilder::MisalignmentScenarioBuilder
MisalignmentScenarioBuilder(AlignableObjectId::Geometry)
Constructor.
Definition: MisalignmentScenarioBuilder.cc:23
Exception
Definition: hltDiff.cc:246
MisalignmentScenarioBuilder::theScenario
edm::ParameterSet theScenario
Misalignment scenario to apply (from config file)
Definition: MisalignmentScenarioBuilder.h:77
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
MisalignmentScenarioBuilder::decodeMovements_
void decodeMovements_(const edm::ParameterSet &, const align::Alignables &)
Decode movements defined in given parameter set for given set of alignables.
Definition: MisalignmentScenarioBuilder.cc:28
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
DTChamberId
Definition: DTChamberId.h:14
MuonScenarioBuilder::theAlignableMuon
AlignableMuon * theAlignableMuon
Pointer to alignable Muon object.
Definition: MuonScenarioBuilder.h:45
Parameters
vector< ParameterSet > Parameters
Definition: HLTMuonPlotter.cc:25
CSCTriggerNumbering::sectorFromTriggerLabels
static int sectorFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station)
Definition: CSCTriggerNumbering.cc:64
PVValHelper::dx
Definition: PVValidationHelpers.h:48
Basic3DVector
Definition: extBasic3DVector.h:30
AlignableModifier::setSeed
void setSeed(long seed)
Resets the generator seed according to the argument.
Definition: AlignableModifier.cc:277
AlignableModifier::addAlignmentPositionError
void addAlignmentPositionError(Alignable *alignable, float dx, float dy, float dz)
Add the AlignmentPositionError (in global frame) to Alignable.
Definition: AlignableModifier.cc:532