Skip to content

Commit 3e0d913

Browse files
committed
Optionally store CTP lumi scaler (norm to 1s) in CTP digitizer output
1 parent 5df80a7 commit 3e0d913

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

Detectors/GlobalTrackingWorkflow/tpcinterpolationworkflow/include/TPCInterpolationWorkflow/TPCResidualAggregatorSpec.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ class ResidualAggregatorDevice : public o2::framework::Task
145145
using lumiDataType = std::decay_t<decltype(pc.inputs().get<o2::ctp::LumiInfo>(""))>;
146146
std::optional<lumiDataType> lumiInput;
147147
if (mCTPInput) {
148-
recoCont.getCTPLumi();
149148
lumiInput = recoCont.getCTPLumi();
150149
lumi = &lumiInput.value();
151150
}

Steer/DigitizerWorkflow/src/CTPDigitizerSpec.cxx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
#include "Framework//Task.h"
1818
#include "DetectorsBase/BaseDPLDigitizer.h"
1919
#include "DataFormatsCTP/Digits.h"
20+
#include "DataFormatsCTP/LumiInfo.h"
2021
#include "Steer/HitProcessingManager.h" // for DigitizationContext
2122
#include "DetectorsCommonDataFormats/DetID.h"
2223
#include "CTPSimulation/Digitizer.h"
2324
#include "DataFormatsCTP/Configuration.h"
2425
#include "DataFormatsFT0/Digit.h"
2526
#include "DataFormatsFV0/Digit.h"
27+
#include "CommonConstants/LHCConstants.h"
2628

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

3941
public:
40-
CTPDPLDigitizerTask(const std::vector<o2::detectors::DetID>& detList) : o2::base::BaseDPLDigitizer(), mDigitizer(), mDetList(detList) {}
42+
CTPDPLDigitizerTask(const std::vector<o2::detectors::DetID>& detList, float ctpLumiScaler) : o2::base::BaseDPLDigitizer(), mDigitizer(), mDetList(detList), mLumiScaler(ctpLumiScaler) {}
4143
~CTPDPLDigitizerTask() override = default;
4244
void initDigitizerTask(framework::InitContext& ic) override
4345
{
@@ -85,6 +87,12 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
8587
pc.outputs().snapshot(Output{"CTP", "DIGITS", 0}, digits);
8688
LOG(info) << "CTP PRESENT being sent.";
8789
pc.outputs().snapshot(Output{"CTP", "ROMode", 0}, mROMode);
90+
if (mLumiScaler >= 0.) {
91+
uint32_t nhbf = mLumiScaler > 0.f ? uint32_t(int(mLumiScaler) / mLumiScaler * o2::constants::lhc::LHCRevFreq) : 0;
92+
o2::ctp::LumiInfo lminfo{pc.services().get<o2::framework::TimingInfo>().firstTForbit, nhbf, 0, uint64_t(mLumiScaler), 0};
93+
LOG(info) << "CTP Lumi scaler " << lminfo.counts << " for integration time of " << lminfo.nHBFCounted << " being sent";
94+
pc.outputs().snapshot(Output{"CTP", "LUMI", 0}, lminfo);
95+
}
8896
timer.Stop();
8997
LOG(info) << "CTP Digitization took " << timer.CpuTime() << "s";
9098
}
@@ -102,8 +110,10 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
102110
o2::parameters::GRPObject::ROMode mROMode = o2::parameters::GRPObject::PRESENT;
103111
o2::ctp::Digitizer mDigitizer; ///< Digitizer
104112
std::vector<o2::detectors::DetID> mDetList;
113+
float mLumiScaler = -1.;
105114
};
106-
o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2::detectors::DetID>& detList, bool mctruth)
115+
116+
o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2::detectors::DetID>& detList, float ctpLumiScaler, bool mctruth)
107117
{
108118
std::vector<InputSpec> inputs;
109119
std::vector<OutputSpec> output;
@@ -119,12 +129,15 @@ o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2
119129
}
120130
inputs.emplace_back("ctpconfig", "CTP", "CTPCONFIG", 0, Lifetime::Condition, ccdbParamSpec("CTP/Config/Config", true));
121131
output.emplace_back("CTP", "DIGITS", 0, Lifetime::Timeframe);
132+
if (ctpLumiScaler >= 0.f) {
133+
output.emplace_back("CTP", "LUMI", 0, Lifetime::Timeframe);
134+
}
122135
output.emplace_back("CTP", "ROMode", 0, Lifetime::Timeframe);
123136
return DataProcessorSpec{
124137
"CTPDigitizer",
125138
inputs,
126139
output,
127-
AlgorithmSpec{adaptFromTask<CTPDPLDigitizerTask>(detList)},
140+
AlgorithmSpec{adaptFromTask<CTPDPLDigitizerTask>(detList, ctpLumiScaler)},
128141
Options{{"pileup", VariantType::Int, 1, {"whether to run in continuous time mode"}},
129142
{"disable-qed", o2::framework::VariantType::Bool, false, {"disable QED handling"}}}};
130143
}

Steer/DigitizerWorkflow/src/CTPDigitizerSpec.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace o2
2020
namespace ctp
2121
{
2222

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

2525
} // namespace ctp
2626
} // end namespace o2

Steer/DigitizerWorkflow/src/SimpleDigitizerWorkflow.cxx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,9 @@ void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
220220

221221
// to enable distribution of triggers
222222
workflowOptions.push_back(ConfigParamSpec{"with-trigger", VariantType::Bool, false, {"enable distribution of CTP trigger digits"}});
223+
224+
// option to propagate CTP Lumi scaler counts (if >=0) into the CTP digits
225+
workflowOptions.push_back(ConfigParamSpec{"store-ctp-lumi", VariantType::Float, -1.f, {"store CTP lumi scaler in CTP digits (if >= 0)"}});
223226
}
224227

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

0 commit comments

Comments
 (0)