Skip to content

Commit 41aacc3

Browse files
committed
More fixes
1 parent 263c616 commit 41aacc3

1 file changed

Lines changed: 57 additions & 57 deletions

File tree

PWGDQ/Tasks/muonGlobalAlignment.cxx

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
#include "Common/CCDB/RCTSelectionFlags.h"
2020
#include "Common/DataModel/EventSelection.h"
2121
#include "Common/DataModel/TrackSelectionTables.h"
22+
#include <CommonUtils/ConfigurableParam.h>
23+
#include <CommonConstants/MathConstants.h>
24+
#include "Common/Core/RecoDecay.h"
2225

2326
#include <CCDB/BasicCCDBManager.h>
2427
#include <CCDB/CcdbApi.h>
@@ -79,7 +82,7 @@
7982
#include <unordered_map>
8083
#include <vector>
8184

82-
#include <math.h>
85+
#include <cmath>
8386

8487
using namespace o2;
8588
using namespace o2::mch;
@@ -109,7 +112,7 @@ using MyMFTCovariance = MyMFTCovariances::iterator;
109112
using SMatrix55 = ROOT::Math::SMatrix<double, 5, 5, ROOT::Math::MatRepSym<double, 5>>;
110113
using SMatrix5 = ROOT::Math::SVector<Double_t, 5>;
111114

112-
static o2::globaltracking::MatchGlobalFwd sExtrap;
115+
//static o2::globaltracking::MatchGlobalFwd sExtrap;
113116

114117
using o2::dataformats::GlobalFwdTrack;
115118
using o2::track::TrackParCovFwd;
@@ -218,7 +221,7 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
218221

219222
int mRunNumber{0}; // needed to detect if the run changed and trigger update of magnetic field
220223

221-
Service<o2::ccdb::BasicCCDBManager> ccdbManager;
224+
Service<o2::ccdb::BasicCCDBManager> ccdbManager{};
222225
o2::field::MagneticField* fieldB{nullptr};
223226
o2::ccdb::CcdbApi ccdbApi;
224227

@@ -386,8 +389,8 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
386389
TrackExtrap::setField();
387390
TrackExtrap::useExtrapV2();
388391
fieldB = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField()); // for MFT
389-
double centerMFT[3] = {0, 0, -61.4}; // or use middle point between Vtx and MFT?
390-
mBzAtMftCenter = fieldB->getBz(centerMFT);
392+
std::array<double, 3> centerMFT{0, 0, -61.4}; // or use middle point between Vtx and MFT?
393+
mBzAtMftCenter = fieldB->getBz(centerMFT.data());
391394
} else {
392395
LOGF(fatal, "GRP object is not available in CCDB at timestamp=%llu", bc.timestamp());
393396
}
@@ -459,10 +462,10 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
459462
LOG(info) << " y: " << it->value["y"].GetDouble();
460463
LOG(info) << " z: " << it->value["z"].GetDouble();
461464

462-
mMchAlignmentCorrections[std::stoi(it->name.GetString())] = {
463-
it->value["x"].GetDouble(),
464-
it->value["y"].GetDouble(),
465-
it->value["z"].GetDouble()};
465+
mMchAlignmentCorrections[std::stoi(it->name.GetString())] = AlignmentCorrections{
466+
.x = it->value["x"].GetDouble(),
467+
.y = it->value["y"].GetDouble(),
468+
.z = it->value["z"].GetDouble()};
466469
}
467470
} else {
468471
LOG(error) << "JSON parse error: " << rapidjson::GetParseErrorFunc(jsonOk.Code()) << " (" << jsonOk.Offset() << ")";
@@ -632,13 +635,13 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
632635

633636
int GetDetElemId(int iDetElemNumber)
634637
{
635-
const int fgNCh = 10;
636-
const int fgNDetElemCh[fgNCh] = {4, 4, 4, 4, 18, 18, 26, 26, 26, 26};
637-
const int fgSNDetElemCh[fgNCh + 1] = {0, 4, 8, 12, 16, 34, 52, 78, 104, 130, 156};
638+
constexpr int fgNCh = 10;
639+
const std::array<int, fgNCh> fgNDetElemCh{4, 4, 4, 4, 18, 18, 26, 26, 26, 26};
640+
const std::array<int, fgNCh + 1> fgSNDetElemCh{0, 4, 8, 12, 16, 34, 52, 78, 104, 130, 156};
638641

639642
// make sure detector number is valid
640-
if (!(iDetElemNumber >= fgSNDetElemCh[0] &&
641-
iDetElemNumber < fgSNDetElemCh[10])) {
643+
if (iDetElemNumber < fgSNDetElemCh[0] ||
644+
iDetElemNumber >= fgSNDetElemCh[10]) {
642645
LOGF(fatal, "Invalid detector element number: %d", iDetElemNumber);
643646
}
644647
/// get det element number from ID
@@ -654,7 +657,7 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
654657
}
655658

656659
// make sure detector index is valid
657-
if (!(iCh > 0 && iCh <= NMchChambers && iDet < fgNDetElemCh[iCh - 1])) {
660+
if (iCh <= 0 || iCh > NMchChambers || iDet >= fgNDetElemCh[iCh - 1]) {
658661
LOGF(fatal, "Invalid detector element id: %d", 100 * iCh + iDet);
659662
}
660663

@@ -761,18 +764,18 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
761764
// MCH track format.
762765

763766
// Parameter conversion
764-
double alpha1, alpha3, alpha4, x2, x3, x4;
767+
//double alpha1, alpha3, alpha4, x2, x3, x4;
765768

766-
x2 = fwdtrack.getPhi();
767-
x3 = fwdtrack.getTanl();
768-
x4 = fwdtrack.getInvQPt();
769+
double x2 = fwdtrack.getPhi();
770+
double x3 = fwdtrack.getTanl();
771+
double x4 = fwdtrack.getInvQPt();
769772

770773
auto sinx2 = TMath::Sin(x2);
771774
auto cosx2 = TMath::Cos(x2);
772775

773-
alpha1 = cosx2 / x3;
774-
alpha3 = sinx2 / x3;
775-
alpha4 = x4 / TMath::Sqrt(x3 * x3 + sinx2 * sinx2);
776+
double alpha1 = cosx2 / x3;
777+
double alpha3 = sinx2 / x3;
778+
double alpha4 = x4 / TMath::Sqrt(x3 * x3 + sinx2 * sinx2);
776779

777780
auto K = TMath::Sqrt(x3 * x3 + sinx2 * sinx2);
778781
auto K3 = K * K * K;
@@ -817,11 +820,11 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
817820
// jacobian*covariances*jacobian^T
818821
covariances = ROOT::Math::Similarity(jacobian, covariances);
819822

820-
double cov[] = {covariances(0, 0), covariances(1, 0), covariances(1, 1), covariances(2, 0), covariances(2, 1), covariances(2, 2), covariances(3, 0), covariances(3, 1), covariances(3, 2), covariances(3, 3), covariances(4, 0), covariances(4, 1), covariances(4, 2), covariances(4, 3), covariances(4, 4)};
821-
double param[] = {fwdtrack.getX(), alpha1, fwdtrack.getY(), alpha3, alpha4};
823+
const double cov[15]{covariances(0, 0), covariances(1, 0), covariances(1, 1), covariances(2, 0), covariances(2, 1), covariances(2, 2), covariances(3, 0), covariances(3, 1), covariances(3, 2), covariances(3, 3), covariances(4, 0), covariances(4, 1), covariances(4, 2), covariances(4, 3), covariances(4, 4)};
824+
const double param[5]{fwdtrack.getX(), alpha1, fwdtrack.getY(), alpha3, alpha4};
822825

823826
o2::mch::TrackParam convertedTrack(fwdtrack.getZ(), param, cov);
824-
return o2::mch::TrackParam(convertedTrack);
827+
return {convertedTrack};
825828
}
826829

827830
static o2::dataformats::GlobalFwdTrack MCHtoFwd(const o2::mch::TrackParam& mchParam)
@@ -835,15 +838,15 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
835838
o2::dataformats::GlobalFwdTrack convertedTrack;
836839

837840
// Parameter conversion
838-
double alpha1, alpha3, alpha4, x2, x3, x4;
841+
//double alpha1, alpha3, alpha4, x2, x3, x4;
839842

840-
alpha1 = mchParam.getNonBendingSlope();
841-
alpha3 = mchParam.getBendingSlope();
842-
alpha4 = mchParam.getInverseBendingMomentum();
843+
double alpha1 = mchParam.getNonBendingSlope();
844+
double alpha3 = mchParam.getBendingSlope();
845+
double alpha4 = mchParam.getInverseBendingMomentum();
843846

844-
x2 = TMath::ATan2(-alpha3, -alpha1);
845-
x3 = -1. / TMath::Sqrt(alpha3 * alpha3 + alpha1 * alpha1);
846-
x4 = alpha4 * -x3 * TMath::Sqrt(1 + alpha3 * alpha3);
847+
double x2 = TMath::ATan2(-alpha3, -alpha1);
848+
double x3 = -1. / TMath::Sqrt(alpha3 * alpha3 + alpha1 * alpha1);
849+
double x4 = alpha4 * -x3 * TMath::Sqrt(1 + alpha3 * alpha3);
847850

848851
auto K = alpha1 * alpha1 + alpha3 * alpha3;
849852
auto K32 = K * TMath::Sqrt(K);
@@ -955,14 +958,14 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
955958
if (track.getNClusters() < NMchChambers) {
956959
removeTrack = true;
957960
break;
958-
} else {
959-
while (itNextToNextParam != track.end()) {
960-
if (itNextToNextParam->getClusterPtr()->getChamberId() != itNextParam->getClusterPtr()->getChamberId()) {
961-
itStartingParam = std::make_reverse_iterator(++itNextParam);
962-
break;
963-
}
964-
++itNextToNextParam;
961+
}
962+
963+
while (itNextToNextParam != track.end()) {
964+
if (itNextToNextParam->getClusterPtr()->getChamberId() != itNextParam->getClusterPtr()->getChamberId()) {
965+
itStartingParam = std::make_reverse_iterator(++itNextParam);
966+
break;
965967
}
968+
++itNextToNextParam;
966969
}
967970
}
968971

@@ -1020,11 +1023,8 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
10201023
double pResEffect = sigmaPDCA / (1. - nrp / (1. + nrp));
10211024
double slopeResEffect = SlopeResolutionZ * slopeRes * p;
10221025
double sigmaPDCAWithRes = TMath::Sqrt(pResEffect * pResEffect + slopeResEffect * slopeResEffect);
1023-
if (pDCA > nSigmaPDCA * sigmaPDCAWithRes) {
1024-
return false;
1025-
}
10261026

1027-
return true;
1027+
return (pDCA <= nSigmaPDCA * sigmaPDCAWithRes);
10281028
}
10291029

10301030
template <class T, class C>
@@ -1118,7 +1118,7 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
11181118

11191119
TransformMFTPar(mchTrack);
11201120

1121-
auto transformedTrack = sExtrap.MCHtoFwd(mchTrack);
1121+
auto transformedTrack = MCHtoFwd(mchTrack);
11221122
track.setParameters(transformedTrack.getParameters());
11231123
track.setZ(transformedTrack.getZ());
11241124
track.setCovariances(transformedTrack.getCovariances());
@@ -1135,7 +1135,7 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
11351135

11361136
TransformMFTPar(mchTrack);
11371137

1138-
auto transformedTrack = sExtrap.MCHtoFwd(mchTrack);
1138+
auto transformedTrack = MCHtoFwd(mchTrack);
11391139
fwdtrack.setParameters(transformedTrack.getParameters());
11401140
fwdtrack.setZ(transformedTrack.getZ());
11411141
fwdtrack.setCovariances(transformedTrack.getCovariances());
@@ -1482,9 +1482,9 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
14821482
double chi2NDF = static_cast<double>(mftNclusters) * 2 - 5;
14831483

14841484
const int nMftLayers = 10;
1485-
std::array<bool, 10> firedLayers;
1485+
std::array<bool, 10> firedLayers{false};
14861486
for (int layer = 0; layer < nMftLayers; layer++) {
1487-
if ((mftTrack.mftClusterSizesAndTrackFlags() >> (layer * 6)) & 0x3F) {
1487+
if (((mftTrack.mftClusterSizesAndTrackFlags() >> (layer * 6)) & 0x3F) != 0) {
14881488
firedLayers[layer] = true;
14891489
} else {
14901490
firedLayers[layer] = false;
@@ -1538,9 +1538,9 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
15381538
static constexpr int nMftClustersMin = 6;
15391539
if (mftTrack.chi2() <= cfgTrackChi2MftUp && std::fabs(collision.posZ()) < 1.f && mftNclusters >= nMftClustersMin) {
15401540
static constexpr int nPoints = 21;
1541-
float zshift[nPoints] = {// in millimeters
1542-
-5.0, -4.5, -4.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0,
1543-
0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
1541+
const std::array<float, nPoints> zshift{// in millimeters
1542+
-5.0, -4.5, -4.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0,
1543+
0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};
15441544
for (int zi = 0; zi < nPoints; zi++) {
15451545
auto mftTrackAtDCAshifted = PropagateMFTToDCA(mftTrack, collision, zshift[zi] / 10.f);
15461546
double dcaxShifted = mftTrackAtDCAshifted.getX() - collision.posX();
@@ -1650,7 +1650,7 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
16501650
}
16511651

16521652
// realigned MCH cluster
1653-
mch::Cluster* clusterMCH = new mch::Cluster();
1653+
auto clusterMCH = new mch::Cluster();
16541654
clusterMCH->x = master.x();
16551655
clusterMCH->y = master.y();
16561656
clusterMCH->z = master.z();
@@ -1839,13 +1839,13 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
18391839
// MFT-MCH track residuals analysis
18401840
if (cfgEnableMftMchMatchingAnalysis && convertedTrackWithCorrOk) {
18411841
static constexpr int nRefPlanes = 2;
1842-
const double refPlaneZ[nRefPlanes] = {cfgRefPlaneZMFT, cfgRefPlaneZMCH};
1842+
const std::array<double, nRefPlanes> refPlaneZ{cfgRefPlaneZMFT, cfgRefPlaneZMCH};
18431843

1844-
std::shared_ptr<THnSparse> dxPlots[2]{registry.get<THnSparse>(HIST("matching/dxAtMFT")), registry.get<THnSparse>(HIST("matching/dxAtMCH"))};
1845-
std::shared_ptr<THnSparse> dyPlots[2]{registry.get<THnSparse>(HIST("matching/dyAtMFT")), registry.get<THnSparse>(HIST("matching/dyAtMCH"))};
1846-
std::shared_ptr<THnSparse> dsxPlots[2]{registry.get<THnSparse>(HIST("matching/dsxAtMFT")), registry.get<THnSparse>(HIST("matching/dsxAtMCH"))};
1847-
std::shared_ptr<THnSparse> dsyPlots[2]{registry.get<THnSparse>(HIST("matching/dsyAtMFT")), registry.get<THnSparse>(HIST("matching/dsyAtMCH"))};
1848-
std::shared_ptr<THnSparse> dphiPlots[2]{registry.get<THnSparse>(HIST("matching/dphiAtMFT")), registry.get<THnSparse>(HIST("matching/dphiAtMCH"))};
1844+
std::array<std::shared_ptr<THnSparse>, 2> dxPlots{registry.get<THnSparse>(HIST("matching/dxAtMFT")), registry.get<THnSparse>(HIST("matching/dxAtMCH"))};
1845+
std::array<std::shared_ptr<THnSparse>, 2> dyPlots{registry.get<THnSparse>(HIST("matching/dyAtMFT")), registry.get<THnSparse>(HIST("matching/dyAtMCH"))};
1846+
std::array<std::shared_ptr<THnSparse>, 2> dsxPlots{registry.get<THnSparse>(HIST("matching/dsxAtMFT")), registry.get<THnSparse>(HIST("matching/dsxAtMCH"))};
1847+
std::array<std::shared_ptr<THnSparse>, 2> dsyPlots{registry.get<THnSparse>(HIST("matching/dsyAtMFT")), registry.get<THnSparse>(HIST("matching/dsyAtMCH"))};
1848+
std::array<std::shared_ptr<THnSparse>, 2> dphiPlots{registry.get<THnSparse>(HIST("matching/dphiAtMFT")), registry.get<THnSparse>(HIST("matching/dphiAtMCH"))};
18491849

18501850
for (int iRefPlane = 0; iRefPlane < nRefPlanes; iRefPlane++) {
18511851
const auto mftTrackAtRefPlane = configRealign.cfgEnableMCHRealign ? PropagateMFTtoMCH(mftTrack, mch::TrackParam(convertedTrackWithCorr.first()), refPlaneZ[iRefPlane]) : PropagateMFTtoMCH(mftTrack, FwdtoMCH(FwdToTrackPar(mchTrack)), refPlaneZ[iRefPlane]);

0 commit comments

Comments
 (0)