Skip to content

Commit 70f0944

Browse files
afursdavidrohr
andauthored
FIT: new feature("--file-for") for digit2raw (#6935)
* FIT: RawWriter update for digit2raw, new --file-for feature * Cosmetics for RawWriterFIT * Update test-raw2digit.cxx * Update test-raw2digit.cxx * Update test-raw2digit.cxx * Update create_full_system_pipeline.py * Update full_system_test.sh * fix spaces Co-authored-by: David Rohr <drohr@jwdt.org> Co-authored-by: David Rohr <github@jwdt.org>
1 parent 100542d commit 70f0944

9 files changed

Lines changed: 59 additions & 35 deletions

File tree

Detectors/FIT/FDD/reconstruction/src/test-raw2digit.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ int main()
6767

6868
std::cout << "\nTOTAL EVENTS: " << vecTotalEvents.size() << std::endl;
6969
std::cout << "Simulation completed!" << std::endl;
70-
gSystem->Exec("$O2_ROOT/bin/o2-fdd-digit2raw --file-per-link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"");
70+
gSystem->Exec("$O2_ROOT/bin/o2-fdd-digit2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"");
7171
gSystem->Exec("$O2_ROOT/bin/o2-raw-file-reader-workflow -b --input-conf FDDraw.cfg --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"|$O2_ROOT/bin/o2-fdd-flp-dpl-workflow -b");
7272
TFile flIn2("o2_fdddigits.root");
7373
std::unique_ptr<TTree> treeInput2((TTree*)flIn2.Get("o2sim"));

Detectors/FIT/FDD/simulation/src/digit2raw.cxx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
namespace bpo = boost::program_options;
3232

33-
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, bool filePerLink, uint32_t rdhV = 4, bool noEmptyHBF = false,
33+
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, const std::string& fileFor, uint32_t rdhV, bool noEmptyHBF, const std::string& flpName,
3434
int superPageSizeInB = 1024 * 1024);
3535

3636
int main(int argc, char** argv)
@@ -48,7 +48,8 @@ int main(int argc, char** argv)
4848
add_option("verbosity,v", bpo::value<int>()->default_value(0), "verbosity level");
4949
// add_option("input-file,i", bpo::value<std::string>()->default_value(o2::base::NameConf::getDigitsFileName(o2::detectors::DetID::FDD)),"input FDD digits file"); // why not used?
5050
add_option("input-file,i", bpo::value<std::string>()->default_value("fdddigits.root"), "input FDD digits file");
51-
add_option("file-per-link,l", bpo::value<bool>()->default_value(false)->implicit_value(true), "create output file per CRU (default: per layer)");
51+
add_option("flp-name", bpo::value<std::string>()->default_value("alio2-cr1-flp180-fdd"), "single file per: all,flp,cru,link"); //temporary, beacause FIT deployed only on one node
52+
add_option("file-for,f", bpo::value<std::string>()->default_value("all"), "single file per: all,flp,cru,link");
5253
add_option("output-dir,o", bpo::value<std::string>()->default_value("./"), "output directory for raw data");
5354
uint32_t defRDH = o2::raw::RDHUtils::getVersion<o2::header::RAWDataHeader>();
5455
add_option("rdh-version,r", bpo::value<uint32_t>()->default_value(defRDH), "RDH version to use");
@@ -83,21 +84,23 @@ int main(int argc, char** argv)
8384
digit2raw(vm["input-file"].as<std::string>(),
8485
vm["output-dir"].as<std::string>(),
8586
vm["verbosity"].as<int>(),
86-
vm["file-per-link"].as<bool>(),
87+
vm["file-for"].as<std::string>(),
8788
vm["rdh-version"].as<uint32_t>(),
88-
vm["no-empty-hbf"].as<bool>());
89+
vm["no-empty-hbf"].as<bool>(),
90+
vm["flp-name"].as<std::string>());
8991

9092
o2::raw::HBFUtils::Instance().print();
9193

9294
return 0;
9395
}
9496

95-
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, bool filePerLink, uint32_t rdhV, bool noEmptyHBF, int superPageSizeInB)
97+
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, const std::string& fileFor, uint32_t rdhV, bool noEmptyHBF, const std::string& flpName, int superPageSizeInB)
9698
{
9799
TStopwatch swTot;
98100
swTot.Start();
99101
o2::fdd::RawWriterFDD m2r;
100-
m2r.setFilePerLink(filePerLink);
102+
m2r.setFileFor(fileFor);
103+
m2r.setFlpName(flpName);
101104
m2r.setVerbosity(verbosity);
102105
auto& wr = m2r.getWriter();
103106
std::string inputGRP = o2::base::NameConf::getGRPFileName();

Detectors/FIT/FT0/reconstruction/src/test-raw2digit.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ int main()
6767

6868
std::cout << "\nTOTAL EVENTS: " << vecTotalEvents.size() << std::endl;
6969
std::cout << "Simulation completed!" << std::endl;
70-
gSystem->Exec("$O2_ROOT/bin/o2-ft0-digi2raw --file-per-link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"");
70+
gSystem->Exec("$O2_ROOT/bin/o2-ft0-digi2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"");
7171
gSystem->Exec("$O2_ROOT/bin/o2-raw-file-reader-workflow -b --input-conf FT0raw.cfg --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"|$O2_ROOT/bin/o2-ft0-flp-dpl-workflow -b");
7272
TFile flIn2("o2_ft0digits.root");
7373
std::unique_ptr<TTree> treeInput2((TTree*)flIn2.Get("o2sim"));

Detectors/FIT/FT0/simulation/src/digit2raw.cxx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
namespace bpo = boost::program_options;
3232

33-
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, bool filePerLink, uint32_t rdhV = 4, bool noEmptyHBF = false,
33+
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, const std::string& fileFor, uint32_t rdhV, bool noEmptyHBF, const std::string& flpName,
3434
int superPageSizeInB = 1024 * 1024);
3535

3636
int main(int argc, char** argv)
@@ -48,7 +48,8 @@ int main(int argc, char** argv)
4848
add_option("verbosity,v", bpo::value<int>()->default_value(0), "verbosity level");
4949
// add_option("input-file,i", bpo::value<std::string>()->default_value(o2::base::NameConf::getDigitsFileName(o2::detectors::DetID::FT0)),"input FT0 digits file"); // why not used?
5050
add_option("input-file,i", bpo::value<std::string>()->default_value("ft0digits.root"), "input FT0 digits file");
51-
add_option("file-per-link,l", bpo::value<bool>()->default_value(false)->implicit_value(true), "create output file per CRU (default: per layer)");
51+
add_option("flp-name", bpo::value<std::string>()->default_value("alio2-cr1-flp180"), "single file per: all,flp,cru,link");
52+
add_option("file-for,f", bpo::value<std::string>()->default_value("all"), "single file per: all,flp,cru,link");
5253
add_option("output-dir,o", bpo::value<std::string>()->default_value("./"), "output directory for raw data");
5354
uint32_t defRDH = o2::raw::RDHUtils::getVersion<o2::header::RAWDataHeader>();
5455
add_option("rdh-version,r", bpo::value<uint32_t>()->default_value(defRDH), "RDH version to use");
@@ -83,21 +84,23 @@ int main(int argc, char** argv)
8384
digit2raw(vm["input-file"].as<std::string>(),
8485
vm["output-dir"].as<std::string>(),
8586
vm["verbosity"].as<int>(),
86-
vm["file-per-link"].as<bool>(),
87+
vm["file-for"].as<std::string>(),
8788
vm["rdh-version"].as<uint32_t>(),
88-
vm["no-empty-hbf"].as<bool>());
89+
vm["no-empty-hbf"].as<bool>(),
90+
vm["flp-name"].as<std::string>());
8991

9092
o2::raw::HBFUtils::Instance().print();
9193

9294
return 0;
9395
}
9496

95-
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, bool filePerLink, uint32_t rdhV, bool noEmptyHBF, int superPageSizeInB)
97+
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, const std::string& fileFor, uint32_t rdhV, bool noEmptyHBF, const std::string& flpName, int superPageSizeInB)
9698
{
9799
TStopwatch swTot;
98100
swTot.Start();
99101
o2::ft0::RawWriterFT0 m2r;
100-
m2r.setFilePerLink(filePerLink);
102+
m2r.setFileFor(fileFor);
103+
m2r.setFlpName(flpName);
101104
m2r.setVerbosity(verbosity);
102105
auto& wr = m2r.getWriter();
103106
std::string inputGRP = o2::base::NameConf::getGRPFileName();

Detectors/FIT/FV0/reconstruction/src/test-raw2digit.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ int main()
7070

7171
std::cout << "\nTOTAL EVENTS: " << vecTotalEvents.size() << std::endl;
7272
std::cout << "Simulation completed!" << std::endl;
73-
gSystem->Exec("$O2_ROOT/bin/o2-fv0-digi2raw -v 1 --file-per-link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"");
73+
gSystem->Exec("$O2_ROOT/bin/o2-fv0-digi2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"");
7474
gSystem->Exec("$O2_ROOT/bin/o2-raw-file-reader-workflow -b --input-conf FV0raw.cfg --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"|$O2_ROOT/bin/o2-fv0-flp-dpl-workflow -b");
7575
TFile flIn2("o2_fv0digits.root");
7676
std::unique_ptr<TTree> treeInput2((TTree*)flIn2.Get("o2sim"));

Detectors/FIT/FV0/simulation/src/digit2raw.cxx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
namespace bpo = boost::program_options;
3232

33-
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, bool filePerLink, uint32_t rdhV = 4, bool noEmptyHBF = false,
33+
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, const std::string& fileFor, uint32_t rdhV, bool noEmptyHBF, const std::string& flpName,
3434
int superPageSizeInB = 1024 * 1024);
3535

3636
int main(int argc, char** argv)
@@ -48,7 +48,8 @@ int main(int argc, char** argv)
4848
add_option("verbosity,v", bpo::value<int>()->default_value(0), "verbosity level");
4949
// add_option("input-file,i", bpo::value<std::string>()->default_value(o2::base::NameConf::getDigitsFileName(o2::detectors::DetID::FV0)),"input FV0 digits file"); // why not used?
5050
add_option("input-file,i", bpo::value<std::string>()->default_value("fv0digits.root"), "input FV0 digits file");
51-
add_option("file-per-link,l", bpo::value<bool>()->default_value(false)->implicit_value(true), "create output file per CRU (default: per layer)");
51+
add_option("flp-name", bpo::value<std::string>()->default_value("alio2-cr1-flp180-fv0"), "single file per: all,flp,cru,link"); //temporary, beacause FIT deployed only on one node
52+
add_option("file-for,f", bpo::value<std::string>()->default_value("all"), "single file per: all,flp,cru,link");
5253
add_option("output-dir,o", bpo::value<std::string>()->default_value("./"), "output directory for raw data");
5354
uint32_t defRDH = o2::raw::RDHUtils::getVersion<o2::header::RAWDataHeader>();
5455
add_option("rdh-version,r", bpo::value<uint32_t>()->default_value(defRDH), "RDH version to use");
@@ -83,21 +84,23 @@ int main(int argc, char** argv)
8384
digit2raw(vm["input-file"].as<std::string>(),
8485
vm["output-dir"].as<std::string>(),
8586
vm["verbosity"].as<int>(),
86-
vm["file-per-link"].as<bool>(),
87+
vm["file-for"].as<std::string>(),
8788
vm["rdh-version"].as<uint32_t>(),
88-
vm["no-empty-hbf"].as<bool>());
89+
vm["no-empty-hbf"].as<bool>(),
90+
vm["flp-name"].as<std::string>());
8991

9092
o2::raw::HBFUtils::Instance().print();
9193

9294
return 0;
9395
}
9496

95-
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, bool filePerLink, uint32_t rdhV, bool noEmptyHBF, int superPageSizeInB)
97+
void digit2raw(const std::string& inpName, const std::string& outDir, int verbosity, const std::string& fileFor, uint32_t rdhV, bool noEmptyHBF, const std::string& flpName, int superPageSizeInB)
9698
{
9799
TStopwatch swTot;
98100
swTot.Start();
99101
o2::fv0::RawWriterFV0 m2r;
100-
m2r.setFilePerLink(filePerLink);
102+
m2r.setFileFor(fileFor);
103+
m2r.setFlpName(flpName);
101104
m2r.setVerbosity(verbosity);
102105
auto& wr = m2r.getWriter();
103106
std::string inputGRP = o2::base::NameConf::getGRPFileName();

Detectors/FIT/raw/include/FITRaw/RawWriterFIT.h

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "DetectorsRaw/RawFileWriter.h"
2828
#include "CommonUtils/StringUtils.h"
2929
#include <gsl/span>
30+
#include <fmt/format.h>
3031

3132
namespace o2
3233
{
@@ -47,7 +48,8 @@ class RawWriterFIT
4748
RawWriterFIT() = default;
4849
~RawWriterFIT() = default;
4950
o2::raw::RawFileWriter& getWriter() { return mWriter; }
50-
void setFilePerLink(bool makeFilePerLink) { mOutputPerLink = makeFilePerLink; }
51+
void setFileFor(const std::string& fileFor) { mFileFor = fileFor; }
52+
void setFlpName(const std::string& flpName) { mFlpName = flpName; }
5153
bool getFilePerLink() const { return mOutputPerLink; }
5254
void setVerbosity(int verbosityLevel) { mVerbosity = verbosityLevel; }
5355
int getVerbosity() const { return mVerbosity; }
@@ -66,11 +68,22 @@ class RawWriterFIT
6668
mMapTopo2FEEmetadata.clear();
6769
mMapTopo2FEEmetadata = LookupTable_t::Instance().template makeMapFEEmetadata<o2::header::RAWDataHeader, RDHUtils>();
6870
//Preparing filenames
69-
std::string detNameLowCase = LookupTable_t::sDetectorName;
70-
std::for_each(detNameLowCase.begin(), detNameLowCase.end(), [](char& c) { c = ::tolower(c); });
71+
std::string detName = LookupTable_t::sDetectorName;
7172
auto makeFilename = [&](const o2::header::RAWDataHeader& rdh) -> std::string {
72-
std::string maskName = detNameLowCase + "_link";
73-
std::string outputFilename = mOutputPerLink ? o2::utils::Str::concat_string(outputDir, maskName, std::to_string(RDHUtils::getFEEID(rdh)), ".raw") : o2::utils::Str::concat_string(outputDir, detNameLowCase + ".raw");
73+
std::string maskName{};
74+
if (mFileFor != "all") { // single file for all links
75+
maskName += fmt::format("_{}", mFlpName);
76+
if (mFileFor != "flp") {
77+
maskName += fmt::format("_cru{}_{}", RDHUtils::getCRUID(rdh), RDHUtils::getEndPointID(rdh));
78+
if (mFileFor != "cru") {
79+
maskName += fmt::format("_lnk{}_feeid{}", RDHUtils::getLinkID(rdh), RDHUtils::getFEEID(rdh));
80+
if (mFileFor != "link") {
81+
throw std::runtime_error("invalid option provided for file grouping");
82+
}
83+
}
84+
}
85+
}
86+
std::string outputFilename = o2::utils::Str::concat_string(outputDir, detName, maskName, ".raw");
7487
return outputFilename;
7588
};
7689
//Registering links
@@ -125,6 +138,8 @@ class RawWriterFIT
125138
}
126139

127140
o2::raw::RawFileWriter mWriter{LookupTable_t::sDetectorName};
141+
std::string mFlpName{};
142+
std::string mFileFor{};
128143
std::map<Topo_t, o2::header::RAWDataHeader> mMapTopo2FEEmetadata;
129144
//const o2::raw::HBFUtils& mSampler = o2::raw::HBFUtils::Instance();
130145
bool mOutputPerLink = false;

prodtests/full-system-test/create_full_system_pipeline.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ def RAWTask(name, command):
4343

4444
ITSRAW=RAWTask('itsraw', 'o2-its-digi2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/ITS')
4545
MFTRAW=RAWTask('mftraw', 'o2-mft-digi2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/MFT')
46-
FT0RAW=RAWTask('ft0raw', 'o2-ft0-digi2raw --file-per-link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/FT0')
47-
FV0RAW=RAWTask('fv0raw', 'o2-fv0-digi2raw --file-per-link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/FV0')
48-
FDDRAW=RAWTask('fddraw', 'o2-fdd-digit2raw --file-per-link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/FDD')
46+
FT0RAW=RAWTask('ft0raw', 'o2-ft0-digi2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/FT0')
47+
FV0RAW=RAWTask('fv0raw', 'o2-fv0-digi2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/FV0')
48+
FDDRAW=RAWTask('fddraw', 'o2-fdd-digit2raw --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -o raw/FDD')
4949
TPCRAW=RAWTask('tpcraw', 'o2-tpc-digits-to-rawzs --file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" -i tpcdigits.root -o raw/TPC')
5050
TOFRAW=RAWTask('tofraw', 'o2-tof-reco-workflow ${GLOBALDPLOPT} --tof-raw-file-for link --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\" --output-type raw --tof-raw-outdir raw/TOF')
5151
TOFRAW=RAWTask('midraw', 'o2-mid-digits-to-raw-workflow ${GLOBALDPLOPT} --mid-raw-outdir raw/MID --mid-raw-perlink --configKeyValues \"HBFUtils.nHBFPerTF=128;HBFUtils.orbitFirst=0\"')

prodtests/full_system_test.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ HOST=`hostname`
6464
TAG="conf=${CONFIG},host=${HOST}${ALIDISTCOMMIT:+,alidist=$ALIDISTCOMMIT}${O2COMMIT:+,o2=$O2COMMIT}"
6565
echo "versions,${TAG} alidist=\"${ALIDISTCOMMIT}\",O2=\"${O2COMMIT}\" " > ${METRICFILE}
6666

67-
GLOBALDPLOPT="-b" # --monitoring-backend no-op:// is currently removed due to https://alice.its.cern.ch/jira/browse/O2-1887
67+
GLOBALDPLOPT="-b" # --monitoring-backend no-op:// is currently removed due to https://alice.its.cern.ch/jira/browse/O2-1887
6868

6969
HBFUTILPARAMS="HBFUtils.nHBFPerTF=${NHBPERTF};HBFUtils.orbitFirst=${RUNFIRSTORBIT};HBFUtils.orbitFirstSampled=${FIRSTSAMPLEDORBIT}"
7070
[ "0$ALLOW_MULTIPLE_TF" != "01" ] && HBFUTILPARAMS+=";HBFUtils.maxNOrbits=${NHBPERTF};"
@@ -105,9 +105,9 @@ fi
105105
mkdir -p raw
106106
taskwrapper itsraw.log o2-its-digi2raw --file-for cru -o raw/ITS
107107
taskwrapper mftraw.log o2-mft-digi2raw --file-for link -o raw/MFT
108-
taskwrapper ft0raw.log o2-ft0-digi2raw --file-per-link -o raw/FT0
109-
taskwrapper fv0raw.log o2-fv0-digi2raw --file-per-link -o raw/FV0
110-
taskwrapper fddraw.log o2-fdd-digit2raw --file-per-link -o raw/FDD
108+
taskwrapper ft0raw.log o2-ft0-digi2raw --file-for link -o raw/FT0
109+
taskwrapper fv0raw.log o2-fv0-digi2raw --file-for link -o raw/FV0
110+
taskwrapper fddraw.log o2-fdd-digit2raw --file-for link -o raw/FDD
111111
taskwrapper tpcraw.log o2-tpc-digits-to-rawzs --file-for cru -i tpcdigits.root -o raw/TPC
112112
taskwrapper tofraw.log o2-tof-reco-workflow ${GLOBALDPLOPT} --tof-raw-file-for link --output-type raw --tof-raw-outdir raw/TOF
113113
taskwrapper midraw.log o2-mid-digits-to-raw-workflow ${GLOBALDPLOPT} --mid-raw-outdir raw/MID --mid-raw-perlink
@@ -188,8 +188,8 @@ for STAGE in $STAGES; do
188188
echo "gpurecotime_${STAGE},${TAG} value=${gpurecotime}" >> ${METRICFILE}
189189

190190
# memory
191-
maxmem=`awk '/PROCESS MAX MEM/{print $5}' ${logfile}` # in MB
192-
avgmem=`awk '/PROCESS AVG MEM/{print $5}' ${logfile}` # in MB
191+
maxmem=`awk '/PROCESS MAX MEM/{print $5}' ${logfile}` # in MB
192+
avgmem=`awk '/PROCESS AVG MEM/{print $5}' ${logfile}` # in MB
193193
echo "maxmem_${STAGE},${TAG} value=${maxmem}" >> ${METRICFILE}
194194
echo "avgmem_${STAGE},${TAG} value=${avgmem}" >> ${METRICFILE}
195195

0 commit comments

Comments
 (0)