2323#include " DataFormatsCTP/Configuration.h"
2424#include " DataFormatsFT0/Digit.h"
2525#include " DataFormatsFV0/Digit.h"
26+ #include " CommonConstants/LHCConstants.h"
2627
2728#include < TStopwatch.h>
2829#include < gsl/span>
@@ -37,7 +38,7 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
3738 using GRP = o2::parameters::GRPObject;
3839
3940 public:
40- CTPDPLDigitizerTask (const std::vector<o2::detectors::DetID>& detList) : o2::base::BaseDPLDigitizer(), mDigitizer (), mDetList (detList) {}
41+ CTPDPLDigitizerTask (const std::vector<o2::detectors::DetID>& detList, float ctpLumiScaler ) : o2::base::BaseDPLDigitizer(), mDigitizer (), mDetList (detList), mLumiScaler (ctpLumiScaler ) {}
4142 ~CTPDPLDigitizerTask () override = default ;
4243 void initDigitizerTask (framework::InitContext& ic) override
4344 {
@@ -85,6 +86,12 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
8586 pc.outputs ().snapshot (Output{" CTP" , " DIGITS" , 0 }, digits);
8687 LOG (info) << " CTP PRESENT being sent." ;
8788 pc.outputs ().snapshot (Output{" CTP" , " ROMode" , 0 }, mROMode );
89+ if (mLumiScaler >= 0 .) {
90+ int nhbf = mLumiScaler > 0 .f ? int (int (mLumiScaler ) / mLumiScaler * o2::constants::lhc::LHCRevFreq) : 0 ;
91+ o2::ctp::LumiInfo lminfo{pc.services ().get <o2::framework::TimingInfo>().firstTForbit , nhbf, 0 , int (mLumiScaler ), 0 };
92+ LOG (info) << " CTP Lumi scaler " << lminfo.counts << " for integration time of " << lminfo.nHBFCounted << " being sent" ;
93+ pc.outputs ().snapshot (Output{" CTP" , " LUMI" , 0 }, lminfo);
94+ }
8895 timer.Stop ();
8996 LOG (info) << " CTP Digitization took " << timer.CpuTime () << " s" ;
9097 }
@@ -102,8 +109,10 @@ class CTPDPLDigitizerTask : public o2::base::BaseDPLDigitizer
102109 o2::parameters::GRPObject::ROMode mROMode = o2::parameters::GRPObject::PRESENT;
103110 o2::ctp::Digitizer mDigitizer ; // /< Digitizer
104111 std::vector<o2::detectors::DetID> mDetList ;
112+ float mLumiScaler = -1 .;
105113};
106- o2::framework::DataProcessorSpec getCTPDigitizerSpec (int channel, std::vector<o2::detectors::DetID>& detList, bool mctruth)
114+
115+ o2::framework::DataProcessorSpec getCTPDigitizerSpec (int channel, std::vector<o2::detectors::DetID>& detList, int ctpLumiScaler, bool mctruth)
107116{
108117 std::vector<InputSpec> inputs;
109118 std::vector<OutputSpec> output;
@@ -119,12 +128,15 @@ o2::framework::DataProcessorSpec getCTPDigitizerSpec(int channel, std::vector<o2
119128 }
120129 inputs.emplace_back (" ctpconfig" , " CTP" , " CTPCONFIG" , 0 , Lifetime::Condition, ccdbParamSpec (" CTP/Config/Config" , true ));
121130 output.emplace_back (" CTP" , " DIGITS" , 0 , Lifetime::Timeframe);
131+ if (ctpLumiScaler >= 0 ) {
132+ output.emplace_back (" CTP" , " LUMI" , 0 , Lifetime::Timeframe);
133+ }
122134 output.emplace_back (" CTP" , " ROMode" , 0 , Lifetime::Timeframe);
123135 return DataProcessorSpec{
124136 " CTPDigitizer" ,
125137 inputs,
126138 output,
127- AlgorithmSpec{adaptFromTask<CTPDPLDigitizerTask>(detList)},
139+ AlgorithmSpec{adaptFromTask<CTPDPLDigitizerTask>(detList, ctpLumiScaler )},
128140 Options{{" pileup" , VariantType::Int, 1 , {" whether to run in continuous time mode" }},
129141 {" disable-qed" , o2::framework::VariantType::Bool, false , {" disable QED handling" }}}};
130142}
0 commit comments