Revision: | 1.7 |
Committed: | Fri Feb 11 12:47:43 2011 UTC (14 years, 2 months ago) by flucke |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | CMSSW_6_2_0, CMSSW_6_2_0_pre7_TS133806, CMSSW_5_3_11_patch3, CMSSW_6_1_2_SLHC6_patch1, CMSSW_5_3_11_patch2, CMSSW_5_3_11_patch1, CMSSW_6_2_0_pre8, CMSSW_6_1_2_SLHC6, V04-00-14, V04-00-13, CMSSW_6_1_2_SLHC5, CMSSW_5_3_11, CMSSW_6_2_0_pre7_TS132947, CMSSW_4_4_5_patch3, CMSSW_6_2_0_pre7_g496p02, V04-00-09-53X-calib-V01, CMSSW_6_2_0_pre7, V04-00-12, 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_2_0_pre6_patch1, CMSSW_6_1_2_SLHC2_patch2, CMSSW_6_2_0_pre6, CMSSW_5_3_10_patch1, CMSSW_6_1_2_SLHC3, CMSSW_6_1_2_SLHC2_patch1, CMSSW_5_3_10, CMSSW_6_1_2_SLHC2, CMSSW_6_2_0_pre5slc6, br53-00-04, br53-00-03, br53-00-02, CMSSW_5_3_9_patch3, CMSSW_6_1_2_SLHC1, CMSSW_6_2_0_pre5, 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_6_2_0_pre4, CMSSW_5_3_9_patch1, CMSSW_6_2_0_pre3, CMSSW_6_1_1_SLHCphase2tk1, CMSSW_5_3_9, CMSSW_6_1_1_SLHCphase1tk1, CMSSW_5_2_9, br53-00-01, CMSSW_6_2_0_pre2, CMSSW_6_1_1, CMSSW_5_3_8_patch3, CMSSW_5_3_7_patch6, CMSSW_6_2_0_pre1, 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, V04-00-11, 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_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_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_4_2_patch10, CMSSW_5_0_0, CMSSW_4_2_8_SLHChcal, CMSSW_4_4_2_patch9, CMSSW_4_4_2_patch8, 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_5_0_0_pre6, CMSSW_4_4_2_patch6, 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_2_8_patch3, CMSSW_4_4_0_pre9, 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_2_8_patch1, CMSSW_4_4_0_pre7_g494p02, 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_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, 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_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_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_2_2, CMSSW_4_2_1_patch1, CMSSW_4_3_0_pre3, CMSSW_4_2_1, CMSSW_4_2_0, CMSSW_4_3_0_pre2, CMSSW_4_3_0_pre1, CMSSW_4_2_0_pre8, V03-04-00-01, CMSSW_4_2_0_pre7, CMSSW_4_2_0_pre6, CMSSW_4_2_0_pre5, V03-04-00, V03-03-06, HEAD |
Branch point for: | branch53X_calibration |
Changes since 1.6: | +26 -0 lines |
Log Message: | enable to write out surface deformation parameters for DetUnits, but writing only treated for absolute positions (not relative), reading not at all... |
# | User | Rev | Content |
---|---|---|---|
1 | cklae | 1.5 | #include "TTree.h" |
2 | |||
3 | #include "Alignment/CommonAlignment/interface/Alignable.h" | ||
4 | fronga | 1.1 | #include "FWCore/MessageLogger/interface/MessageLogger.h" |
5 | |||
6 | #include "Alignment/CommonAlignmentAlgorithm/interface/AlignableDataIORoot.h" | ||
7 | |||
8 | // ---------------------------------------------------------------------------- | ||
9 | // constructor | ||
10 | AlignableDataIORoot::AlignableDataIORoot(PosType p) : | ||
11 | AlignableDataIO(p) | ||
12 | { | ||
13 | if (thePosType == Abs) { | ||
14 | treename = "AlignablesAbsPos"; | ||
15 | treetxt = "Alignables abs.Pos"; | ||
16 | } | ||
17 | else if (thePosType == Org) { | ||
18 | treename = "AlignablesOrgPos"; | ||
19 | treetxt = "Alignables org.Pos"; | ||
20 | } | ||
21 | else if (thePosType == Rel) { | ||
22 | treename = "AlignablesRelPos"; | ||
23 | treetxt = "Alignables rel.Pos"; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | // ---------------------------------------------------------------------------- | ||
28 | // create root tree branches (for writing) | ||
29 | |||
30 | void AlignableDataIORoot::createBranches(void) | ||
31 | { | ||
32 | cklae | 1.6 | tree->Branch("Id", &Id, "Id/i"); |
33 | fronga | 1.1 | tree->Branch("ObjId", &ObjId, "ObjId/I"); |
34 | tree->Branch("Pos", &Pos, "Pos[3]/D"); | ||
35 | tree->Branch("Rot", &Rot, "Rot[9]/D"); | ||
36 | flucke | 1.7 | |
37 | tree->Branch("NumDeform", &numDeformationValues_, "NumDeform/i"); | ||
38 | tree->Branch("DeformValues", deformationValues_, "DeformValues[NumDeform]/F"); | ||
39 | fronga | 1.1 | } |
40 | |||
41 | // ---------------------------------------------------------------------------- | ||
42 | // set root tree branch addresses (for reading) | ||
43 | |||
44 | void AlignableDataIORoot::setBranchAddresses(void) | ||
45 | { | ||
46 | tree->SetBranchAddress("Id", &Id); | ||
47 | tree->SetBranchAddress("ObjId", &ObjId); | ||
48 | tree->SetBranchAddress("Pos", &Pos); | ||
49 | tree->SetBranchAddress("Rot", &Rot); | ||
50 | flucke | 1.7 | |
51 | tree->SetBranchAddress("NumDeform", &numDeformationValues_); | ||
52 | tree->SetBranchAddress("DeformValues", deformationValues_); | ||
53 | fronga | 1.1 | } |
54 | |||
55 | // ---------------------------------------------------------------------------- | ||
56 | // find root tree entry based on IDs | ||
57 | |||
58 | cklae | 1.5 | int AlignableDataIORoot::findEntry(align::ID id, align::StructureType comp) |
59 | fronga | 1.1 | { |
60 | if (newopen) { // we're here first time | ||
61 | flucke | 1.2 | edm::LogInfo("Alignment") << "@SUB=AlignableDataIORoot::findEntry" |
62 | << "Filling map ..."; | ||
63 | fronga | 1.1 | treemap.erase(treemap.begin(),treemap.end()); |
64 | for (int ev = 0;ev<tree->GetEntries();ev++) { | ||
65 | tree->GetEntry(ev); | ||
66 | treemap[ std::make_pair(Id,ObjId) ] = ev; | ||
67 | } | ||
68 | newopen=false; | ||
69 | } | ||
70 | |||
71 | // now we have filled the map | ||
72 | cklae | 1.5 | treemaptype::iterator imap = treemap.find( std::make_pair(id,comp) ); |
73 | fronga | 1.1 | int result=-1; |
74 | if (imap != treemap.end()) result=(*imap).second; | ||
75 | return result; | ||
76 | |||
77 | } | ||
78 | |||
79 | // ---------------------------------------------------------------------------- | ||
80 | flucke | 1.3 | int AlignableDataIORoot::writeAbsRaw(const AlignableAbsData &ad) |
81 | fronga | 1.1 | { |
82 | cklae | 1.5 | align::GlobalPoint pos = ad.pos(); |
83 | align::RotationType rot = ad.rot(); | ||
84 | fronga | 1.1 | Id = ad.id(); |
85 | ObjId = ad.objId(); | ||
86 | Pos[0]=pos.x(); Pos[1]=pos.y(); Pos[2]=pos.z(); | ||
87 | Rot[0]=rot.xx(); Rot[1]=rot.xy(); Rot[2]=rot.xz(); | ||
88 | Rot[3]=rot.yx(); Rot[4]=rot.yy(); Rot[5]=rot.yz(); | ||
89 | Rot[6]=rot.zx(); Rot[7]=rot.zy(); Rot[8]=rot.zz(); | ||
90 | flucke | 1.7 | |
91 | const std::vector<double> &deformPars = ad.deformationParameters(); | ||
92 | numDeformationValues_ = (deformPars.size() > kMaxNumPar ? kMaxNumPar : deformPars.size()); | ||
93 | for (unsigned int i = 0; i < numDeformationValues_; ++i) { | ||
94 | deformationValues_[i] = deformPars[i]; | ||
95 | } | ||
96 | |||
97 | fronga | 1.1 | tree->Fill(); |
98 | return 0; | ||
99 | } | ||
100 | |||
101 | // ---------------------------------------------------------------------------- | ||
102 | flucke | 1.3 | int AlignableDataIORoot::writeRelRaw(const AlignableRelData &ad) |
103 | fronga | 1.1 | { |
104 | cklae | 1.5 | align::GlobalVector pos = ad.pos(); |
105 | align::RotationType rot = ad.rot(); | ||
106 | fronga | 1.1 | Id = ad.id(); |
107 | ObjId = ad.objId(); | ||
108 | Pos[0]=pos.x(); Pos[1]=pos.y(); Pos[2]=pos.z(); | ||
109 | Rot[0]=rot.xx(); Rot[1]=rot.xy(); Rot[2]=rot.xz(); | ||
110 | Rot[3]=rot.yx(); Rot[4]=rot.yy(); Rot[5]=rot.yz(); | ||
111 | Rot[6]=rot.zx(); Rot[7]=rot.zy(); Rot[8]=rot.zz(); | ||
112 | flucke | 1.7 | |
113 | const std::vector<double> &deformPars = ad.deformationParameters(); | ||
114 | numDeformationValues_ = (deformPars.size() > kMaxNumPar ? kMaxNumPar : deformPars.size()); | ||
115 | for (unsigned int i = 0; i < numDeformationValues_; ++i) { | ||
116 | deformationValues_[i] = deformPars[i]; | ||
117 | } | ||
118 | |||
119 | fronga | 1.1 | tree->Fill(); |
120 | return 0; | ||
121 | } | ||
122 | |||
123 | // ---------------------------------------------------------------------------- | ||
124 | AlignableAbsData AlignableDataIORoot::readAbsRaw(Alignable* ali,int& ierr) | ||
125 | { | ||
126 | cklae | 1.5 | align::GlobalPoint pos; |
127 | align::RotationType rot; | ||
128 | fronga | 1.1 | |
129 | cklae | 1.5 | align::StructureType typeId = ali->alignableObjectId(); |
130 | align::ID id = ali->id(); | ||
131 | fronga | 1.1 | int entry = findEntry(id,typeId); |
132 | if(entry!=-1) { | ||
133 | tree->GetEntry(entry); | ||
134 | cklae | 1.5 | align::GlobalPoint pos2(Pos[0],Pos[1],Pos[2]); |
135 | align::RotationType rot2(Rot[0],Rot[1],Rot[2], | ||
136 | Rot[3],Rot[4],Rot[5], | ||
137 | Rot[6],Rot[7],Rot[8]); | ||
138 | fronga | 1.1 | pos=pos2; |
139 | rot=rot2; | ||
140 | flucke | 1.7 | |
141 | // FIXME: Should add reading of deformation values? | ||
142 | // Then call Alignable::setSurfaceDeformation(..) ... | ||
143 | fronga | 1.1 | ierr=0; |
144 | } | ||
145 | else ierr=-1; | ||
146 | |||
147 | return AlignableAbsData(pos,rot,id,typeId); | ||
148 | } | ||
149 | |||
150 | // ---------------------------------------------------------------------------- | ||
151 | |||
152 | AlignableRelData AlignableDataIORoot::readRelRaw(Alignable* ali,int& ierr) | ||
153 | { | ||
154 | cklae | 1.5 | align::GlobalVector pos; |
155 | align::RotationType rot; | ||
156 | fronga | 1.1 | |
157 | cklae | 1.5 | align::StructureType typeId = ali->alignableObjectId(); |
158 | align::ID id = ali->id(); | ||
159 | fronga | 1.1 | int entry = findEntry(id,typeId); |
160 | if(entry!=-1) { | ||
161 | tree->GetEntry(entry); | ||
162 | cklae | 1.5 | align::GlobalVector pos2(Pos[0],Pos[1],Pos[2]); |
163 | align::RotationType rot2(Rot[0],Rot[1],Rot[2], | ||
164 | Rot[3],Rot[4],Rot[5], | ||
165 | Rot[6],Rot[7],Rot[8]); | ||
166 | fronga | 1.1 | pos=pos2; |
167 | rot=rot2; | ||
168 | flucke | 1.7 | |
169 | // FIXME: Should add reading of deformation values? | ||
170 | // Then call Alignable::setSurfaceDeformation(..) ... | ||
171 | fronga | 1.1 | ierr=0; |
172 | } | ||
173 | else ierr=-1; | ||
174 | |||
175 | return AlignableRelData(pos,rot,id,typeId); | ||
176 | } |