Revision: | 1.7 |
Committed: | Tue Jan 23 16:07:08 2007 UTC (18 years, 3 months ago) by fronga |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | CMSSW_1_6_12, CMSSW_1_6_12_pre2, CMSSW_1_6_12_pre1, CMSSW_1_6_11, CMSSW_1_7_7, CMSSW_1_6_11_pre1, CMSSW_1_7_6, CMSSW_1_6_10, CMSSW_1_6_10_pre2, CMSSW_1_6_10_pre1, CMSSW_1_6_9, CMSSW_1_6_9_pre2, CMSSW_1_6_9_pre1, CMSSW_1_7_5, CMSSW_1_7_4, CMSSW_1_7_3, CMSSW_1_6_8, CMSSW_1_6_8_pre2, CMSSW_1_7_2, CMSSW_1_6_8_pre1, CMSSW_1_7_1, CMSSW_1_7_0, CMSSW_1_7_0_pre13, CMSSW_1_4_10, CMSSW_1_7_0_pre12, CMSSW_1_7_0_pre11, CMSSW_1_7_0_pre10, CMSSW_1_7_0_pre9, CMSSW_1_7_0_pre8, CMSSW_1_7_0_pre7, CMSSW_1_4_9, CMSSW_1_4_8, CMSSW_1_6_7, CMSSW_1_7_0_pre6, CMSSW_1_6_6, CMSSW_1_6_5, CMSSW_1_6_5_pre1, CMSSW_1_6_4, CMSSW_1_7_0_pre5, CMSSW_1_6_3, CMSSW_1_6_1, CMSSW_1_7_0_pre4, V01-04-00-08, CMSSW_1_7_0_pre3, CMSSW_1_7_0_pre2, CMSSW_1_6_0, CMSSW_1_6_0_pre14, CMSSW_1_7_0_pre1, CMSSW_1_6_0_DAQ3, CMSSW_1_6_0_pre13, CMSSW_1_6_0_pre12, CMSSW_1_6_0_pre11, CMSSW_1_6_0_pre10, CMSSW_1_4_7, CMSSW_1_6_0_pre9, CMSSW_1_6_0_pre8, CMSSW_1_5_4, CMSSW_1_6_0_pre7, CMSSW_1_5_3, CMSSW_1_6_0_pre6, CMSSW_1_4_6, CMSSW_1_3_6, CMSSW_1_6_0_DAQ1, CMSSW_1_6_0_pre5, V01-04-00-07, V01-09-00, V01-04-00-06, CMSSW_1_6_0_pre4, CMSSW_1_3_1_HLT6, CMSSW_1_5_2, CMSSW_1_3_5, CMSSW_1_6_0_pre3, CMSSW_1_6_0_pre2, CMSSW_1_6_0_pre1, CMSSW_1_5_1, CMSSW_1_4_5, CMSSW_1_5_0, V01-08-01, V01-04-00-05, CMSSW_1_4_3g483, CMSSW_1_4_4, CMSSW_1_5_0_pre6, CMSSW_1_4_3, V01-04-00-03, V01-08-00, CMSSW_1_3_1_HLT5, CMSSW_1_5_0_pre5, CMSSW_1_4_2, CMSSW_1_3_1_HLT4, CMSSW_1_4_1, CMSSW_1_5_0_pre4, V01-07-04, CMSSW_1_3_1_HLT3, CMSSW_1_5_0_pre3, V01-07-03, V01-07-02, CMSSW_1_4_0_DAQ1, CMSSW_1_3_4, V01-06-01, CMSSW_1_3_3, V01-07-01, V01-04-00-02, CMSSW_1_4_0, CMSSW_1_5_0_pre2, CMSSW_1_3_2, CMSSW_1_4_0_pre7, CMSSW_1_4_0_pre6, CMSSW_1_4_0_pre5, V01-07-00, V01-04-00-01, CMSSW_1_5_0_pre1, CMSSW_1_4_0_pre4, V01-06-00, V01-05-00, V01-04-01, CMSSW_1_3_1, CMSSW_1_4_0_pre3, CMSSW_1_4_0_pre2, V01-04-00, CMSSW_1_3_0, CMSSW_1_3_0_pre7, V01-03-01, CMSSW_1_4_0_pre1, V01-03-00, CMSSW_1_3_0_pre6, cklae_20070314, V01-02-00, V01-01-04, CMSSW_1_3_0_pre5, CMSSW_1_3_0_pre4, V01-01-03, CMSSW_1_3_0_pre3, V01-01-02, CMSSW_1_3_0_SLC4_pre2, CMSSW_1_3_0_pre2, V01-01-01, V01-01-00 |
Branch point for: | V01-04-00-04 |
Changes since 1.6: | +18 -5 lines |
Log Message: | Added functionalities for alignment of muon devices (plus some clean-up). |
# | Content |
---|---|
1 | #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentParameterBuilder_h |
2 | #define Alignment_CommonAlignmentAlgorithm_AlignmentParameterBuilder_h |
3 | |
4 | #include <string> |
5 | #include <vector> |
6 | |
7 | /** \class AlignmentParameterBuilder |
8 | * |
9 | * Build Alignment Parameter Structure |
10 | * |
11 | * $Date: 2006/11/30 10:08:26 $ |
12 | * $Revision: 1.6 $ |
13 | * (last update by $Author: flucke $) |
14 | */ |
15 | |
16 | namespace edm { |
17 | class ParameterSet; |
18 | } |
19 | class AlignableTracker; |
20 | class AlignableMuon; |
21 | class Alignable; |
22 | class AlignmentParameters; |
23 | |
24 | class AlignmentParameterBuilder |
25 | { |
26 | public: |
27 | |
28 | /// Constructor from tracker only |
29 | explicit AlignmentParameterBuilder( AlignableTracker *alignableTracker ); |
30 | |
31 | /// Constructor from tracker and muon |
32 | AlignmentParameterBuilder( AlignableTracker *alignableTracker, AlignableMuon *alignableMuon ); |
33 | |
34 | /// Constructor adding selections by passing the ParameterSet named 'AlignmentParameterSelector' |
35 | /// (expected in pSet) to addSelections(..) |
36 | AlignmentParameterBuilder( AlignableTracker *alignableTracker, const edm::ParameterSet &pSet ); |
37 | |
38 | /// Constructor from tracker and muon, plus selection |
39 | AlignmentParameterBuilder( AlignableTracker *alignableTracker, AlignableMuon *alignableMuon, |
40 | const edm::ParameterSet &pSet); |
41 | |
42 | |
43 | /// destructor |
44 | virtual ~AlignmentParameterBuilder() {}; |
45 | |
46 | /// Add selections of Alignables, using AlignmenParameterSelector::addSelections. |
47 | /// For each Alignable, (Composite)RigidBodyAlignmentParameters will be attached |
48 | /// using the selection of active parameters done in AlignmenParameterSelector, |
49 | /// e.g. a selection string '11100' selects the degrees of freedom in (x,y,z), |
50 | /// but not (alpha,beta,gamma). |
51 | /// Returns number of added selections |
52 | unsigned int addSelections(const edm::ParameterSet &pset); |
53 | |
54 | /// Add arbitrary selection of Alignables, return number of higher level Alignables |
55 | unsigned int add(const std::vector<Alignable*> &alignables, const std::vector<bool> &sel); |
56 | /// Add a single Alignable, true if it is higher level, false if it is an AlignableDet |
57 | bool add(Alignable *alignable, const std::vector<bool> &sel); |
58 | |
59 | /// Get list of alignables for which AlignmentParameters are built |
60 | std::vector<Alignable*> alignables() { return theAlignables; }; |
61 | |
62 | /// Remove n Alignables from list |
63 | void fixAlignables( int n ); |
64 | |
65 | private: |
66 | |
67 | /// convert char selection (from ParameterSelector) to bool (for AlignmentParameters) |
68 | /// true if anything else than 0 and 1 is found in vector<char> |
69 | bool decodeParamSel(const std::vector<char> ¶mSelChar, std::vector<bool> &result) const; |
70 | /// add SelectionUserVariables corresponding to fullSel |
71 | bool addFullParamSel(AlignmentParameters *aliPar, const std::vector<char> &fullSel) const; |
72 | |
73 | // data members |
74 | |
75 | /// Vector of alignables |
76 | std::vector<Alignable*> theAlignables; |
77 | |
78 | /// Alignable tracker |
79 | AlignableTracker* theAlignableTracker; |
80 | |
81 | /// Alignable muon |
82 | AlignableMuon* theAlignableMuon; |
83 | |
84 | }; |
85 | |
86 | #endif |