Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Corryvreckan
Corryvreckan
Commits
39cebd92
Commit
39cebd92
authored
Nov 06, 2018
by
Simon Spannagel
Browse files
Rename Millepede -> AlignmentMillepede
parent
ad11aa99
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/modules/Millepede/Millepede.cpp
→
src/modules/
Alignment
Millepede/
Alignment
Millepede.cpp
View file @
39cebd92
...
...
@@ -3,7 +3,7 @@
#include
<iomanip>
// Local
#include
"Millepede.h"
#include
"
Alignment
Millepede.h"
#include
"objects/Cluster.h"
using
namespace
corryvreckan
;
...
...
@@ -12,7 +12,7 @@ using namespace std;
//=============================================================================
// Standard constructor, initializes variables
//=============================================================================
Millepede
::
Millepede
(
Configuration
config
,
std
::
vector
<
std
::
shared_ptr
<
Detector
>>
detectors
)
Alignment
Millepede
::
Alignment
Millepede
(
Configuration
config
,
std
::
vector
<
std
::
shared_ptr
<
Detector
>>
detectors
)
:
Module
(
std
::
move
(
config
),
std
::
move
(
detectors
))
{
m_numberOfTracksForAlignment
=
m_config
.
get
<
size_t
>
(
"number_of_tracks"
,
20000
);
...
...
@@ -32,12 +32,12 @@ Millepede::Millepede(Configuration config, std::vector<std::shared_ptr<Detector>
//=============================================================================
// Destructor
//=============================================================================
Millepede
::~
Millepede
()
{}
Alignment
Millepede
::~
Alignment
Millepede
()
{}
//=============================================================================
// Initialization
//=============================================================================
void
Millepede
::
initialise
()
{
void
Alignment
Millepede
::
initialise
()
{
// Renumber the planes in Millepede, ignoring masked planes.
unsigned
int
index
=
0
;
...
...
@@ -66,7 +66,7 @@ void Millepede::initialise() {
}
// During run, just pick up tracks and save them till the end
StatusCode
Millepede
::
run
(
Clipboard
*
clipboard
)
{
StatusCode
Alignment
Millepede
::
run
(
Clipboard
*
clipboard
)
{
// Get the tracks
Tracks
*
tracks
=
reinterpret_cast
<
Tracks
*>
(
clipboard
->
get
(
"tracks"
));
...
...
@@ -93,7 +93,7 @@ StatusCode Millepede::run(Clipboard* clipboard) {
//=============================================================================
// Main alignment function
//=============================================================================
void
Millepede
::
finalise
()
{
void
Alignment
Millepede
::
finalise
()
{
LOG
(
INFO
)
<<
"Millepede alignment"
;
...
...
@@ -165,7 +165,7 @@ void Millepede::finalise() {
//=============================================================================
// Setup the constraint equations.
//=============================================================================
void
Millepede
::
setConstraints
(
const
size_t
nPlanes
)
{
void
Alignment
Millepede
::
setConstraints
(
const
size_t
nPlanes
)
{
// Calculate the mean z-position.
double
avgz
=
0.
;
...
...
@@ -245,7 +245,7 @@ void Millepede::setConstraints(const size_t nPlanes) {
//=============================================================================
// Define a single constraint equation.
//=============================================================================
void
Millepede
::
addConstraint
(
const
std
::
vector
<
double
>&
dercs
,
const
double
rhs
)
{
void
Alignment
Millepede
::
addConstraint
(
const
std
::
vector
<
double
>&
dercs
,
const
double
rhs
)
{
Constraint
constraint
;
// Set the right-hand side (Lagrange multiplier value, sum of equation).
...
...
@@ -258,7 +258,7 @@ void Millepede::addConstraint(const std::vector<double>& dercs, const double rhs
//=============================================================================
// Add the equations for one track to the matrix
//=============================================================================
bool
Millepede
::
putTrack
(
Track
*
track
,
const
size_t
nPlanes
)
{
bool
Alignment
Millepede
::
putTrack
(
Track
*
track
,
const
size_t
nPlanes
)
{
std
::
vector
<
Equation
>
equations
;
const
size_t
nParameters
=
6
*
nPlanes
;
...
...
@@ -362,14 +362,14 @@ bool Millepede::putTrack(Track* track, const size_t nPlanes) {
//=============================================================================
// Store the parameters for one measurement
//=============================================================================
void
Millepede
::
addEquation
(
std
::
vector
<
Equation
>&
equations
,
const
std
::
vector
<
double
>&
derlc
,
const
std
::
vector
<
double
>&
dergb
,
const
std
::
vector
<
double
>&
dernl
,
const
std
::
vector
<
int
>&
dernli
,
const
std
::
vector
<
double
>&
slopes
,
const
double
rmeas
,
const
double
sigma
)
{
void
Alignment
Millepede
::
addEquation
(
std
::
vector
<
Equation
>&
equations
,
const
std
::
vector
<
double
>&
derlc
,
const
std
::
vector
<
double
>&
dergb
,
const
std
::
vector
<
double
>&
dernl
,
const
std
::
vector
<
int
>&
dernli
,
const
std
::
vector
<
double
>&
slopes
,
const
double
rmeas
,
const
double
sigma
)
{
if
(
sigma
<=
0.
)
{
LOG
(
ERROR
)
<<
"Invalid cluster error ("
<<
sigma
<<
")"
;
...
...
@@ -410,10 +410,10 @@ void Millepede::addEquation(std::vector<Equation>& equations,
//=============================================================================
// Track fit (local fit)
//=============================================================================
bool
Millepede
::
fitTrack
(
const
std
::
vector
<
Equation
>&
equations
,
std
::
vector
<
double
>&
trackParams
,
const
bool
singlefit
,
const
unsigned
int
iteration
)
{
bool
Alignment
Millepede
::
fitTrack
(
const
std
::
vector
<
Equation
>&
equations
,
std
::
vector
<
double
>&
trackParams
,
const
bool
singlefit
,
const
unsigned
int
iteration
)
{
std
::
vector
<
double
>
blvec
(
m_nalc
,
0.
);
std
::
vector
<
std
::
vector
<
double
>>
clmat
(
m_nalc
,
std
::
vector
<
double
>
(
m_nalc
,
0.
));
...
...
@@ -575,7 +575,7 @@ bool Millepede::fitTrack(const std::vector<Equation>& equations,
//=============================================================================
// Update the module positions and orientations.
//=============================================================================
void
Millepede
::
updateGeometry
()
{
void
Alignment
Millepede
::
updateGeometry
()
{
auto
nPlanes
=
num_detectors
();
for
(
const
auto
&
det
:
get_detectors
())
{
if
(
det
->
isDUT
())
{
...
...
@@ -618,7 +618,7 @@ void Millepede::updateGeometry() {
//=============================================================================
// Initialise the vectors and arrays.
//=============================================================================
bool
Millepede
::
reset
(
const
size_t
nPlanes
,
const
double
startfact
)
{
bool
Alignment
Millepede
::
reset
(
const
size_t
nPlanes
,
const
double
startfact
)
{
// Reset the list of track equations.
m_equations
.
clear
();
...
...
@@ -665,7 +665,7 @@ bool Millepede::reset(const size_t nPlanes, const double startfact) {
//=============================================================================
//
//=============================================================================
bool
Millepede
::
fitGlobal
()
{
bool
Alignment
Millepede
::
fitGlobal
()
{
m_diag
.
assign
(
m_nagb
,
0.
);
std
::
vector
<
double
>
bgvecPrev
(
m_nagb
,
0.
);
...
...
@@ -824,7 +824,7 @@ bool Millepede::fitGlobal() {
// Solve the equation V * X = B.
// V is replaced by its inverse matrix and B by X, the solution vector
//=============================================================================
int
Millepede
::
invertMatrix
(
std
::
vector
<
std
::
vector
<
double
>>&
v
,
std
::
vector
<
double
>&
b
,
const
size_t
n
)
{
int
Alignment
Millepede
::
invertMatrix
(
std
::
vector
<
std
::
vector
<
double
>>&
v
,
std
::
vector
<
double
>&
b
,
const
size_t
n
)
{
int
rank
=
0
;
const
double
eps
=
0.0000000000001
;
...
...
@@ -952,7 +952,7 @@ int Millepede::invertMatrix(std::vector<std::vector<double>>& v, std::vector<dou
//=============================================================================
// Simplified version.
//=============================================================================
int
Millepede
::
invertMatrixLocal
(
std
::
vector
<
std
::
vector
<
double
>>&
v
,
std
::
vector
<
double
>&
b
,
const
size_t
n
)
{
int
Alignment
Millepede
::
invertMatrixLocal
(
std
::
vector
<
std
::
vector
<
double
>>&
v
,
std
::
vector
<
double
>&
b
,
const
size_t
n
)
{
int
rank
=
0
;
const
double
eps
=
0.0000000000001
;
...
...
@@ -1034,7 +1034,7 @@ int Millepede::invertMatrixLocal(std::vector<std::vector<double>>& v, std::vecto
// Return the limit in chi^2 / nd for n sigmas stdev authorized.
// Only n=1, 2, and 3 are expected in input.
//=============================================================================
double
Millepede
::
chi2Limit
(
const
int
n
,
const
int
nd
)
const
{
double
Alignment
Millepede
::
chi2Limit
(
const
int
n
,
const
int
nd
)
const
{
constexpr
double
sn
[
3
]
=
{
0.47523
,
1.690140
,
2.782170
};
constexpr
double
table
[
3
][
30
]
=
{{
1.0000
,
1.1479
,
1.1753
,
1.1798
,
1.1775
,
1.1730
,
1.1680
,
1.1630
,
1.1581
,
1.1536
,
1.1493
,
1.1454
,
1.1417
,
1.1383
,
1.1351
,
1.1321
,
1.1293
,
1.1266
,
1.1242
,
1.1218
,
...
...
@@ -1057,11 +1057,11 @@ double Millepede::chi2Limit(const int n, const int nd) const {
//=============================================================================
// Multiply general M-by-N matrix A and N-vector X
//=============================================================================
bool
Millepede
::
multiplyAX
(
const
std
::
vector
<
std
::
vector
<
double
>>&
a
,
const
std
::
vector
<
double
>&
x
,
std
::
vector
<
double
>&
y
,
const
unsigned
int
n
,
const
unsigned
int
m
)
{
bool
Alignment
Millepede
::
multiplyAX
(
const
std
::
vector
<
std
::
vector
<
double
>>&
a
,
const
std
::
vector
<
double
>&
x
,
std
::
vector
<
double
>&
y
,
const
unsigned
int
n
,
const
unsigned
int
m
)
{
// Y = A * X, where
// A = general M-by-N matrix
...
...
@@ -1081,11 +1081,11 @@ bool Millepede::multiplyAX(const std::vector<std::vector<double>>& a,
// matrix A and from the right with the transposed of the same general
// matrix to form a symmetric M-by-M matrix W.
//=============================================================================
bool
Millepede
::
multiplyAVAt
(
const
std
::
vector
<
std
::
vector
<
double
>>&
v
,
const
std
::
vector
<
std
::
vector
<
double
>>&
a
,
std
::
vector
<
std
::
vector
<
double
>>&
w
,
const
unsigned
int
n
,
const
unsigned
int
m
)
{
bool
Alignment
Millepede
::
multiplyAVAt
(
const
std
::
vector
<
std
::
vector
<
double
>>&
v
,
const
std
::
vector
<
std
::
vector
<
double
>>&
a
,
std
::
vector
<
std
::
vector
<
double
>>&
w
,
const
unsigned
int
n
,
const
unsigned
int
m
)
{
// W = A * V * AT, where
// V = symmetric N-by-N matrix
...
...
@@ -1112,7 +1112,7 @@ bool Millepede::multiplyAVAt(const std::vector<std::vector<double>>& v,
//=============================================================================
// Print results
//=============================================================================
bool
Millepede
::
printResults
()
{
bool
Alignment
Millepede
::
printResults
()
{
const
std
::
string
line
(
65
,
'-'
);
LOG
(
INFO
)
<<
line
;
LOG
(
INFO
)
<<
" Result of fit for global parameters"
;
...
...
src/modules/Millepede/Millepede.h
→
src/modules/
Alignment
Millepede/
Alignment
Millepede.h
View file @
39cebd92
#ifndef Millepede_H
#define Millepede_H 1
#ifndef
Alignment
Millepede_H
#define
Alignment
Millepede_H 1
#include
"core/module/Module.hpp"
#include
"objects/Track.h"
...
...
@@ -13,12 +13,12 @@ namespace corryvreckan {
* @author Christoph Hombach
* @date 2012-06-19
*/
class
Millepede
:
public
Module
{
class
Alignment
Millepede
:
public
Module
{
public:
/// Constructor
Millepede
(
Configuration
config
,
std
::
vector
<
std
::
shared_ptr
<
Detector
>>
detectors
);
Alignment
Millepede
(
Configuration
config
,
std
::
vector
<
std
::
shared_ptr
<
Detector
>>
detectors
);
/// Destructor
virtual
~
Millepede
();
virtual
~
Alignment
Millepede
();
void
initialise
();
void
finalise
();
...
...
@@ -156,4 +156,4 @@ namespace corryvreckan {
};
}
// namespace corryvreckan
#endif // Millepede_H
#endif //
Alignment
Millepede_H
src/modules/Millepede/CMakeLists.txt
→
src/modules/
Alignment
Millepede/CMakeLists.txt
View file @
39cebd92
...
...
@@ -3,8 +3,7 @@ CORRYVRECKAN_GLOBAL_MODULE(MODULE_NAME)
# Add source files to library
CORRYVRECKAN_MODULE_SOURCES
(
${
MODULE_NAME
}
Millepede.cpp
# ADD SOURCE FILES HERE...
AlignmentMillepede.cpp
)
# Provide standard install target
...
...
src/modules/Millepede/README.md
→
src/modules/
Alignment
Millepede/README.md
View file @
39cebd92
File moved
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment