@@ -36,6 +36,9 @@ void EveWorkflowHelper::selectTracks(const CalibObjectsConst* calib,
3636 if (!maskTrk[gid.getSource ()]) {
3737 return true ;
3838 }
39+ if constexpr (isTPCTrack<decltype (trk)>()) { // unconstrained TPC track, with t0 = TrackTPC.getTime0+0.5*(DeltaFwd-DeltaBwd) and terr = 0.5*(DeltaFwd+DeltaBwd) in TimeBins
40+ time = trk.getTime0 (); // for TPC we need internal time, not the center of the possible interval
41+ }
3942 mTrackSet .trackGID .push_back (gid);
4043 mTrackSet .trackTime .push_back (time);
4144 return true ;
@@ -197,23 +200,23 @@ void EveWorkflowHelper::drawITSTPC(GID gid, float trackTime)
197200 const auto & track = mRecoCont .getTPCITSTrack (gid);
198201 addTrackToEvent (track, gid, trackTime, 0 .);
199202 drawITSClusters (track.getRefITS (), trackTime);
200- drawTPCClusters (track.getRefTPC (), trackTime);
203+ drawTPCClusters (track.getRefTPC (), trackTime * mMUS2TPCTimeBins );
201204}
202205
203206void EveWorkflowHelper::drawITSTPCTOF (GID gid, float trackTime)
204207{
205208 const auto & track = mRecoCont .getITSTPCTOFTrack (gid);
206209 addTrackToEvent (track, gid, trackTime, 0 .);
207210 drawITSClusters (track.getRefITS (), trackTime);
208- drawTPCClusters (track.getRefTPC (), trackTime);
211+ drawTPCClusters (track.getRefTPC (), trackTime * mMUS2TPCTimeBins );
209212 drawTOFClusters (gid, trackTime);
210213}
211214
212215void EveWorkflowHelper::drawTPCTRD (GID gid, float trackTime)
213216{
214217 // LOG(INFO) << "EveWorkflowHelper::drawTPCTRD " << gid;
215218 const auto & tpcTrdTrack = mRecoCont .getTPCTRDTrack <o2::trd::TrackTRD>(gid);
216- drawTPCClusters (tpcTrdTrack.getRefGlobalTrackId (), trackTime);
219+ drawTPCClusters (tpcTrdTrack.getRefGlobalTrackId (), trackTime * mMUS2TPCTimeBins );
217220 drawTRDClusters (tpcTrdTrack, trackTime);
218221}
219222
@@ -249,7 +252,7 @@ void EveWorkflowHelper::drawTPCTOF(GID gid, float trackTime)
249252 const auto & trTPCTOF = mRecoCont .getTPCTOFTrack (gid);
250253 const auto & match = mRecoCont .getTPCTOFMatch (gid.getIndex ());
251254 addTrackToEvent (trTPCTOF, gid, trackTime, 0 );
252- drawTPCClusters (match.getTrackRef (), trackTime);
255+ drawTPCClusters (match.getTrackRef (), trackTime * mMUS2TPCTimeBins );
253256 drawTOFClusters (gid, trackTime);
254257}
255258
@@ -303,23 +306,21 @@ void EveWorkflowHelper::drawITSClusters(GID gid, float trackTime)
303306}
304307
305308// TPC cluseters for given TPC track (gid)
306- void EveWorkflowHelper::drawTPCClusters (GID gid, float trackTime )
309+ void EveWorkflowHelper::drawTPCClusters (GID gid, float trackTimeTB )
307310{
308311 const auto & trc = mRecoCont .getTPCTrack (gid);
309312 auto mTPCTracksClusIdx = mRecoCont .getTPCTracksClusterRefs ();
310313 auto mTPCClusterIdxStruct = &mRecoCont .getTPCClusters ();
311- const auto & elParam = o2::tpc::ParameterElectronics::Instance ();
312- float clusterTimeBinOffset = trc.getTime0 (); // in in time beans time assigned to track - primary vertex
313314
314315 // store the TPC cluster positions
315316 for (int iCl = trc.getNClusterReferences (); iCl--;) {
316317 uint8_t sector, row;
317318 const auto & clTPC = trc.getCluster (mTPCTracksClusIdx , iCl, *mTPCClusterIdxStruct , sector, row);
318319
319320 std::array<float , 3 > xyz;
320- this ->mTPCFastTransform ->TransformIdeal (sector, row, clTPC.getPad (), clTPC.getTime (), xyz[0 ], xyz[1 ], xyz[2 ], clusterTimeBinOffset ); // in sector coordinate
321+ this ->mTPCFastTransform ->TransformIdeal (sector, row, clTPC.getPad (), clTPC.getTime (), xyz[0 ], xyz[1 ], xyz[2 ], trackTimeTB ); // in sector coordinate
321322 o2::math_utils::rotateZ (xyz, o2::math_utils::sector2Angle (sector % o2::tpc::SECTORSPERSIDE)); // lab coordinate (global)
322- mEvent .addCluster (xyz[0 ], xyz[1 ], xyz[2 ], trackTime );
323+ mEvent .addCluster (xyz[0 ], xyz[1 ], xyz[2 ], trackTimeTB / mMUS2TPCTimeBins );
323324 }
324325}
325326
@@ -338,6 +339,10 @@ void EveWorkflowHelper::drawMFTClusters(GID gid, float trackTime)
338339void EveWorkflowHelper::drawTPC (GID gid, float trackTime)
339340{
340341 const auto & tr = mRecoCont .getTPCTrack (gid);
342+ // this is a hack to suppress the noise
343+ // if (std::abs(tr.getEta()) < 0.05) {
344+ // return;
345+ // }
341346 auto vTrack = mEvent .addTrack ({.time = static_cast <float >(trackTime * 8 * o2::constants::lhc::LHCBunchSpacingMUS),
342347 .charge = tr.getCharge (),
343348 .PID = tr.getPID (),
@@ -505,4 +510,6 @@ EveWorkflowHelper::EveWorkflowHelper()
505510 this ->mITSGeom = o2::its::GeometryTGeo::Instance ();
506511 this ->mITSGeom ->fillMatrixCache (o2::math_utils::bit2Mask (o2::math_utils::TransformType::T2L, o2::math_utils::TransformType::T2GRot, o2::math_utils::TransformType::L2G));
507512 this ->mTPCFastTransform = (o2::tpc::TPCFastTransformHelperO2::instance ()->create (0 ));
513+ const auto & elParams = o2::tpc::ParameterElectronics::Instance ();
514+ mMUS2TPCTimeBins = 1 . / elParams.ZbinWidth ;
508515}
0 commit comments