Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentParameterBuilder_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentParameterBuilder_h
00003
00013 #include "Alignment/CommonAlignment/interface/Utilities.h"
00014 #include "Alignment/CommonAlignmentParametrization/interface/AlignmentParametersFactory.h"
00015
00016 namespace edm {
00017 class ParameterSet;
00018 }
00019 class AlignableExtras;
00020 class AlignableTracker;
00021 class AlignableMuon;
00022 class AlignmentParameters;
00023
00024 class AlignmentParameterBuilder
00025 {
00026 public:
00028 explicit AlignmentParameterBuilder( AlignableTracker *alignableTracker,
00029 AlignableExtras *alignableExtras );
00030
00032 AlignmentParameterBuilder( AlignableTracker *alignableTracker, AlignableMuon *alignableMuon,
00033 AlignableExtras *alignableExtras );
00034
00037 AlignmentParameterBuilder( AlignableTracker *alignableTracker,
00038 AlignableExtras *alignableExtras,
00039 const edm::ParameterSet &pSet );
00040
00042 AlignmentParameterBuilder( AlignableTracker *alignableTracker, AlignableMuon *alignableMuon,
00043 AlignableExtras *alignableExtras,
00044 const edm::ParameterSet &pSet);
00045
00046
00048 virtual ~AlignmentParameterBuilder() {};
00050 void addAllSelections(const edm::ParameterSet &pSet);
00051
00058 unsigned int addSelections(const edm::ParameterSet &pset,
00059 AlignmentParametersFactory::ParametersType parType);
00060
00062 unsigned int add(const align::Alignables &alignables,
00063 AlignmentParametersFactory::ParametersType parType,
00064 const std::vector<bool> &sel);
00066 bool add(Alignable *alignable, AlignmentParametersFactory::ParametersType parType,
00067 const std::vector<bool> &sel);
00068
00070 const align::Alignables& alignables() const { return theAlignables; };
00071
00073 void fixAlignables( int n );
00074
00075 private:
00079 bool decodeParamSel(std::vector<char> ¶mSelChar, std::vector<bool> &result) const;
00081 bool addFullParamSel(AlignmentParameters *aliPar, const std::vector<char> &fullSel) const;
00082
00083
00084
00086 align::Alignables theAlignables;
00087
00089 AlignableTracker* theAlignableTracker;
00090
00092 AlignableMuon* theAlignableMuon;
00093
00095 AlignableExtras* theAlignableExtras;
00096 };
00097
00098 #endif