16#include <fmt/format.h>
62 LOGP(fatal,
"setITSPerLayer must be called before request ITS clusters");
70 LOGP(fatal,
"setMFTPerLayer must be called before requesting MFT clusters");
83 addInput({
"IRFramesITS",
"ITS",
"IRFRAMES", 0, Lifetime::Timeframe});
89 addInput({
"trackITS",
"ITS",
"TRACKS", 0, Lifetime::Timeframe});
90 addInput({
"trackITSROF",
"ITS",
"ITSTrackROF", 0, Lifetime::Timeframe});
91 addInput({
"trackITSClIdx",
"ITS",
"TRACKCLSID", 0, Lifetime::Timeframe});
92 addInput({
"alpparITS",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam")});
94 addInput({
"trackITSMCTR",
"ITS",
"TRACKSMCTR", 0, Lifetime::Timeframe});
101 addInput({
"trackMFT",
"MFT",
"TRACKS", 0, Lifetime::Timeframe});
102 addInput({
"trackMFTROF",
"MFT",
"MFTTrackROF", 0, Lifetime::Timeframe});
103 addInput({
"trackMFTClIdx",
"MFT",
"TRACKCLSID", 0, Lifetime::Timeframe});
104 addInput({
"alpparMFT",
"MFT",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Config/AlpideParam")});
106 addInput({
"trackMFTMCTR",
"MFT",
"TRACKSMCTR", 0, Lifetime::Timeframe});
113 addInput({
"trackMCH",
"MCH",
"TRACKS", 0, Lifetime::Timeframe});
114 addInput({
"trackMCHROF",
"MCH",
"TRACKROFS", 0, Lifetime::Timeframe});
115 addInput({
"trackMCHTRACKCLUSTERS",
"MCH",
"TRACKCLUSTERS", 0, Lifetime::Timeframe});
117 addInput({
"trackMCHMCTR",
"MCH",
"TRACKLABELS", 0, Lifetime::Timeframe});
124 addInput({
"trackMIDROF",
"MID",
"TRACKROFS", 0, Lifetime::Timeframe});
125 addInput({
"trackClMIDROF",
"MID",
"TRCLUSROFS", 0, Lifetime::Timeframe});
126 addInput({
"trackMID",
"MID",
"TRACKS", 0, Lifetime::Timeframe});
127 addInput({
"trackMIDTRACKCLUSTERS",
"MID",
"TRACKCLUSTERS", 0, Lifetime::Timeframe});
129 addInput({
"trackMIDMCTR",
"MID",
"TRACKLABELS", 0, Lifetime::Timeframe});
130 addInput({
"trackMIDMCTRCL",
"MID",
"TRCLUSLABELS", 0, Lifetime::Timeframe});
137 addInput({
"trackTPC",
"TPC",
"TRACKS", 0, Lifetime::Timeframe});
138 addInput({
"trackTPCClRefs",
"TPC",
"CLUSREFS", 0, Lifetime::Timeframe});
140 addInput({
"clusTPCshmap",
"TPC",
"CLSHAREDMAP", 0, Lifetime::Timeframe});
144 addInput({
"trackTPCMCTR",
"TPC",
"TRACKSMCLBL", 0, Lifetime::Timeframe});
151 addInput({
"trackITSTPC",
"GLO",
"TPCITS", 0, Lifetime::Timeframe});
152 addInput({
"trackITSTPCABREFS",
"GLO",
"TPCITSAB_REFS", 0, Lifetime::Timeframe});
153 addInput({
"trackITSTPCABCLID",
"GLO",
"TPCITSAB_CLID", 0, Lifetime::Timeframe});
155 addInput({
"trackITSTPCMCTR",
"GLO",
"TPCITS_MC", 0, Lifetime::Timeframe});
156 addInput({
"trackITSTPCABMCTR",
"GLO",
"TPCITSAB_MC", 0, Lifetime::Timeframe});
163 addInput({
"fwdtracks",
"GLO",
"GLFWD", 0, Lifetime::Timeframe});
165 addInput({
"MCTruth",
"GLO",
"GLFWD_MC", 0, Lifetime::Timeframe});
172 addInput({
"matchMFTMCH",
"GLO",
"MTC_MFTMCH", 0, Lifetime::Timeframe});
178 addInput({
"matchMCHMID",
"GLO",
"MTC_MCHMID", 0, Lifetime::Timeframe});
180 addInput({
"matchMCHMID_MCTR",
"GLO",
"MCMTC_MCHMID", 0, Lifetime::Timeframe});
188 addInput({
"matchTPCTOF",
"TOF",
"MTC_TPC", ss, Lifetime::Timeframe});
189 addInput({
"trackTPCTOF",
"TOF",
"TOFTRACKS_TPC", ss, Lifetime::Timeframe});
191 addInput({
"clsTOF_TPC_MCTR",
"TOF",
"MCMTC_TPC", ss, Lifetime::Timeframe});
198 addInput({
"trackITSTPCTRD",
"TRD",
"MATCH_ITSTPC", 0, Lifetime::Timeframe});
199 addInput({
"trigITSTPCTRD",
"TRD",
"TRGREC_ITSTPC", 0, Lifetime::Timeframe});
201 addInput({
"trackITSTPCTRDMCTR",
"TRD",
"MCLB_ITSTPC", 0, Lifetime::Timeframe});
202 addInput({
"trackITSTPCTRDSAMCTR",
"TRD",
"MCLB_ITSTPC_TRD", 0, Lifetime::Timeframe});
210 addInput({
"trackTPCTRD",
"TRD",
"MATCH_TPC", ss, Lifetime::Timeframe});
211 addInput({
"trigTPCTRD",
"TRD",
"TRGREC_TPC", ss, Lifetime::Timeframe});
213 addInput({
"trackTPCTRDMCTR",
"TRD",
"MCLB_TPC", ss, Lifetime::Timeframe});
214 addInput({
"trackTPCTRDSAMCTR",
"TRD",
"MCLB_TPC_TRD", ss, Lifetime::Timeframe});
222 addInput({
"matchITSTPCTOF",
"TOF",
"MTC_ITSTPC", 0, Lifetime::Timeframe});
224 addInput({
"clsTOF_GLO_MCTR",
"TOF",
"MCMTC_ITSTPC", 0, Lifetime::Timeframe});
229 addInput({
"matchTPCTRDTOF",
"TOF",
"MTC_TPCTRD", 0, Lifetime::Timeframe});
231 addInput({
"clsTOF_GLO2_MCTR",
"TOF",
"MCMTC_TPCTRD", 0, Lifetime::Timeframe});
236 addInput({
"matchITSTPCTRDTOF",
"TOF",
"MTC_ITSTPCTRD", 0, Lifetime::Timeframe});
238 addInput({
"clsTOF_GLO3_MCTR",
"TOF",
"MCMTC_ITSTPCTRD", 0, Lifetime::Timeframe});
247 for (uint16_t il = 0; il < nInp; ++il) {
255 addInput({
"alpparITS",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam")});
256 addInput({
"cldictITS",
"ITS",
"CLUSDICT", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Calib/ClusterDictionary")});
260#ifdef ENABLE_UPGRADES
261void DataRequest::requestIT3Clusters(
bool mc)
264 for (uint16_t il = 0; il < nInp; ++il) {
272 addInput({
"alpparITS",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam")});
273 addInput({
"cldictIT3",
"IT3",
"CLUSDICT", 0, Lifetime::Condition,
ccdbParamSpec(
"IT3/Calib/ClusterDictionary")});
281 for (uint16_t il = 0; il < nInp; ++il) {
289 addInput({
"cldictMFT",
"MFT",
"CLUSDICT", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Calib/ClusterDictionary")});
290 addInput({
"alpparMFT",
"MFT",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Config/AlpideParam")});
296 addInput({
"clusTPCoccmap",
"TPC",
"TPCOCCUPANCYMAP", 0, Lifetime::Timeframe});
303 if (!getenv(
"DPL_DISABLE_TPC_TRIGGER_READER") || atoi(getenv(
"DPL_DISABLE_TPC_TRIGGER_READER")) != 1) {
307 addInput({
"clusTPCshmap",
"TPC",
"CLSHAREDMAP", 0, Lifetime::Timeframe});
318 addInput({
"trigTPC",
"TPC",
"TRIGGERWORDS", 0, Lifetime::Timeframe});
324 addInput({
"tofcluster",
"TOF",
"CLUSTERS", 0, Lifetime::Timeframe});
326 addInput({
"tofclusterlabel",
"TOF",
"CLUSTERSMCTR", 0, Lifetime::Timeframe});
334 LOG(warn) <<
"MCH global clusters do not support MC lables, disabling";
337 addInput({
"clusMCH",
"MCH",
"GLOBALCLUSTERS", 0, Lifetime::Timeframe});
338 addInput({
"clusMCHROF",
"MCH",
"CLUSTERROFS", 0, Lifetime::Timeframe});
340 addInput({
"clusMCHMC",
"MCH",
"CLUSTERLABELS", 0, Lifetime::Timeframe});
348 LOG(warn) <<
"HMP clusters do not support MC lables, disabling";
351 addInput({
"hmpidcluster",
"HMP",
"CLUSTERS", 0, Lifetime::Timeframe});
352 addInput({
"hmpidtriggers",
"HMP",
"INTRECORDS1", 0, Lifetime::Timeframe});
354 addInput({
"hmpidclusterlabel",
"HMP",
"CLUSTERSMCTR", 0, Lifetime::Timeframe});
361 addInput({
"clusMID",
"MID",
"CLUSTERS", 0, Lifetime::Timeframe});
362 addInput({
"clusMIDROF",
"MID",
"CLUSTERSROF", 0, Lifetime::Timeframe});
364 addInput({
"clusMIDMC",
"MID",
"CLUSTERSLABELS", 0, Lifetime::Timeframe});
383 addInput({
"ft0recpoints",
"FT0",
"RECPOINTS", 0, Lifetime::Timeframe});
384 addInput({
"ft0channels",
"FT0",
"RECCHDATA", 0, Lifetime::Timeframe});
386 LOG(error) <<
"FT0 RecPoint does not support MC truth";
393 addInput({
"fv0recpoints",
"FV0",
"RECPOINTS", 0, Lifetime::Timeframe});
394 addInput({
"fv0channels",
"FV0",
"RECCHDATA", 0, Lifetime::Timeframe});
396 LOG(error) <<
"FV0 RecPoint does not support MC truth";
403 addInput({
"fddrecpoints",
"FDD",
"RECPOINTS", 0, Lifetime::Timeframe});
404 addInput({
"fddchannels",
"FDD",
"RECCHDATA", 0, Lifetime::Timeframe});
406 LOG(error) <<
"FDD RecPoint does not support MC truth";
413 addInput({
"zdcbcrec",
"ZDC",
"BCREC", 0, Lifetime::Timeframe});
414 addInput({
"zdcenergy",
"ZDC",
"ENERGY", 0, Lifetime::Timeframe});
415 addInput({
"zdctdcdata",
"ZDC",
"TDCDATA", 0, Lifetime::Timeframe});
416 addInput({
"zdcinfo",
"ZDC",
"INFO", 0, Lifetime::Timeframe});
418 LOG(error) <<
"ZDC RecEvent does not support MC truth";
425 addInput({
"cosmics",
"GLO",
"COSMICTRC", 0, Lifetime::Timeframe});
427 addInput({
"cosmicsMC",
"GLO",
"COSMICTRC_MC", 0, Lifetime::Timeframe});
434 addInput({
"pvtx",
"GLO",
"PVTX", 0, Lifetime::Timeframe});
435 addInput({
"pvtx_trmtc",
"GLO",
"PVTX_TRMTC", 0, Lifetime::Timeframe});
436 addInput({
"pvtx_tref",
"GLO",
"PVTX_TRMTCREFS", 0, Lifetime::Timeframe});
438 addInput({
"pvtx_mc",
"GLO",
"PVTX_MCTR", 0, Lifetime::Timeframe});
445 addInput({
"pvtx",
"GLO",
"PVTX", 0, Lifetime::Timeframe});
446 addInput({
"pvtx_cont",
"GLO",
"PVTX_CONTID", 0, Lifetime::Timeframe});
447 addInput({
"pvtx_contref",
"GLO",
"PVTX_CONTIDREFS", 0, Lifetime::Timeframe});
449 addInput({
"pvtx_mc",
"GLO",
"PVTX_MCTR", 0, Lifetime::Timeframe});
456 addInput({
"v0sIdx",
"GLO",
"V0S_IDX", 0, Lifetime::Timeframe});
457 addInput({
"v0s",
"GLO",
"V0S", 0, Lifetime::Timeframe});
458 addInput({
"p2v0s",
"GLO",
"PVTX_V0REFS", 0, Lifetime::Timeframe});
459 addInput({
"cascsIdx",
"GLO",
"CASCS_IDX", 0, Lifetime::Timeframe});
460 addInput({
"cascs",
"GLO",
"CASCS", 0, Lifetime::Timeframe});
461 addInput({
"p2cascs",
"GLO",
"PVTX_CASCREFS", 0, Lifetime::Timeframe});
462 addInput({
"decay3bodyIdx",
"GLO",
"DECAYS3BODY_IDX", 0, Lifetime::Timeframe});
463 addInput({
"decay3body",
"GLO",
"DECAYS3BODY", 0, Lifetime::Timeframe});
464 addInput({
"p2decay3body",
"GLO",
"PVTX_3BODYREFS", 0, Lifetime::Timeframe});
470 addInput({
"strangetracks",
"GLO",
"STRANGETRACKS", 0, Lifetime::Timeframe});
472 addInput({
"strack_mc",
"GLO",
"STRANGETRACKS_MC", 0, Lifetime::Timeframe});
479 addInput({
"CTPDigits",
"CTP",
"DIGITS", 0, Lifetime::Timeframe});
480 addInput({
"CTPLumi",
"CTP",
"LUMI", 0, Lifetime::Timeframe});
482 LOG(warning) <<
"MC truth not implemented for CTP";
490 addInput({
"CPVClusters",
"CPV",
"CLUSTERS", 0, Lifetime::Timeframe});
491 addInput({
"CPVTriggers",
"CPV",
"CLUSTERTRIGRECS", 0, Lifetime::Timeframe});
493 addInput({
"CPVClustersMC",
"CPV",
"CLUSTERTRUEMC", 0, Lifetime::Timeframe});
500 addInput({
"PHSCells",
"PHS",
"CELLS", 0, Lifetime::Timeframe});
501 addInput({
"PHSTriggers",
"PHS",
"CELLTRIGREC", 0, Lifetime::Timeframe});
503 addInput({
"PHSCellsMC",
"PHS",
"CELLSMCTR", 0, Lifetime::Timeframe});
510 addInput({
"EMCCells",
"EMC",
"CELLS", 0, Lifetime::Timeframe});
511 addInput({
"EMCTriggers",
"EMC",
"CELLSTRGR", 0, Lifetime::Timeframe});
513 addInput({
"EMCCellsMC",
"EMC",
"CELLSMCTR", 0, Lifetime::Timeframe});
520 addInput({
"matchHMP",
"HMP",
"MATCHES", 0, Lifetime::Timeframe});
522 addInput({
"clsHMP_GLO_MCTR",
"HMP",
"MCLABELS", 0, Lifetime::Timeframe});
579 if (GTrackID::includesDet(DetID::CTP,
src)) {
582 if (GTrackID::includesDet(DetID::CPV,
src)) {
585 if (GTrackID::includesDet(DetID::PHS,
src)) {
588 if (GTrackID::includesDet(DetID::EMC,
src)) {
591 if (GTrackID::includesDet(DetID::HMP,
src)) {
603 if (GTrackID::includesDet(DetID::ITS,
src) && !skipDetClusters[DetID::ITS]) {
606 if (GTrackID::includesDet(DetID::MFT,
src) && !skipDetClusters[DetID::MFT]) {
609 if (GTrackID::includesDet(DetID::TPC,
src) && !skipDetClusters[DetID::TPC]) {
612 if (GTrackID::includesDet(DetID::TOF,
src) && !skipDetClusters[DetID::TOF]) {
615 if (GTrackID::includesDet(DetID::TRD,
src) && !skipDetClusters[DetID::TRD]) {
618 if (GTrackID::includesDet(DetID::CTP,
src) && !skipDetClusters[DetID::CTP]) {
621 if (GTrackID::includesDet(DetID::CPV,
src) && !skipDetClusters[DetID::CPV]) {
624 if (GTrackID::includesDet(DetID::PHS,
src) && !skipDetClusters[DetID::PHS]) {
627 if (GTrackID::includesDet(DetID::EMC,
src) && !skipDetClusters[DetID::EMC]) {
630 if (GTrackID::includesDet(DetID::MCH,
src) && !skipDetClusters[DetID::MCH]) {
633 if (GTrackID::includesDet(DetID::HMP,
src) && !skipDetClusters[DetID::HMP]) {
648 auto req = reqMap.find(
"trackITS");
649 if (req != reqMap.end()) {
653 req = reqMap.find(
"trackMFT");
654 if (req != reqMap.end()) {
658 req = reqMap.find(
"trackMCH");
659 if (req != reqMap.end()) {
663 req = reqMap.find(
"trackMID");
664 if (req != reqMap.end()) {
668 req = reqMap.find(
"trackTPC");
669 if (req != reqMap.end()) {
673 req = reqMap.find(
"trackITSTPC");
674 if (req != reqMap.end()) {
678 req = reqMap.find(
"fwdtracks");
679 if (req != reqMap.end()) {
683 req = reqMap.find(
"matchMFTMCH");
684 if (req != reqMap.end()) {
688 req = reqMap.find(
"matchMCHMID");
689 if (req != reqMap.end()) {
693 req = reqMap.find(
"trackITSTPCTRD");
694 if (req != reqMap.end()) {
698 req = reqMap.find(
"trackTPCTRD");
699 if (req != reqMap.end()) {
703 req = reqMap.find(
"trackTPCTOF");
704 if (req != reqMap.end()) {
708 req = reqMap.find(
"matchTOF_ITSTPC");
709 if (req != reqMap.end()) {
713 req = reqMap.find(
"matchTOF_TPCTRD");
714 if (req != reqMap.end()) {
718 req = reqMap.find(
"matchTOF_ITSTPCTRD");
719 if (req != reqMap.end()) {
723 req = reqMap.find(
"clusITS");
724 if (req != reqMap.end()) {
728#ifdef ENABLE_UPGRADES
729 req = reqMap.find(
"clusIT3");
730 if (req != reqMap.end()) {
731 addIT3Clusters(pc, req->second);
735 req = reqMap.find(
"clusMFT");
736 if (req != reqMap.end()) {
740 req = reqMap.find(
"TPCOcc");
741 bool TPCOccDone =
false;
742 if (req != reqMap.end()) {
747 req = reqMap.find(
"clusTPC");
748 if (req != reqMap.end()) {
749 auto tracksON = reqMap.find(
"trackTPC") != reqMap.end();
750 addTPCClusters(pc, req->second, tracksON, tracksON && (!TPCOccDone));
753 req = reqMap.find(
"trigTPC");
754 if (req != reqMap.end()) {
758 req = reqMap.find(
"clusTOF");
759 if (req != reqMap.end()) {
763 req = reqMap.find(
"clusHMP");
764 if (req != reqMap.end()) {
768 req = reqMap.find(
"CTPDigits");
769 if (req != reqMap.end()) {
773 req = reqMap.find(
"CPVClusters");
774 if (req != reqMap.end()) {
778 req = reqMap.find(
"PHSCells");
779 if (req != reqMap.end()) {
783 req = reqMap.find(
"EMCCells");
784 if (req != reqMap.end()) {
788 req = reqMap.find(
"clusMCH");
789 if (req != reqMap.end()) {
793 req = reqMap.find(
"clusMID");
794 if (req != reqMap.end()) {
798 req = reqMap.find(
"FT0");
799 if (req != reqMap.end()) {
803 req = reqMap.find(
"FV0");
804 if (req != reqMap.end()) {
808 req = reqMap.find(
"FDD");
809 if (req != reqMap.end()) {
813 req = reqMap.find(
"ZDC");
814 if (req != reqMap.end()) {
818 req = reqMap.find(
"trackletTRD");
819 if (req != reqMap.end()) {
823 req = reqMap.find(
"Cosmics");
824 if (req != reqMap.end()) {
828 req = reqMap.find(
"PVertex");
829 if (req != reqMap.end()) {
833 req = reqMap.find(
"PVertexTMP");
834 if (req != reqMap.end()) {
838 req = reqMap.find(
"SVertex");
839 if (req != reqMap.end()) {
843 req = reqMap.find(
"STracker");
844 if (req != reqMap.end()) {
848 req = reqMap.find(
"IRFramesITS");
849 if (req != reqMap.end()) {
852 req = reqMap.find(
"matchHMP");
853 if (req != reqMap.end()) {
1105 for (uint16_t il = 0; il < nInp; ++il) {
1115#ifdef ENABLE_UPGRADES
1123 for (uint16_t il = 0; il < nInp; ++il) {
1142 for (uint16_t il = 0; il < nInp; ++il) {
1269 LOG(error) <<
"FT0 RecPoint does not support MC truth";
1280 LOG(error) <<
"FV0 RecPoint does not support MC truth";
1291 LOG(error) <<
"FDD RecPoint does not support MC truth";
1304 LOG(error) <<
"ZDC RecEvent does not support MC truth";
1320 return inputsTRD ?
inputsTRD->mSpacePoints : gsl::span<const o2::trd::CalibratedTracklet>();
1325 static int countWarnings = 0;
1327 if (countWarnings < 1) {
1328 LOG(warning) <<
"No TRD triggers";
1331 return gsl::span<const o2::trd::TriggerRecord>();
1351 auto trSrc = gidx.getSource();
1353 return getTrack<o2d::TrackTPCITS>(gidx).getParamOut();
1355 return getTrack<o2d::TrackTPCITS>(
getTOFMatch(gidx).getTrackRef()).getParamOut();
1357 return getTrack<o2d::TrackTPCTOF>(gidx).getParamOut();
1359 return getTrack<o2::trd::TrackTRD>(
getTOFMatch(gidx).getTrackRef()).getOuterParam();
1362 return getTrack<o2::trd::TrackTRD>(
getTOFMatch(gidx).getTrackRef()).getOuterParam();
1364 return getTrack<o2::trd::TrackTRD>(gidx).getOuterParam();
1367 return getTrack<o2::trd::TrackTRD>(gidx).getOuterParam();
1369 return getTrack<o2::its::TrackITS>(gidx).getParamOut();
1371 return getTrack<o2::tpc::TrackTPC>(gidx).getParamOut();
1373 throw std::runtime_error(fmt::format(
"not defined for tracks of source {:d}",
int(trSrc)));
1405 auto trSrc = gidx.getSource();
1409 return getObject<o2::track::TrackParCov>(gidx,
TRACKS);
1424 mcinfo.reserve(gids.size());
1425 for (
auto gid : gids) {
1433 createTracksVariadic([&creator](
const auto& _tr,
GTrackID _origID,
float t0,
float terr) {
1435 return creator(_tr, _origID);
1447 auto src = gidx.getSource();
1450 const auto& parent0 = getITSTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1451 const auto& parent1 =
getTPCITSTrack(parent0.getRefGlobalTrackId());
1453 table[parent1.getRefITS().getSource()] = parent1.getRefITS();
1457 const auto& parent0 = getTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1466 table[parent1.getRefITS().getSource()] = parent1.getRefITS();
1469 const auto& parent1 = getITSTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1470 const auto& parent2 =
getTPCITSTrack(parent1.getRefGlobalTrackId());
1475 table[parent2.getRefITS().getSource()] = parent2.getRefITS();
1479 const auto& parent1 = getTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1491 table[parent0.getRefITS().getSource()] = parent0.getRefITS();
1496 if (parent0.getMIDTrackID() != -1) {
1512 auto src = gidx.getSource();
1514 const auto& parent0 = getITSTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1515 const auto& parent1 =
getTPCITSTrack(parent0.getRefGlobalTrackId());
1516 return parent1.getRefTPC();
1520 return parent1.getRefTPC();
1523 const auto& parent1 = getITSTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1524 const auto& parent2 =
getTPCITSTrack(parent1.getRefGlobalTrackId());
1525 return parent2.getRefTPC();
1528 return parent0.getTrackRef();
1531 const auto& parent1 = getTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1532 return parent1.getRefGlobalTrackId();
1534 const auto& parent0 = getTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1535 return parent0.getRefGlobalTrackId();
1538 return parent0.getRefTPC();
1548 auto src = gidx.getSource();
1550 const auto& parent0 = getITSTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1551 const auto& parent1 =
getTPCITSTrack(parent0.getRefGlobalTrackId());
1552 return parent1.getRefITS();
1556 return parent1.getRefITS();
1559 const auto& parent1 = getITSTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1560 const auto& parent2 =
getTPCITSTrack(parent1.getRefGlobalTrackId());
1561 return parent2.getRefITS();
1564 return parent0.getRefITS();
1585 t = (
match.getSignal() -
match.getLTIntegralOut().getTOF(o2::track::PID::Pion)) *
PS2MUS;
1593 t = (
match.getSignal() -
match.getLTIntegralOut().getTOF(o2::track::PID::Pion)) *
PS2MUS;
1601 t = (
match.getSignal() -
match.getLTIntegralOut().getTOF(o2::track::PID::Pion)) *
PS2MUS;
1610 for (
const auto& trig : trigITSTPCTRD) {
1611 if (trig.getTrackRefs().getEntriesBound() > gid.getIndex()) {
1612 t = trig.getBCData().differenceInBC(
startIR) * o2::constants::lhc::LHCBunchSpacingMUS;
1614 const auto& trc = getITSTPCTRDTracks<o2::trd::TrackTRD>()[gid];
1615 if (trc.hasPileUpInfo()) {
1616 tErr += trc.getPileUpTimeErrorMUS();
1628 for (
const auto& trig : trigTPCTRD) {
1629 if (trig.getTrackRefs().getEntriesBound() > gid.getIndex()) {
1630 t = trig.getBCData().differenceInBC(
startIR) * o2::constants::lhc::LHCBunchSpacingMUS;
1632 const auto& trc = getTPCTRDTracks<o2::trd::TrackTRD>()[gid];
1633 if (trc.hasPileUpInfo()) {
1634 tErr += trc.getPileUpTimeErrorMUS();
1645 t = trc.getTimeMUS().getTimeStamp();
1646 tErr = trc.getTimeMUS().getTimeStampError();
1653 t = trc.getTimeMUS().getTimeStamp();
1654 tErr = trc.getTimeMUS().getTimeStampError();
1661 for (
const auto& rof : rofrs) {
1662 if (gid.getIndex() < rof.getFirstEntry() + rof.getNEntries()) {
1663 t = rof.getBCData().differenceInBC(
startIR) * o2::constants::lhc::LHCBunchSpacingMUS;
1674 t = trc.getTime0() + 0.5 * (trc.getDeltaTFwd() - trc.getDeltaTBwd());
1675 tErr = 0.5 * (trc.getDeltaTFwd() + trc.getDeltaTBwd());
1681 auto src = gid.getSource();
Definition of the BuildTopologyDictionary class for ITS3.
Class to delimit start and end IR of certain time period.
Wrapper container for different reconstructed object types.
Result of top-bottom cosmic tracks leg matching.
Definition of the MUON track.
Reference on ITS/MFT clusters set.
Extention of GlobalTrackID by flags relevant for verter-track association.
Referenc on track indices contributing to the vertex, with possibility chose tracks from specific sou...
Static class with identifiers, bitmasks and names for ALICE detectors.
InputRecord & inputs()
The inputs associated with this processing context.
ServiceRegistryRef services()
The services registry associated with this processing context.
bool match(const std::vector< std::string > &queries, const char *pattern)
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat t0
constexpr o2::header::DataOrigin gDataOriginTRD
Defining ITS Vertex explicitly as messageable.
std::vector< ConfigParamSpec > ccdbParamSpec(std::string const &path, int runDependent, std::vector< CCDBMetadata > metadata={}, int qrate=0)
constexpr int MaxMFTLayers
constexpr int MaxITSLayers
auto getRecoInputContainer(o2::framework::ProcessingContext &pc, o2::gpu::GPUTrackingInOutPointers *ptrs, const o2::globaltracking::RecoContainer *inputTracks, bool mc=false)
std::string to_string(gsl::span< T, Size > span)
bool globalRunNumberChanged
void requestITSTPCTRDTracks(bool mc)
void requestEMCALCells(bool mc)
void requestTRDTracklets(bool mc)
void addInput(const o2::framework::InputSpec &&isp)
void requestMIDClusters(bool mc)
void requestMFTMCHMatches(bool mc)
void requestTOFMatches(o2::dataformats::GlobalTrackID::mask_t src, bool mc)
void requestITSTracks(bool mc)
std::unordered_map< std::string, bool > requestMap
void requestMIDTracks(bool mc)
void requestPrimaryVertices(bool mc)
void requestZDCRecEvents(bool mc)
void requestGlobalFwdTracks(bool mc)
void requestITSClusters(bool mc)
void setMFTPerLayer(bool v=true)
void requestTPCTOFTracks(bool mc)
void requestMCHTracks(bool mc)
void requestFT0RecPoints(bool mc)
void requestCPVClusters(bool mc)
void requestMFTClusters(bool mc)
void requestHMPClusters(bool mc)
auto getITSPerLayer() const
void requestMCHMIDMatches(bool mc)
void requestMCHClusters(bool mc)
void requestTPCClusters(bool mc)
void requestTracks(o2::dataformats::GlobalTrackID::mask_t src, bool mc)
void requestIRFramesITS()
void requestTPCTRDTracks(bool mc)
void requestFDDRecPoints(bool mc)
void requestFV0RecPoints(bool mc)
void requestClusters(o2::dataformats::GlobalTrackID::mask_t src, bool useMC, o2::detectors::DetID::mask_t skipDetClusters={})
void requestTPCTracks(bool mc)
auto getMFTPerLayer() const
void requestCoscmicTracks(bool mc)
void requestHMPMatches(bool mc)
std::vector< o2::framework::InputSpec > inputs
void requestITSTPCTracks(bool mc)
void requestTPCTriggers()
void requestMFTTracks(bool mc)
void requestSecondaryVertices(bool mc)
void requestStrangeTracks(bool mc)
void requestCTPDigits(bool mc)
void requestPrimaryVerticesTMP(bool mc)
void requestPHOSCells(bool mc)
uint32_t getMatchingInputSubSpec() const
void requestTOFClusters(bool mc)
void setITSPerLayer(bool v=true)
void addFDDRecPoints(o2::framework::ProcessingContext &pc, bool mc)
void addGlobalFwdTracks(o2::framework::ProcessingContext &pc, bool mc)
void addTOFMatchesITSTPCTRD(o2::framework::ProcessingContext &pc, bool mc)
GTrackID getITSContributorGID(GTrackID source) const
const o2::dataformats::MatchInfoTOF & getTPCTOFMatch(GTrackID id) const
void addITSTracks(o2::framework::ProcessingContext &pc, bool mc)
void addHMPMatches(o2::framework::ProcessingContext &pc, bool mc)
bool isTrackSourceLoaded(int src) const
void addTPCTOFTracks(o2::framework::ProcessingContext &pc, bool mc)
o2::InteractionRecord startIR
GlobalIDSet getSingleDetectorRefs(GTrackID gidx) const
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > > mcTOFClusters
const o2::dataformats::MCTruthContainer< o2::phos::MCLabel > * getPHOSCellsMCLabels() const
const o2::tpc::TrackTPC & getTPCTrack(GTrackID id) const
std::array< AccSlots, GTrackID::NSources > commonPool
void addFT0RecPoints(o2::framework::ProcessingContext &pc, bool mc)
gsl::span< const o2::trd::CalibratedTracklet > getTRDCalibratedTracklets() const
const o2::dataformats::TrackMCHMID & getMCHMIDMatch(GTrackID gid) const
void addTPCTriggers(o2::framework::ProcessingContext &pc)
void addCosmicTracks(o2::framework::ProcessingContext &pc, bool mc)
auto getTPCTRDTriggers() const
auto getITSTPCTOFMatches() const
void addStrangeTracks(o2::framework::ProcessingContext &pc, bool mc)
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::mid::MCClusterLabel > > mcMIDTrackClusters
auto getTPCTRDTOFMatches() const
bool isMatchSourceLoaded(int src) const
void addMCHClusters(o2::framework::ProcessingContext &pc, bool mc)
void addPVerticesTMP(o2::framework::ProcessingContext &pc, bool mc)
void addITSTPCTracks(o2::framework::ProcessingContext &pc, bool mc)
const o2::tpc::ClusterNativeAccess & getTPCClusters() const
void addMCHTracks(o2::framework::ProcessingContext &pc, bool mc)
std::array< std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > >, MaxMFTLayers > mcMFTClusters
void getTrackTimeTPCTRD(GTrackID gid, float &t, float &tErr) const
void addTPCClusters(o2::framework::ProcessingContext &pc, bool mc, bool shmap, bool occmap)
void addEMCALCells(o2::framework::ProcessingContext &pc, bool mc)
void addMIDTracks(o2::framework::ProcessingContext &pc, bool mc)
void addMFTTracks(o2::framework::ProcessingContext &pc, bool mc)
void getTrackTimeITSTPCTRDTOF(GTrackID gid, float &t, float &tErr) const
void getTrackTimeITSTPCTOF(GTrackID gid, float &t, float &tErr) const
void getTrackTimeTPC(GTrackID gid, float &t, float &tErr) const
void addZDCRecEvents(o2::framework::ProcessingContext &pc, bool mc)
void addMCHMIDMatches(o2::framework::ProcessingContext &pc, bool mc)
gsl::span< const o2::trd::TriggerRecord > getTRDTriggerRecords() const
const o2::dataformats::MCTruthContainer< o2::MCCompLabel > * getTRDTrackletsMCLabels() const
void addPVertices(o2::framework::ProcessingContext &pc, bool mc)
void getTrackTimeTPCTRDTOF(GTrackID gid, float &t, float &tErr) const
void addTPCOccMap(o2::framework::ProcessingContext &pc)
void getTrackTimeITS(GTrackID gid, float &t, float &tErr) const
o2::ctp::LumiInfo mCTPLumi
void addTOFMatchesITSTPC(o2::framework::ProcessingContext &pc, bool mc)
void addIRFramesITS(o2::framework::ProcessingContext &pc)
const o2::dataformats::TrackTPCITS & getITSTPCTOFTrack(GTrackID id) const
const o2::dataformats::TrackTPCTOF & getTPCTOFTrack(GTrackID gid) const
void addTOFClusters(o2::framework::ProcessingContext &pc, bool mc)
o2::MCCompLabel getTrackMCLabel(GTrackID id) const
GTrackID getTPCContributorGID(GTrackID source) const
std::array< std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > >, MaxITSLayers > mcITSClusters
std::unique_ptr< o2::trd::RecoInputContainer > inputsTRD
const o2::dataformats::MCTruthContainer< o2::mid::MCClusterLabel > * getMIDClustersMCLabels() const
const o2::track::TrackParCov & getTrackParam(GTrackID gidx) const
void getTrackTimeITSTPCTRD(GTrackID gid, float &t, float &tErr) const
void addMFTClusters(o2::framework::ProcessingContext &pc, bool mc)
void addMIDClusters(o2::framework::ProcessingContext &pc, bool mc)
void addTPCTRDTracks(o2::framework::ProcessingContext &pc, bool mc)
const o2::dataformats::ConstMCTruthContainerView< o2::MCCompLabel > * getTPCClustersMCLabels() const
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > > mcMCHClusters
gsl::span< const unsigned char > clusterShMapTPC
externally set TPC clusters sharing map
void addTRDTracklets(o2::framework::ProcessingContext &pc, bool mc)
void getTrackTimeITSTPC(GTrackID gid, float &t, float &tErr) const
const o2::dataformats::TrackTPCITS & getTPCITSTrack(GTrackID gid) const
void collectData(o2::framework::ProcessingContext &pc, const DataRequest &request)
void addPHOSCells(o2::framework::ProcessingContext &pc, bool mc)
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::phos::MCLabel > > mcPHSCells
void addCPVClusters(o2::framework::ProcessingContext &pc, bool mc)
void addITSTPCTRDTracks(o2::framework::ProcessingContext &pc, bool mc)
const o2::track::TrackParCov & getTrackParamOut(GTrackID gidx) const
void fillTrackMCLabels(const gsl::span< GTrackID > gids, std::vector< o2::MCCompLabel > &mcinfo) const
void addMFTMCHMatches(o2::framework::ProcessingContext &pc, bool mc)
void getTrackTimeTPCTOF(GTrackID gid, float &t, float &tErr) const
void addTOFMatchesTPCTRD(o2::framework::ProcessingContext &pc, bool mc)
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::mid::MCClusterLabel > > mcMIDClusters
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::emcal::MCLabel > > mcEMCCells
std::unique_ptr< o2::tpc::internal::getWorkflowTPCInput_ret > inputsTPCclusters
auto getITSTracksROFRecords() const
void addCTPDigits(o2::framework::ProcessingContext &pc, bool mc)
void addTPCTracks(o2::framework::ProcessingContext &pc, bool mc)
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > > mcCPVClusters
void addFV0RecPoints(o2::framework::ProcessingContext &pc, bool mc)
auto getITSTPCTRDTriggers() const
void createTracks(std::function< bool(const o2::track::TrackParCov &, GTrackID)> const &creator) const
void getTrackTime(GTrackID gid, float &t, float &tErr) const
std::array< ITSClusAccessor, NITSMFTCLUSSLOTS > ITSClustersData
void addSVertices(o2::framework::ProcessingContext &pc, bool)
void addITSClusters(o2::framework::ProcessingContext &pc, bool mc)
void addHMPClusters(o2::framework::ProcessingContext &pc, bool mc)
gsl::span< const unsigned int > occupancyMapTPC
externally set TPC clusters occupancy map
std::array< MFTClusAccessor, NITSMFTCLUSSLOTS > MFTClustersData
auto getITSTPCTRDTOFMatches() const
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > > mcHMPClusters
std::array< GTrackID, GTrackID::NSources > GlobalIDSet
static constexpr float PS2MUS
gsl::span< const o2::trd::Tracklet64 > getTRDTracklets() const
const o2::dataformats::MCTruthContainer< o2::emcal::MCLabel > * getEMCALCellsMCLabels() const
const o2::dataformats::MatchInfoTOF & getTOFMatch(GTrackID id) const
const o2::dataformats::MCTruthContainer< o2::mid::MCClusterLabel > * getMIDTracksClusterMCLabels() const
const o2::dataformats::GlobalFwdTrack & getGlobalFwdTrack(GTrackID gid) const
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"