27#include "TStopwatch.h"
43 TRDTrackBasedCalibDevice(std::shared_ptr<DataRequest> dr, std::shared_ptr<o2::base::GRPGeomRequest> gr,
bool vdexb,
bool gain) : mDataRequest(dr), mGGCCDBRequest(gr), mDoVdExBCalib(vdexb), mDoGainCalib(gain) {}
53 bool mDoGainCalib{
false};
54 bool mDoVdExBCalib{
false};
56 std::shared_ptr<DataRequest> mDataRequest;
57 std::shared_ptr<o2::base::GRPGeomRequest> mGGCCDBRequest;
58 TrackBasedCalib mCalibrator;
65 if (getenv(
"ALIEN_JDL_LPMPRODUCTIONTYPE") && std::strcmp(getenv(
"ALIEN_JDL_LPMPRODUCTIONTYPE"),
"MC") == 0) {
78 updateTimeDependentParams(pc);
102 static bool initOnceDone =
false;
116 LOG(info) <<
"NoiseStatusMCM object has been updated";
121 LOG(info) <<
"Local gain factors object has been updated";
129 LOGF(info,
"TRD track-based calibration total timing: Cpu: %.3e Real: %.3e s in %d slots",
130 mTimer.CpuTime(), mTimer.RealTime(), mTimer.Counter() - 1);
135 std::vector<OutputSpec> outputs;
136 auto dataRequest = std::make_shared<DataRequest>();
140 LOGF(info,
"Found ITS-TPC tracks as input, loading ITS-TPC-TRD");
147 LOGF(info,
"Found TPC tracks as input, loading TPC-TRD");
154 dataRequest->requestTracks(srcTrk,
false);
155 dataRequest->requestClusters(srcClu,
false);
157 auto& inputs = dataRequest->inputs;
158 inputs.emplace_back(
"mcmnoisemap",
"TRD",
"MCMNOISEMAP", 0, Lifetime::Condition,
ccdbParamSpec(
"TRD/Calib/NoiseMapMCM"));
160 inputs.emplace_back(
"localgainfactors",
"TRD",
"LOCALGAINFACTORS", 0, Lifetime::Condition,
ccdbParamSpec(
"TRD/Calib/LocalGainFactor"));
162 auto ggRequest = std::make_shared<o2::base::GRPGeomRequest>(
false,
176 if (!gain && !vdexb) {
177 LOG(error) <<
"TRD track based calibration requested, but neither gain nor vD and ExB calibration enabled";
181 "trd-trackbased-calib",
184 AlgorithmSpec{adaptFromTask<TRDTrackBasedCalibDevice>(dataRequest, ggRequest, vdexb, gain)},
Definition of the GeometryManager class.
Helper for geometry and GRP related CCDB requests.
Header of the General Run Parameters object.
Definition of the Names Generator class.
Steers the creation of calibration input based on tracks.
Provides information required for TRD calibration which is based on the global tracking.
void checkUpdates(o2::framework::ProcessingContext &pc)
static GRPGeomHelper & instance()
void setRequest(std::shared_ptr< GRPGeomRequest > req)
void snapshot(const Output &spec, T const &object)
DataAllocator & outputs()
The data allocator is used to allocate memory for the output data.
InputRecord & inputs()
The inputs associated with this processing context.
Simple noise status bit for each MCM of the TRD.
void endOfStream(framework::EndOfStreamContext &ec) final
This is invoked whenever we have an EndOfStream event.
void finaliseCCDB(framework::ConcreteDataMatcher &matcher, void *obj) final
void run(ProcessingContext &pc) final
TRDTrackBasedCalibDevice(std::shared_ptr< DataRequest > dr, std::shared_ptr< o2::base::GRPGeomRequest > gr, bool vdexb, bool gain)
~TRDTrackBasedCalibDevice() override=default
void init(InitContext &ic) final
void setInput(const o2::globaltracking::RecoContainer &input)
Initialize the input arrays.
void setApplyShift(bool f)
void setNoiseMapMCM(const NoiseStatusMCM *map)
Set the MCM noise map.
void reset()
Reset the output.
void calculateGainCalibObjs()
void init()
Load geometry and apply magnetic field setting.
const auto & getGainCalibHistos() const
void calculateAngResHistos()
Main processing function for creating angular residual histograms for vDrift and ExB calibration.
void setLocalGainFactors(const LocalGainFactor *localGain)
const AngularResidHistos & getAngResHistos() const
constexpr o2::header::DataOrigin gDataOriginTRD
Defining PrimaryVertex explicitly as messageable.
std::vector< ConfigParamSpec > ccdbParamSpec(std::string const &path, int runDependent, std::vector< CCDBMetadata > metadata={}, int qrate=0)
std::vector< ConfigParamSpec > Options
framework::DataProcessorSpec getTRDTrackBasedCalibSpec(o2::dataformats::GlobalTrackID::mask_t src, bool vdexb, bool gain)
create a processor spec
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
void collectData(o2::framework::ProcessingContext &pc, const DataRequest &request)
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"