CMS 3D CMS Logo

AlignableModifier.h
Go to the documentation of this file.
1 #ifndef Alignment_TrackerAlignment_AlignableModifier_H
2 #define Alignment_TrackerAlignment_AlignableModifier_H
3 
4 #include <vector>
5 #include <string>
6 #include <utility>
7 
9 
13 
14 class Alignable;
15 
16 namespace CLHEP {
17  class DRand48Engine;
18 }
19 namespace edm {
20  class ParameterSet;
21 }
22 
24 public:
27 
30 
32  bool modify(Alignable* alignable, const edm::ParameterSet& pSet);
33 
35  bool isPropagated(const std::string& parameterName) const;
36 
38  void moveAlignable(Alignable* alignable, bool random, bool gaussian, float sigmaX, float sigmaY, float sigmaZ);
39 
41  void moveAlignableLocal(Alignable* alignable, bool random, bool gaussian, float sigmaX, float sigmaY, float sigmaZ);
42 
44  void rotateAlignable(
45  Alignable* alignable, bool random, bool gaussian, float sigmaPhiX, float sigmaPhiY, float sigmaPhiZ);
46 
48  void rotateAlignableLocal(
49  Alignable* alignable, bool random, bool gaussian, float sigmaPhiX, float sigmaPhiY, float sigmaPhiZ);
50 
52  void addAlignmentPositionError(Alignable* alignable, float dx, float dy, float dz);
53 
55  void addAlignmentPositionErrorLocal(Alignable* alignable, float dx, float dy, float dz);
56 
58  void addAlignmentPositionErrorFromRotation(Alignable* alignable, float phiX, float phiY, float phiZ);
59 
61  void addAlignmentPositionErrorFromLocalRotation(Alignable* alignable, float phiX, float phiY, float phiZ);
62 
64  void addAlignmentPositionErrorFromRotation(Alignable* alignable, align::RotationType&);
65 
67  void addAlignmentPositionErrorFromLocalRotation(Alignable* alignable, align::RotationType&);
68 
70  void setDistribution(const std::string& distr);
71 
73  void setSeed(long seed);
74 
76  const std::vector<float> gaussianRandomVector(float sigmaX, float sigmaY, float sigmaZ) const;
78  const std::vector<float> flatRandomVector(float sigmaX, float sigmaY, float sigmaZ) const;
82  void randomise(std::vector<double>& rnd, bool gaussian) const;
83 
84 private:
85  typedef std::pair<std::string, std::vector<double> > DeformationMemberType;
86  void addDeformation(
87  Alignable* alignable, const DeformationMemberType& deformation, bool random, bool gaussian, double scale);
88 
90  CLHEP::DRand48Engine* theDRand48Engine;
91 
93  void init_();
94 
95  int m_modified; // Indicates if a modification was performed
96 
97  // All parameters (see AlignableModifier::init() for definitions)
99  bool random_, gaussian_, setError_;
100  bool setRotations_, setTranslations_;
101  long seed_;
102  double scaleError_, scale_;
103  double phiX_, phiY_, phiZ_;
104  double phiXlocal_, phiYlocal_, phiZlocal_;
105  double dX_, dY_, dZ_;
106  double dXlocal_, dYlocal_, dZlocal_;
107  DeformationMemberType deformation_;
108  double twist_, shear_;
109 };
110 
111 #endif //AlignableModifier_H
std::string distribution_
CLHEP::DRand48Engine * theDRand48Engine
Unique random number generator.
DeformationMemberType deformation_
HLT enums.
std::pair< std::string, std::vector< double > > DeformationMemberType
void moveAlignable(Alignable *ali, AlgebraicVector diff)
Moves the alignable by the AlgebraicVector.
Definition: AlignTools.cc:84