CMS 3D CMS Logo

AlignableDataIO Class Reference

Abstract base class for IO of alignable positions/shifts. More...

#include <Alignment/CommonAlignmentAlgorithm/interface/AlignableDataIO.h>

Inheritance diagram for AlignableDataIO:

AlignableDataIORoot

List of all members.

Protected Types

enum  PosType { Abs, Org, Rel }

Protected Member Functions

 AlignableDataIO (PosType p)
 Constructor.
virtual int close (void)=0
 Close IO handle.
virtual int open (const char *filename, int iteration, bool writemode)=0
 Open IO handle.
AlignablePositions readAbsPos (const align::Alignables &alivec, int &ierr)
 Read absolute positions of many Alignables.
AlignableAbsData readAbsPos (Alignable *ali, int &ierr)
 Read absolute positions of one Alignable.
virtual AlignableAbsData readAbsRaw (Alignable *ali, int &ierr)=0
 Read absolute positions.
AlignablePositions readOrgPos (const align::Alignables &alivec, int &ierr)
 Read original positions of many Alignables.
AlignableAbsData readOrgPos (Alignable *ali, int &ierr)
 Read original positions of one Alignable.
AlignableShifts readRelPos (const align::Alignables &alivec, int &ierr)
 Read relative positions of many Alignables.
AlignableRelData readRelPos (Alignable *ali, int &ierr)
 Read relative positions of one Alignable.
virtual AlignableRelData readRelRaw (Alignable *ali, int &ierr)=0
 Read relative positions.
int writeAbsPos (const align::Alignables &alivec, bool validCheck)
 Write absolute positions of many Alignables.
int writeAbsPos (Alignable *ali, bool validCheck)
 Write absolute positions of one Alignable.
virtual int writeAbsRaw (const AlignableAbsData &ad)=0
 Write absolute positions.
int writeOrgPos (const align::Alignables &alivec, bool validCheck)
 Write original positions of many Alignables.
int writeOrgPos (Alignable *ali, bool validCheck)
 Write original positions of one Alignable.
int writeRelPos (const align::Alignables &alivec, bool validCheck)
 Write relative positions of many Alignables.
int writeRelPos (Alignable *ali, bool validCheck)
 Write relative positions of one Alignable.
virtual int writeRelRaw (const AlignableRelData &ad)=0
 Write relative positions.
virtual ~AlignableDataIO ()
 Destructor.

Protected Attributes

PosType thePosType


Detailed Description

Abstract base class for IO of alignable positions/shifts.

Derived concrete class must implement raw read/write methods

Definition at line 9 of file AlignableDataIO.h.


Member Enumeration Documentation

enum AlignableDataIO::PosType [protected]

Enumerator:
Abs 
Org 
Rel 

Definition at line 14 of file AlignableDataIO.h.

00014 { Abs, Org, Rel };


Constructor & Destructor Documentation

AlignableDataIO::AlignableDataIO ( PosType  p  )  [inline, protected]

Constructor.

Definition at line 17 of file AlignableDataIO.h.

00017 : thePosType(p) {}; 

virtual AlignableDataIO::~AlignableDataIO (  )  [inline, protected, virtual]

Destructor.

Definition at line 20 of file AlignableDataIO.h.

00020 {};


Member Function Documentation

virtual int AlignableDataIO::close ( void   )  [protected, pure virtual]

Close IO handle.

Implemented in AlignableDataIORoot.

virtual int AlignableDataIO::open ( const char *  filename,
int  iteration,
bool  writemode 
) [protected, pure virtual]

Open IO handle.

Implemented in AlignableDataIORoot.

AlignablePositions AlignableDataIO::readAbsPos ( const align::Alignables alivec,
int ierr 
) [protected]

Read absolute positions of many Alignables.

Definition at line 108 of file AlignableDataIO.cc.

References it, LogDebug, and readAbsPos().

00109 {
00110  
00111   AlignablePositions retvec;
00112   int ierr2=0;
00113   ierr=0;
00114   for( align::Alignables::const_iterator it=alivec.begin();
00115        it!=alivec.end(); it++ ) 
00116     {
00117       AlignableAbsData ad=readAbsPos(*it, ierr2);
00118       if (ierr2==0) retvec.push_back(ad);
00119     }
00120   
00121   LogDebug("ReadAbsPos") << "all,written: " << alivec.size() <<"," << retvec.size();
00122 
00123   return retvec;
00124 
00125 }

AlignableAbsData AlignableDataIO::readAbsPos ( Alignable ali,
int ierr 
) [protected]

Read absolute positions of one Alignable.

Definition at line 9 of file AlignableDataIO.cc.

References readAbsRaw().

Referenced by readAbsPos(), and AlignmentIORoot::readAlignableAbsolutePositions().

00010 { 
00011   return readAbsRaw(ali,ierr);
00012 }

virtual AlignableAbsData AlignableDataIO::readAbsRaw ( Alignable ali,
int ierr 
) [protected, pure virtual]

Read absolute positions.

Implemented in AlignableDataIORoot.

Referenced by readAbsPos(), and readOrgPos().

AlignablePositions AlignableDataIO::readOrgPos ( const align::Alignables alivec,
int ierr 
) [protected]

Read original positions of many Alignables.

Definition at line 149 of file AlignableDataIO.cc.

References it, LogDebug, and readOrgPos().

00150 {
00151 
00152   AlignablePositions retvec;
00153   int ierr2=0;
00154   ierr=0;
00155   for( align::Alignables::const_iterator it=alivec.begin();
00156        it!=alivec.end(); it++ ) 
00157     {
00158       AlignableAbsData ad=readOrgPos(*it, ierr2);
00159       if (ierr2==0) retvec.push_back(ad);
00160     }
00161 
00162   LogDebug("ReadOrgPos") << "all,read: " << alivec.size() <<", "<< retvec.size();
00163 
00164   return retvec;
00165 
00166 }

AlignableAbsData AlignableDataIO::readOrgPos ( Alignable ali,
int ierr 
) [protected]

Read original positions of one Alignable.

Definition at line 16 of file AlignableDataIO.cc.

References readAbsRaw().

Referenced by AlignmentIORoot::readAlignableOriginalPositions(), and readOrgPos().

00017 { 
00018   return readAbsRaw(ali,ierr);
00019 }

AlignableShifts AlignableDataIO::readRelPos ( const align::Alignables alivec,
int ierr 
) [protected]

Read relative positions of many Alignables.

Definition at line 188 of file AlignableDataIO.cc.

References it, LogDebug, and readRelPos().

00189 {
00190 
00191   AlignableShifts retvec;
00192   int ierr2=0;
00193   ierr=0;
00194   for( align::Alignables::const_iterator it=alivec.begin();
00195        it!=alivec.end(); it++ ) 
00196     {
00197       AlignableRelData ad=readRelPos(*it, ierr2);
00198       if (ierr2==0) retvec.push_back(ad);
00199     }
00200   LogDebug("ReadRelPos") << "all,read: " << alivec.size() <<", "<< retvec.size();
00201 
00202   return retvec;
00203 
00204 }

AlignableRelData AlignableDataIO::readRelPos ( Alignable ali,
int ierr 
) [protected]

Read relative positions of one Alignable.

Definition at line 23 of file AlignableDataIO.cc.

References readRelRaw().

Referenced by AlignmentIORoot::readAlignableRelativePositions(), and readRelPos().

00024 { 
00025   return readRelRaw(ali,ierr);
00026 }

virtual AlignableRelData AlignableDataIO::readRelRaw ( Alignable ali,
int ierr 
) [protected, pure virtual]

Read relative positions.

Implemented in AlignableDataIORoot.

Referenced by readRelPos().

int AlignableDataIO::writeAbsPos ( const align::Alignables alivec,
bool  validCheck 
) [protected]

Write absolute positions of many Alignables.

Definition at line 88 of file AlignableDataIO.cc.

References it, LogDebug, and writeAbsPos().

00090 {
00091 
00092   int icount=0;
00093   for( align::Alignables::const_iterator it=alivec.begin();
00094        it!=alivec.end(); it++ ) 
00095     {
00096       int iret = writeAbsPos(*it,validCheck);
00097       if (iret==0) icount++;
00098     }
00099   LogDebug("WriteAbsPos") << "all,written: " << alivec.size() <<","<< icount;
00100 
00101   return 0;
00102 
00103 }

int AlignableDataIO::writeAbsPos ( Alignable ali,
bool  validCheck 
) [protected]

Write absolute positions of one Alignable.

Definition at line 30 of file AlignableDataIO.cc.

References Alignable::alignableObjectId(), Alignable::alignmentParameters(), Alignable::id(), AlignmentParameters::isValid(), GloballyPositioned< T >::position(), rot, GloballyPositioned< T >::rotation(), Alignable::surface(), and writeAbsRaw().

Referenced by writeAbsPos(), and AlignmentIORoot::writeAlignableAbsolutePositions().

00031 {
00032   
00033   if ( !(validCheck) || ali->alignmentParameters()->isValid() ) 
00034     {
00035       // position in global frame
00036       align::PositionType pos = ali->surface().position();
00037       // global rotation
00038       align::RotationType rot = ali->surface().rotation();
00039       // write
00040       return writeAbsRaw( 
00041                          AlignableAbsData( pos,rot,
00042                                            ali->id(),
00043                                            ali->alignableObjectId() )
00044                          );
00045     }
00046 
00047   return 1;
00048 }

virtual int AlignableDataIO::writeAbsRaw ( const AlignableAbsData ad  )  [protected, pure virtual]

Write absolute positions.

Implemented in AlignableDataIORoot.

Referenced by writeAbsPos(), and writeOrgPos().

int AlignableDataIO::writeOrgPos ( const align::Alignables alivec,
bool  validCheck 
) [protected]

Write original positions of many Alignables.

Definition at line 129 of file AlignableDataIO.cc.

References it, LogDebug, and writeOrgPos().

00131 {
00132 
00133   int icount=0;
00134   for( align::Alignables::const_iterator it=alivec.begin();
00135        it!=alivec.end(); it++ ) 
00136     {
00137       int iret=writeOrgPos(*it,validCheck);
00138       if (iret==0) icount++;
00139     }
00140   
00141   LogDebug("WriteOrgPos") << "all,written: " << alivec.size() <<"," << icount;
00142   return 0;
00143 
00144 }

int AlignableDataIO::writeOrgPos ( Alignable ali,
bool  validCheck 
) [protected]

Write original positions of one Alignable.

Definition at line 70 of file AlignableDataIO.cc.

References Alignable::alignableObjectId(), Alignable::alignmentParameters(), Alignable::displacement(), Alignable::globalPosition(), Alignable::globalRotation(), Alignable::id(), AlignmentParameters::isValid(), rot, Alignable::rotation(), and writeAbsRaw().

Referenced by AlignmentIORoot::writeAlignableOriginalPositions(), and writeOrgPos().

00071 {
00072   if ( !(validCheck) || ali->alignmentParameters()->isValid() ) 
00073     {
00074       // orig position
00075       align::PositionType pos = ali->globalPosition() - ali->displacement();
00076       // orig rotation
00077       align::RotationType rot = ali->globalRotation() * ali->rotation().transposed();
00078       // write
00079       return writeAbsRaw(AlignableAbsData(pos,rot,ali->id(),
00080                                           ali->alignableObjectId()));
00081     }
00082 
00083   return 1;
00084 }

int AlignableDataIO::writeRelPos ( const align::Alignables alivec,
bool  validCheck 
) [protected]

Write relative positions of many Alignables.

Definition at line 170 of file AlignableDataIO.cc.

References it, LogDebug, and writeRelPos().

00172 {
00173 
00174   int icount=0;
00175   for( align::Alignables::const_iterator it=alivec.begin();
00176        it!=alivec.end(); it++ ) {
00177     int iret=writeRelPos(*it,validCheck);
00178     if (iret==0) icount++;
00179   }
00180   LogDebug("WriteRelPos") << "all,written: " << alivec.size() <<", "<< icount;
00181   return 0;
00182 
00183 }

int AlignableDataIO::writeRelPos ( Alignable ali,
bool  validCheck 
) [protected]

Write relative positions of one Alignable.

Definition at line 52 of file AlignableDataIO.cc.

References Alignable::alignableObjectId(), Alignable::alignmentParameters(), Alignable::displacement(), Alignable::id(), AlignmentParameters::isValid(), rot, Alignable::rotation(), and writeRelRaw().

Referenced by AlignmentIORoot::writeAlignableRelativePositions(), and writeRelPos().

00053 {
00054   if ( !(validCheck) || ali->alignmentParameters()->isValid() ) 
00055     {
00056       // rel. shift in global frame
00057       align::GlobalVector pos = ali->displacement();
00058       // rel. rotation in global frame
00059       align::RotationType rot = ali->rotation();
00060       // write
00061       return writeRelRaw(AlignableRelData(pos,rot,ali->id(),
00062                                           ali->alignableObjectId()));
00063     }
00064 
00065   return 1;
00066 }

virtual int AlignableDataIO::writeRelRaw ( const AlignableRelData ad  )  [protected, pure virtual]

Write relative positions.

Implemented in AlignableDataIORoot.

Referenced by writeRelPos().


Member Data Documentation

PosType AlignableDataIO::thePosType [protected]

Definition at line 79 of file AlignableDataIO.h.

Referenced by AlignableDataIORoot::AlignableDataIORoot().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:14:17 2009 for CMSSW by  doxygen 1.5.4