ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/CMSSW/Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterBuilder.h
Revision: 1.10
Committed: Fri Sep 10 11:36:58 2010 UTC (14 years, 7 months ago) by mussgill
Content type: text/plain
Branch: MAIN
CVS Tags: CMSSW_3_9_9_patch1, CMSSW_3_9_9, CMSSW_3_9_8_patch2, CMSSW_3_9_8_patch1, CMSSW_3_9_8, CMSSW_3_9_7, CMSSW_3_9_6, CMSSW_3_9_5_patch2, CMSSW_3_9_5_patch1, CMSSW_3_9_5, CMSSW_3_9_4, CMSSW_3_9_3, CMSSW_3_9_2_patch5, CMSSW_3_9_2_patch4, CMSSW_3_9_2_patch3, CMSSW_3_9_2_patch2, CMSSW_3_9_2_patch1, CMSSW_3_9_2, CMSSW_3_9_1_patch1, CMSSW_3_9_1, CMSSW_3_10_0_pre2, CMSSW_3_10_0_pre1, CMSSW_3_9_0, CMSSW_3_9_0_pre7, V03-03-02, CMSSW_3_9_0_pre6, CMSSW_3_9_0_pre5, V03-03-01
Changes since 1.9: +16 -8 lines
Log Message:
added support for extra alignable container (AlignableExtras)

File Contents

# User Rev Content
1 fronga 1.1 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentParameterBuilder_h
2     #define Alignment_CommonAlignmentAlgorithm_AlignmentParameterBuilder_h
3    
4 flucke 1.3 /** \class AlignmentParameterBuilder
5     *
6     * Build Alignment Parameter Structure
7     *
8 mussgill 1.10 * $Date: 2008/09/02 15:31:23 $
9     * $Revision: 1.9 $
10     * (last update by $Author: flucke $)
11 flucke 1.3 */
12    
13 cklae 1.8 #include "Alignment/CommonAlignment/interface/Utilities.h"
14 flucke 1.9 #include "Alignment/CommonAlignmentParametrization/interface/AlignmentParametersFactory.h"
15 cklae 1.8
16 flucke 1.4 namespace edm {
17     class ParameterSet;
18     }
19 mussgill 1.10 class AlignableExtras;
20 flucke 1.6 class AlignableTracker;
21 fronga 1.7 class AlignableMuon;
22 flucke 1.6 class AlignmentParameters;
23 fronga 1.1
24     class AlignmentParameterBuilder
25     {
26     public:
27 fronga 1.7 /// Constructor from tracker only
28 mussgill 1.10 explicit AlignmentParameterBuilder( AlignableTracker *alignableTracker,
29     AlignableExtras *alignableExtras );
30 fronga 1.7
31     /// Constructor from tracker and muon
32 mussgill 1.10 AlignmentParameterBuilder( AlignableTracker *alignableTracker, AlignableMuon *alignableMuon,
33     AlignableExtras *alignableExtras );
34 fronga 1.7
35 flucke 1.5 /// Constructor adding selections by passing the ParameterSet named 'AlignmentParameterSelector'
36     /// (expected in pSet) to addSelections(..)
37 mussgill 1.10 AlignmentParameterBuilder( AlignableTracker *alignableTracker,
38     AlignableExtras *alignableExtras,
39     const edm::ParameterSet &pSet );
40 fronga 1.7
41     /// Constructor from tracker and muon, plus selection
42 mussgill 1.10 AlignmentParameterBuilder( AlignableTracker *alignableTracker, AlignableMuon *alignableMuon,
43     AlignableExtras *alignableExtras,
44 fronga 1.7 const edm::ParameterSet &pSet);
45    
46 fronga 1.1
47     /// destructor
48 flucke 1.4 virtual ~AlignmentParameterBuilder() {};
49 flucke 1.9 /// master initialisation method, PSet must have form as constructor wants it
50     void addAllSelections(const edm::ParameterSet &pSet);
51 fronga 1.1
52 flucke 1.5 /// Add selections of Alignables, using AlignmenParameterSelector::addSelections.
53 flucke 1.9 /// For each Alignable, AlignmentParameters of type parType will be attached
54 flucke 1.5 /// using the selection of active parameters done in AlignmenParameterSelector,
55 flucke 1.9 /// e.g. for RigidBody a selection string '11100' selects the degrees of freedom in
56     /// (x,y,z), but not (alpha,beta,gamma).
57 flucke 1.5 /// Returns number of added selections
58 flucke 1.9 unsigned int addSelections(const edm::ParameterSet &pset,
59     AlignmentParametersFactory::ParametersType parType);
60 fronga 1.1
61 flucke 1.5 /// Add arbitrary selection of Alignables, return number of higher level Alignables
62 flucke 1.9 unsigned int add(const align::Alignables &alignables,
63     AlignmentParametersFactory::ParametersType parType,
64     const std::vector<bool> &sel);
65 flucke 1.5 /// Add a single Alignable, true if it is higher level, false if it is an AlignableDet
66 flucke 1.9 bool add(Alignable *alignable, AlignmentParametersFactory::ParametersType parType,
67     const std::vector<bool> &sel);
68 fronga 1.1
69     /// Get list of alignables for which AlignmentParameters are built
70 cklae 1.8 const align::Alignables& alignables() const { return theAlignables; };
71 fronga 1.1
72     /// Remove n Alignables from list
73     void fixAlignables( int n );
74    
75     private:
76    
77 flucke 1.6 /// convert char selection (from ParameterSelector) to bool (for AlignmentParameters)
78     /// true if anything else than 0 and 1 is found in vector<char>
79     bool decodeParamSel(const std::vector<char> &paramSelChar, std::vector<bool> &result) const;
80     /// add SelectionUserVariables corresponding to fullSel
81     bool addFullParamSel(AlignmentParameters *aliPar, const std::vector<char> &fullSel) const;
82    
83 fronga 1.1 // data members
84    
85     /// Vector of alignables
86 cklae 1.8 align::Alignables theAlignables;
87 fronga 1.1
88     /// Alignable tracker
89     AlignableTracker* theAlignableTracker;
90    
91 fronga 1.7 /// Alignable muon
92     AlignableMuon* theAlignableMuon;
93 mussgill 1.10
94     /// extra Alignables
95     AlignableExtras* theAlignableExtras;
96 fronga 1.1 };
97    
98     #endif