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
4344using namespace o2 ::framework;
45+ using namespace o2 ::math_utils::detail;
4446
4547namespace 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-
5950void 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
9586int64_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