ATLAS Offline Software
Loading...
Searching...
No Matches
IMatrixTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRKALIGNINTERFACES_IMATRIXTOOL_IH
6#define TRKALIGNINTERFACES_IMATRIXTOOL_IH
7
20
21#include "GaudiKernel/IAlgTool.h"
22
23#include <fstream>
24
25namespace Trk {
26
27 class AlignModule;
28
29 class AlVec;
30 class AlSymMatBase;
31
32 static const InterfaceID
34
35 class IMatrixTool : virtual public IAlgTool {
36
37 public:
38
41
43 virtual ~IMatrixTool() {}
44
46 static const InterfaceID& interfaceID();
47
49 virtual StatusCode allocateMatrix(int nDoF) = 0;
50
52 virtual void prepareBinaryFiles(int solveOption) = 0;
53
55 virtual void addFirstDerivatives(AlVec* vector) = 0;
56
58 virtual void addFirstDerivatives(std::list<int,double>& derivatives) = 0;
59
60 virtual void addFirstDerivative(int irow, double val) = 0;
61
63 virtual void addSecondDerivatives(AlSymMatBase* matrix) = 0;
64
66 virtual void addSecondDerivatives(std::list<std::pair<int,int>,double >& derivatives) = 0;
67 virtual void addSecondDerivative(int irow, int icol, double val) = 0;
68
70 virtual bool accumulateFromFiles() = 0;
71
73 virtual int solve() = 0;
74
75 void addModule(int alignModuleIndex, int nAlignParam);
76 int entryNumber(int alignModuleIndex);
77
79 //virtual void setAlignModule(int irow, const AlignModule* alignmodule,
80 // int ipar) = 0;
81
83 void setNHits(int n) { m_nHits = n; }
84 int nHits() const { return m_nHits; }
85
87 void setNTracks(int n) { m_nTracks = n; }
88 int nTracks() const { return m_nTracks; }
89
91 void setNMeasurements(int n) { m_nMeasurements = n; }
92 int nMeasurements() const { return m_nMeasurements; }
93
95 virtual void setLogStream(std::ostream * os) { m_logStream = os; }
96
97 protected:
98 std::ostream * m_logStream;
99
103
104 private:
105 std::map<int,int> m_alignModuleMap;
107
108 }; // end of class
109
110 inline const InterfaceID& IMatrixTool::interfaceID() {
112 }
113
115
116 inline void IMatrixTool::addModule(int alignModuleIndex, int nAlignParam) { m_alignModuleMap[alignModuleIndex]=m_nentries; m_nentries += nAlignParam; }
117
118 inline int IMatrixTool::entryNumber(int alignModuleIndex) { if ( m_alignModuleMap.find(alignModuleIndex) == m_alignModuleMap.end()) return -1; else return m_alignModuleMap[alignModuleIndex]; }
119
120} // end of namespace
121
122#endif // TRKALIGNINTERFACES_IMATRIXTOOL_IH
AlignModule is a grouping of TrkDetElementBase objects, grouped according to the type of alignment,...
contains the base implementation for handling symmertic matrices
int nTracks() const
Definition IMatrixTool.h:88
virtual bool accumulateFromFiles()=0
accumulates first and second derivatives from files.
int nMeasurements() const
Definition IMatrixTool.h:92
IMatrixTool()
constructor
virtual void addSecondDerivative(int irow, int icol, double val)=0
virtual void addFirstDerivative(int irow, double val)=0
static const InterfaceID & interfaceID()
Retrieve interface ID.
void addModule(int alignModuleIndex, int nAlignParam)
virtual void addFirstDerivatives(std::list< int, double > &derivatives)=0
adds first derivative to vector for only some entries
int nHits() const
Definition IMatrixTool.h:84
void setNMeasurements(int n)
set number of measurements
Definition IMatrixTool.h:91
int entryNumber(int alignModuleIndex)
virtual void setLogStream(std::ostream *os)
sets the output stream for the logfile
Definition IMatrixTool.h:95
virtual void addFirstDerivatives(AlVec *vector)=0
adds first derivative to vector
std::map< int, int > m_alignModuleMap
virtual StatusCode allocateMatrix(int nDoF)=0
allocates space in memory for the big matrix and vector
void setNTracks(int n)
set number of tracks
Definition IMatrixTool.h:87
virtual void prepareBinaryFiles(int solveOption)=0
reads/writes matrix entries from/to binary files as necessary
virtual ~IMatrixTool()
Virtual destructor.
Definition IMatrixTool.h:43
std::ostream * m_logStream
logfile output stream
Definition IMatrixTool.h:98
void setNHits(int n)
set module identifier
Definition IMatrixTool.h:83
virtual int solve()=0
solves for alignment parameters
virtual void addSecondDerivatives(std::list< std::pair< int, int >, double > &derivatives)=0
adds first derivative to vector for only some entries
virtual void addSecondDerivatives(AlSymMatBase *matrix)=0
adds second derivatives to matrix
Ensure that the ATLAS eigen extensions are properly loaded.
static const InterfaceID IID_TRKALIGNINTERFACES_IMatrixTool("IMatrixTool", 1, 0)