Skip to content

Commit 7145639

Browse files
committed
modification of 3 prong to n-prong
issue of rebase fix issue of rebase 2 fix issue of rebase 3 to change the name
1 parent 923bc16 commit 7145639

6 files changed

Lines changed: 306 additions & 463 deletions

File tree

PWGJE/DataModel/JetTagging.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ DECLARE_SOA_DYNAMIC_COLUMN(ImpactParameterXY, impactParameterXY, [](float xVtxP,
127127

128128
JETSV_TABLES_DEF(Charged, SecondaryVertex3Prong, "3PRONG");
129129
JETSV_TABLES_DEF(Charged, SecondaryVertex2Prong, "2PRONG");
130+
JETSV_TABLES_DEF(Charged, SecondaryVertexNProng, "NPRONG");
130131

131132
// Defines the jet tagging table definition
132133
namespace jettagging

PWGJE/TableProducer/jetTaggerHF.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -732,8 +732,8 @@ struct JetTaggerHFTask {
732732
PROCESS_SWITCH(JetTaggerHFTask, processFillTables, "Fill Tables for tagging decision, jet probability, and ML score on charged jets", false);
733733
};
734734

735-
using JetTaggerhfDataCharged = JetTaggerHFTask<false, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>, aod::DataSecondaryVertex3ProngIndices, aod::DataSecondaryVertex3Prongs, aod::ChargedJetTags>;
736-
using JetTaggerhfMCDCharged = JetTaggerHFTask<true, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents>, aod::MCDSecondaryVertex3ProngIndices, aod::MCDSecondaryVertex3Prongs, aod::ChargedMCDetectorLevelJetTags>;
735+
using JetTaggerhfDataCharged = JetTaggerHFTask<false, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>, aod::DataSecondaryVertexNProngIndices, aod::DataSecondaryVertexNProngs, aod::ChargedJetTags>;
736+
using JetTaggerhfMCDCharged = JetTaggerHFTask<true, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents>, aod::MCDSecondaryVertexNProngIndices, aod::MCDSecondaryVertexNProngs, aod::ChargedMCDetectorLevelJetTags>;
737737

738738
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
739739
{

PWGJE/TableProducer/secondaryVertexReconstruction.cxx

Lines changed: 127 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@
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"
3125
#include <CCDB/BasicCCDBManager.h>
26+
#include <CommonConstants/PhysicsConstants.h>
27+
#include <DCAFitter/DCAFitterN.h>
3228
#include <DetectorsBase/MatLayerCylSet.h>
3329
#include <DetectorsBase/Propagator.h>
30+
#include <Framework/ASoA.h>
31+
#include <Framework/AnalysisDataModel.h>
3432
#include <Framework/AnalysisHelpers.h>
33+
#include <Framework/AnalysisTask.h>
3534
#include <Framework/Configurable.h>
3635
#include <Framework/HistogramRegistry.h>
3736
#include <Framework/HistogramSpec.h>
3837
#include <Framework/InitContext.h>
3938
#include <Framework/Logger.h>
4039
#include <Framework/runDataProcessing.h>
40+
#include <ReconstructionDataFormats/DCA.h>
4141
#include <ReconstructionDataFormats/TrackParametrizationWithError.h>
4242
#include <ReconstructionDataFormats/Vertex.h>
4343

@@ -63,12 +63,19 @@ struct SecondaryVertexReconstruction {
6363
Produces<aod::DataSecondaryVertex2Prongs> sv2prongTableData;
6464
Produces<aod::DataSecondaryVertex2ProngIndices> sv2prongIndicesTableData;
6565

66+
Produces<aod::DataSecondaryVertexNProngs> svnprongTableData;
67+
Produces<aod::DataSecondaryVertexNProngIndices> svnprongIndicesTableData;
68+
6669
Produces<aod::MCDSecondaryVertex3Prongs> sv3prongTableMCD;
6770
Produces<aod::MCDSecondaryVertex3ProngIndices> sv3prongIndicesTableMCD;
6871

6972
Produces<aod::MCDSecondaryVertex2Prongs> sv2prongTableMCD;
7073
Produces<aod::MCDSecondaryVertex2ProngIndices> sv2prongIndicesTableMCD;
7174

75+
Produces<aod::MCDSecondaryVertexNProngs> svnprongTableMCD;
76+
Produces<aod::MCDSecondaryVertexNProngIndices> svnprongIndicesTableMCD;
77+
78+
Configurable<int> nProng{"nProng", 3, "number of prong"};
7279
Configurable<float> magneticField{"magneticField", 20.0f, "magnetic field in kG"};
7380
Configurable<bool> propagateToPCA{"propagateToPCA", true, "create tracks version propagated to PCA"};
7481
Configurable<bool> useAbsDCA{"useAbsDCA", false, "Minimise abs. distance rather than chi2"};
@@ -241,43 +248,77 @@ struct SecondaryVertexReconstruction {
241248
std::fill(massArray.begin(), massArray.end(), o2::constants::physics::MassPiPlus);
242249
double massSV = RecoDecay::m(arrayMomenta, massArray);
243250

251+
// calculate momentum
252+
double xMomenta = -1;
253+
double yMomenta = -1;
254+
double zMomenta = -1;
255+
if (numProngs == ThreeProngCount) {
256+
xMomenta = arrayMomenta[0][0] + arrayMomenta[1][0] + arrayMomenta[2][0];
257+
yMomenta = arrayMomenta[0][1] + arrayMomenta[1][1] + arrayMomenta[2][1];
258+
zMomenta = arrayMomenta[0][2] + arrayMomenta[1][2] + arrayMomenta[2][2];
259+
} else if (numProngs == TwoProngCount) {
260+
xMomenta = arrayMomenta[0][0] + arrayMomenta[1][0];
261+
yMomenta = arrayMomenta[0][1] + arrayMomenta[1][1];
262+
zMomenta = arrayMomenta[0][2] + arrayMomenta[1][2];
263+
} else {
264+
LOG(error) << "No process momenta\n";
265+
}
266+
244267
// fill candidate table rows
245268
if ((doprocessData3Prongs || doprocessData3ProngsExternalMagneticField) && numProngs == ThreeProngCount) {
246269
sv3prongTableData(analysisJet.globalIndex(),
247270
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
248271
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
249-
arrayMomenta[0][0] + arrayMomenta[1][0] + arrayMomenta[2][0],
250-
arrayMomenta[0][1] + arrayMomenta[1][1] + arrayMomenta[2][1],
251-
arrayMomenta[0][2] + arrayMomenta[1][2] + arrayMomenta[2][2],
272+
xMomenta,
273+
yMomenta,
274+
zMomenta,
252275
energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
253276
svIndices.push_back(sv3prongTableData.lastIndex());
254277
} else if ((doprocessData2Prongs || doprocessData2ProngsExternalMagneticField) && numProngs == TwoProngCount) {
255278
sv2prongTableData(analysisJet.globalIndex(),
256279
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
257280
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
258-
arrayMomenta[0][0] + arrayMomenta[1][0],
259-
arrayMomenta[0][1] + arrayMomenta[1][1],
260-
arrayMomenta[0][2] + arrayMomenta[1][2],
281+
xMomenta,
282+
yMomenta,
283+
zMomenta,
261284
energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
262285
svIndices.push_back(sv2prongTableData.lastIndex());
286+
} else if ((doprocessDataNProngs || doprocessDataNProngsExternalMagneticField) && numProngs == TwoProngCount) {
287+
svnprongTableData(analysisJet.globalIndex(),
288+
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
289+
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
290+
xMomenta,
291+
yMomenta,
292+
zMomenta,
293+
energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
294+
svIndices.push_back(svnprongTableData.lastIndex());
263295
} else if ((doprocessMCD3Prongs || doprocessMCD3ProngsExternalMagneticField) && numProngs == ThreeProngCount) {
264296
sv3prongTableMCD(analysisJet.globalIndex(),
265297
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
266298
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
267-
arrayMomenta[0][0] + arrayMomenta[1][0] + arrayMomenta[2][0],
268-
arrayMomenta[0][1] + arrayMomenta[1][1] + arrayMomenta[2][1],
269-
arrayMomenta[0][2] + arrayMomenta[1][2] + arrayMomenta[2][2],
299+
xMomenta,
300+
yMomenta,
301+
zMomenta,
270302
energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
271303
svIndices.push_back(sv3prongTableMCD.lastIndex());
272304
} else if ((doprocessMCD2Prongs || doprocessMCD2ProngsExternalMagneticField) && numProngs == TwoProngCount) {
273305
sv2prongTableMCD(analysisJet.globalIndex(),
274306
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
275307
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
276-
arrayMomenta[0][0] + arrayMomenta[1][0],
277-
arrayMomenta[0][1] + arrayMomenta[1][1],
278-
arrayMomenta[0][2] + arrayMomenta[1][2],
308+
xMomenta,
309+
yMomenta,
310+
zMomenta,
279311
energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
280312
svIndices.push_back(sv2prongTableMCD.lastIndex());
313+
} else if (doprocessMCDNProngs || doprocessMCDNProngsExternalMagneticField) {
314+
svnprongTableMCD(analysisJet.globalIndex(),
315+
primaryVertex.getX(), primaryVertex.getY(), primaryVertex.getZ(),
316+
secondaryVertex[0], secondaryVertex[1], secondaryVertex[2],
317+
xMomenta,
318+
yMomenta,
319+
zMomenta,
320+
energySV, massSV, chi2PCA, dispersion, errorDecayLength, errorDecayLengthXY);
321+
svIndices.push_back(svnprongTableMCD.lastIndex());
281322
} else {
282323
LOG(error) << "No process specified\n";
283324
}
@@ -357,6 +398,40 @@ struct SecondaryVertexReconstruction {
357398
}
358399
PROCESS_SWITCH(SecondaryVertexReconstruction, processData2ProngsExternalMagneticField, "Reconstruct the data 2-prong secondary vertex with extrernal magnetic field", false);
359400

401+
void processDataNProngs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& tracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/)
402+
{
403+
for (const auto& jet : jets) {
404+
std::vector<int> svIndices;
405+
if (nProng == ThreeProngCount) {
406+
runCreatorNProng<ThreeProngCount, false>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df3);
407+
svnprongIndicesTableData(svIndices);
408+
} else if (nProng == TwoProngCount) {
409+
runCreatorNProng<TwoProngCount, false>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df2);
410+
svnprongIndicesTableData(svIndices);
411+
} else {
412+
LOG(error) << "set number of prong\n";
413+
}
414+
}
415+
}
416+
PROCESS_SWITCH(SecondaryVertexReconstruction, processDataNProngs, "Reconstruct the data mult-prong secondary vertex", false);
417+
418+
void processDataNProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedJets, aod::ChargedJetConstituents> const& jets, JetTracksData const& tracks, OriginalTracks const& /*tracks*/)
419+
{
420+
for (const auto& jet : jets) {
421+
std::vector<int> svIndices;
422+
if (nProng == ThreeProngCount) {
423+
runCreatorNProng<ThreeProngCount, true>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df3);
424+
svnprongIndicesTableData(svIndices);
425+
} else if (nProng == TwoProngCount) {
426+
runCreatorNProng<TwoProngCount, true>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df2);
427+
svnprongIndicesTableData(svIndices);
428+
} else {
429+
LOG(error) << "set number of prong\n";
430+
}
431+
}
432+
}
433+
PROCESS_SWITCH(SecondaryVertexReconstruction, processDataNProngsExternalMagneticField, "Reconstruct the data mult-prong secondary vertex with extrernal magnetic field", false);
434+
360435
void processMCD3Prongs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& tracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/)
361436
{
362437
for (const auto& jet : mcdjets) {
@@ -396,6 +471,40 @@ struct SecondaryVertexReconstruction {
396471
}
397472
}
398473
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCD2ProngsExternalMagneticField, "Reconstruct the MCD 2-prong secondary vertex with external magnetic field", false);
474+
475+
void processMCDNProngs(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& tracks, OriginalTracks const& /*tracks*/, aod::BCsWithTimestamps const& /*bcWithTimeStamps*/)
476+
{
477+
for (const auto& jet : mcdjets) {
478+
std::vector<int> svIndices;
479+
if (nProng == ThreeProngCount) {
480+
runCreatorNProng<ThreeProngCount, false>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df3);
481+
svnprongIndicesTableMCD(svIndices);
482+
} else if (nProng == TwoProngCount) {
483+
runCreatorNProng<TwoProngCount, false>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df2);
484+
svnprongIndicesTableMCD(svIndices);
485+
} else {
486+
LOG(error) << "set number of prong\n";
487+
}
488+
}
489+
}
490+
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCDNProngs, "Reconstruct the MCD n-prong secondary vertex", false);
491+
492+
void processMCDNProngsExternalMagneticField(JetCollisionwPIs::iterator const& collision, aod::Collisions const& /*realColl*/, soa::Join<aod::ChargedMCDetectorLevelJets, aod::ChargedMCDetectorLevelJetConstituents> const& mcdjets, JetTracksMCDwPIs const& tracks, OriginalTracks const& /*tracks*/)
493+
{
494+
for (const auto& jet : mcdjets) {
495+
std::vector<int> svIndices;
496+
if (nProng == ThreeProngCount) {
497+
runCreatorNProng<ThreeProngCount, true>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df3);
498+
svnprongIndicesTableMCD(svIndices);
499+
} else if (nProng == TwoProngCount) {
500+
runCreatorNProng<TwoProngCount, true>(collision.template collision_as<aod::Collisions>(), jet, tracks, svIndices, df2);
501+
svnprongIndicesTableMCD(svIndices);
502+
} else {
503+
LOG(error) << "set number of prong\n";
504+
}
505+
}
506+
}
507+
PROCESS_SWITCH(SecondaryVertexReconstruction, processMCDNProngsExternalMagneticField, "Reconstruct the MCD n-prong secondary vertex with external magnetic field", false);
399508
};
400509

401510
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

PWGJE/Tasks/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,6 @@ if(FastJet_FOUND)
397397
COMPONENT_NAME Analysis)
398398
o2physics_add_dpl_workflow(jet-ds-spec-subs
399399
SOURCES jetDsSpecSubs.cxx
400-
o2physics_add_dpl_workflow(jet-ds-spectrum-subs
401-
SOURCES jetDsSpectrumAndSubstructure.cxx
402400
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::PWGJECore O2Physics::AnalysisCore
403401
COMPONENT_NAME Analysis)
404402
o2physics_add_dpl_workflow(jet-d0-ang-substructure

0 commit comments

Comments
 (0)