1717
1818#include < TF1.h>
1919#include < TH1.h>
20- #include < TGeoGlobalMagField.h>
2120
2221#include " CommonConstants/PhysicsConstants.h"
2322#include " DCAFitter/DCAFitterN.h"
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
363361WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments