Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:05

0001 #ifndef Alignment_CommonAlignment_AlignableDet_h
0002 #define Alignment_CommonAlignment_AlignableDet_h
0003 
0004 #include "Alignment/CommonAlignment/interface/AlignableComposite.h"
0005 
0006 /// An AlignableComposite corresponding to a composite GeomDet
0007 /// direct components are AlignableDetUnits or AlignableDets.
0008 class AlignableDet : public AlignableComposite {
0009 public:
0010   /// Constructor: If addComponents = true, creates components for
0011   /// geomDet's components, assuming they are GeomDetUnits
0012   AlignableDet(const GeomDet* geomDet, bool addComponents = true);
0013 
0014   /// Destructor
0015   ~AlignableDet() override;
0016 
0017   /// Updater from GeomDet
0018   /// The given GeomDet id has to match the current id.
0019   void update(const GeomDet* geomDet, bool updateComponents = true);
0020 
0021   /// Set the AlignmentPositionError and, if (propagateDown), to all components
0022   void setAlignmentPositionError(const AlignmentPositionError& ape, bool propagateDown) override;
0023 
0024   /// Add (or set if it does not exist yet) the AlignmentPositionError,
0025   /// if (propagateDown), add also to all components
0026   void addAlignmentPositionError(const AlignmentPositionError& ape, bool propagateDown) override;
0027 
0028   /// Add (or set if it does not exist yet) the AlignmentPositionError
0029   /// resulting from a rotation in the global reference frame,
0030   /// if (propagateDown), add also to all components
0031   void addAlignmentPositionErrorFromRotation(const RotationType& rot, bool propagateDown) override;
0032 
0033   // No need to overwrite, version from AlignableComposite is just fine:
0034   // virtual void addAlignmentPositionErrorFromLocalRotation(const RotationType &rot,
0035   //                              bool propagateDown);
0036 
0037   /// Return vector of alignment data
0038   Alignments* alignments() const override;
0039 
0040   /// Return vector of alignment errors
0041   AlignmentErrorsExtended* alignmentErrors() const override;
0042 
0043   /// alignment position error - for checking only, otherwise use alignmentErrors() above!
0044   const AlignmentPositionError* alignmentPositionError() const { return theAlignmentPositionError; }
0045 
0046 private:
0047   AlignmentPositionError* theAlignmentPositionError;
0048 };
0049 
0050 #endif  // ALIGNABLE_DET_H