Skip to content

Commit d490a47

Browse files
committed
ITS3: alignment
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 1c7a6c6 commit d490a47

11 files changed

Lines changed: 934 additions & 18 deletions

File tree

Detectors/Upgrades/ITS3/alignment/CMakeLists.txt

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,39 @@
99
# granted to it by virtue of its status as an Intergovernmental Organization
1010
# or submit itself to any jurisdiction.
1111

12+
add_compile_options(-O0 -g -fPIC -fno-omit-frame-pointer)
1213
o2_add_library(ITS3Align
1314
SOURCES src/MisalignmentParameters.cxx
1415
src/MisalignmentHits.cxx
1516
src/MisalignmentManager.cxx
1617
src/Deformations.cxx
18+
src/AlignmentSpec.cxx
19+
src/AlignmentParams.cxx
20+
src/AlignmentTypes.cxx
1721
PUBLIC_LINK_LIBRARIES O2::MathUtils
1822
O2::Steer
1923
O2::ITSBase
20-
O2::ITSMFTSimulation)
24+
O2::ITSMFTSimulation
25+
O2::Framework
26+
O2::GlobalTrackingWorkflowReaders
27+
O2::GlobalTrackingWorkflowHelpers
28+
O2::DataFormatsGlobalTracking
29+
O2::DetectorsVertexing
30+
GBL::GBL)
31+
if (OpenMP_CXX_FOUND)
32+
target_compile_definitions(${targetName} PRIVATE WITH_OPENMP)
33+
target_link_libraries(${targetName} PRIVATE OpenMP::OpenMP_CXX)
34+
endif()
2135

2236
o2_target_root_dictionary(ITS3Align
2337
HEADERS include/ITS3Align/MisalignmentParameters.h
2438
include/ITS3Align/MisalignmentHits.h
25-
include/ITS3Align/MisalignmentHits.h
26-
include/ITS3Align/Deformations.h)
39+
include/ITS3Align/Deformations.h
40+
include/ITS3Align/AlignmentParams.h
41+
include/ITS3Align/AlignmentTypes.h)
42+
43+
44+
o2_add_executable(alignment-workflow
45+
SOURCES src/alignment-workflow.cxx
46+
COMPONENT_NAME its3
47+
PUBLIC_LINK_LIBRARIES O2::ITS3Align)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
#ifndef ALICEO2_ITS3_ALIGNMENTPARAMS_H_
12+
#define ALICEO2_ITS3_ALIGNMENTPARAMS_H_
13+
14+
#include "CommonUtils/ConfigurableParam.h"
15+
#include "CommonUtils/ConfigurableParamHelper.h"
16+
#include "DetectorsBase/Propagator.h"
17+
18+
namespace o2::its3::align
19+
{
20+
struct AlignmentParams : public o2::conf::ConfigurableParamHelper<AlignmentParams> {
21+
// Track selection
22+
float minPt = 1.f; // minimum pt required
23+
int minITSCls = 7; // minimum number of ITS clusters
24+
float maxITSChi2Ndf = 1.2; // maximum ITS track chi2
25+
26+
// propagation opt
27+
double maxSnp = 0.85;
28+
double maxStep = 2.0;
29+
o2::base::PropagatorD::MatCorrType matCorrType = o2::base::PropagatorD::MatCorrType::USEMatCorrTGeo;
30+
31+
double radiusIBOBComp = 12.0; // radius where IB&OB track are compared
32+
bool useStableRefit = true; // use input tracks as linearization point
33+
float minMS = 1e-6f; // minimum scattering to account for
34+
float maxChi2Ndf = 10; // maximum Chi2/Ndf allowed for GBL fit
35+
36+
// Ridder options
37+
int ridderMaxExtrap = 10;
38+
double ridderRelIniStep[5] = {0.01, 0.01, 0.02, 0.02, 0.02};
39+
double ridderMaxIniStep[5] = {0.1, 0.1, 0.05, 0.05, 0.05};
40+
double ridderShrinkFac = 2.0;
41+
double ridderEps = 1e-16;
42+
double ridderMaxJacDiagTol = 0.1; // max tolerance of diagonal elements away from 1
43+
44+
// MillePede output
45+
std::string milleFileName = "mille.data";
46+
47+
O2ParamDef(AlignmentParams, "ITS3AlignmentParams");
48+
};
49+
} // namespace o2::its3::align
50+
51+
#endif
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
#ifndef O2_ITS3_ALIGNMENT_H
13+
#define O2_ITS3_ALIGNMENT_H
14+
15+
#include "ReconstructionDataFormats/GlobalTrackID.h"
16+
#include "Framework/DataProcessorSpec.h"
17+
18+
namespace o2::its3::align
19+
{
20+
o2::framework::DataProcessorSpec getAlignmentSpec(o2::dataformats::GlobalTrackID::mask_t srcTracks, o2::dataformats::GlobalTrackID::mask_t srcClus, bool useMC, bool withPV, bool withITS3);
21+
} // namespace o2::its3::align
22+
23+
#endif
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
#ifndef O2_ITS3_ALIGNMENT_TYPES_H
13+
#define O2_ITS3_ALIGNMENT_TYPES_H
14+
15+
#include <string>
16+
#include "ReconstructionDataFormats/Track.h"
17+
18+
namespace o2::its3::align
19+
{
20+
21+
struct Measurement final {
22+
double dy = 0.f;
23+
double dz = 0.f;
24+
double sig2y = 0.f;
25+
double sig2z = 0.f;
26+
double phi = 0.f;
27+
double z = 0.f;
28+
ClassDefNV(Measurement, 1)
29+
};
30+
31+
struct FrameInfoExt final {
32+
int16_t sens = -1;
33+
int8_t lr = -1; // -1 = vtx
34+
o2::math_utils::Point3D<float> trk;
35+
o2::math_utils::Point3D<float> loc;
36+
o2::math_utils::Point3D<float> glo;
37+
float x{-999.f};
38+
float alpha{-999.f};
39+
std::array<double, 2> positionTrackingFrame = {999., 999.};
40+
std::array<double, 3> covarianceTrackingFrame = {999., 999., 999.};
41+
42+
std::string asString() const;
43+
44+
ClassDefNV(FrameInfoExt, 1)
45+
};
46+
47+
struct FitInfo final {
48+
float chi2Ndf{-1}; // Chi2/Ndf of track refit
49+
float chi2{-1}; // Chi2
50+
int ndf; // ndf
51+
ClassDefNV(FitInfo, 1)
52+
};
53+
54+
struct Track {
55+
o2::track::TrackParCovD track; // track at innermost update point, refitted from outwards seed
56+
FitInfo kfFit; // kf fit information
57+
std::vector<Measurement> points; // measurment point
58+
std::vector<FrameInfoExt> info; // frame info
59+
ClassDefNV(Track, 1)
60+
};
61+
62+
} // namespace o2::its3::align
63+
64+
#endif
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
#include "ITS3Align/AlignmentParams.h"
13+
O2ParamImpl(o2::its3::align::AlignmentParams);

0 commit comments

Comments
 (0)