Skip to content

Commit aaf01c2

Browse files
authored
PWGJE: Fixing secondaryvertex reconstruction for ALICE3 studies (#6848)
1 parent 7b46536 commit aaf01c2

1 file changed

Lines changed: 22 additions & 24 deletions

File tree

PWGJE/TableProducer/secondaryVertexReconstruction.cxx

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
#include <TF1.h>
1919
#include <TH1.h>
20-
#include <TGeoGlobalMagField.h>
2120

2221
#include "CommonConstants/PhysicsConstants.h"
2322
#include "DCAFitter/DCAFitterN.h"
@@ -28,7 +27,6 @@
2827
#include "Framework/runDataProcessing.h"
2928
#include "Common/Core/trackUtilities.h"
3029
#include "Common/Core/RecoDecay.h"
31-
#include "Field/MagneticField.h"
3230

3331
#include "ReconstructionDataFormats/DCA.h"
3432

@@ -58,6 +56,7 @@ struct SecondaryVertexReconstruction {
5856
Produces<aod::MCDSecondaryVertex2Prongs> sv2prongTableMCD;
5957
Produces<aod::MCDSecondaryVertex2ProngIndices> sv2prongIndicesTableMCD;
6058

59+
Configurable<float> magneticField{"magneticField", 20.0f, "magnetic field in kG"};
6160
Configurable<bool> propagateToPCA{"propagateToPCA", true, "create tracks version propagated to PCA"};
6261
Configurable<bool> useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"};
6362
Configurable<bool> useWeightedFinalPCA{"useWeightedFinalPCA", false, "Recalculate vertex position using track covariances, effective only if useAbsDCA is true"};
@@ -127,7 +126,7 @@ struct SecondaryVertexReconstruction {
127126
using JetTracksMCDwPIs = soa::Filtered<soa::Join<JetTracksMCD, aod::JTrackPIs>>;
128127
using OriginalTracks = soa::Join<aod::Tracks, aod::TracksCov, aod::TrackSelection, aod::TracksDCA, aod::TracksDCACov>;
129128

130-
template <unsigned int numProngs, bool hasBC, typename AnyCollision, typename AnyJet, typename AnyParticles>
129+
template <unsigned int numProngs, bool externalMagneticField, typename AnyCollision, typename AnyJet, typename AnyParticles>
131130
void runCreatorNProng(AnyCollision const& collision,
132131
AnyJet const& analysisJet,
133132
AnyParticles const& listoftracks,
@@ -149,15 +148,14 @@ struct SecondaryVertexReconstruction {
149148
trackParVars[inum] = getTrackParCov(prong);
150149
}
151150

152-
if constexpr (hasBC) {
151+
if constexpr (externalMagneticField) {
152+
bz = magneticField;
153+
} else {
153154
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
154155
if (runNumber != bc.runNumber()) {
155156
initCCDB(bc, runNumber, ccdb, ccdbPathGrpMag, lut, false);
156157
bz = o2::base::Propagator::Instance()->getNominalBz();
157158
}
158-
} else {
159-
auto fieldInstance = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField());
160-
bz = fieldInstance->GetBz(0, 0, 0); // to be checked
161159
}
162160

163161
// Use a different fitter depending on the number of prongs
@@ -268,7 +266,7 @@ struct SecondaryVertexReconstruction {
268266
}
269267

270268
currentCombination.push_back(iprong);
271-
runCreatorNProng<numProngs, hasBC>(
269+
runCreatorNProng<numProngs, externalMagneticField>(
272270
collision, analysisJet, listoftracks, svIndices, df, iprong + 1, currentCombination);
273271
currentCombination.pop_back();
274272
}
@@ -283,81 +281,81 @@ struct SecondaryVertexReconstruction {
283281
{
284282
for (auto& jet : jets) {
285283
std::vector<int> svIndices;
286-
runCreatorNProng<3, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
284+
runCreatorNProng<3, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
287285
sv3prongIndicesTableData(svIndices);
288286
}
289287
}
290288
PROCESS_SWITCH(SecondaryVertexReconstruction, processData3Prongs, "Reconstruct the data 3-prong secondary vertex", false);
291289

292-
void processData3ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/)
290+
void processData3ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/)
293291
{
294292
for (auto& jet : jets) {
295293
std::vector<int> svIndices;
296-
runCreatorNProng<3, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
294+
runCreatorNProng<3, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
297295
sv3prongIndicesTableData(svIndices);
298296
}
299297
}
300-
PROCESS_SWITCH(SecondaryVertexReconstruction, processData3ProngsWithoutBCs, "Reconstruct the data 3-prong secondary vertex without BC info", false);
298+
PROCESS_SWITCH(SecondaryVertexReconstruction, processData3ProngsExternalMagneticField, "Reconstruct the data 3-prong secondary vertex with external magnetic field", false);
301299

302300
void processData2Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/)
303301
{
304302
for (auto& jet : jets) {
305303
std::vector<int> svIndices;
306-
runCreatorNProng<2, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
304+
runCreatorNProng<2, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
307305
sv2prongIndicesTableData(svIndices);
308306
}
309307
}
310308
PROCESS_SWITCH(SecondaryVertexReconstruction, processData2Prongs, "Reconstruct the data 2-prong secondary vertex", false);
311309

312-
void processData2ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/)
310+
void processData2ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& jtracks, OriginalTracks const& /*tracks*/)
313311
{
314312
for (auto& jet : jets) {
315313
std::vector<int> svIndices;
316-
runCreatorNProng<2, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
314+
runCreatorNProng<2, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
317315
sv2prongIndicesTableData(svIndices);
318316
}
319317
}
320-
PROCESS_SWITCH(SecondaryVertexReconstruction, processData2ProngsWithoutBCs, "Reconstruct the data 2-prong secondary vertex without BC info", false);
318+
PROCESS_SWITCH(SecondaryVertexReconstruction, processData2ProngsExternalMagneticField, "Reconstruct the data 2-prong secondary vertex with extrernal magnetic field", false);
321319

322320
void processMCD3Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/)
323321
{
324322
for (auto& jet : mcdjets) {
325323
std::vector<int> svIndices;
326-
runCreatorNProng<3, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
324+
runCreatorNProng<3, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
327325
sv3prongIndicesTableMCD(svIndices);
328326
}
329327
}
330328
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD3Prongs, "Reconstruct the MCD 3-prong secondary vertex", false);
331329

332-
void processMCD3ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/)
330+
void processMCD3ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/)
333331
{
334332
for (auto& jet : mcdjets) {
335333
std::vector<int> svIndices;
336-
runCreatorNProng<3, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
334+
runCreatorNProng<3, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df3);
337335
sv3prongIndicesTableMCD(svIndices);
338336
}
339337
}
340-
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD3ProngsWithoutBCs, "Reconstruct the MCD 3-prong secondary vertex without BC info", false);
338+
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD3ProngsExternalMagneticField, "Reconstruct the MCD 3-prong secondary vertex with external magnetic field", false);
341339

342340
void processMCD2Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/)
343341
{
344342
for (auto& jet : mcdjets) {
345343
std::vector<int> svIndices;
346-
runCreatorNProng<2, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
344+
runCreatorNProng<2, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
347345
sv2prongIndicesTableMCD(svIndices);
348346
}
349347
}
350348
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2Prongs, "Reconstruct the MCD 2-prong secondary vertex", false);
351349

352-
void processMCD2ProngsWithoutBCs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/)
350+
void processMCD2ProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& jtracks, OriginalTracks const& /*tracks*/)
353351
{
354352
for (auto& jet : mcdjets) {
355353
std::vector<int> svIndices;
356-
runCreatorNProng<2, false>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
354+
runCreatorNProng<2, true>(collision.template collision_as<aod::Collisions>(), jet, jtracks, svIndices, df2);
357355
sv2prongIndicesTableMCD(svIndices);
358356
}
359357
}
360-
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2ProngsWithoutBCs, "Reconstruct the MCD 2-prong secondary vertex without BC info", false);
358+
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2ProngsExternalMagneticField, "Reconstruct the MCD 2-prong secondary vertex with external magnetic field", false);
361359
};
362360

363361
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)