File indexing completed on 2024-04-06 11:56:10
0001 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0002
0003 #include "Alignment/CommonAlignment/interface/Alignable.h"
0004 #include "Alignment/CommonAlignmentParametrization/interface/RigidBodyAlignmentParameters.h"
0005
0006
0007 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParametersIO.h"
0008
0009
0010
0011 int AlignmentParametersIO::writeOneOrigRigidBody(Alignable* ali) {
0012 AlignmentParameters* par = ali->alignmentParameters();
0013 AlignmentParameters* parBack = (par ? par->clone(par->parameters(), par->covariance()) : nullptr);
0014
0015 ali->setAlignmentParameters(new RigidBodyAlignmentParameters(ali, true));
0016 int iret = this->writeOne(ali);
0017
0018 ali->setAlignmentParameters(parBack);
0019
0020 return iret;
0021 }
0022
0023
0024
0025 int AlignmentParametersIO::write(const align::Alignables& alivec, bool validCheck) {
0026 int icount = 0;
0027 for (align::Alignables::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
0028 if ((*it)->alignmentParameters()->isValid() || !(validCheck)) {
0029 icount++;
0030 int iret = writeOne(*it);
0031 if (iret != 0)
0032 return iret;
0033 }
0034 }
0035 edm::LogInfo("Alignment") << "@SUB=AlignmentParametersIO::write"
0036 << "Wrote " << icount << " out of " << alivec.size() << " parameters";
0037 return 0;
0038 }
0039
0040
0041
0042 int AlignmentParametersIO::writeOrigRigidBody(const align::Alignables& alivec, bool validCheck) {
0043 int icount = 0;
0044 for (align::Alignables::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
0045 if (!validCheck || (*it)->alignmentParameters()->isValid()) {
0046 ++icount;
0047 int iret = this->writeOneOrigRigidBody(*it);
0048 if (iret != 0)
0049 return iret;
0050 }
0051 }
0052 edm::LogInfo("Alignment") << "@SUB=AlignmentParametersIO::writeOrigRigidBody"
0053 << "Wrote " << icount << " out of " << alivec.size() << " original parameters.";
0054 return 0;
0055 }
0056
0057
0058
0059
0060 align::Parameters AlignmentParametersIO::read(const align::Alignables& alivec, int& ierr) {
0061 align::Parameters retvec;
0062 int ierr2;
0063 int icount = 0;
0064 for (align::Alignables::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
0065 AlignmentParameters* ad = readOne(*it, ierr2);
0066 if (ad != nullptr && ierr2 == 0) {
0067 retvec.push_back(ad);
0068 icount++;
0069 }
0070 }
0071 edm::LogInfo("Alignment") << "@SUB-AlignmentParametersIO::write"
0072 << "Read " << icount << " out of " << alivec.size() << " parameters";
0073 return retvec;
0074 }