00001 #ifndef Alignment_CommonAlignment_MisalignmentScenarioBuilder_h
00002 #define Alignment_CommonAlignment_MisalignmentScenarioBuilder_h
00003
00011
00012 #include <vector>
00013
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015
00016 #include "Alignment/CommonAlignment/interface/AlignableModifier.h"
00017 #include "Alignment/CommonAlignment/interface/AlignableObjectId.h"
00018
00020
00021 class MisalignmentScenarioBuilder
00022 {
00023
00024 public:
00025
00027 MisalignmentScenarioBuilder( ) {};
00028
00030 virtual ~MisalignmentScenarioBuilder() {};
00031
00033 virtual void applyScenario( const edm::ParameterSet& scenario ) = 0;
00034
00035 protected:
00036
00038 void decodeMovements_( const edm::ParameterSet& pSet, std::vector<Alignable*> alignables );
00039
00041 void decodeMovements_( const edm::ParameterSet& pSet, std::vector<Alignable*> alignables,
00042 std::string levelName );
00043
00045 void applyMovements_( Alignable* alignable, const edm::ParameterSet& pSet );
00046
00048 void mergeParameters_( edm::ParameterSet& localSet, const edm::ParameterSet& globalSet ) const;
00049
00051 void propagateParameters_( const edm::ParameterSet& pSet, const std::string& globalName,
00052 edm::ParameterSet& subSet ) const;
00053
00056 edm::ParameterSet getParameterSet_( const std::string& name, const edm::ParameterSet& pSet ) const;
00057
00061 edm::ParameterSet getParameterSet_( const std::string& levelName, int iComponent,
00062 const edm::ParameterSet& pSet ) const;
00063
00064
00066 bool hasParameter_( const std::string& name, const edm::ParameterSet& pSet ) const;
00067
00069 void printParameters_( const edm::ParameterSet& pSet, const bool showPsets = false ) const;
00070
00072 const bool isTopLevel_( const std::string& parameterSetName ) const;
00073
00075 const std::string rootName_( const std::string& parameterSetName ) const;
00076
00077
00078 protected:
00079
00080 edm::ParameterSet theScenario;
00081 AlignableModifier theModifier;
00082
00083 AlignableObjectId theAlignableObjectId;
00084
00085 int theModifierCounter;
00086
00087 std::string indent_;
00088
00089
00090 };
00091
00092
00093
00094 #endif