CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterBuilder.h

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> &paramSelChar, std::vector<bool> &result) const;
00081   bool addFullParamSel(AlignmentParameters *aliPar, const std::vector<char> &fullSel) const;
00082 
00083   // data members
00084 
00086   align::Alignables theAlignables;
00087 
00089   AlignableTracker* theAlignableTracker;
00090 
00092   AlignableMuon* theAlignableMuon;
00093   
00095   AlignableExtras* theAlignableExtras;
00096 };
00097 
00098 #endif