ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/CMSSW/Alignment/CommonAlignmentAlgorithm/src/AlignableDataIORoot.cc
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...

File Contents

# Content
1 #include "TTree.h"
2
3 #include "Alignment/CommonAlignment/interface/Alignable.h"
4 #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 tree->Branch("Id", &Id, "Id/i");
33 tree->Branch("ObjId", &ObjId, "ObjId/I");
34 tree->Branch("Pos", &Pos, "Pos[3]/D");
35 tree->Branch("Rot", &Rot, "Rot[9]/D");
36
37 tree->Branch("NumDeform", &numDeformationValues_, "NumDeform/i");
38 tree->Branch("DeformValues", deformationValues_, "DeformValues[NumDeform]/F");
39 }
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
51 tree->SetBranchAddress("NumDeform", &numDeformationValues_);
52 tree->SetBranchAddress("DeformValues", deformationValues_);
53 }
54
55 // ----------------------------------------------------------------------------
56 // find root tree entry based on IDs
57
58 int AlignableDataIORoot::findEntry(align::ID id, align::StructureType comp)
59 {
60 if (newopen) { // we're here first time
61 edm::LogInfo("Alignment") << "@SUB=AlignableDataIORoot::findEntry"
62 << "Filling map ...";
63 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 treemaptype::iterator imap = treemap.find( std::make_pair(id,comp) );
73 int result=-1;
74 if (imap != treemap.end()) result=(*imap).second;
75 return result;
76
77 }
78
79 // ----------------------------------------------------------------------------
80 int AlignableDataIORoot::writeAbsRaw(const AlignableAbsData &ad)
81 {
82 align::GlobalPoint pos = ad.pos();
83 align::RotationType rot = ad.rot();
84 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
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 tree->Fill();
98 return 0;
99 }
100
101 // ----------------------------------------------------------------------------
102 int AlignableDataIORoot::writeRelRaw(const AlignableRelData &ad)
103 {
104 align::GlobalVector pos = ad.pos();
105 align::RotationType rot = ad.rot();
106 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
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 tree->Fill();
120 return 0;
121 }
122
123 // ----------------------------------------------------------------------------
124 AlignableAbsData AlignableDataIORoot::readAbsRaw(Alignable* ali,int& ierr)
125 {
126 align::GlobalPoint pos;
127 align::RotationType rot;
128
129 align::StructureType typeId = ali->alignableObjectId();
130 align::ID id = ali->id();
131 int entry = findEntry(id,typeId);
132 if(entry!=-1) {
133 tree->GetEntry(entry);
134 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 pos=pos2;
139 rot=rot2;
140
141 // FIXME: Should add reading of deformation values?
142 // Then call Alignable::setSurfaceDeformation(..) ...
143 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 align::GlobalVector pos;
155 align::RotationType rot;
156
157 align::StructureType typeId = ali->alignableObjectId();
158 align::ID id = ali->id();
159 int entry = findEntry(id,typeId);
160 if(entry!=-1) {
161 tree->GetEntry(entry);
162 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 pos=pos2;
167 rot=rot2;
168
169 // FIXME: Should add reading of deformation values?
170 // Then call Alignable::setSurfaceDeformation(..) ...
171 ierr=0;
172 }
173 else ierr=-1;
174
175 return AlignableRelData(pos,rot,id,typeId);
176 }