1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
/** \file AlignableExtras
*
* Original author: Andreas Mussgiller, August 2010
*
* $Date: 2010/09/10 10:26:20 $
* $Revision: 1.1 $
* (last update by $Author: mussgill $)
*/
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Utilities/interface/Exception.h"
// Alignment
#include "Alignment/CommonAlignment/interface/AlignableBeamSpot.h"
#include "CondFormats/Alignment/interface/Alignments.h"
#include "CondFormats/Alignment/interface/AlignmentErrorsExtended.h"
#include "Alignment/CommonAlignment/interface/AlignableExtras.h"
//__________________________________________________________________________________________________
AlignableExtras::AlignableExtras() {
align::Alignables& alis = alignableLists_.get("BeamSpot");
alis.push_back(new AlignableBeamSpot());
components_.push_back(alis.back());
}
//__________________________________________________________________________________________________
void AlignableExtras::dump(void) const {
Alignables comp = this->components();
// Dump this
edm::LogInfo("AlignableDump") << " AlignableExtras knows " << comp.size() << " alignable(s)" << std::endl;
// Dump components
for (Alignables::iterator i = comp.begin(); i != comp.end(); ++i)
(*i)->dump();
}
//__________________________________________________________________________________________________
Alignments* AlignableExtras::alignments(void) const {
align::Alignables comp = this->components();
Alignments* m_alignments = new Alignments();
// Add components recursively
for (align::Alignables::iterator i = comp.begin(); i != comp.end(); ++i) {
Alignments* tmpAlignments = (*i)->alignments();
std::copy(tmpAlignments->m_align.begin(), tmpAlignments->m_align.end(), std::back_inserter(m_alignments->m_align));
delete tmpAlignments;
}
// sort by rawId
std::sort(m_alignments->m_align.begin(), m_alignments->m_align.end());
return m_alignments;
}
//__________________________________________________________________________________________________
AlignmentErrorsExtended* AlignableExtras::alignmentErrors(void) const {
align::Alignables comp = this->components();
AlignmentErrorsExtended* m_alignmentErrors = new AlignmentErrorsExtended();
// Add components recursively
for (align::Alignables::iterator i = comp.begin(); i != comp.end(); ++i) {
AlignmentErrorsExtended* tmpAlignmentErrorsExtended = (*i)->alignmentErrors();
std::copy(tmpAlignmentErrorsExtended->m_alignError.begin(),
tmpAlignmentErrorsExtended->m_alignError.end(),
std::back_inserter(m_alignmentErrors->m_alignError));
delete tmpAlignmentErrorsExtended;
}
// sort by rawId
std::sort(m_alignmentErrors->m_alignError.begin(), m_alignmentErrors->m_alignError.end());
return m_alignmentErrors;
}
//______________________________________________________________________________
void AlignableExtras::initializeBeamSpot(double x, double y, double z, double dxdz, double dydz) {
align::Alignables& alis = beamSpot();
AlignableBeamSpot* aliBS = dynamic_cast<AlignableBeamSpot*>(alis.back());
if (aliBS) {
aliBS->initialize(x, y, z, dxdz, dydz);
} else {
edm::LogError("AlignableExtras") << " AlignableBeamSpot not available. Cannot initialize!" << std::endl;
}
}
//______________________________________________________________________________
void AlignableExtras::resetBeamSpot() {
align::Alignables& alis = beamSpot();
AlignableBeamSpot* aliBS = dynamic_cast<AlignableBeamSpot*>(alis.back());
if (aliBS) {
aliBS->reset();
} else {
edm::LogWarning("AlignableExtras") << "@SUB=AlignableExtras::resetBeamSpot"
<< "AlignableBeamSpot not available. Cannot reset!" << std::endl;
}
}
|