File indexing completed on 2024-04-06 11:56:06
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0011 #include "FWCore/Utilities/interface/Exception.h"
0012
0013
0014 #include "Alignment/CommonAlignment/interface/AlignableBeamSpot.h"
0015
0016 #include "CondFormats/Alignment/interface/Alignments.h"
0017 #include "CondFormats/Alignment/interface/AlignmentErrorsExtended.h"
0018
0019 #include "Alignment/CommonAlignment/interface/AlignableExtras.h"
0020
0021
0022 AlignableExtras::AlignableExtras() {
0023 align::Alignables& alis = alignableLists_.get("BeamSpot");
0024 alis.push_back(new AlignableBeamSpot());
0025 components_.push_back(alis.back());
0026 }
0027
0028
0029 void AlignableExtras::dump(void) const {
0030 Alignables comp = this->components();
0031
0032
0033 edm::LogInfo("AlignableDump") << " AlignableExtras knows " << comp.size() << " alignable(s)" << std::endl;
0034
0035
0036 for (Alignables::iterator i = comp.begin(); i != comp.end(); ++i)
0037 (*i)->dump();
0038 }
0039
0040
0041 Alignments* AlignableExtras::alignments(void) const {
0042 align::Alignables comp = this->components();
0043 Alignments* m_alignments = new Alignments();
0044
0045 for (align::Alignables::iterator i = comp.begin(); i != comp.end(); ++i) {
0046 Alignments* tmpAlignments = (*i)->alignments();
0047 std::copy(tmpAlignments->m_align.begin(), tmpAlignments->m_align.end(), std::back_inserter(m_alignments->m_align));
0048 delete tmpAlignments;
0049 }
0050
0051
0052 std::sort(m_alignments->m_align.begin(), m_alignments->m_align.end());
0053
0054 return m_alignments;
0055 }
0056
0057
0058 AlignmentErrorsExtended* AlignableExtras::alignmentErrors(void) const {
0059 align::Alignables comp = this->components();
0060 AlignmentErrorsExtended* m_alignmentErrors = new AlignmentErrorsExtended();
0061
0062
0063 for (align::Alignables::iterator i = comp.begin(); i != comp.end(); ++i) {
0064 AlignmentErrorsExtended* tmpAlignmentErrorsExtended = (*i)->alignmentErrors();
0065 std::copy(tmpAlignmentErrorsExtended->m_alignError.begin(),
0066 tmpAlignmentErrorsExtended->m_alignError.end(),
0067 std::back_inserter(m_alignmentErrors->m_alignError));
0068 delete tmpAlignmentErrorsExtended;
0069 }
0070
0071
0072 std::sort(m_alignmentErrors->m_alignError.begin(), m_alignmentErrors->m_alignError.end());
0073
0074 return m_alignmentErrors;
0075 }
0076
0077
0078 void AlignableExtras::initializeBeamSpot(double x, double y, double z, double dxdz, double dydz) {
0079 align::Alignables& alis = beamSpot();
0080 AlignableBeamSpot* aliBS = dynamic_cast<AlignableBeamSpot*>(alis.back());
0081 if (aliBS) {
0082 aliBS->initialize(x, y, z, dxdz, dydz);
0083 } else {
0084 edm::LogError("AlignableExtras") << " AlignableBeamSpot not available. Cannot initialize!" << std::endl;
0085 }
0086 }
0087
0088
0089 void AlignableExtras::resetBeamSpot() {
0090 align::Alignables& alis = beamSpot();
0091 AlignableBeamSpot* aliBS = dynamic_cast<AlignableBeamSpot*>(alis.back());
0092 if (aliBS) {
0093 aliBS->reset();
0094 } else {
0095 edm::LogWarning("AlignableExtras") << "@SUB=AlignableExtras::resetBeamSpot"
0096 << "AlignableBeamSpot not available. Cannot reset!" << std::endl;
0097 }
0098 }