Skip to content

Commit c2ed22d

Browse files
committed
Merge pull request cms-sw#303 from ktf/thread-safe-tracking-rechit
Make RecHit1D / RecHit2DLocalPos thread safe.
2 parents 4294861 + 1ec4a80 commit c2ed22d

File tree

4 files changed

+16
-51
lines changed

4 files changed

+16
-51
lines changed

DataFormats/TrackingRecHit/interface/RecHit1D.h

+1-14
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,9 @@ class RecHit1D : public TrackingRecHit {
3939

4040
///Return the projection matrix
4141
virtual AlgebraicMatrix projectionMatrix() const {
42-
if ( !isInitialized) initialize();
4342
return theProjectionMatrix;
4443
}
4544

46-
4745
/// Return the RecHit dimension
4846
virtual int dimension() const {
4947
return 1;
@@ -59,17 +57,6 @@ class RecHit1D : public TrackingRecHit {
5957

6058

6159
private:
62-
63-
static bool isInitialized;
64-
65-
static AlgebraicMatrix theProjectionMatrix;
66-
67-
void initialize() const;
68-
60+
static const AlgebraicMatrix theProjectionMatrix;
6961
};
7062
#endif
71-
72-
73-
74-
75-

DataFormats/TrackingRecHit/interface/RecHit2DLocalPos.h

+1-7
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class RecHit2DLocalPos : public TrackingRecHit {
2222
virtual AlgebraicSymMatrix parametersError() const;
2323

2424
virtual AlgebraicMatrix projectionMatrix() const {
25-
if ( !isInitialized) initialize();
2625
return theProjectionMatrix;
2726
}
2827

@@ -38,12 +37,7 @@ class RecHit2DLocalPos : public TrackingRecHit {
3837

3938
private:
4039

41-
static bool isInitialized;
42-
43-
static AlgebraicMatrix theProjectionMatrix;
44-
45-
void initialize() const;
46-
40+
static const AlgebraicMatrix theProjectionMatrix;
4741
};
4842

4943
#endif

DataFormats/TrackingRecHit/src/RecHit1D.cc

+6-16
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,11 @@ AlgebraicSymMatrix RecHit1D::parametersError() const {
3838
return m;
3939
}
4040

41-
42-
43-
// Initialize the projection matrix
44-
void RecHit1D::initialize() const {
45-
theProjectionMatrix = AlgebraicMatrix( 1, 5, 0);
46-
theProjectionMatrix[0][3] = 1;
47-
48-
isInitialized = true;
41+
// Return an initialized matrix.
42+
static const AlgebraicMatrix initializeMatrix() {
43+
AlgebraicMatrix matrix( 1, 5, 0);
44+
matrix[0][3] = 1;
45+
return matrix;
4946
}
5047

51-
52-
53-
bool RecHit1D::isInitialized(false);
54-
55-
56-
57-
AlgebraicMatrix RecHit1D::theProjectionMatrix;
58-
48+
const AlgebraicMatrix RecHit1D::theProjectionMatrix(initializeMatrix());

DataFormats/TrackingRecHit/src/RecHit2DLocalPos.cc

+8-14
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
#include "DataFormats/TrackingRecHit/interface/RecHit2DLocalPos.h"
22

3-
void RecHit2DLocalPos::initialize() const
4-
{
5-
theProjectionMatrix = AlgebraicMatrix( 2, 5, 0);
6-
theProjectionMatrix[0][3] = 1;
7-
theProjectionMatrix[1][4] = 1;
8-
9-
isInitialized = true;
10-
}
11-
123
AlgebraicVector RecHit2DLocalPos::parameters() const
134
{
145
AlgebraicVector result(2);
@@ -38,9 +29,12 @@ std::vector<TrackingRecHit*> RecHit2DLocalPos::recHits() {
3829
return nullvector;
3930
}
4031

41-
42-
4332
// static member definition
44-
45-
bool RecHit2DLocalPos::isInitialized( false);
46-
AlgebraicMatrix RecHit2DLocalPos::theProjectionMatrix;
33+
static const AlgebraicMatrix initializeMatrix()
34+
{
35+
AlgebraicMatrix aMatrix( 2, 5, 0);
36+
aMatrix[0][3] = 1;
37+
aMatrix[1][4] = 1;
38+
return aMatrix;
39+
}
40+
const AlgebraicMatrix RecHit2DLocalPos::theProjectionMatrix{initializeMatrix()};

0 commit comments

Comments
 (0)