Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ class ResidualAggregatorDevice : public o2::framework::Task
using lumiDataType = std::decay_t<decltype(pc.inputs().get<o2::ctp::LumiInfo>(""))>;
std::optional<lumiDataType> lumiInput;
if (mCTPInput) {
recoCont.getCTPLumi();
lumiInput = recoCont.getCTPLumi();
lumi = &lumiInput.value();
}
Expand Down
19 changes: 16 additions & 3 deletions Steer/DigitizerWorkflow/src/CTPDigitizerSpec.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@
#include "Framework//Task.h"
#include "DetectorsBase/BaseDPLDigitizer.h"
#include "DataFormatsCTP/Digits.h"
#include "DataFormatsCTP/LumiInfo.h"
#include "Steer/HitProcessingManager.h" // for DigitizationContext
#include "DetectorsCommonDataFormats/DetID.h"
#include "CTPSimulation/Digitizer.h"
#include "DataFormatsCTP/Configuration.h"
#include "DataFormatsFT0/Digit.h"
#include "DataFormatsFV0/Digit.h"
#include "CommonConstants/LHCConstants.h"

#include <TStopwatch.h>
#include <gsl/span>
Expand All @@ -37,7 +39,7 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
using GRP = o2::parameters::GRPObject;

public:
CTPDPLDigitizerTask(const std::vector<o2::detectors::DetID>& detList) : o2::base::BaseDPLDigitizer(), mDigitizer(), mDetList(detList) {}
CTPDPLDigitizerTask(const std::vector<o2::detectors::DetID>& detList, float ctpLumiScaler) : o2::base::BaseDPLDigitizer(), mDigitizer(), mDetList(detList), mLumiScaler(ctpLumiScaler) {}
~CTPDPLDigitizerTask() override = default;
void initDigitizerTask(framework::InitContext& ic) override
{
Expand Down Expand Up @@ -85,6 +87,12 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
pc.outputs().snapshot(Output{"CTP", "DIGITS", 0}, digits);
LOG(info) << "CTP PRESENT being sent.";
pc.outputs().snapshot(Output{"CTP", "ROMode", 0}, mROMode);
if (mLumiScaler >= 0.) {
uint32_t nhbf = mLumiScaler > 0.f ? uint32_t(int(mLumiScaler) / mLumiScaler * o2::constants::lhc::LHCRevFreq) : 0;
o2::ctp::LumiInfo lminfo{pc.services().get<o2::framework::TimingInfo>().firstTForbit, nhbf, 0, uint64_t(mLumiScaler), 0};
LOG(info) << "CTP Lumi scaler " << lminfo.counts << " for integration time of " << lminfo.nHBFCounted << " being sent";
pc.outputs().snapshot(Output{"CTP", "LUMI", 0}, lminfo);
}
timer.Stop();
LOG(info) << "CTP Digitization took " << timer.CpuTime() << "s";
}
Expand All @@ -102,8 +110,10 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
o2::parameters::GRPObject::ROMode mROMode = o2::parameters::GRPObject::PRESENT;
o2::ctp::Digitizer mDigitizer; ///< Digitizer
std::vector<o2::detectors::DetID> mDetList;
float mLumiScaler = -1.;
};
o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2::detectors::DetID>& detList, bool mctruth)

o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2::detectors::DetID>& detList, float ctpLumiScaler, bool mctruth)
{
std::vector<InputSpec> inputs;
std::vector<OutputSpec> output;
Expand All @@ -119,12 +129,15 @@ o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2
}
inputs.emplace_back("ctpconfig", "CTP", "CTPCONFIG", 0, Lifetime::Condition, ccdbParamSpec("CTP/Config/Config", true));
output.emplace_back("CTP", "DIGITS", 0, Lifetime::Timeframe);
if (ctpLumiScaler >= 0.f) {
output.emplace_back("CTP", "LUMI", 0, Lifetime::Timeframe);
}
output.emplace_back("CTP", "ROMode", 0, Lifetime::Timeframe);
return DataProcessorSpec{
"CTPDigitizer",
inputs,
output,
AlgorithmSpec{adaptFromTask<CTPDPLDigitizerTask>(detList)},
AlgorithmSpec{adaptFromTask<CTPDPLDigitizerTask>(detList, ctpLumiScaler)},
Options{{"pileup", VariantType::Int, 1, {"whether to run in continuous time mode"}},
{"disable-qed", o2::framework::VariantType::Bool, false, {"disable QED handling"}}}};
}
Expand Down
2 changes: 1 addition & 1 deletion Steer/DigitizerWorkflow/src/CTPDigitizerSpec.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace o2
namespace ctp
{

o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2::detectors::DetID>& detList, bool mctruth = true);
o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2::detectors::DetID>& detList, float ctpLumiScaler = -1.f, bool mctruth = true);

} // namespace ctp
} // end namespace o2
Expand Down
8 changes: 6 additions & 2 deletions Steer/DigitizerWorkflow/src/SimpleDigitizerWorkflow.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,9 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)

// to enable distribution of triggers
workflowOptions.push_back(ConfigParamSpec{"with-trigger", VariantType::Bool, false, {"enable distribution of CTP trigger digits"}});

// option to propagate CTP Lumi scaler counts (if >=0) into the CTP digits
workflowOptions.push_back(ConfigParamSpec{"store-ctp-lumi", VariantType::Float, -1.f, {"store CTP lumi scaler in CTP digits (if >= 0)"}});
}

void customize(std::vector<o2::framework::DispatchPolicy>& policies)
Expand Down Expand Up @@ -798,10 +801,11 @@ WorkflowSpec defineDataProcessing(ConfigContext const& configcontext)
// the CTP part
if (isEnabled(o2::detectors::DetID::CTP)) {
detList.emplace_back(o2::detectors::DetID::CTP);
float lumiScaler = configcontext.options().get<float>("store-ctp-lumi");
// connect the CTP digitization
specs.emplace_back(o2::ctp::getCTPDigitizerSpec(fanoutsize++, detList));
specs.emplace_back(o2::ctp::getCTPDigitizerSpec(fanoutsize++, detList, lumiScaler));
// connect the CTP digit writer
specs.emplace_back(o2::ctp::getDigitWriterSpec(false));
specs.emplace_back(o2::ctp::getDigitWriterSpec(lumiScaler >= 0));
}
// GRP updater: must come after all detectors since requires their list
if (!configcontext.options().get<bool>("only-context")) {
Expand Down