CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AlignableDataIO.cc
Go to the documentation of this file.
4 
5 // this class's header
7 
8 // ----------------------------------------------------------------------------
10 {
11  return readAbsRaw(ali,ierr);
12 }
13 
14 
15 // ----------------------------------------------------------------------------
17 {
18  return readAbsRaw(ali,ierr);
19 }
20 
21 
22 // ----------------------------------------------------------------------------
24 {
25  return readRelRaw(ali,ierr);
26 }
27 
28 
29 // ----------------------------------------------------------------------------
30 int AlignableDataIO::writeAbsPos(Alignable* ali, bool validCheck)
31 {
32 
33  if ( !(validCheck) || ali->alignmentParameters()->isValid() )
34  {
35  // position in global frame
37  // global rotation
38  align::RotationType rot = ali->surface().rotation();
39  // write
40  return writeAbsRaw(
41  AlignableAbsData( pos,rot,
42  ali->id(),
43  ali->alignableObjectId() )
44  );
45  }
46 
47  return 1;
48 }
49 
50 
51 // ----------------------------------------------------------------------------
52 int AlignableDataIO::writeRelPos(Alignable* ali, bool validCheck)
53 {
54  if ( !(validCheck) || ali->alignmentParameters()->isValid() )
55  {
56  // rel. shift in global frame
58  // rel. rotation in global frame
59  align::RotationType rot = ali->rotation();
60  // write
61  return writeRelRaw(AlignableRelData(pos,rot,ali->id(),
62  ali->alignableObjectId()));
63  }
64 
65  return 1;
66 }
67 
68 
69 // ----------------------------------------------------------------------------
70 int AlignableDataIO::writeOrgPos(Alignable* ali, bool validCheck)
71 {
72  if ( !(validCheck) || ali->alignmentParameters()->isValid() )
73  {
74  // orig position
76  // orig rotation
77  align::RotationType rot = ali->globalRotation() * ali->rotation().transposed();
78  // write
79  return writeAbsRaw(AlignableAbsData(pos,rot,ali->id(),
80  ali->alignableObjectId()));
81  }
82 
83  return 1;
84 }
85 
86 
87 // ----------------------------------------------------------------------------
89  bool validCheck)
90 {
91 
92  int icount=0;
93  for( align::Alignables::const_iterator it=alivec.begin();
94  it!=alivec.end(); it++ )
95  {
96  int iret = writeAbsPos(*it,validCheck);
97  if (iret==0) icount++;
98  }
99  LogDebug("WriteAbsPos") << "all,written: " << alivec.size() <<","<< icount;
100 
101  return 0;
102 
103 }
104 
105 
106 // ----------------------------------------------------------------------------
109 {
110 
111  AlignablePositions retvec;
112  int ierr2=0;
113  ierr=0;
114  for( align::Alignables::const_iterator it=alivec.begin();
115  it!=alivec.end(); it++ )
116  {
117  AlignableAbsData ad=readAbsPos(*it, ierr2);
118  if (ierr2==0) retvec.push_back(ad);
119  }
120 
121  LogDebug("ReadAbsPos") << "all,written: " << alivec.size() <<"," << retvec.size();
122 
123  return retvec;
124 
125 }
126 
127 
128 // ----------------------------------------------------------------------------
130  bool validCheck )
131 {
132 
133  int icount=0;
134  for( align::Alignables::const_iterator it=alivec.begin();
135  it!=alivec.end(); it++ )
136  {
137  int iret=writeOrgPos(*it,validCheck);
138  if (iret==0) icount++;
139  }
140 
141  LogDebug("WriteOrgPos") << "all,written: " << alivec.size() <<"," << icount;
142  return 0;
143 
144 }
145 
146 
147 // ----------------------------------------------------------------------------
150 {
151 
152  AlignablePositions retvec;
153  int ierr2=0;
154  ierr=0;
155  for( align::Alignables::const_iterator it=alivec.begin();
156  it!=alivec.end(); it++ )
157  {
158  AlignableAbsData ad=readOrgPos(*it, ierr2);
159  if (ierr2==0) retvec.push_back(ad);
160  }
161 
162  LogDebug("ReadOrgPos") << "all,read: " << alivec.size() <<", "<< retvec.size();
163 
164  return retvec;
165 
166 }
167 
168 
169 // ----------------------------------------------------------------------------
171  bool validCheck )
172 {
173 
174  int icount=0;
175  for( align::Alignables::const_iterator it=alivec.begin();
176  it!=alivec.end(); it++ ) {
177  int iret=writeRelPos(*it,validCheck);
178  if (iret==0) icount++;
179  }
180  LogDebug("WriteRelPos") << "all,written: " << alivec.size() <<", "<< icount;
181  return 0;
182 
183 }
184 
185 
186 // ----------------------------------------------------------------------------
189 {
190 
191  AlignableShifts retvec;
192  int ierr2=0;
193  ierr=0;
194  for( align::Alignables::const_iterator it=alivec.begin();
195  it!=alivec.end(); it++ )
196  {
197  AlignableRelData ad=readRelPos(*it, ierr2);
198  if (ierr2==0) retvec.push_back(ad);
199  }
200  LogDebug("ReadRelPos") << "all,read: " << alivec.size() <<", "<< retvec.size();
201 
202  return retvec;
203 
204 }
#define LogDebug(id)
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
virtual int writeAbsRaw(const AlignableAbsData &ad)=0
Write absolute positions.
AlignableAbsData readAbsPos(Alignable *ali, int &ierr)
Read absolute positions of one Alignable.
AlignableAbsData readOrgPos(Alignable *ali, int &ierr)
Read original positions of one Alignable.
int writeAbsPos(Alignable *ali, bool validCheck)
Write absolute positions of one Alignable.
const GlobalVector & displacement() const
Return change of the global position since the creation of the object.
Definition: Alignable.h:135
const RotationType & globalRotation() const
Return the global orientation of the object.
Definition: Alignable.h:132
AlignableData< align::GlobalVector > AlignableRelData
relative position/rotation
Definition: AlignableData.h:43
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
Definition: Alignable.h:57
std::vector< AlignableRelData > AlignableShifts
Definition: AlignableData.h:46
const RotationType & rotation() const
Return change of orientation since the creation of the object.
Definition: Alignable.h:138
virtual AlignableAbsData readAbsRaw(Alignable *ali, int &ierr)=0
Read absolute positions.
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
int writeOrgPos(Alignable *ali, bool validCheck)
Write original positions of one Alignable.
int writeRelPos(Alignable *ali, bool validCheck)
Write relative positions of one Alignable.
virtual AlignableRelData readRelRaw(Alignable *ali, int &ierr)=0
Read relative positions.
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:126
AlignableRelData readRelPos(Alignable *ali, int &ierr)
Read relative positions of one Alignable.
AlignableData< align::GlobalPoint > AlignableAbsData
Absolute position/rotation.
Definition: AlignableData.h:41
std::vector< Alignable * > Alignables
Definition: Utilities.h:28
TkRotation transposed() const
const bool isValid(void) const
Get validity flag.
virtual int writeRelRaw(const AlignableRelData &ad)=0
Write relative positions.
const RotationType & rotation() const
std::vector< AlignableAbsData > AlignablePositions
Definition: AlignableData.h:45
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:129
const PositionType & position() const