Skip to content

Commit e507950

Browse files
authored
Switch to truncation from MathUtils. Supress TPC tracks filling by default (#5355)
1 parent 1c663c9 commit e507950

File tree

3 files changed

+57
-72
lines changed

3 files changed

+57
-72
lines changed

Detectors/AOD/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ o2_add_library(
2727
O2::TOFWorkflow
2828
O2::TPCWorkflow
2929
O2::CCDB
30+
O2::MathUtils
3031
)
3132

3233
o2_add_executable(

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class AODProducerWorkflowDPL : public Task
102102

103103
private:
104104
int mFillTracksITS = 1;
105-
int mFillTracksTPC = 1;
105+
int mFillTracksTPC = 0;
106106
int mFillTracksITSTPC = 1;
107107
int mTFNumber = -1;
108108
int mTruncate = 1;
@@ -150,8 +150,6 @@ class AODProducerWorkflowDPL : public Task
150150

151151
template <typename TracksType, typename TracksCursorType>
152152
void fillTracksTable(const TracksType& tracks, std::vector<int>& vCollRefs, const TracksCursorType& tracksCursor, int trackType);
153-
154-
float TruncateFloatFraction(float x, uint32_t mask);
155153
};
156154

157155
/// create a processor spec

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 55 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,16 @@
3737
#include "SimulationDataFormat/MCTruthContainer.h"
3838
#include "Steer/MCKinematicsReader.h"
3939
#include "TMath.h"
40+
#include "MathUtils/Utils.h"
4041
#include <map>
4142
#include <vector>
4243

4344
using namespace o2::framework;
45+
using namespace o2::math_utils::detail;
4446

4547
namespace o2::aodproducer
4648
{
4749

48-
float AODProducerWorkflowDPL::TruncateFloatFraction(float x, uint32_t mask)
49-
{
50-
union {
51-
float y;
52-
uint32_t iy;
53-
} myu;
54-
myu.y = x;
55-
myu.iy &= mask;
56-
return myu.y;
57-
}
58-
5950
void AODProducerWorkflowDPL::findMinMaxBc(gsl::span<const o2::ft0::RecPoints>& ft0RecPoints, gsl::span<const o2::vertexing::PVertex>& primVertices, const std::vector<o2::InteractionTimeRecord>& mcRecords)
6051
{
6152
for (auto& ft0RecPoint : ft0RecPoints) {
@@ -94,9 +85,6 @@ void AODProducerWorkflowDPL::findMinMaxBc(gsl::span<const o2::ft0::RecPoints>& f
9485

9586
int64_t AODProducerWorkflowDPL::getTFNumber(uint64_t firstVtxGlBC, int runNumber)
9687
{
97-
// FIXME:
98-
// check if this code is correct
99-
10088
auto& mgr = o2::ccdb::BasicCCDBManager::instance();
10189
o2::ccdb::CcdbApi ccdb_api;
10290
const std::string rct_path = "RCT/RunInformation/";
@@ -161,8 +149,6 @@ void AODProducerWorkflowDPL::fillTracksTable(const TracksType& tracks, std::vect
161149
float trackPhiEMCAL = -999.f;
162150

163151
// filling available columns for different track types
164-
// FIXME:
165-
// is there a more nice/simple way to do this?
166152
std::variant<o2::its::TrackITS, o2::tpc::TrackTPC, o2::dataformats::TrackTPCITS> tmp = track;
167153
std::visit(
168154
overloaded{
@@ -184,18 +170,18 @@ void AODProducerWorkflowDPL::fillTracksTable(const TracksType& tracks, std::vect
184170
tracksCursor(0,
185171
collisionID,
186172
trackType,
187-
TruncateFloatFraction(track.getX(), mTrackX),
188-
TruncateFloatFraction(track.getAlpha(), mTrackAlpha),
173+
truncateFloatFraction(track.getX(), mTrackX),
174+
truncateFloatFraction(track.getAlpha(), mTrackAlpha),
189175
track.getY(),
190176
track.getZ(),
191-
TruncateFloatFraction(track.getSnp(), mTrackSnp),
192-
TruncateFloatFraction(track.getTgl(), mTrackTgl),
193-
TruncateFloatFraction(track.getQ2Pt(), mTrack1Pt),
194-
TruncateFloatFraction(TMath::Sqrt(track.getSigmaY2()), mTrackCovDiag),
195-
TruncateFloatFraction(TMath::Sqrt(track.getSigmaZ2()), mTrackCovDiag),
196-
TruncateFloatFraction(TMath::Sqrt(track.getSigmaSnp2()), mTrackCovDiag),
197-
TruncateFloatFraction(TMath::Sqrt(track.getSigmaTgl2()), mTrackCovDiag),
198-
TruncateFloatFraction(TMath::Sqrt(track.getSigma1Pt2()), mTrackCovDiag),
177+
truncateFloatFraction(track.getSnp(), mTrackSnp),
178+
truncateFloatFraction(track.getTgl(), mTrackTgl),
179+
truncateFloatFraction(track.getQ2Pt(), mTrack1Pt),
180+
truncateFloatFraction(TMath::Sqrt(track.getSigmaY2()), mTrackCovDiag),
181+
truncateFloatFraction(TMath::Sqrt(track.getSigmaZ2()), mTrackCovDiag),
182+
truncateFloatFraction(TMath::Sqrt(track.getSigmaSnp2()), mTrackCovDiag),
183+
truncateFloatFraction(TMath::Sqrt(track.getSigmaTgl2()), mTrackCovDiag),
184+
truncateFloatFraction(TMath::Sqrt(track.getSigma1Pt2()), mTrackCovDiag),
199185
(Char_t)(128. * track.getSigmaZY() / track.getSigmaZ2() / track.getSigmaY2()),
200186
(Char_t)(128. * track.getSigmaSnpY() / track.getSigmaSnp2() / track.getSigmaY2()),
201187
(Char_t)(128. * track.getSigmaSnpZ() / track.getSigmaSnp2() / track.getSigmaZ2()),
@@ -206,25 +192,25 @@ void AODProducerWorkflowDPL::fillTracksTable(const TracksType& tracks, std::vect
206192
(Char_t)(128. * track.getSigma1PtZ() / track.getSigma1Pt2() / track.getSigmaZ2()),
207193
(Char_t)(128. * track.getSigma1PtSnp() / track.getSigma1Pt2() / track.getSigmaSnp2()),
208194
(Char_t)(128. * track.getSigma1PtTgl() / track.getSigma1Pt2() / track.getSigmaTgl2()),
209-
TruncateFloatFraction(tpcInnerParam, mTrack1Pt),
195+
truncateFloatFraction(tpcInnerParam, mTrack1Pt),
210196
flags,
211197
itsClusterMap,
212198
tpcNClsFindable,
213199
tpcNClsFindableMinusFound,
214200
tpcNClsFindableMinusCrossedRows,
215201
tpcNClsShared,
216202
trdPattern,
217-
TruncateFloatFraction(itsChi2NCl, mTrackCovOffDiag),
218-
TruncateFloatFraction(tpcChi2NCl, mTrackCovOffDiag),
219-
TruncateFloatFraction(trdChi2, mTrackCovOffDiag),
220-
TruncateFloatFraction(tofChi2, mTrackCovOffDiag),
221-
TruncateFloatFraction(tpcSignal, mTrackSignal),
222-
TruncateFloatFraction(trdSignal, mTrackSignal),
223-
TruncateFloatFraction(tofSignal, mTrackSignal),
224-
TruncateFloatFraction(length, mTrackSignal),
225-
TruncateFloatFraction(tofExpMom, mTrack1Pt),
226-
TruncateFloatFraction(trackEtaEMCAL, mTrackPosEMCAL),
227-
TruncateFloatFraction(trackPhiEMCAL, mTrackPosEMCAL));
203+
truncateFloatFraction(itsChi2NCl, mTrackCovOffDiag),
204+
truncateFloatFraction(tpcChi2NCl, mTrackCovOffDiag),
205+
truncateFloatFraction(trdChi2, mTrackCovOffDiag),
206+
truncateFloatFraction(tofChi2, mTrackCovOffDiag),
207+
truncateFloatFraction(tpcSignal, mTrackSignal),
208+
truncateFloatFraction(trdSignal, mTrackSignal),
209+
truncateFloatFraction(tofSignal, mTrackSignal),
210+
truncateFloatFraction(length, mTrackSignal),
211+
truncateFloatFraction(tofExpMom, mTrack1Pt),
212+
truncateFloatFraction(trackEtaEMCAL, mTrackPosEMCAL),
213+
truncateFloatFraction(trackPhiEMCAL, mTrackPosEMCAL));
228214
}
229215
}
230216

@@ -432,11 +418,11 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
432418
mcCollisionsCursor(0,
433419
mGlobBC2BCID.at(globalBC),
434420
generatorID,
435-
TruncateFloatFraction(header.GetX(), mCollisionPosition),
436-
TruncateFloatFraction(header.GetY(), mCollisionPosition),
437-
TruncateFloatFraction(header.GetZ(), mCollisionPosition),
438-
TruncateFloatFraction(time, mCollisionPosition),
439-
TruncateFloatFraction(mcColWeight, mCollisionPosition),
421+
truncateFloatFraction(header.GetX(), mCollisionPosition),
422+
truncateFloatFraction(header.GetY(), mCollisionPosition),
423+
truncateFloatFraction(header.GetZ(), mCollisionPosition),
424+
truncateFloatFraction(time, mCollisionPosition),
425+
truncateFloatFraction(mcColWeight, mCollisionPosition),
440426
header.GetB());
441427
}
442428
index++;
@@ -474,15 +460,15 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
474460
mother1,
475461
daughter0,
476462
daughter1,
477-
TruncateFloatFraction(weight, mMcParticleW),
478-
TruncateFloatFraction((float)mcParticle.Px(), mMcParticleMom),
479-
TruncateFloatFraction((float)mcParticle.Py(), mMcParticleMom),
480-
TruncateFloatFraction((float)mcParticle.Pz(), mMcParticleMom),
481-
TruncateFloatFraction((float)mcParticle.GetEnergy(), mMcParticleMom),
482-
TruncateFloatFraction((float)mcParticle.Vx(), mMcParticlePos),
483-
TruncateFloatFraction((float)mcParticle.Vy(), mMcParticlePos),
484-
TruncateFloatFraction((float)mcParticle.Vz(), mMcParticlePos),
485-
TruncateFloatFraction((float)mcParticle.T(), mMcParticlePos));
463+
truncateFloatFraction(weight, mMcParticleW),
464+
truncateFloatFraction((float)mcParticle.Px(), mMcParticleMom),
465+
truncateFloatFraction((float)mcParticle.Py(), mMcParticleMom),
466+
truncateFloatFraction((float)mcParticle.Pz(), mMcParticleMom),
467+
truncateFloatFraction((float)mcParticle.GetEnergy(), mMcParticleMom),
468+
truncateFloatFraction((float)mcParticle.Vx(), mMcParticlePos),
469+
truncateFloatFraction((float)mcParticle.Vy(), mMcParticlePos),
470+
truncateFloatFraction((float)mcParticle.Vz(), mMcParticlePos),
471+
truncateFloatFraction((float)mcParticle.T(), mMcParticlePos));
486472
mIDsToIndex[std::make_tuple(sourceID, mcEventID, mcTrackID)] = mcParticlesIndex;
487473
mcTrackID++;
488474
mcParticlesIndex++;
@@ -503,18 +489,18 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
503489
float aAmplitudesA[96];
504490
float aAmplitudesC[112];
505491
for (int i = 0; i < 96; i++) {
506-
aAmplitudesA[i] = TruncateFloatFraction(vAmplitudes[i], mT0Amplitude);
492+
aAmplitudesA[i] = truncateFloatFraction(vAmplitudes[i], mT0Amplitude);
507493
}
508494
for (int i = 0; i < 112; i++) {
509-
aAmplitudesC[i] = TruncateFloatFraction(vAmplitudes[i + 96], mT0Amplitude);
495+
aAmplitudesC[i] = truncateFloatFraction(vAmplitudes[i + 96], mT0Amplitude);
510496
}
511497
uint64_t globalBC = ft0RecPoint.getInteractionRecord().orbit * o2::constants::lhc::LHCMaxBunches + ft0RecPoint.getInteractionRecord().bc;
512498
ft0Cursor(0,
513499
mGlobBC2BCID.at(globalBC),
514500
aAmplitudesA,
515501
aAmplitudesC,
516-
TruncateFloatFraction(ft0RecPoint.getCollisionTimeA() / 1E3, mT0Time), // ps to ns
517-
TruncateFloatFraction(ft0RecPoint.getCollisionTimeC() / 1E3, mT0Time), // ps to ns
502+
truncateFloatFraction(ft0RecPoint.getCollisionTimeA() / 1E3, mT0Time), // ps to ns
503+
truncateFloatFraction(ft0RecPoint.getCollisionTimeC() / 1E3, mT0Time), // ps to ns
518504
ft0RecPoint.getTrigger().triggersignals);
519505
}
520506

@@ -550,19 +536,19 @@ void AODProducerWorkflowDPL::run(ProcessingContext& pc)
550536
int collisionTimeMask = 0;
551537
collisionsCursor(0,
552538
BCid,
553-
TruncateFloatFraction(vertex.getX(), mCollisionPosition),
554-
TruncateFloatFraction(vertex.getY(), mCollisionPosition),
555-
TruncateFloatFraction(vertex.getZ(), mCollisionPosition),
556-
TruncateFloatFraction(cov[0], mCollisionPositionCov),
557-
TruncateFloatFraction(cov[1], mCollisionPositionCov),
558-
TruncateFloatFraction(cov[2], mCollisionPositionCov),
559-
TruncateFloatFraction(cov[3], mCollisionPositionCov),
560-
TruncateFloatFraction(cov[4], mCollisionPositionCov),
561-
TruncateFloatFraction(cov[5], mCollisionPositionCov),
562-
TruncateFloatFraction(vertex.getChi2(), mCollisionPositionCov),
539+
truncateFloatFraction(vertex.getX(), mCollisionPosition),
540+
truncateFloatFraction(vertex.getY(), mCollisionPosition),
541+
truncateFloatFraction(vertex.getZ(), mCollisionPosition),
542+
truncateFloatFraction(cov[0], mCollisionPositionCov),
543+
truncateFloatFraction(cov[1], mCollisionPositionCov),
544+
truncateFloatFraction(cov[2], mCollisionPositionCov),
545+
truncateFloatFraction(cov[3], mCollisionPositionCov),
546+
truncateFloatFraction(cov[4], mCollisionPositionCov),
547+
truncateFloatFraction(cov[5], mCollisionPositionCov),
548+
truncateFloatFraction(vertex.getChi2(), mCollisionPositionCov),
563549
vertex.getNContributors(),
564-
TruncateFloatFraction(tsTimeStamp, mCollisionPosition),
565-
TruncateFloatFraction(timeStamp.getTimeStampError() * 1E3, mCollisionPositionCov),
550+
truncateFloatFraction(tsTimeStamp, mCollisionPosition),
551+
truncateFloatFraction(timeStamp.getTimeStampError() * 1E3, mCollisionPositionCov),
566552
collisionTimeMask);
567553

568554
auto trackRef = primVer2TRefs[collisionID];
@@ -733,7 +719,7 @@ DataProcessorSpec getAODProducerWorkflowSpec()
733719
AlgorithmSpec{adaptFromTask<AODProducerWorkflowDPL>()},
734720
Options{
735721
ConfigParamSpec{"fill-tracks-its", VariantType::Int, 1, {"Fill ITS tracks into tracks table"}},
736-
ConfigParamSpec{"fill-tracks-tpc", VariantType::Int, 1, {"Fill TPC tracks into tracks table"}},
722+
ConfigParamSpec{"fill-tracks-tpc", VariantType::Int, 0, {"Fill TPC tracks into tracks table"}},
737723
ConfigParamSpec{"fill-tracks-its-tpc", VariantType::Int, 1, {"Fill ITS-TPC tracks into tracks table"}},
738724
ConfigParamSpec{"aod-timeframe-id", VariantType::Int, -1, {"Set timeframe number"}},
739725
ConfigParamSpec{"enable-truncation", VariantType::Int, 1, {"Truncation parameter: 1 -- on (default), != 1 -- off"}}}};

0 commit comments

Comments
 (0)