Go to the documentation of this file.00001 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00002
00003 #include "Alignment/CommonAlignment/interface/Alignable.h"
00004 #include "Alignment/CommonAlignmentParametrization/interface/RigidBodyAlignmentParameters.h"
00005
00006
00007 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParametersIO.h"
00008
00009
00010
00011 int AlignmentParametersIO::writeOneOrigRigidBody(Alignable *ali)
00012 {
00013
00014 AlignmentParameters *par = ali->alignmentParameters();
00015 AlignmentParameters *parBack = (par ? par->clone(par->parameters(), par->covariance()) : 0);
00016
00017 ali->setAlignmentParameters(new RigidBodyAlignmentParameters(ali, true));
00018 int iret = this->writeOne(ali);
00019
00020 ali->setAlignmentParameters(parBack);
00021
00022 return iret;
00023 }
00024
00025
00026
00027
00028 int
00029 AlignmentParametersIO::write(const align::Alignables& alivec,
00030 bool validCheck)
00031 {
00032 int icount=0;
00033 for(align::Alignables::const_iterator it=alivec.begin();
00034 it!=alivec.end(); it++) {
00035 if ((*it)->alignmentParameters()->isValid() || !(validCheck)) {
00036 icount++;
00037 int iret=writeOne(*it);
00038 if (iret!=0) return iret;
00039 }
00040 }
00041 edm::LogInfo("Alignment") << "@SUB=AlignmentParametersIO::write"
00042 << "Wrote " << icount << " out of " << alivec.size() << " parameters";
00043 return 0;
00044 }
00045
00046
00047
00048
00049 int
00050 AlignmentParametersIO::writeOrigRigidBody(const align::Alignables& alivec, bool validCheck)
00051 {
00052 int icount = 0;
00053 for(align::Alignables::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
00054 if (!validCheck || (*it)->alignmentParameters()->isValid()) {
00055 ++icount;
00056 int iret = this->writeOneOrigRigidBody(*it);
00057 if (iret != 0) return iret;
00058 }
00059 }
00060 edm::LogInfo("Alignment") << "@SUB=AlignmentParametersIO::writeOrigRigidBody"
00061 << "Wrote " << icount << " out of " << alivec.size()
00062 << " original parameters.";
00063 return 0;
00064 }
00065
00066
00067
00068
00069 align::Parameters
00070 AlignmentParametersIO::read(const align::Alignables& alivec, int& ierr)
00071 {
00072 align::Parameters retvec;
00073 int ierr2;
00074 int icount=0;
00075 for(align::Alignables::const_iterator it=alivec.begin();
00076 it!=alivec.end(); it++) {
00077 AlignmentParameters* ad=readOne(*it, ierr2);
00078 if (ad!=0 && ierr2==0) { retvec.push_back(ad); icount++; }
00079 }
00080 edm::LogInfo("Alignment") << "@SUB-AlignmentParametersIO::write"
00081 << "Read " << icount << " out of " << alivec.size() << " parameters";
00082 return retvec;
00083 }