2020#include " Framework/InitContext.h"
2121#include " Framework/DeviceSpec.h"
2222#include " DataFormatsCTP/LumiInfo.h"
23+ #include " TTree.h"
2324
2425using namespace o2 ::tpc;
2526using namespace o2 ::framework;
@@ -35,6 +36,12 @@ void CorrectionMapsLoader::extractCCDBInputs(ProcessingContext& pc, float tpcSca
3536 if (lumiMode != LumiScaleMode::NoCorrection) {
3637 pc.inputs ().get <o2::gpu::TPCFastTransform*>(" tpcCorrMapRef" );
3738 }
39+
40+ if (mApplySecEdgeFlucCorr ) {
41+ pc.inputs ().get <o2::gpu::TPCFastTransform*>(" tpcCorrMapSecFluc" );
42+ pc.inputs ().get <TTree*>(" tpcSecFlucInfo" );
43+ }
44+
3845 const int maxDumRep = 5 ;
3946 int dumRep = 0 ;
4047 o2::ctp::LumiInfo lumiObj;
@@ -93,11 +100,11 @@ void CorrectionMapsLoader::requestCCDBInputs(std::vector<InputSpec>& inputs, con
93100{
94101 LOGP (info, " Requesting CCDB inputs for TPC correction maps with lumiType={} and lumiMode={}" , static_cast <int >(gloOpts.lumiType ), static_cast <int >(gloOpts.lumiMode ));
95102 if (gloOpts.lumiMode == LumiScaleMode::Linear) {
96- addInput (inputs, {" tpcCorrMap" , " TPC " , " CorrMap" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMap), {}, 1 )}); // time-dependent
97- addInput (inputs, {" tpcCorrMapRef" , " TPC " , " CorrMapRef" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMapRef), {}, 0 )}); // load once
103+ addInput (inputs, {" tpcCorrMap" , o2::header:: gDataOriginTPC , " CorrMap" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMap), {}, 1 )}); // time-dependent
104+ addInput (inputs, {" tpcCorrMapRef" , o2::header:: gDataOriginTPC , " CorrMapRef" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMapRef), {}, 0 )}); // load once
98105 } else if (gloOpts.lumiMode == LumiScaleMode::DerivativeMap) {
99- addInput (inputs, {" tpcCorrMap" , " TPC " , " CorrMap" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMap), {}, 1 )}); // time-dependent
100- addInput (inputs, {" tpcCorrMapRef" , " TPC " , " CorrMapRef" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrDerivMap), {}, 1 )}); // time-dependent
106+ addInput (inputs, {" tpcCorrMap" , o2::header:: gDataOriginTPC , " CorrMap" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMap), {}, 1 )}); // time-dependent
107+ addInput (inputs, {" tpcCorrMapRef" , o2::header:: gDataOriginTPC , " CorrMapRef" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrDerivMap), {}, 1 )}); // time-dependent
101108 } else if (gloOpts.lumiMode == LumiScaleMode::DerivativeMapMC) {
102109 // for MC corrections
103110 addInput (inputs, {" tpcCorrMap" , " TPC" , " CorrMap" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalCorrMapMC), {}, 1 )}); // time-dependent
@@ -110,11 +117,17 @@ void CorrectionMapsLoader::requestCCDBInputs(std::vector<InputSpec>& inputs, con
110117 LOG (fatal) << " Correction mode unknown! Choose either 0 (default) or 1 (derivative map) for flag corrmap-lumi-mode." ;
111118 }
112119
120+ // load sector edge fluctuation correction only for data
121+ if (gloOpts.enableSecEdgeFlucCorrection ) {
122+ addInput (inputs, {" tpcCorrMapSecFluc" , o2::header::gDataOriginTPC , " CorrMapSecFluc" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalSecEdgeCorrection), {}, 1 )}); // time-dependent
123+ addInput (inputs, {" tpcSecFlucInfo" , o2::header::gDataOriginTPC , " InfoMapSecFluc" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CalSecEdgeInfo), {}, 1 )}); // time-dependent
124+ }
125+
113126 if (gloOpts.requestCTPLumi ) {
114127 addInput (inputs, {" CTPLumi" , " CTP" , " LUMI" , 0 , Lifetime::Timeframe});
115128 }
116129
117- addInput (inputs, {" tpcCorrPar" , " TPC " , " CorrMapParam" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CorrMapParam), {}, 0 )}); // load once
130+ addInput (inputs, {" tpcCorrPar" , o2::header:: gDataOriginTPC , " CorrMapParam" , 0 , Lifetime::Condition, ccdbParamSpec (CDBTypeMap.at (CDBType::CorrMapParam), {}, 0 )}); // load once
118131}
119132
120133// ________________________________________________________
@@ -136,7 +149,7 @@ void CorrectionMapsLoader::addOption(std::vector<ConfigParamSpec>& options, Conf
136149// ________________________________________________________
137150bool CorrectionMapsLoader::accountCCDBInputs (const ConcreteDataMatcher& matcher, void * obj)
138151{
139- if (matcher == ConcreteDataMatcher (" TPC " , " CorrMap" , 0 )) {
152+ if (matcher == ConcreteDataMatcher (o2::header:: gDataOriginTPC , " CorrMap" , 0 )) {
140153 setCorrMap ((o2::gpu::TPCFastTransform*)obj);
141154 mCorrMap ->rectifyAfterReadingFromFile ();
142155 mCorrMap ->setCTP2IDCFallBackThreshold (o2::tpc::CorrMapParam::Instance ().CTP2IDCFallBackThreshold );
@@ -165,7 +178,7 @@ bool CorrectionMapsLoader::accountCCDBInputs(const ConcreteDataMatcher& matcher,
165178 setUpdatedMap ();
166179 return true ;
167180 }
168- if (matcher == ConcreteDataMatcher (" TPC " , " CorrMapRef" , 0 )) {
181+ if (matcher == ConcreteDataMatcher (o2::header:: gDataOriginTPC , " CorrMapRef" , 0 )) {
169182 setCorrMapRef ((o2::gpu::TPCFastTransform*)obj);
170183 mCorrMapRef ->rectifyAfterReadingFromFile ();
171184 mCorrMapRef ->setCTP2IDCFallBackThreshold (o2::tpc::CorrMapParam::Instance ().CTP2IDCFallBackThreshold );
@@ -194,7 +207,7 @@ bool CorrectionMapsLoader::accountCCDBInputs(const ConcreteDataMatcher& matcher,
194207 setUpdatedMapRef ();
195208 return true ;
196209 }
197- if (matcher == ConcreteDataMatcher (" TPC " , " CorrMapParam" , 0 )) {
210+ if (matcher == ConcreteDataMatcher (o2::header:: gDataOriginTPC , " CorrMapParam" , 0 )) {
198211 const auto & par = o2::tpc::CorrMapParam::Instance ();
199212 mMeanLumiOverride = par.lumiMean ; // negative value switches off corrections !!!
200213 mMeanLumiRefOverride = par.lumiMeanRef ;
@@ -225,6 +238,18 @@ bool CorrectionMapsLoader::accountCCDBInputs(const ConcreteDataMatcher& matcher,
225238 canUseCorrections () ? " ON" : " OFF" ,
226239 lumiS[scaleType], mMeanLumiOverride , mMeanLumiRefOverride , static_cast <int >(getLumiScaleMode ()), mLumiCTPSource , mInstCTPLumiOverride , mInstLumiCTPFactor );
227240 }
241+ if (matcher == ConcreteDataMatcher (o2::header::gDataOriginTPC , " CorrMapSecFluc" , 0 )) {
242+ setCorrMapSecEdgeFluc ((o2::gpu::TPCFastTransform*)obj);
243+ mCorrMapSecEdgeFluc ->rectifyAfterReadingFromFile ();
244+ setUpdatedMapSecEdgeFluc ();
245+ return true ;
246+ }
247+ if (matcher == ConcreteDataMatcher (o2::header::gDataOriginTPC , " InfoMapSecFluc" , 0 )) {
248+ LOGP (info, " Updating TPC sector edge fluctuation info" );
249+ mSecEdgeFlucInfo .setFromTree (*((TTree*)obj));
250+ LOGP (info, " Loaded sector edge fluctuation information with {} intervals for {} runs" , mSecEdgeFlucInfo .size (), mSecEdgeFlucInfo .getNRuns ());
251+ return true ;
252+ }
228253 return false ;
229254}
230255
0 commit comments