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

# 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     }