1 |
fronga |
1.1 |
#include "FWCore/MessageLogger/interface/MessageLogger.h"
|
2 |
|
|
|
3 |
|
|
#include "Alignment/CommonAlignmentParametrization/interface/AlignmentTransformations.h"
|
4 |
|
|
#include "Alignment/TrackerAlignment/interface/TrackerAlignableId.h"
|
5 |
|
|
|
6 |
|
|
// this class's header
|
7 |
|
|
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignableDataIO.h"
|
8 |
|
|
|
9 |
|
|
// ----------------------------------------------------------------------------
|
10 |
|
|
AlignableAbsData AlignableDataIO::readAbsPos(Alignable* ali, int& ierr)
|
11 |
|
|
{
|
12 |
|
|
return readAbsRaw(ali,ierr);
|
13 |
|
|
}
|
14 |
|
|
|
15 |
|
|
|
16 |
|
|
// ----------------------------------------------------------------------------
|
17 |
|
|
AlignableAbsData AlignableDataIO::readOrgPos(Alignable* ali, int& ierr)
|
18 |
|
|
{
|
19 |
|
|
return readAbsRaw(ali,ierr);
|
20 |
|
|
}
|
21 |
|
|
|
22 |
|
|
|
23 |
|
|
// ----------------------------------------------------------------------------
|
24 |
|
|
AlignableRelData AlignableDataIO::readRelPos(Alignable* ali, int& ierr)
|
25 |
|
|
{
|
26 |
|
|
return readRelRaw(ali,ierr);
|
27 |
|
|
}
|
28 |
|
|
|
29 |
|
|
|
30 |
|
|
// ----------------------------------------------------------------------------
|
31 |
|
|
int AlignableDataIO::writeAbsPos(Alignable* ali, bool validCheck)
|
32 |
|
|
{
|
33 |
|
|
|
34 |
|
|
if ( ali->alignmentParameters()->isValid() || !(validCheck) )
|
35 |
|
|
{
|
36 |
|
|
// position in global frame
|
37 |
|
|
GlobalPoint pos = ali->surface().position();
|
38 |
|
|
// global rotation
|
39 |
|
|
Surface::RotationType rot = ali->surface().rotation();
|
40 |
|
|
// write
|
41 |
|
|
TrackerAlignableId converter;
|
42 |
|
|
return writeAbsRaw(
|
43 |
|
|
AlignableAbsData( pos,rot,
|
44 |
|
|
converter.alignableId(ali),
|
45 |
|
|
converter.alignableTypeId(ali) )
|
46 |
|
|
);
|
47 |
|
|
}
|
48 |
|
|
else
|
49 |
|
|
return 1;
|
50 |
|
|
}
|
51 |
|
|
|
52 |
|
|
|
53 |
|
|
// ----------------------------------------------------------------------------
|
54 |
|
|
int AlignableDataIO::writeRelPos(Alignable* ali, bool validCheck)
|
55 |
|
|
{
|
56 |
|
|
if ( ali->alignmentParameters()->isValid() || !(validCheck) )
|
57 |
|
|
{
|
58 |
|
|
// rel. shift in global frame
|
59 |
|
|
GlobalVector pos = ali->displacement();
|
60 |
|
|
// rel. rotation in global frame
|
61 |
|
|
Surface::RotationType rot = ali->rotation();
|
62 |
|
|
// write
|
63 |
|
|
TrackerAlignableId converter;
|
64 |
|
|
return writeRelRaw(AlignableRelData(pos,rot,converter.alignableId(ali),
|
65 |
|
|
converter.alignableTypeId(ali)));
|
66 |
|
|
}
|
67 |
|
|
else
|
68 |
|
|
return 1;
|
69 |
|
|
}
|
70 |
|
|
|
71 |
|
|
|
72 |
|
|
// ----------------------------------------------------------------------------
|
73 |
|
|
int AlignableDataIO::writeOrgPos(Alignable* ali, bool validCheck)
|
74 |
|
|
{
|
75 |
|
|
if ( ali->alignmentParameters()->isValid() || !(validCheck) )
|
76 |
|
|
{
|
77 |
|
|
// misalignment shift/rotation
|
78 |
|
|
GlobalVector ashift = ali->displacement();
|
79 |
|
|
Surface::RotationType arot = ali->rotation();
|
80 |
|
|
// global position/rotation
|
81 |
|
|
GlobalPoint cpos = ali->surface().position();
|
82 |
|
|
Surface::RotationType crot = ali->surface().rotation();
|
83 |
|
|
// orig position
|
84 |
|
|
GlobalPoint pos(cpos.x()-ashift.x(),
|
85 |
|
|
cpos.y()-ashift.y(),
|
86 |
|
|
cpos.z()-ashift.z());
|
87 |
|
|
// orig rotation
|
88 |
|
|
int ierr;
|
89 |
|
|
AlignmentTransformations alignTransform;
|
90 |
|
|
Surface::RotationType rot
|
91 |
|
|
= crot*alignTransform.rotationType( alignTransform.algebraicMatrix(arot).inverse(ierr) );
|
92 |
|
|
// write
|
93 |
|
|
TrackerAlignableId converter;
|
94 |
|
|
return writeAbsRaw(AlignableAbsData(pos,rot,converter.alignableId(ali),
|
95 |
|
|
converter.alignableTypeId(ali)));
|
96 |
|
|
}
|
97 |
|
|
else
|
98 |
|
|
return 1;
|
99 |
|
|
}
|
100 |
|
|
|
101 |
|
|
|
102 |
|
|
// ----------------------------------------------------------------------------
|
103 |
|
|
int AlignableDataIO::writeAbsPos(const std::vector<Alignable*>& alivec,
|
104 |
|
|
bool validCheck)
|
105 |
|
|
{
|
106 |
|
|
|
107 |
|
|
int icount=0;
|
108 |
|
|
for( std::vector<Alignable*>::const_iterator it=alivec.begin();
|
109 |
|
|
it!=alivec.end(); it++ )
|
110 |
|
|
{
|
111 |
|
|
int iret = writeAbsPos(*it,validCheck);
|
112 |
|
|
if (iret==0) icount++;
|
113 |
|
|
}
|
114 |
flucke |
1.2 |
LogDebug("WriteAbsPos") << "all,written: " << alivec.size() <<","<< icount;
|
115 |
fronga |
1.1 |
|
116 |
|
|
return 0;
|
117 |
|
|
|
118 |
|
|
}
|
119 |
|
|
|
120 |
|
|
|
121 |
|
|
// ----------------------------------------------------------------------------
|
122 |
|
|
AlignablePositions
|
123 |
|
|
AlignableDataIO::readAbsPos(const std::vector<Alignable*>& alivec, int& ierr)
|
124 |
|
|
{
|
125 |
|
|
|
126 |
|
|
AlignablePositions retvec;
|
127 |
|
|
int ierr2=0;
|
128 |
|
|
ierr=0;
|
129 |
|
|
for( std::vector<Alignable*>::const_iterator it=alivec.begin();
|
130 |
|
|
it!=alivec.end(); it++ )
|
131 |
|
|
{
|
132 |
|
|
AlignableAbsData ad=readAbsPos(*it, ierr2);
|
133 |
|
|
if (ierr2==0) retvec.push_back(ad);
|
134 |
|
|
}
|
135 |
|
|
|
136 |
flucke |
1.2 |
LogDebug("ReadAbsPos") << "all,written: " << alivec.size() <<"," << retvec.size();
|
137 |
fronga |
1.1 |
|
138 |
|
|
return retvec;
|
139 |
|
|
|
140 |
|
|
}
|
141 |
|
|
|
142 |
|
|
|
143 |
|
|
// ----------------------------------------------------------------------------
|
144 |
|
|
int AlignableDataIO::writeOrgPos( const std::vector<Alignable*>& alivec,
|
145 |
|
|
bool validCheck )
|
146 |
|
|
{
|
147 |
|
|
|
148 |
|
|
int icount=0;
|
149 |
|
|
for( std::vector<Alignable*>::const_iterator it=alivec.begin();
|
150 |
|
|
it!=alivec.end(); it++ )
|
151 |
|
|
{
|
152 |
|
|
int iret=writeOrgPos(*it,validCheck);
|
153 |
|
|
if (iret==0) icount++;
|
154 |
|
|
}
|
155 |
|
|
|
156 |
flucke |
1.2 |
LogDebug("WriteOrgPos") << "all,written: " << alivec.size() <<"," << icount;
|
157 |
fronga |
1.1 |
return 0;
|
158 |
|
|
|
159 |
|
|
}
|
160 |
|
|
|
161 |
|
|
|
162 |
|
|
// ----------------------------------------------------------------------------
|
163 |
|
|
AlignablePositions
|
164 |
|
|
AlignableDataIO::readOrgPos(const std::vector<Alignable*>& alivec, int& ierr)
|
165 |
|
|
{
|
166 |
|
|
|
167 |
|
|
AlignablePositions retvec;
|
168 |
|
|
int ierr2=0;
|
169 |
|
|
ierr=0;
|
170 |
|
|
for( std::vector<Alignable*>::const_iterator it=alivec.begin();
|
171 |
|
|
it!=alivec.end(); it++ )
|
172 |
|
|
{
|
173 |
|
|
AlignableAbsData ad=readOrgPos(*it, ierr2);
|
174 |
|
|
if (ierr2==0) retvec.push_back(ad);
|
175 |
|
|
}
|
176 |
|
|
|
177 |
flucke |
1.2 |
LogDebug("ReadOrgPos") << "all,read: " << alivec.size() <<", "<< retvec.size();
|
178 |
fronga |
1.1 |
|
179 |
|
|
return retvec;
|
180 |
|
|
|
181 |
|
|
}
|
182 |
|
|
|
183 |
|
|
|
184 |
|
|
// ----------------------------------------------------------------------------
|
185 |
|
|
int AlignableDataIO::writeRelPos(const std::vector<Alignable*>& alivec,
|
186 |
|
|
bool validCheck )
|
187 |
|
|
{
|
188 |
|
|
|
189 |
|
|
int icount=0;
|
190 |
|
|
for( std::vector<Alignable*>::const_iterator it=alivec.begin();
|
191 |
|
|
it!=alivec.end(); it++ ) {
|
192 |
|
|
int iret=writeRelPos(*it,validCheck);
|
193 |
|
|
if (iret==0) icount++;
|
194 |
|
|
}
|
195 |
flucke |
1.2 |
LogDebug("WriteRelPos") << "all,written: " << alivec.size() <<", "<< icount;
|
196 |
fronga |
1.1 |
return 0;
|
197 |
|
|
|
198 |
|
|
}
|
199 |
|
|
|
200 |
|
|
|
201 |
|
|
// ----------------------------------------------------------------------------
|
202 |
|
|
AlignableShifts
|
203 |
|
|
AlignableDataIO::readRelPos(const std::vector<Alignable*>& alivec, int& ierr)
|
204 |
|
|
{
|
205 |
|
|
|
206 |
|
|
AlignableShifts retvec;
|
207 |
|
|
int ierr2=0;
|
208 |
|
|
ierr=0;
|
209 |
|
|
for( std::vector<Alignable*>::const_iterator it=alivec.begin();
|
210 |
|
|
it!=alivec.end(); it++ )
|
211 |
|
|
{
|
212 |
|
|
AlignableRelData ad=readRelPos(*it, ierr2);
|
213 |
|
|
if (ierr2==0) retvec.push_back(ad);
|
214 |
|
|
}
|
215 |
flucke |
1.2 |
LogDebug("ReadRelPos") << "all,read: " << alivec.size() <<", "<< retvec.size();
|
216 |
fronga |
1.1 |
|
217 |
|
|
return retvec;
|
218 |
|
|
|
219 |
|
|
}
|
220 |
|
|
|