ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/CMSSW/Alignment/CommonAlignmentAlgorithm/src/AlignmentParameterBuilder.cc
Revision: 1.19
Committed: Tue Oct 26 20:01:52 2010 UTC (14 years, 6 months ago) by flucke
Content type: text/plain
Branch: MAIN
CVS Tags: CMSSW_5_3_11_patch3, CMSSW_6_1_2_SLHC6_patch1, CMSSW_5_3_11_patch2, CMSSW_5_3_11_patch1, CMSSW_6_1_2_SLHC6, CMSSW_4_1_8_patch13, CMSSW_6_1_2_SLHC5, CMSSW_5_3_11, CMSSW_4_4_5_patch3, V04-00-09-53X-calib-V01, br53-00-09, br53-00-08, CMSSW_5_3_10_patch2, br53-00-07, br53-00-06, br53-00-05, CMSSW_6_1_2_SLHC4_patch1, CMSSW_6_1_2_SLHC4, CMSSW_6_1_2_SLHC2_patch3, CMSSW_6_1_2_SLHC2_patch2, CMSSW_5_3_10_patch1, CMSSW_6_1_2_SLHC3, CMSSW_6_1_2_SLHC2_patch1, CMSSW_4_1_8_patch11, CMSSW_5_3_10, CMSSW_6_1_2_SLHC2, br53-00-04, br53-00-03, br53-00-02, CMSSW_5_3_9_patch3, CMSSW_6_1_2_SLHC1, CMSSW_6_1_X_2012-12-19-0200, CMSSW_6_0_X_2012-08-07-0200, CMSSW_5_2_X_2012-05-03-0200, CMSSW_5_2_X_2012-03-08-0200, CMSSW_5_0_X_2011-12-18-0200, CMSSW_4_4_X_2011-06-09-0400, CMSSW_5_3_9_patch2, CMSSW_6_1_2, CMSSW_5_3_9_patch1, CMSSW_6_1_1_SLHCphase2tk1, CMSSW_5_3_9, CMSSW_6_1_1_SLHCphase1tk1, CMSSW_5_2_9, br53-00-01, CMSSW_6_1_1, CMSSW_5_3_8_patch3, CMSSW_5_3_7_patch6, CMSSW_5_3_8_patch2, CMSSW_5_3_8_patch1, CMSSW_5_3_8, CMSSW_5_3_8_HI_patch2, CMSSW_5_3_7_patch5, CMSSW_5_3_8_HI_patch1, CMSSW_5_2_6_patch2, CMSSW_6_1_0, CMSSW_5_3_8_HI, CMSSW_5_3_7_patch4, CMSSW_5_3_7_patch3, CMSSW_6_0_1_PostLS1v2_patch4, CMSSW_6_1_0_pre8, CMSSW_5_3_7_25nspatch1, CMSSW_5_3_7_patch2, V04-00-10, CMSSW_6_1_0_pre7_TS127013, CMSSW_6_0_1_PostLS1v2_patch3, CMSSW_6_1_0_pre7, CMSSW_5_3_7_patch1, CMSSW_6_1_0_pre6_TS126203_TS126341_patch1, CMSSW_5_3_7_alcapatch1, CMSSW_6_1_0_pre6g496cand01, CMSSW_5_3_7, CMSSW_6_0_1_PostLS1v2_patch2, CMSSW_6_0_1_PostLS1v2_patch1, CMSSW_6_1_0_pre6_TS126203_TS126341, CMSSW_6_1_0_pre6, CMSSW_6_0_1_PostLS1v2, CMSSW_4_4_5_patch2, CMSSW_5_3_6_patch1, CMSSW_5_2_8, CMSSW_6_1_0_pre5, CMSSW_6_0_1_PostLS1v1, CMSSW_5_2_7_hltpatch2, CMSSW_5_3_4_TC125616patch1, V04-00-09, CMSSW_6_0_1, CMSSW_5_3_4_patch2, CMSSW_6_1_0_pre3_TS124729, CMSSW_6_1_0_pre4, CMSSW_5_3_5, CMSSW_5_3_3_patch3, CMSSW_5_3_4_patch1, CMSSW_6_1_0_pre3, CMSSW_4_4_5_patch1, CMSSW_5_2_7, CMSSW_5_3_4, V04-00-08, CMSSW_5_3_2_patch5, V04-00-07, CMSSW_6_1_0_pre2, CMSSW_5_3_4_cand2, CMSSW_5_3_4_cand1_patch1, CMSSW_6_0_0_patch1, V04-00-06, CMSSW_6_0_0_SLHCtkpre1, V04-00-05, V04-00-04, V04-00-03, V04-00-02, CMSSW_6_1_0_pre1, CMSSW_5_3_4_cand1, CMSSW_6_0_0_TS123272, CMSSW_5_2_6_patch1, CMSSW_6_0_0, V04-00-01, CMSSW_4_4_5, V04-00-00, CMSSW_5_3_3_patch2, CMSSW_4_2_8_SLHChcal6, CMSSW_5_3_3, CMSSW_5_3_3_patch1, CMSSW_6_0_0_pre11, CMSSW_6_0_0_pre10, CMSSW_4_2_8_SLHChcal5, CMSSW_6_0_0_pre9, CMSSW_4_2_8_SLHCstd2_patch2, CMSSW_4_2_8_SLHCtk3_patch2, CMSSW_4_2_8_SLHChcal2_patch3, CMSSW_5_3_2_patch4, CMSSW_6_0_0_pre8, CMSSW_4_2_8_SLHCstd2_patch1, CMSSW_4_2_8_SLHCtk3_patch1, CMSSW_4_2_8_SLHChcal4_patch4, CMSSW_5_3_3_cand1, CMSSW_5_3_2_patch2, CMSSW_5_3_2_metpatch1, CMSSW_5_2_6_hltpatch1, CMSSW_4_2_8_SLHChcal4_patch3, CMSSW_6_0_0_pre7py273, CMSSW_5_2_6, CMSSW_5_3_2_patch1, CMSSW_4_2_8_SLHChcal4_patch2, CMSSW_4_2_8_SLHChcal4_patch1, CMSSW_5_3_2, CMSSW_6_0_0_pre7, CMSSW_5_2_4_hltpatch4, CMSSW_6_0_0_pre6g495p01, CMSSW_5_2_5_patch3, CMSSW_5_2_5_patch2, CMSSW_6_0_0_pre6, CMSSW_5_3_1, CMSSW_4_1_8_patch10, CMSSW_5_2_5_ecalpatch1, CMSSW_6_0_0_pre5, CMSSW_5_3_0_patch1, CMSSW_4_2_8_SLHChcal4, CMSSW_4_2_8_SLHCtk3, CMSSW_5_2_5, CMSSW_5_2_5_patch1, CMSSW_4_2_9_HLT1_bphpatch4, CMSSW_sm120515b, CMSSW_sm120515a, CMSSW_4_2_8_SLHCstd2, CMSSW_5_3_0, CMSSW_6_0_0_pre4, CMSSW_5_2_4_hltpatch2, CMSSW_4_2_9_HLT1_bphpatch3, CMSSW_6_0_X, CMSSW_5_2_5_cand1, CMSSW_4_2_8_SLHCtk_patch2, CMSSW_4_2_8_SLHChcal2_patch2, CMSSW_4_2_8_SLHC2_patch2, CMSSW_5_2_4_patch4, CMSSW_6_0_0_pre3, CMSSW_5_2_4_patch3, CMSSW_4_2_8_SLHCtk2, CMSSW_5_2_4_patch2, CMSSW_4_2_8_SLHChcal3, CMSSW_4_2_8_SLHCstd, CMSSW_5_2_4_patch1, CMSSW_5_2_4, CMSSW_5_2_3_patch4, CMSSW_4_2_8_SLHC2_patch1, CMSSW_4_2_8_SLHCtk_patch1, CMSSW_4_2_8_SLHChcal2_patch1, CMSSW_4_2_9_HLT1_bphpatch2, CMSSW_5_2_3_patch3, CMSSW_4_2_9_HLT1_bphpatch1, CMSSW_6_0_0_pre2, CMSSW_5_2_3_patch2, CMSSW_5_2_3_patch1, CMSSW_5_2_3, CMSSW_6_0_0_pre1, CMSSW_5_1_3, CMSSW_5_2_2, CMSSW_5_2_1, CMSSW_4_4_4, CMSSW_5_1_2_patch1, CMSSW_5_2_0, CMSSW_5_1_1_patch3, CMSSW_5_2_0_pre5_TS117504, CMSSW_5_1_2, CMSSW_5_2_0_pre6, CMSSW_5_1_1_patch2, CMSSW_4_4_3_patch1, CMSSW_5_1_1_patch1, CMSSW_5_2_0_pre5, CMSSW_5_1_1, CMSSW_5_0_1_patch3, CMSSW_4_1_8_patch8, CMSSW_5_0_1_patch2, CMSSW_5_2_0_pre4, CMSSW_4_2_8_SLHCtk, CMSSW_5_0_1_patch1, CMSSW_5_2_0_pre3HLT, CMSSW_4_2_8_p7rootfix, CMSSW_5_2_0_pre3, CMSSW_5_0_1, CMSSW_5_2_0_pre2_TS113282, CMSSW_4_4_3, CMSSW_5_0_0_patch1, CMSSW_5_2_0_pre2, CMSSW_5_2_0_pre1, CMSSW_5_1_0_pre2, CMSSW_5_1_0_pre1, CMSSW_4_1_8_patch7, CMSSW_4_4_2_patch10, CMSSW_5_0_0, CMSSW_4_2_8_SLHChcal, CMSSW_4_4_2_patch9, CMSSW_4_4_2_patch8, CMSSW_4_1_8_patch6, CMSSW_5_0_0_pre7, CMSSW_4_2_8_SLHC1, CMSSW_4_2_8_SLHC2, CMSSW_5_0_0_pre6g494, CMSSW_4_4_2_patch7, CMSSW_4_1_8_patch5, CMSSW_5_0_0_pre6, CMSSW_4_4_2_patch6, CMSSW_4_1_8_patch4, CMSSW_5_0_0_pre5_root532rc1, CMSSW_4_4_2_patch5, CMSSW_4_4_2_patch4, CMSSW_4_4_2_patch3, CMSSW_4_2_3_SLHC4_patch1, CMSSW_4_4_2_patch2, CMSSW_5_0_0_pre5, CMSSW_4_4_2_patch1, CMSSW_4_4_2, CMSSW_5_0_0_pre4, CMSSW_4_4_0_patch4, CMSSW_4_2_8_patch7, CMSSW_5_0_0_pre3, CMSSW_4_4_1, CMSSW_5_0_0_pre2, CMSSW_4_4_0_patch3, CMSSW_4_2_8_patch6, CMSSW_4_4_0_patch2, CMSSW_4_2_9_HLT1_hltpatch2, CMSSW_4_2_9_HLT2_hltpatch1, CMSSW_4_4_0_patch1, CMSSW_4_2_8_patch5, CMSSW_4_2_9_HLT3, CMSSW_5_0_0_pre1, CMSSW_4_4_0, CMSSW_4_2_9_HLT2, CMSSW_4_2_8_patch4, CMSSW_4_2_9_HLT1_patch1, CMSSW_4_4_0_pre10, CMSSW_4_1_8_patch1, CMSSW_4_2_8_patch3, CMSSW_4_4_0_pre9, CMSSW_4_1_8, CMSSW_4_2_8_patch2, CMSSW_4_2_9_HLT1, CMSSW_4_2_9_HLT, CMSSW_4_4_0_pre8, CMSSW_4_2_7_hltpatch3, CMSSW_4_1_7_patch3, CMSSW_4_2_8_patch1, CMSSW_4_4_0_pre7_g494p02, CMSSW_4_1_7_patch2, CMSSW_4_4_0_pre7, CMSSW_4_4_0_pre6, CMSSW_4_2_8, CMSSW_4_2_7_hltpatch2, CMSSW_4_2_3_SLHC4, CMSSW_4_2_3_SLHC2, CMSSW_4_2_5_hltpatch1, CMSSW_4_2_7_hltpatch1, CMSSW_4_2_7_patch2, CMSSW_4_4_0_pre5, CMSSW_4_2_7_patch1, CMSSW_4_2_7, CMSSW_4_1_7_patch1, CMSSW_4_4_0_pre4, CMSSW_4_3_0_dqmpatch2, CMSSW_4_2_6, CMSSW_4_4_0_pre3, CMSSW_4_3_0_dqmpatch1, CMSSW_4_3_0, CMSSW_4_4_0_pre2, CMSSW_4_2_4_patch2, CMSSW_4_2_4_hltpatch1, CMSSW_4_2_5, CMSSW_4_1_7, V03-03-05-01, CMSSW_4_4_0_pre1, CMSSW_4_3_0_pre6_dqmIO, CMSSW_4_3_0_pre7, CMSSW_4_2_4_patch1, CMSSW_4_2_3_SLHC3, CMSSW_4_2_4, CMSSW_4_1_6_patch1, CMSSW_4_2_3_patch5, CMSSW_4_2_3_patch4, CMSSW_4_3_0_pre6, CMSSW_4_2_3_patch3, V03-05-00, CMSSW_4_2_3_patch2, CMSSW_4_3_0_pre5, CMSSW_4_2_3_patch1, CMSSW_4_2_3_SLHC_pre1, CMSSW_4_1_6, CMSSW_4_2_2_patch2, CMSSW_4_2_3, CMSSW_4_2_2_patch1, CMSSW_4_3_0_pre4, CMSSW_4_2_1_patch2, CMSSW_4_2_2_SLHC_pre1, CMSSW_4_1_4_patch4, CMSSW_4_2_2, CMSSW_4_1_5, CMSSW_4_2_1_patch1, CMSSW_4_1_4_patch3, CMSSW_4_3_0_pre3, CMSSW_4_2_1, CMSSW_4_1_4_patch2, CMSSW_4_1_4_patch1, CMSSW_4_1_4, CMSSW_4_2_0, CMSSW_4_3_0_pre2, CMSSW_4_3_0_pre1, CMSSW_4_1_3_patch2, CMSSW_4_2_0_pre8, V03-04-00-01, CMSSW_4_1_3, CMSSW_4_1_2_patch1, CMSSW_4_1_2, CMSSW_3_11_3, CMSSW_4_2_0_pre7, CMSSW_3_11_2, CMSSW_4_2_0_pre6, CMSSW_3_11_1_hltpatch1, CMSSW_3_11_1_hclpatch1, CMSSW_3_11_1_patch3, CMSSW_4_2_0_pre5, CMSSW_3_11_1_patch2, V03-04-00, CMSSW_4_2_0_pre4, CMSSW_3_11_1_patch1, CMSSW_4_2_0_pre3, V03-03-06, CMSSW_3_11_1, CMSSW_4_2_0_pre2, CMSSW_4_2_0_pre1, CMSSW_3_11_0, CMSSW_3_10_1, CMSSW_3_11_0_pre4, CMSSW_3_11_0_pre5, CMSSW_3_11_0_pre3, CMSSW_3_11_0_pre2, CMSSW_3_10_0, CMSSW_3_11_0_pre1, CMSSW_3_10_0_pre9, V03-03-05, CMSSW_3_10_0_pre8, CMSSW_3_10_0_pre7g494c1, CMSSW_3_10_0_pre7, CMSSW_3_10_0_pre6, V03-03-04, CMSSW_3_10_0_pre5, CMSSW_3_10_0_pre4, CMSSW_3_10_0_pre3, V03-03-03
Branch point for: branch53X_calibration
Changes since 1.18: +11 -5 lines
Log Message:
allow for spaces in parameter selection string for better readability
(just remove them before interpretation)

File Contents

# User Rev Content
1 flucke 1.5 /** \file AlignableParameterBuilder.cc
2     *
3 flucke 1.19 * $Date: 2010/09/10 11:36:58 $
4     * $Revision: 1.18 $
5 fronga 1.13
6     */
7 flucke 1.5
8 flucke 1.17 // This class's header should be first:
9     #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterBuilder.h"
10    
11 fronga 1.1 #include "FWCore/MessageLogger/interface/MessageLogger.h"
12 flucke 1.8 #include "FWCore/ParameterSet/interface/ParameterSet.h"
13 flucke 1.17 #include "FWCore/Utilities/interface/Exception.h"
14 flucke 1.8
15 fronga 1.1 #include "Alignment/CommonAlignment/interface/Alignable.h"
16 flucke 1.17 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
17 fronga 1.1
18 flucke 1.17 #include "Alignment/CommonAlignmentParametrization/interface/AlignmentParametersFactory.h"
19 fronga 1.1
20 flucke 1.9 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterSelector.h"
21 flucke 1.12 #include "Alignment/CommonAlignmentAlgorithm/interface/SelectionUserVariables.h"
22 flucke 1.8
23 flucke 1.19 #include <algorithm>
24 fronga 1.1
25 flucke 1.17 using namespace AlignmentParametersFactory;
26 fronga 1.1
27     //__________________________________________________________________________________________________
28 mussgill 1.18 AlignmentParameterBuilder::AlignmentParameterBuilder(AlignableTracker* alignableTracker,
29     AlignableExtras* alignableExtras) :
30     theAlignables(),
31     theAlignableTracker(alignableTracker),
32     theAlignableMuon(0),
33     theAlignableExtras(alignableExtras)
34 fronga 1.13 {
35     }
36    
37     //__________________________________________________________________________________________________
38     AlignmentParameterBuilder::AlignmentParameterBuilder(AlignableTracker* alignableTracker,
39 mussgill 1.18 AlignableMuon* alignableMuon,
40     AlignableExtras* alignableExtras) :
41     theAlignables(),
42     theAlignableTracker(alignableTracker),
43     theAlignableMuon(alignableMuon),
44     theAlignableExtras(alignableExtras)
45 fronga 1.13 {
46     }
47    
48    
49     //__________________________________________________________________________________________________
50     AlignmentParameterBuilder::AlignmentParameterBuilder(AlignableTracker* alignableTracker,
51 mussgill 1.18 AlignableExtras* alignableExtras,
52 fronga 1.13 const edm::ParameterSet &pSet) :
53 mussgill 1.18 theAlignables(),
54     theAlignableTracker(alignableTracker),
55     theAlignableMuon(0),
56     theAlignableExtras(alignableExtras)
57 fronga 1.1 {
58 flucke 1.17 this->addAllSelections(pSet);
59 flucke 1.8 }
60 fronga 1.1
61 flucke 1.8 //__________________________________________________________________________________________________
62     AlignmentParameterBuilder::AlignmentParameterBuilder(AlignableTracker* alignableTracker,
63 fronga 1.13 AlignableMuon* alignableMuon,
64 mussgill 1.18 AlignableExtras* alignableExtras,
65 fronga 1.13 const edm::ParameterSet &pSet) :
66 mussgill 1.18 theAlignables(),
67     theAlignableTracker(alignableTracker),
68     theAlignableMuon(alignableMuon),
69     theAlignableExtras(alignableExtras)
70 flucke 1.8 {
71 flucke 1.17 this->addAllSelections(pSet);
72 fronga 1.1 }
73    
74 flucke 1.17 //__________________________________________________________________________________________________
75     void AlignmentParameterBuilder::addAllSelections(const edm::ParameterSet &pSet)
76     {
77     AlignmentParameterSelector selector(0);
78     std::vector<std::string> selsTypes(pSet.getParameter<std::vector<std::string> >("parameterTypes"));
79    
80     for (unsigned int i = 0; i < selsTypes.size(); ++i) {
81     std::vector<std::string> selSetType(selector.decompose(selsTypes[i], ','));
82     if (selSetType.size() != 2) {
83     throw cms::Exception("BadConfig") << "AlignmentParameterBuilder"
84     << "parameterTypes should contain 2 comma separated strings"
85     << ", but found '" << selsTypes[i] << "'.";
86     }
87     this->addSelections(pSet.getParameter<edm::ParameterSet>(selSetType[0]),
88     AlignmentParametersFactory::parametersType(selSetType[1]));
89     }
90     }
91 fronga 1.13
92 fronga 1.1 //__________________________________________________________________________________________________
93 flucke 1.17 unsigned int AlignmentParameterBuilder::addSelections(const edm::ParameterSet &pSet,
94     ParametersType parType)
95 flucke 1.8 {
96    
97 flucke 1.17 const unsigned int oldAliSize = theAlignables.size();
98    
99 mussgill 1.18 AlignmentParameterSelector selector( theAlignableTracker, theAlignableMuon, theAlignableExtras );
100 fronga 1.13 const unsigned int addedSets = selector.addSelections(pSet);
101 flucke 1.8
102 cklae 1.16 const align::Alignables &alignables = selector.selectedAlignables();
103 fronga 1.13 const std::vector<std::vector<char> > &paramSels = selector.selectedParameters();
104    
105 cklae 1.16 align::Alignables::const_iterator iAli = alignables.begin();
106 fronga 1.13 std::vector<std::vector<char> >::const_iterator iParamSel = paramSels.begin();
107     unsigned int nHigherLevel = 0;
108    
109     while (iAli != alignables.end() && iParamSel != paramSels.end()) {
110     std::vector<bool> boolParSel;
111 flucke 1.19 std::vector<char> parSel(*iParamSel); // copy, since decodeParamSel may manipulate
112     bool charSelIsGeneral = this->decodeParamSel(parSel, boolParSel);
113 flucke 1.17 if (this->add(*iAli, parType, boolParSel)) ++nHigherLevel;
114 flucke 1.19 if (charSelIsGeneral) this->addFullParamSel((*iAli)->alignmentParameters(), parSel);
115 fronga 1.13
116     ++iAli;
117     ++iParamSel;
118     }
119 flucke 1.5
120 fronga 1.13 edm::LogInfo("Alignment") << "@SUB=AlignmentParameterBuilder::addSelections"
121     << " Added " << addedSets << " set(s) of alignables with "
122 flucke 1.17 << theAlignables.size() - oldAliSize << " alignables in total,"
123     << " of which " << nHigherLevel << " are higher level "
124     << "(using " << parametersTypeName(parType) << "AlignmentParameters).";
125 flucke 1.9
126 fronga 1.13 return addedSets;
127 flucke 1.5 }
128    
129     //__________________________________________________________________________________________________
130 flucke 1.17 bool AlignmentParameterBuilder::add(Alignable *alignable,
131     ParametersType parType,
132     const std::vector<bool> &sel)
133 flucke 1.9 {
134 flucke 1.17 AlignmentParameters *paras = AlignmentParametersFactory::createParameters(alignable, parType, sel);
135 flucke 1.9 alignable->setAlignmentParameters(paras);
136     theAlignables.push_back(alignable);
137    
138 flucke 1.15 const int aliTypeId = alignable->alignableObjectId();
139 cklae 1.16 const bool isHigherLevel = (aliTypeId != align::AlignableDet
140     && aliTypeId != align::AlignableDetUnit);
141 flucke 1.9 return isHigherLevel;
142 flucke 1.5 }
143    
144    
145     //__________________________________________________________________________________________________
146 cklae 1.16 unsigned int AlignmentParameterBuilder::add(const align::Alignables &alignables,
147 flucke 1.17 ParametersType parType, const std::vector<bool> &sel)
148 flucke 1.5 {
149    
150 flucke 1.9 unsigned int nHigherLevel = 0;
151 fronga 1.1
152 cklae 1.16 for (align::Alignables::const_iterator iAli = alignables.begin();
153 flucke 1.9 iAli != alignables.end(); ++iAli) {
154 flucke 1.17 if (this->add(*iAli, parType, sel)) ++nHigherLevel;
155 fronga 1.1 }
156    
157 flucke 1.9 return nHigherLevel;
158 fronga 1.1 }
159    
160    
161     //__________________________________________________________________________________________________
162     void AlignmentParameterBuilder::fixAlignables(int n)
163     {
164    
165 fpschill 1.3 if (n<1 || n>3) {
166 flucke 1.5 edm::LogError("BadArgument") << " n = " << n << " is not in [1,3]";
167 fronga 1.1 return;
168     }
169    
170 cklae 1.16 align::Alignables theNewAlignables;
171 fronga 1.1 int i=0;
172     int imax = theAlignables.size();
173 cklae 1.16 for ( align::Alignables::const_iterator ia=theAlignables.begin();
174 fronga 1.1 ia!=theAlignables.end(); ia++ )
175     {
176     i++;
177     if ( n==1 && i>1 )
178     theNewAlignables.push_back(*ia);
179     else if ( n==2 && i>1 && i<imax )
180     theNewAlignables.push_back(*ia);
181     else if ( n==3 && i>2 && i<imax)
182     theNewAlignables.push_back(*ia);
183     }
184    
185     theAlignables = theNewAlignables;
186    
187 flucke 1.10 edm::LogInfo("Alignment") << "@SUB=AlignmentParameterBuilder::fixAlignables"
188     << "removing " << n << " alignables, so that "
189     << theAlignables.size() << " alignables left";
190 fronga 1.1 }
191    
192 flucke 1.12 //__________________________________________________________________________________________________
193 flucke 1.19 bool AlignmentParameterBuilder::decodeParamSel(std::vector<char> &paramSelChar,
194 flucke 1.12 std::vector<bool> &result) const
195     {
196     result.clear();
197 flucke 1.19 // remove all spaces from paramSelChar - useful to group the parameters if they are many
198     paramSelChar.erase(std::remove(paramSelChar.begin(), paramSelChar.end(), ' '),
199     paramSelChar.end());
200    
201 flucke 1.12 bool anyNon01 = false;
202    
203     for (unsigned int pos = 0; pos < paramSelChar.size(); ++pos) {
204    
205     switch (paramSelChar[pos]) {
206     default:
207     anyNon01 = true;
208     // no break;
209     case '1':
210     result.push_back(true);
211     break;
212     case '0':
213     result.push_back(false);
214     break;
215     }
216     }
217    
218     return anyNon01;
219     }
220    
221     //__________________________________________________________________________________________________
222     bool AlignmentParameterBuilder::addFullParamSel(AlignmentParameters *aliParams,
223     const std::vector<char> &fullSel) const
224     {
225     if (!aliParams) return false;
226    
227     aliParams->setUserVariables(new SelectionUserVariables(fullSel));
228    
229     return true;
230     }