2222#include " Common/Core/trackUtilities.h"
2323#include " Common/DataModel/TrackSelectionTables.h"
2424
25+ #include " CommonConstants/PhysicsConstants.h"
26+ #include " DCAFitter/DCAFitterN.h"
27+ #include " Framework/ASoA.h"
28+ #include " Framework/AnalysisDataModel.h"
29+ #include " Framework/AnalysisTask.h"
30+ #include " ReconstructionDataFormats/DCA.h"
2531#include < CCDB/BasicCCDBManager.h>
26- #include < CommonConstants/PhysicsConstants.h>
27- #include < DCAFitter/DCAFitterN.h>
2832#include < DetectorsBase/MatLayerCylSet.h>
2933#include < DetectorsBase/Propagator.h>
30- #include < Framework/ASoA.h>
31- #include < Framework/AnalysisDataModel.h>
3234#include < Framework/AnalysisHelpers.h>
33- #include < Framework/AnalysisTask.h>
3435#include < Framework/Configurable.h>
3536#include < Framework/HistogramRegistry.h>
3637#include < Framework/HistogramSpec.h>
3738#include < Framework/InitContext.h>
3839#include < Framework/Logger.h>
3940#include < Framework/runDataProcessing.h>
40- #include < ReconstructionDataFormats/DCA.h>
4141#include < ReconstructionDataFormats/TrackParametrizationWithError.h>
4242#include < ReconstructionDataFormats/Vertex.h>
4343
@@ -74,12 +74,12 @@ struct SecondaryVertexReconstruction {
7474 Configurable<bool > propagateToPCA{" propagateToPCA" , true , " create tracks version propagated to PCA" };
7575 Configurable<bool > useAbsDCA{" useAbsDCA" , false , " Minimise abs. distance rather than chi2" };
7676 Configurable<bool > useWeightedFinalPCA{" useWeightedFinalPCA" , false , " Recalculate vertex position using track covariances, effective only if useAbsDCA is true" };
77- Configurable<double > maxR{" maxR" , 200 ., " reject PCA's above this radius" };
78- Configurable<double > maxDZIni{" maxDZIni" , 4 ., " reject (if>0) PCA candidate if tracks DZ exceeds threshold" };
79- Configurable<double > maxRsv{" maxRsv" , 999 ., " max. radius of the reconstruced SV" };
80- Configurable<double > maxZsv{" maxZsv" , 999 ., " max. Z coordinates of the reconstruced SV" };
81- Configurable<double > minParamChange{" minParamChange" , 1 .e -3 , " stop iterations if largest change of any X is smaller than this" };
82- Configurable<double > minRelChi2Change{" minRelChi2Change" , 0.9 , " stop iterations is chi2/chi2old > this" };
77+ Configurable<float > maxR{" maxR" , 200 ., " reject PCA's above this radius" };
78+ Configurable<float > maxDZIni{" maxDZIni" , 4 ., " reject (if>0) PCA candidate if tracks DZ exceeds threshold" };
79+ Configurable<float > maxRsv{" maxRsv" , 999 ., " max. radius of the reconstruced SV" };
80+ Configurable<float > maxZsv{" maxZsv" , 999 ., " max. Z coordinates of the reconstruced SV" };
81+ Configurable<float > minParamChange{" minParamChange" , 1 .e -3 , " stop iterations if largest change of any X is smaller than this" };
82+ Configurable<float > minRelChi2Change{" minRelChi2Change" , 0.9 , " stop iterations is chi2/chi2old > this" };
8383 Configurable<float > ptMinTrack{" ptMinTrack" , -1 ., " min. track pT" };
8484 Configurable<float > etaMinTrack{" etaMinTrack" , -99999 ., " min. pseudorapidity" };
8585 Configurable<float > etaMaxTrack{" etaMaxTrack" , 4 ., " max. pseudorapidity" };
@@ -94,13 +94,15 @@ struct SecondaryVertexReconstruction {
9494 o2::vertexing::DCAFitterN<2 > df2; // 2-prong vertex fitter
9595 o2::vertexing::DCAFitterN<3 > df3; // 3-prong vertex fitter
9696 Service<o2::ccdb::BasicCCDBManager> ccdb;
97- o2::base::MatLayerCylSet* lut;
97+ o2::base::MatLayerCylSet* lut = nullptr ;
9898
9999 HistogramRegistry registry{" registry" };
100100
101101 int runNumber{0 };
102102 float toMicrometers = 10000 .; // from cm to µm
103103 double bz{0 .};
104+ static constexpr int TwoProngCount = 2 ;
105+ static constexpr int ThreeProngCount = 3 ;
104106
105107 void init (InitContext const &)
106108 {
@@ -216,7 +218,7 @@ struct SecondaryVertexReconstruction {
216218 auto covMatrixPV = primaryVertex.getCov ();
217219
218220 // Get track momenta and impact parameters
219- std::array<std::array<float , 3 >, numProngs> arrayMomenta;
221+ std::array<std::array<float , 3 >, numProngs> arrayMomenta{} ;
220222 std::array<o2::dataformats::DCA, numProngs> impactParameters;
221223 for (unsigned int inum = 0 ; inum < numProngs; ++inum) {
222224 trackParVars[inum].getPxPyPzGlo (arrayMomenta[inum]);
@@ -236,12 +238,12 @@ struct SecondaryVertexReconstruction {
236238 auto errorDecayLengthXY = std::sqrt (getRotatedCovMatrixXX (covMatrixPV, phi, 0 .) + getRotatedCovMatrixXX (covMatrixPCA, phi, 0 .));
237239
238240 // calculate invariant mass
239- std::array<double , numProngs> massArray;
241+ std::array<double , numProngs> massArray{} ;
240242 std::fill (massArray.begin (), massArray.end (), o2::constants::physics::MassPiPlus);
241- double massSV = RecoDecay::m (std::move ( arrayMomenta) , massArray);
243+ double massSV = RecoDecay::m (arrayMomenta, massArray);
242244
243245 // fill candidate table rows
244- if ((doprocessData3Prongs || doprocessData3ProngsExternalMagneticField) && numProngs == 3 ) {
246+ if ((doprocessData3Prongs || doprocessData3ProngsExternalMagneticField) && numProngs == ThreeProngCount ) {
245247 sv3prongTableData (analysisJet.globalIndex (),
246248 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
247249 secondaryVertex[0 ], secondaryVertex[1 ], secondaryVertex[2 ],
@@ -250,7 +252,7 @@ struct SecondaryVertexReconstruction {
250252 arrayMomenta[0 ][2 ] + arrayMomenta[1 ][2 ] + arrayMomenta[2 ][2 ],
251253 energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
252254 svIndices.push_back (sv3prongTableData.lastIndex ());
253- } else if ((doprocessData2Prongs || doprocessData2ProngsExternalMagneticField) && numProngs == 2 ) {
255+ } else if ((doprocessData2Prongs || doprocessData2ProngsExternalMagneticField) && numProngs == TwoProngCount ) {
254256 sv2prongTableData (analysisJet.globalIndex (),
255257 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
256258 secondaryVertex[0 ], secondaryVertex[1 ], secondaryVertex[2 ],
@@ -259,7 +261,7 @@ struct SecondaryVertexReconstruction {
259261 arrayMomenta[0 ][2 ] + arrayMomenta[1 ][2 ],
260262 energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
261263 svIndices.push_back (sv2prongTableData.lastIndex ());
262- } else if ((doprocessMCD3Prongs || doprocessMCD3ProngsExternalMagneticField) && numProngs == 3 ) {
264+ } else if ((doprocessMCD3Prongs || doprocessMCD3ProngsExternalMagneticField) && numProngs == ThreeProngCount ) {
263265 sv3prongTableMCD (analysisJet.globalIndex (),
264266 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
265267 secondaryVertex[0 ], secondaryVertex[1 ], secondaryVertex[2 ],
@@ -268,7 +270,7 @@ struct SecondaryVertexReconstruction {
268270 arrayMomenta[0 ][2 ] + arrayMomenta[1 ][2 ] + arrayMomenta[2 ][2 ],
269271 energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
270272 svIndices.push_back (sv3prongTableMCD.lastIndex ());
271- } else if ((doprocessMCD2Prongs || doprocessMCD2ProngsExternalMagneticField) && numProngs == 2 ) {
273+ } else if ((doprocessMCD2Prongs || doprocessMCD2ProngsExternalMagneticField) && numProngs == TwoProngCount ) {
272274 sv2prongTableMCD (analysisJet.globalIndex (),
273275 primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
274276 secondaryVertex[0 ], secondaryVertex[1 ], secondaryVertex[2 ],
@@ -399,5 +401,5 @@ struct SecondaryVertexReconstruction {
399401
400402WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
401403{
402- return WorkflowSpec{adaptAnalysisTask<SecondaryVertexReconstruction>(cfgc, TaskName{" jet-sv-reconstruction-charged" })}; // o2-linter: disable=name/o2-task
404+ return WorkflowSpec{adaptAnalysisTask<SecondaryVertexReconstruction>(cfgc, TaskName{" jet-sv-reconstruction-charged" })}; // o2-linter: disable=name/o2-task (templated struct)
403405}
0 commit comments