16#include <fmt/format.h>
64 LOGP(fatal,
"setITSPerLayer must be called before request ITS clusters");
72 LOGP(fatal,
"setMFTPerLayer must be called before requesting MFT clusters");
85 addInput({
"IRFramesITS",
"ITS",
"IRFRAMES", 0, Lifetime::Timeframe});
91 addInput({
"trackITS",
"ITS",
"TRACKS", 0, Lifetime::Timeframe});
92 addInput({
"trackITSROF",
"ITS",
"ITSTrackROF", 0, Lifetime::Timeframe});
93 addInput({
"trackITSClIdx",
"ITS",
"TRACKCLSID", 0, Lifetime::Timeframe});
94 addInput({
"alpparITS",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam")});
96 addInput({
"trackITSMCTR",
"ITS",
"TRACKSMCTR", 0, Lifetime::Timeframe});
103 addInput({
"trackMFT",
"MFT",
"TRACKS", 0, Lifetime::Timeframe});
104 addInput({
"trackMFTROF",
"MFT",
"MFTTrackROF", 0, Lifetime::Timeframe});
105 addInput({
"trackMFTClIdx",
"MFT",
"TRACKCLSID", 0, Lifetime::Timeframe});
106 addInput({
"alpparMFT",
"MFT",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Config/AlpideParam")});
108 addInput({
"trackMFTMCTR",
"MFT",
"TRACKSMCTR", 0, Lifetime::Timeframe});
115 addInput({
"trackMCH",
"MCH",
"TRACKS", 0, Lifetime::Timeframe});
116 addInput({
"trackMCHROF",
"MCH",
"TRACKROFS", 0, Lifetime::Timeframe});
117 addInput({
"trackMCHTRACKCLUSTERS",
"MCH",
"TRACKCLUSTERS", 0, Lifetime::Timeframe});
119 addInput({
"trackMCHMCTR",
"MCH",
"TRACKLABELS", 0, Lifetime::Timeframe});
126 addInput({
"trackMIDROF",
"MID",
"TRACKROFS", 0, Lifetime::Timeframe});
127 addInput({
"trackClMIDROF",
"MID",
"TRCLUSROFS", 0, Lifetime::Timeframe});
128 addInput({
"trackMID",
"MID",
"TRACKS", 0, Lifetime::Timeframe});
129 addInput({
"trackMIDTRACKCLUSTERS",
"MID",
"TRACKCLUSTERS", 0, Lifetime::Timeframe});
131 addInput({
"trackMIDMCTR",
"MID",
"TRACKLABELS", 0, Lifetime::Timeframe});
132 addInput({
"trackMIDMCTRCL",
"MID",
"TRCLUSLABELS", 0, Lifetime::Timeframe});
139 addInput({
"trackTPC",
"TPC",
"TRACKS", 0, Lifetime::Timeframe});
140 addInput({
"trackTPCClRefs",
"TPC",
"CLUSREFS", 0, Lifetime::Timeframe});
142 addInput({
"clusTPCshmap",
"TPC",
"CLSHAREDMAP", 0, Lifetime::Timeframe});
146 addInput({
"trackTPCMCTR",
"TPC",
"TRACKSMCLBL", 0, Lifetime::Timeframe});
153 addInput({
"trackITSTPC",
"GLO",
"TPCITS", 0, Lifetime::Timeframe});
154 addInput({
"trackITSTPCABREFS",
"GLO",
"TPCITSAB_REFS", 0, Lifetime::Timeframe});
155 addInput({
"trackITSTPCABCLID",
"GLO",
"TPCITSAB_CLID", 0, Lifetime::Timeframe});
157 addInput({
"trackITSTPCMCTR",
"GLO",
"TPCITS_MC", 0, Lifetime::Timeframe});
158 addInput({
"trackITSTPCABMCTR",
"GLO",
"TPCITSAB_MC", 0, Lifetime::Timeframe});
165 addInput({
"fwdtracks",
"GLO",
"GLFWD", 0, Lifetime::Timeframe});
167 addInput({
"MCTruth",
"GLO",
"GLFWD_MC", 0, Lifetime::Timeframe});
174 addInput({
"matchMFTMCH",
"GLO",
"MTC_MFTMCH", 0, Lifetime::Timeframe});
180 addInput({
"matchMCHMID",
"GLO",
"MTC_MCHMID", 0, Lifetime::Timeframe});
182 addInput({
"matchMCHMID_MCTR",
"GLO",
"MCMTC_MCHMID", 0, Lifetime::Timeframe});
190 addInput({
"matchTPCTOF",
"TOF",
"MTC_TPC", ss, Lifetime::Timeframe});
191 addInput({
"trackTPCTOF",
"TOF",
"TOFTRACKS_TPC", ss, Lifetime::Timeframe});
193 addInput({
"clsTOF_TPC_MCTR",
"TOF",
"MCMTC_TPC", ss, Lifetime::Timeframe});
200 addInput({
"trackITSTPCTRD",
"TRD",
"MATCH_ITSTPC", 0, Lifetime::Timeframe});
201 addInput({
"trigITSTPCTRD",
"TRD",
"TRGREC_ITSTPC", 0, Lifetime::Timeframe});
203 addInput({
"trackITSTPCTRDMCTR",
"TRD",
"MCLB_ITSTPC", 0, Lifetime::Timeframe});
204 addInput({
"trackITSTPCTRDSAMCTR",
"TRD",
"MCLB_ITSTPC_TRD", 0, Lifetime::Timeframe});
212 addInput({
"trackTPCTRD",
"TRD",
"MATCH_TPC", ss, Lifetime::Timeframe});
213 addInput({
"trigTPCTRD",
"TRD",
"TRGREC_TPC", ss, Lifetime::Timeframe});
215 addInput({
"trackTPCTRDMCTR",
"TRD",
"MCLB_TPC", ss, Lifetime::Timeframe});
216 addInput({
"trackTPCTRDSAMCTR",
"TRD",
"MCLB_TPC_TRD", ss, Lifetime::Timeframe});
224 addInput({
"matchITSTPCTOF",
"TOF",
"MTC_ITSTPC", 0, Lifetime::Timeframe});
226 addInput({
"clsTOF_GLO_MCTR",
"TOF",
"MCMTC_ITSTPC", 0, Lifetime::Timeframe});
231 addInput({
"matchTPCTRDTOF",
"TOF",
"MTC_TPCTRD", 0, Lifetime::Timeframe});
233 addInput({
"clsTOF_GLO2_MCTR",
"TOF",
"MCMTC_TPCTRD", 0, Lifetime::Timeframe});
238 addInput({
"matchITSTPCTRDTOF",
"TOF",
"MTC_ITSTPCTRD", 0, Lifetime::Timeframe});
240 addInput({
"clsTOF_GLO3_MCTR",
"TOF",
"MCMTC_ITSTPCTRD", 0, Lifetime::Timeframe});
249 for (uint16_t il = 0; il < nInp; ++il) {
257 addInput({
"alpparITS",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam")});
258 addInput({
"cldictITS",
"ITS",
"CLUSDICT", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Calib/ClusterDictionary")});
262#ifdef ENABLE_UPGRADES
263void DataRequest::requestIT3Clusters(
bool mc)
266 for (uint16_t il = 0; il < nInp; ++il) {
274 addInput({
"alpparITS",
"ITS",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"ITS/Config/AlpideParam")});
275 addInput({
"cldictIT3",
"IT3",
"CLUSDICT", 0, Lifetime::Condition,
ccdbParamSpec(
"IT3/Calib/ClusterDictionary")});
283 for (uint16_t il = 0; il < nInp; ++il) {
291 addInput({
"cldictMFT",
"MFT",
"CLUSDICT", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Calib/ClusterDictionary")});
292 addInput({
"alpparMFT",
"MFT",
"ALPIDEPARAM", 0, Lifetime::Condition,
ccdbParamSpec(
"MFT/Config/AlpideParam")});
298 addInput({
"clusTPCoccmap",
"TPC",
"TPCOCCUPANCYMAP", 0, Lifetime::Timeframe});
305 if (!getenv(
"DPL_DISABLE_TPC_TRIGGER_READER") || atoi(getenv(
"DPL_DISABLE_TPC_TRIGGER_READER")) != 1) {
309 addInput({
"clusTPCshmap",
"TPC",
"CLSHAREDMAP", 0, Lifetime::Timeframe});
320 addInput({
"trigTPC",
"TPC",
"TRIGGERWORDS", 0, Lifetime::Timeframe});
326 addInput({
"tofcluster",
"TOF",
"CLUSTERS", 0, Lifetime::Timeframe});
328 addInput({
"tofclusterlabel",
"TOF",
"CLUSTERSMCTR", 0, Lifetime::Timeframe});
336 LOG(warn) <<
"MCH global clusters do not support MC lables, disabling";
339 addInput({
"clusMCH",
"MCH",
"GLOBALCLUSTERS", 0, Lifetime::Timeframe});
340 addInput({
"clusMCHROF",
"MCH",
"CLUSTERROFS", 0, Lifetime::Timeframe});
342 addInput({
"clusMCHMC",
"MCH",
"CLUSTERLABELS", 0, Lifetime::Timeframe});
350 LOG(warn) <<
"HMP clusters do not support MC lables, disabling";
353 addInput({
"hmpidcluster",
"HMP",
"CLUSTERS", 0, Lifetime::Timeframe});
354 addInput({
"hmpidtriggers",
"HMP",
"INTRECORDS1", 0, Lifetime::Timeframe});
356 addInput({
"hmpidclusterlabel",
"HMP",
"CLUSTERSMCTR", 0, Lifetime::Timeframe});
363 addInput({
"clusMID",
"MID",
"CLUSTERS", 0, Lifetime::Timeframe});
364 addInput({
"clusMIDROF",
"MID",
"CLUSTERSROF", 0, Lifetime::Timeframe});
366 addInput({
"clusMIDMC",
"MID",
"CLUSTERSLABELS", 0, Lifetime::Timeframe});
385 addInput({
"ft0recpoints",
"FT0",
"RECPOINTS", 0, Lifetime::Timeframe});
386 addInput({
"ft0channels",
"FT0",
"RECCHDATA", 0, Lifetime::Timeframe});
388 LOG(
error) <<
"FT0 RecPoint does not support MC truth";
395 addInput({
"fv0recpoints",
"FV0",
"RECPOINTS", 0, Lifetime::Timeframe});
396 addInput({
"fv0channels",
"FV0",
"RECCHDATA", 0, Lifetime::Timeframe});
398 LOG(
error) <<
"FV0 RecPoint does not support MC truth";
405 addInput({
"fddrecpoints",
"FDD",
"RECPOINTS", 0, Lifetime::Timeframe});
406 addInput({
"fddchannels",
"FDD",
"RECCHDATA", 0, Lifetime::Timeframe});
408 LOG(
error) <<
"FDD RecPoint does not support MC truth";
415 addInput({
"zdcbcrec",
"ZDC",
"BCREC", 0, Lifetime::Timeframe});
416 addInput({
"zdcenergy",
"ZDC",
"ENERGY", 0, Lifetime::Timeframe});
417 addInput({
"zdctdcdata",
"ZDC",
"TDCDATA", 0, Lifetime::Timeframe});
418 addInput({
"zdcinfo",
"ZDC",
"INFO", 0, Lifetime::Timeframe});
420 LOG(
error) <<
"ZDC RecEvent does not support MC truth";
427 addInput({
"cosmics",
"GLO",
"COSMICTRC", 0, Lifetime::Timeframe});
429 addInput({
"cosmicsMC",
"GLO",
"COSMICTRC_MC", 0, Lifetime::Timeframe});
436 addInput({
"cosmicsExt",
"GLO",
"COSMFULL", 0, Lifetime::Timeframe});
437 addInput({
"cosmicsExtTF",
"GLO",
"COSMFULLTF", 0, Lifetime::Timeframe});
438 addInput({
"cosmicsExtTFID",
"GLO",
"COSMFULLTFID", 0, Lifetime::Timeframe});
440 LOG(
error) <<
"Extended cosmics do not support MC truth";
447 addInput({
"pvtx",
"GLO",
"PVTX", 0, Lifetime::Timeframe});
448 addInput({
"pvtx_trmtc",
"GLO",
"PVTX_TRMTC", 0, Lifetime::Timeframe});
449 addInput({
"pvtx_tref",
"GLO",
"PVTX_TRMTCREFS", 0, Lifetime::Timeframe});
451 addInput({
"pvtx_mc",
"GLO",
"PVTX_MCTR", 0, Lifetime::Timeframe});
458 addInput({
"pvtx",
"GLO",
"PVTX", 0, Lifetime::Timeframe});
459 addInput({
"pvtx_cont",
"GLO",
"PVTX_CONTID", 0, Lifetime::Timeframe});
460 addInput({
"pvtx_contref",
"GLO",
"PVTX_CONTIDREFS", 0, Lifetime::Timeframe});
462 addInput({
"pvtx_mc",
"GLO",
"PVTX_MCTR", 0, Lifetime::Timeframe});
469 addInput({
"v0sIdx",
"GLO",
"V0S_IDX", 0, Lifetime::Timeframe});
470 addInput({
"v0s",
"GLO",
"V0S", 0, Lifetime::Timeframe});
471 addInput({
"p2v0s",
"GLO",
"PVTX_V0REFS", 0, Lifetime::Timeframe});
472 addInput({
"cascsIdx",
"GLO",
"CASCS_IDX", 0, Lifetime::Timeframe});
473 addInput({
"cascs",
"GLO",
"CASCS", 0, Lifetime::Timeframe});
474 addInput({
"p2cascs",
"GLO",
"PVTX_CASCREFS", 0, Lifetime::Timeframe});
475 addInput({
"decay3bodyIdx",
"GLO",
"DECAYS3BODY_IDX", 0, Lifetime::Timeframe});
476 addInput({
"decay3body",
"GLO",
"DECAYS3BODY", 0, Lifetime::Timeframe});
477 addInput({
"p2decay3body",
"GLO",
"PVTX_3BODYREFS", 0, Lifetime::Timeframe});
483 addInput({
"strangetracks",
"GLO",
"STRANGETRACKS", 0, Lifetime::Timeframe});
485 addInput({
"strack_mc",
"GLO",
"STRANGETRACKS_MC", 0, Lifetime::Timeframe});
492 addInput({
"CTPDigits",
"CTP",
"DIGITS", 0, Lifetime::Timeframe});
493 addInput({
"CTPLumi",
"CTP",
"LUMI", 0, Lifetime::Timeframe});
495 LOG(warning) <<
"MC truth not implemented for CTP";
503 addInput({
"CPVClusters",
"CPV",
"CLUSTERS", 0, Lifetime::Timeframe});
504 addInput({
"CPVTriggers",
"CPV",
"CLUSTERTRIGRECS", 0, Lifetime::Timeframe});
506 addInput({
"CPVClustersMC",
"CPV",
"CLUSTERTRUEMC", 0, Lifetime::Timeframe});
513 addInput({
"PHSCells",
"PHS",
"CELLS", 0, Lifetime::Timeframe});
514 addInput({
"PHSTriggers",
"PHS",
"CELLTRIGREC", 0, Lifetime::Timeframe});
516 addInput({
"PHSCellsMC",
"PHS",
"CELLSMCTR", 0, Lifetime::Timeframe});
523 addInput({
"EMCCells",
"EMC",
"CELLS", 0, Lifetime::Timeframe});
524 addInput({
"EMCTriggers",
"EMC",
"CELLSTRGR", 0, Lifetime::Timeframe});
526 addInput({
"EMCCellsMC",
"EMC",
"CELLSMCTR", 0, Lifetime::Timeframe});
533 addInput({
"matchHMP",
"HMP",
"MATCHES", 0, Lifetime::Timeframe});
535 addInput({
"clsHMP_GLO_MCTR",
"HMP",
"MCLABELS", 0, Lifetime::Timeframe});
592 if (GTrackID::includesDet(DetID::CTP,
src)) {
595 if (GTrackID::includesDet(DetID::CPV,
src)) {
598 if (GTrackID::includesDet(DetID::PHS,
src)) {
601 if (GTrackID::includesDet(DetID::EMC,
src)) {
604 if (GTrackID::includesDet(DetID::HMP,
src)) {
616 if (GTrackID::includesDet(DetID::ITS,
src) && !skipDetClusters[DetID::ITS]) {
619 if (GTrackID::includesDet(DetID::MFT,
src) && !skipDetClusters[DetID::MFT]) {
622 if (GTrackID::includesDet(DetID::TPC,
src) && !skipDetClusters[DetID::TPC]) {
625 if (GTrackID::includesDet(DetID::TOF,
src) && !skipDetClusters[DetID::TOF]) {
628 if (GTrackID::includesDet(DetID::TRD,
src) && !skipDetClusters[DetID::TRD]) {
631 if (GTrackID::includesDet(DetID::CTP,
src) && !skipDetClusters[DetID::CTP]) {
634 if (GTrackID::includesDet(DetID::CPV,
src) && !skipDetClusters[DetID::CPV]) {
637 if (GTrackID::includesDet(DetID::PHS,
src) && !skipDetClusters[DetID::PHS]) {
640 if (GTrackID::includesDet(DetID::EMC,
src) && !skipDetClusters[DetID::EMC]) {
643 if (GTrackID::includesDet(DetID::MCH,
src) && !skipDetClusters[DetID::MCH]) {
646 if (GTrackID::includesDet(DetID::HMP,
src) && !skipDetClusters[DetID::HMP]) {
661 auto req = reqMap.find(
"trackITS");
662 if (req != reqMap.end()) {
666 req = reqMap.find(
"trackMFT");
667 if (req != reqMap.end()) {
671 req = reqMap.find(
"trackMCH");
672 if (req != reqMap.end()) {
676 req = reqMap.find(
"trackMID");
677 if (req != reqMap.end()) {
681 req = reqMap.find(
"trackTPC");
682 if (req != reqMap.end()) {
686 req = reqMap.find(
"trackITSTPC");
687 if (req != reqMap.end()) {
691 req = reqMap.find(
"fwdtracks");
692 if (req != reqMap.end()) {
696 req = reqMap.find(
"matchMFTMCH");
697 if (req != reqMap.end()) {
701 req = reqMap.find(
"matchMCHMID");
702 if (req != reqMap.end()) {
706 req = reqMap.find(
"trackITSTPCTRD");
707 if (req != reqMap.end()) {
711 req = reqMap.find(
"trackTPCTRD");
712 if (req != reqMap.end()) {
716 req = reqMap.find(
"trackTPCTOF");
717 if (req != reqMap.end()) {
721 req = reqMap.find(
"matchTOF_ITSTPC");
722 if (req != reqMap.end()) {
726 req = reqMap.find(
"matchTOF_TPCTRD");
727 if (req != reqMap.end()) {
731 req = reqMap.find(
"matchTOF_ITSTPCTRD");
732 if (req != reqMap.end()) {
736 req = reqMap.find(
"clusITS");
737 if (req != reqMap.end()) {
741#ifdef ENABLE_UPGRADES
742 req = reqMap.find(
"clusIT3");
743 if (req != reqMap.end()) {
744 addIT3Clusters(pc, req->second);
748 req = reqMap.find(
"clusMFT");
749 if (req != reqMap.end()) {
753 req = reqMap.find(
"TPCOcc");
754 bool TPCOccDone =
false;
755 if (req != reqMap.end()) {
760 req = reqMap.find(
"clusTPC");
761 if (req != reqMap.end()) {
762 auto tracksON = reqMap.find(
"trackTPC") != reqMap.end();
763 addTPCClusters(pc, req->second, tracksON, tracksON && (!TPCOccDone));
766 req = reqMap.find(
"trigTPC");
767 if (req != reqMap.end()) {
771 req = reqMap.find(
"clusTOF");
772 if (req != reqMap.end()) {
776 req = reqMap.find(
"clusHMP");
777 if (req != reqMap.end()) {
781 req = reqMap.find(
"CTPDigits");
782 if (req != reqMap.end()) {
786 req = reqMap.find(
"CPVClusters");
787 if (req != reqMap.end()) {
791 req = reqMap.find(
"PHSCells");
792 if (req != reqMap.end()) {
796 req = reqMap.find(
"EMCCells");
797 if (req != reqMap.end()) {
801 req = reqMap.find(
"clusMCH");
802 if (req != reqMap.end()) {
806 req = reqMap.find(
"clusMID");
807 if (req != reqMap.end()) {
811 req = reqMap.find(
"FT0");
812 if (req != reqMap.end()) {
816 req = reqMap.find(
"FV0");
817 if (req != reqMap.end()) {
821 req = reqMap.find(
"FDD");
822 if (req != reqMap.end()) {
826 req = reqMap.find(
"ZDC");
827 if (req != reqMap.end()) {
831 req = reqMap.find(
"trackletTRD");
832 if (req != reqMap.end()) {
836 req = reqMap.find(
"Cosmics");
837 if (req != reqMap.end()) {
841 req = reqMap.find(
"CosmicsExt");
842 if (req != reqMap.end()) {
846 req = reqMap.find(
"PVertex");
847 if (req != reqMap.end()) {
851 req = reqMap.find(
"PVertexTMP");
852 if (req != reqMap.end()) {
856 req = reqMap.find(
"SVertex");
857 if (req != reqMap.end()) {
861 req = reqMap.find(
"STracker");
862 if (req != reqMap.end()) {
866 req = reqMap.find(
"IRFramesITS");
867 if (req != reqMap.end()) {
870 req = reqMap.find(
"matchHMP");
871 if (req != reqMap.end()) {
931 std::shared_ptr<const std::vector<TrackCosmicsExtended>> cosm = pc.
inputs().
get<std::vector<TrackCosmicsExtended>*>(
"cosmicsExt");
932 std::shared_ptr<const CosmicsTFInfo> tfInfo = pc.
inputs().
get<CosmicsTFInfo*>(
"cosmicsExtTF");
933 std::shared_ptr<const TFIDInfo> tfID = pc.
inputs().
get<TFIDInfo*>(
"cosmicsExtTFID");
941 LOG(
error) <<
"Extended cosmics do not support MC truth";
1144 for (uint16_t il = 0; il < nInp; ++il) {
1154#ifdef ENABLE_UPGRADES
1162 for (uint16_t il = 0; il < nInp; ++il) {
1181 for (uint16_t il = 0; il < nInp; ++il) {
1308 LOG(
error) <<
"FT0 RecPoint does not support MC truth";
1319 LOG(
error) <<
"FV0 RecPoint does not support MC truth";
1330 LOG(
error) <<
"FDD RecPoint does not support MC truth";
1343 LOG(
error) <<
"ZDC RecEvent does not support MC truth";
1359 return inputsTRD ?
inputsTRD->mSpacePoints : gsl::span<const o2::trd::CalibratedTracklet>();
1364 static int countWarnings = 0;
1366 if (countWarnings < 1) {
1367 LOG(warning) <<
"No TRD triggers";
1370 return gsl::span<const o2::trd::TriggerRecord>();
1390 auto trSrc = gidx.getSource();
1392 return getTrack<o2d::TrackTPCITS>(gidx).getParamOut();
1394 return getTrack<o2d::TrackTPCITS>(
getTOFMatch(gidx).getTrackRef()).getParamOut();
1396 return getTrack<o2d::TrackTPCTOF>(gidx).getParamOut();
1398 return getTrack<o2::trd::TrackTRD>(
getTOFMatch(gidx).getTrackRef()).getOuterParam();
1401 return getTrack<o2::trd::TrackTRD>(
getTOFMatch(gidx).getTrackRef()).getOuterParam();
1403 return getTrack<o2::trd::TrackTRD>(gidx).getOuterParam();
1406 return getTrack<o2::trd::TrackTRD>(gidx).getOuterParam();
1408 return getTrack<o2::its::TrackITS>(gidx).getParamOut();
1410 return getTrack<o2::tpc::TrackTPC>(gidx).getParamOut();
1412 throw std::runtime_error(fmt::format(
"not defined for tracks of source {:d}",
int(trSrc)));
1444 auto trSrc = gidx.getSource();
1448 return getObject<o2::track::TrackParCov>(gidx,
TRACKS);
1463 mcinfo.reserve(gids.size());
1464 for (
auto gid : gids) {
1472 createTracksVariadic([&creator](
const auto& _tr,
GTrackID _origID,
float t0,
float terr) {
1474 return creator(_tr, _origID);
1486 auto src = gidx.getSource();
1489 const auto& parent0 = getITSTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1490 const auto& parent1 =
getTPCITSTrack(parent0.getRefGlobalTrackId());
1492 table[parent1.getRefITS().getSource()] = parent1.getRefITS();
1496 const auto& parent0 = getTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1505 table[parent1.getRefITS().getSource()] = parent1.getRefITS();
1508 const auto& parent1 = getITSTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1509 const auto& parent2 =
getTPCITSTrack(parent1.getRefGlobalTrackId());
1514 table[parent2.getRefITS().getSource()] = parent2.getRefITS();
1518 const auto& parent1 = getTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1530 table[parent0.getRefITS().getSource()] = parent0.getRefITS();
1535 if (parent0.getMIDTrackID() != -1) {
1551 auto src = gidx.getSource();
1553 const auto& parent0 = getITSTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1554 const auto& parent1 =
getTPCITSTrack(parent0.getRefGlobalTrackId());
1555 return parent1.getRefTPC();
1559 return parent1.getRefTPC();
1562 const auto& parent1 = getITSTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1563 const auto& parent2 =
getTPCITSTrack(parent1.getRefGlobalTrackId());
1564 return parent2.getRefTPC();
1567 return parent0.getTrackRef();
1570 const auto& parent1 = getTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1571 return parent1.getRefGlobalTrackId();
1573 const auto& parent0 = getTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1574 return parent0.getRefGlobalTrackId();
1577 return parent0.getRefTPC();
1587 auto src = gidx.getSource();
1589 const auto& parent0 = getITSTPCTRDTrack<o2::trd::TrackTRD>(gidx);
1590 const auto& parent1 =
getTPCITSTrack(parent0.getRefGlobalTrackId());
1591 return parent1.getRefITS();
1595 return parent1.getRefITS();
1598 const auto& parent1 = getITSTPCTRDTrack<o2::trd::TrackTRD>(parent0.getTrackRef());
1599 const auto& parent2 =
getTPCITSTrack(parent1.getRefGlobalTrackId());
1600 return parent2.getRefITS();
1603 return parent0.getRefITS();
1624 t = (
match.getSignal() -
match.getLTIntegralOut().getTOF(o2::track::PID::Pion)) *
PS2MUS;
1632 t = (
match.getSignal() -
match.getLTIntegralOut().getTOF(o2::track::PID::Pion)) *
PS2MUS;
1640 t = (
match.getSignal() -
match.getLTIntegralOut().getTOF(o2::track::PID::Pion)) *
PS2MUS;
1649 for (
const auto& trig : trigITSTPCTRD) {
1650 if (trig.getTrackRefs().getEntriesBound() > gid.getIndex()) {
1651 t = trig.getBCData().differenceInBC(
startIR) * o2::constants::lhc::LHCBunchSpacingMUS;
1653 const auto& trc = getITSTPCTRDTracks<o2::trd::TrackTRD>()[gid];
1654 if (trc.hasPileUpInfo()) {
1655 tErr += trc.getPileUpTimeErrorMUS();
1667 for (
const auto& trig : trigTPCTRD) {
1668 if (trig.getTrackRefs().getEntriesBound() > gid.getIndex()) {
1669 t = trig.getBCData().differenceInBC(
startIR) * o2::constants::lhc::LHCBunchSpacingMUS;
1671 const auto& trc = getTPCTRDTracks<o2::trd::TrackTRD>()[gid];
1672 if (trc.hasPileUpInfo()) {
1673 tErr += trc.getPileUpTimeErrorMUS();
1684 t = trc.getTimeMUS().getTimeStamp();
1685 tErr = trc.getTimeMUS().getTimeStampError();
1692 t = trc.getTimeMUS().getTimeStamp();
1693 tErr = trc.getTimeMUS().getTimeStampError();
1700 for (
const auto& rof : rofrs) {
1701 if (gid.getIndex() < rof.getFirstEntry() + rof.getNEntries()) {
1702 t = rof.getBCData().differenceInBC(
startIR) * o2::constants::lhc::LHCBunchSpacingMUS;
1713 t = trc.getTime0() + 0.5 * (trc.getDeltaTFwd() - trc.getDeltaTBwd());
1714 tErr = 0.5 * (trc.getDeltaTFwd() + trc.getDeltaTBwd());
1720 auto src = gid.getSource();
Definition of the BuildTopologyDictionary class for ITS3.
char error[CURL_ERROR_SIZE]
Class to delimit start and end IR of certain time period.
Wrapper container for different reconstructed object types.
Matched cosmic track with the raw clusters of its legs and of the road around them,...
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 requestCosmicExtTracks(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 addCosmicExtTracks(o2::framework::ProcessingContext &pc, bool mc)
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
std::shared_ptr< const void > cosmExtHolder[3]
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"