Skip to content

Commit cc392db

Browse files
authored
Update onTheFlyTofPid.cxx
1 parent 1dc5b61 commit cc392db

File tree

1 file changed

+44
-35
lines changed

1 file changed

+44
-35
lines changed

ALICE3/TableProducer/OTF/onTheFlyTofPid.cxx

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,40 +24,42 @@
2424
/// \since May 22, 2024
2525
///
2626

27-
#include <utility>
28-
#include <map>
29-
#include <string>
30-
#include <vector>
27+
#include "TableHelper.h"
3128

32-
#include <TPDGCode.h>
29+
#include "ALICE3/Core/DelphesO2TrackSmearer.h"
30+
#include "ALICE3/Core/TrackUtilities.h"
31+
#include "ALICE3/DataModel/OTFTOF.h"
32+
#include "Common/Core/trackUtilities.h"
33+
#include "Common/DataModel/TrackSelectionTables.h"
3334

35+
#include "CCDB/BasicCCDBManager.h"
36+
#include "CCDB/CcdbApi.h"
37+
#include "CommonConstants/GeomConstants.h"
38+
#include "CommonConstants/PhysicsConstants.h"
39+
#include "CommonUtils/NameConf.h"
40+
#include "DataFormatsCalibration/MeanVertexObject.h"
41+
#include "DataFormatsParameters/GRPMagField.h"
42+
#include "DetectorsBase/GeometryManager.h"
43+
#include "DetectorsBase/Propagator.h"
44+
#include "DetectorsVertexing/HelixHelper.h"
45+
#include "Framework/ASoAHelpers.h"
3446
#include "Framework/AnalysisDataModel.h"
3547
#include "Framework/AnalysisTask.h"
36-
#include "Framework/runDataProcessing.h"
37-
#include "Framework/RunningWorkflowInfo.h"
3848
#include "Framework/HistogramRegistry.h"
3949
#include "Framework/O2DatabasePDGPlugin.h"
40-
#include "Framework/ASoAHelpers.h"
41-
#include "Common/DataModel/TrackSelectionTables.h"
42-
#include "Common/Core/trackUtilities.h"
43-
#include "ALICE3/Core/TrackUtilities.h"
50+
#include "Framework/RunningWorkflowInfo.h"
51+
#include "Framework/runDataProcessing.h"
4452
#include "ReconstructionDataFormats/DCA.h"
45-
#include "DetectorsBase/Propagator.h"
46-
#include "DetectorsBase/GeometryManager.h"
47-
#include "CommonUtils/NameConf.h"
48-
#include "CCDB/CcdbApi.h"
49-
#include "CCDB/BasicCCDBManager.h"
50-
#include "DataFormatsParameters/GRPMagField.h"
51-
#include "DataFormatsCalibration/MeanVertexObject.h"
52-
#include "CommonConstants/GeomConstants.h"
53-
#include "CommonConstants/PhysicsConstants.h"
54-
#include "TRandom3.h"
55-
#include "ALICE3/DataModel/OTFTOF.h"
56-
#include "DetectorsVertexing/HelixHelper.h"
57-
#include "TableHelper.h"
58-
#include "ALICE3/Core/DelphesO2TrackSmearer.h"
53+
5954
#include "TEfficiency.h"
6055
#include "THashList.h"
56+
#include "TRandom3.h"
57+
#include <TPDGCode.h>
58+
59+
#include <map>
60+
#include <string>
61+
#include <utility>
62+
#include <vector>
6163

6264
using namespace o2;
6365
using namespace o2::framework;
@@ -84,7 +86,7 @@ struct OnTheFlyTofPid {
8486
// more could be added (especially a disk TOF at a certain z?)
8587
// in the evolution of this effort
8688
struct : ConfigurableGroup {
87-
Configurable<float> dBz{"dBz", 20, "magnetic field (kilogauss)"};
89+
Configurable<float> magneticField{"magneticField", 0, "magnetic field (kilogauss) if 0, taken from the tracker task"};
8890
Configurable<bool> considerEventTime{"considerEventTime", true, "flag to consider event time"};
8991
Configurable<float> innerTOFRadius{"innerTOFRadius", 20, "barrel inner TOF radius (cm)"};
9092
Configurable<float> outerTOFRadius{"outerTOFRadius", 80, "barrel outer TOF radius (cm)"};
@@ -140,6 +142,13 @@ struct OnTheFlyTofPid {
140142
void init(o2::framework::InitContext& initContext)
141143
{
142144
pRandomNumberGenerator.SetSeed(0); // fully randomize
145+
if (simConfig.magneticField.value < 0.0001f) {
146+
LOG(info) << "Getting the magnetic field from the on-the-fly tracker task";
147+
if (!getTaskOptionValue(initContext, "on-the-fly-tracker", simConfig.magneticField, false)) {
148+
LOG(fatal) << "Could not get Bz from on-the-fly-tracker task";
149+
}
150+
LOG(info) << "Bz = " << simConfig.magneticField.value << " T";
151+
}
143152

144153
// Check if inheriting the LUT configuration
145154
auto configLutPath = [&](Configurable<std::string>& lut) {
@@ -397,7 +406,7 @@ struct OnTheFlyTofPid {
397406

398407
static constexpr float kMaxEventTimeResolution = 200.f;
399408
if (sumw <= 0. || tracks.size() <= 1 || std::sqrt(1. / sumw) > kMaxEventTimeResolution) {
400-
tzero[0] = 0.; // [ps]
409+
tzero[0] = 0.; // [ps]
401410
tzero[1] = kMaxEventTimeResolution; // [ps]
402411
return false;
403412
}
@@ -496,13 +505,13 @@ struct OnTheFlyTofPid {
496505

497506
float xPv = -100.f;
498507
static constexpr float kTrkXThreshold = -99.f; // Threshold to consider a good propagation of the track
499-
if (o2track.propagateToDCA(mcPvVtx, simConfig.dBz)) {
508+
if (o2track.propagateToDCA(mcPvVtx, simConfig.magneticField)) {
500509
xPv = o2track.getX();
501510
}
502511
float trackLengthInnerTOF = -1, trackLengthOuterTOF = -1;
503512
if (xPv > kTrkXThreshold) {
504-
trackLengthInnerTOF = computeTrackLength(o2track, simConfig.innerTOFRadius, simConfig.dBz);
505-
trackLengthOuterTOF = computeTrackLength(o2track, simConfig.outerTOFRadius, simConfig.dBz);
513+
trackLengthInnerTOF = computeTrackLength(o2track, simConfig.innerTOFRadius, simConfig.magneticField);
514+
trackLengthOuterTOF = computeTrackLength(o2track, simConfig.outerTOFRadius, simConfig.magneticField);
506515
}
507516

508517
// get mass to calculate velocity
@@ -526,12 +535,12 @@ struct OnTheFlyTofPid {
526535
float trackLengthRecoInnerTOF = -1, trackLengthRecoOuterTOF = -1;
527536
auto recoTrack = getTrackParCov(track);
528537
xPv = -100.f;
529-
if (recoTrack.propagateToDCA(pvVtx, simConfig.dBz)) {
538+
if (recoTrack.propagateToDCA(pvVtx, simConfig.magneticField)) {
530539
xPv = recoTrack.getX();
531540
}
532541
if (xPv > kTrkXThreshold) {
533-
trackLengthRecoInnerTOF = computeTrackLength(recoTrack, simConfig.innerTOFRadius, simConfig.dBz);
534-
trackLengthRecoOuterTOF = computeTrackLength(recoTrack, simConfig.outerTOFRadius, simConfig.dBz);
542+
trackLengthRecoInnerTOF = computeTrackLength(recoTrack, simConfig.innerTOFRadius, simConfig.magneticField);
543+
trackLengthRecoOuterTOF = computeTrackLength(recoTrack, simConfig.outerTOFRadius, simConfig.magneticField);
535544
}
536545

537546
// cache the track info needed for the event time calculation
@@ -639,8 +648,8 @@ struct OnTheFlyTofPid {
639648
ptResolution = mSmearer.getAbsPtRes(pdgInfoThis->PdgCode(), dNdEta, pseudorapidity, momentum / std::cosh(pseudorapidity));
640649
etaResolution = mSmearer.getAbsEtaRes(pdgInfoThis->PdgCode(), dNdEta, pseudorapidity, momentum / std::cosh(pseudorapidity));
641650
}
642-
float innerTrackTimeReso = calculateTrackTimeResolutionAdvanced(momentum / std::cosh(pseudorapidity), pseudorapidity, ptResolution, etaResolution, masses[ii], simConfig.innerTOFRadius, simConfig.dBz);
643-
float outerTrackTimeReso = calculateTrackTimeResolutionAdvanced(momentum / std::cosh(pseudorapidity), pseudorapidity, ptResolution, etaResolution, masses[ii], simConfig.outerTOFRadius, simConfig.dBz);
651+
float innerTrackTimeReso = calculateTrackTimeResolutionAdvanced(momentum / std::cosh(pseudorapidity), pseudorapidity, ptResolution, etaResolution, masses[ii], simConfig.innerTOFRadius, simConfig.magneticField);
652+
float outerTrackTimeReso = calculateTrackTimeResolutionAdvanced(momentum / std::cosh(pseudorapidity), pseudorapidity, ptResolution, etaResolution, masses[ii], simConfig.outerTOFRadius, simConfig.magneticField);
644653
innerTotalTimeReso = std::hypot(simConfig.innerTOFTimeReso, innerTrackTimeReso);
645654
outerTotalTimeReso = std::hypot(simConfig.outerTOFTimeReso, outerTrackTimeReso);
646655

0 commit comments

Comments
 (0)