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) |
# | 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> > ¶mSels = 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> ¶mSelChar, |
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 | } |