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 
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 
65 
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)
101  long seed_;
103  double phiX_, phiY_, phiZ_;
105  double dX_, dY_, dZ_;
108  double twist_, shear_;
109 };
110 
111 #endif //AlignableModifier_H
AlignableModifier::scale_
double scale_
Definition: AlignableModifier.h:102
TkRotation< Scalar >
AlignableModifier
Definition: AlignableModifier.h:23
AlignableModifier::phiX_
double phiX_
Definition: AlignableModifier.h:103
AlignableModifier::rotateAlignableLocal
void rotateAlignableLocal(Alignable *alignable, bool random, bool gaussian, float sigmaPhiX, float sigmaPhiY, float sigmaPhiZ)
Rotate alignable in local space according to parameters.
Definition: AlignableModifier.cc:423
AlignableModifier::~AlignableModifier
~AlignableModifier()
Destructor.
Definition: AlignableModifier.cc:49
edm
HLT enums.
Definition: AlignableModifier.h:19
AlignableModifier::addAlignmentPositionErrorLocal
void addAlignmentPositionErrorLocal(Alignable *alignable, float dx, float dy, float dz)
Add the AlignmentPositionError (in local frame) to Alignable.
Definition: AlignableModifier.cc:540
AlignableModifier::isPropagated
bool isPropagated(const std::string &parameterName) const
Check if given parameter should be propagated.
Definition: AlignableModifier.cc:84
Alignable
Definition: Alignable.h:27
AlignableModifier::setTranslations_
bool setTranslations_
Definition: AlignableModifier.h:100
AlignableModifier::init_
void init_()
Initialisation of all parameters.
Definition: AlignableModifier.cc:52
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
AlignableModifier::phiZlocal_
double phiZlocal_
Definition: AlignableModifier.h:104
AlignableModifier::distribution_
std::string distribution_
Definition: AlignableModifier.h:98
AlignableModifier::phiZ_
double phiZ_
Definition: AlignableModifier.h:103
AlignableModifier::phiY_
double phiY_
Definition: AlignableModifier.h:103
AlignableModifier::phiYlocal_
double phiYlocal_
Definition: AlignableModifier.h:104
AlignableModifier::seed_
long seed_
Definition: AlignableModifier.h:101
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
AlignableModifier::theDRand48Engine
CLHEP::DRand48Engine * theDRand48Engine
Unique random number generator.
Definition: AlignableModifier.h:90
AlignableModifier::dYlocal_
double dYlocal_
Definition: AlignableModifier.h:106
AlignableModifier::dX_
double dX_
Definition: AlignableModifier.h:105
AlignableModifier::setRotations_
bool setRotations_
Definition: AlignableModifier.h:100
AlignableModifier::random_
bool random_
Definition: AlignableModifier.h:99
AlignableModifier::deformation_
DeformationMemberType deformation_
Definition: AlignableModifier.h:107
CLHEP
Definition: CocoaGlobals.h:27
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
AlignableModifier::addDeformation
void addDeformation(Alignable *alignable, const DeformationMemberType &deformation, bool random, bool gaussian, double scale)
Definition: AlignableModifier.cc:355
AlignableModifier::dXlocal_
double dXlocal_
Definition: AlignableModifier.h:106
AlignableModifier::shear_
double shear_
Definition: AlignableModifier.h:108
Scenarios_cff.scale
scale
Definition: Scenarios_cff.py:2186
AlignableModifier::AlignableModifier
AlignableModifier()
Constructor.
Definition: AlignableModifier.cc:21
edm::ParameterSet
Definition: ParameterSet.h:36
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
AlignableModifier::phiXlocal_
double phiXlocal_
Definition: AlignableModifier.h:104
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
Definitions.h
AlignableModifier::setDistribution
void setDistribution(const std::string &distr)
Decodes string and sets distribution accordingly ('fixed', 'flat' or 'gaussian').
Definition: AlignableModifier.cc:263
AlignableModifier::m_modified
int m_modified
Definition: AlignableModifier.h:95
PVValHelper::dy
Definition: PVValidationHelpers.h:49
AlignableModifier::dY_
double dY_
Definition: AlignableModifier.h:105
AlignableModifier::moveAlignableLocal
void moveAlignableLocal(Alignable *alignable, bool random, bool gaussian, float sigmaX, float sigmaY, float sigmaZ)
Move alignable in local space according to parameters.
Definition: AlignableModifier.cc:326
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
fftjetvertexadder_cfi.sigmaX
sigmaX
Definition: fftjetvertexadder_cfi.py:30
AlignableModifier::twist_
double twist_
Definition: AlignableModifier.h:108
AlignableModifier::randomise
void randomise(std::vector< double > &rnd, bool gaussian) const
Definition: AlignableModifier.cc:514
fftjetvertexadder_cfi.sigmaY
sigmaY
Definition: fftjetvertexadder_cfi.py:31
PVValHelper::dz
Definition: PVValidationHelpers.h:50
AlignableModifier::dZ_
double dZ_
Definition: AlignableModifier.h:105
AlignableModifier::dZlocal_
double dZlocal_
Definition: AlignableModifier.h:106
AlignableModifier::DeformationMemberType
std::pair< std::string, std::vector< double > > DeformationMemberType
Definition: AlignableModifier.h:85
AlignableModifier::modify
bool modify(Alignable *alignable, const edm::ParameterSet &pSet)
Modify given set of alignables according to parameters.
Definition: AlignableModifier.cc:94
AlignableModifier::setError_
bool setError_
Definition: AlignableModifier.h:99
fftjetvertexadder_cfi.sigmaZ
sigmaZ
Definition: fftjetvertexadder_cfi.py:32
AlignableModifier::gaussian_
bool gaussian_
Definition: AlignableModifier.h:99
PVValHelper::dx
Definition: PVValidationHelpers.h:48
AlignableModifier::scaleError_
double scaleError_
Definition: AlignableModifier.h:102
SurveyInfoScenario_cff.seed
seed
Definition: SurveyInfoScenario_cff.py:295
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
AlignableModifier::addAlignmentPositionErrorFromLocalRotation
void addAlignmentPositionErrorFromLocalRotation(Alignable *alignable, float phiX, float phiY, float phiZ)
Add alignment position error resulting from rotation in local frame.
Definition: AlignableModifier.cc:598