17#include <fairlogger/Logger.h> 
   41  std::string 
filename = mPath + 
"CPVGains.root";
 
   42  TFile filein(
filename.data(), 
"READ");
 
   43  if (filein.IsOpen()) {
 
   44    mMean->Add(
static_cast<TH2F*
>(filein.Get(
"Gains")));
 
 
   61        LOG(error) << 
"Raw decoding error " << (
int)e;
 
   82        unsigned short absId = ac.
Address;
 
   83        mMean->Fill(absId, ac.
Charge);
 
 
   92  LOG(info) << 
"[CPVGainCalibDevice - endOfStream]";
 
 
  104  if (mUpdateCCDB || mForceUpdate) {
 
  110    info.
setPath(
"CPV/Calib/CalibParams");
 
  114    time_t now = 
time(
nullptr);
 
  117    std::map<std::string, std::string> md;
 
  120    LOG(info) << 
"Sending object CPV/Calib/CalibParams";
 
  130    std::string 
filename = mPath + 
"CPVGains";
 
  131    time_t now = 
time(
nullptr);
 
  132    tm* ltm = localtime(&now);
 
  133    filename += TString::Format(
"_%d%d%d%d%d.root", 1 + ltm->tm_min, 1 + ltm->tm_hour, ltm->tm_mday, 1 + ltm->tm_mon, 1970 + ltm->tm_year);
 
  135    TFile fout(
filename.data(), 
"RECREATE");
 
  139    std::string 
filename = mPath + 
"CPVGains.root";
 
  140    LOG(info) << 
"statistics not sufficient yet: " << mMean->Integral() / mMean->GetNbinsX() << 
", writing file " << 
filename;
 
  141    TFile fout(
filename.data(), 
"RECREATE");
 
 
  157    TF1* fitFunc = 
new TF1(
"fitFunc", 
"landau", 0., 4000.);
 
  158    fitFunc->SetParameters(1., 200., 60.);
 
  159    fitFunc->SetParLimits(1, 10., 2000.);
 
  160    for (
int i = 1; 
i <= mMean->GetNbinsX(); 
i++) {
 
  161      TH1D* tmp = mMean->ProjectionY(Form(
"channel%d", 
i), 
i, 
i);
 
  162      fitFunc->SetParameters(1., 200., 60.);
 
  163      if (tmp->Integral(20, 2000) < kMinimalStatistics) {
 
  167      tmp->Fit(fitFunc, 
"QL0", 
"", 20., 2000.);
 
  168      float a = fitFunc->GetParameter(1);
 
  171        mCalibParams->setGain(
i - 1, 
a); 
 
 
  216  std::vector<o2::framework::OutputSpec> outputs;
 
  220  outputs.emplace_back(
"CPV", 
"GAINDIFF", 0, o2::framework::Lifetime::Sporadic);
 
  225                                          o2::framework::adaptFromTask<CPVGainCalibDevice>(useCCDB, forceUpdate, 
path),
 
 
Utils and constants for calibration and related workflows.
 
static std::string generateFileName(const std::string &inp)
 
static std::unique_ptr< std::vector< char > > createObjectImage(const T *obj, CcdbObjectInfo *info=nullptr)
 
void setStartValidityTimestamp(long start)
 
void setFileName(const std::string &nm)
 
void setPath(const std::string &path)
 
void setEndValidityTimestamp(long end)
 
void setObjectType(const std::string &tp)
 
void setMetaData(const std::map< std::string, std::string > &md)
 
static constexpr long INFINITE_TIMESTAMP
 
void endOfStream(o2::framework::EndOfStreamContext &ec) final
This is invoked whenever we have an EndOfStream event.
 
void sendOutput(DataAllocator &output)
 
void run(o2::framework::ProcessingContext &pc) final
 
void init(o2::framework::InitContext &ic) final
 
static constexpr short kNCHANNELS
 
Decoder of the ALTRO data in the raw page.
 
const std::vector< uint32_t > & getDigits() const
Get the reference to the digits container.
 
RawErrorType_t decode()
Decode the raw cpv payload stream.
 
Reader for raw data produced by the Readout application in in-memory format.
 
RawErrorType_t next()
Read next payload from the stream.
 
bool hasNext() const
check if more pages are available in the raw file
 
DataAllocator & outputs()
 
InputRecord & inputs()
The inputs associated with this processing context.
 
GLsizei const GLchar *const  * path
 
GLboolean GLboolean GLboolean GLboolean a
 
o2::framework::DataProcessorSpec getGainCalibSpec(bool useCCDB, bool forceUpdate, std::string path)
 
std::vector< ConfigParamSpec > Options
 
std::vector< InputSpec > select(char const *matcher="")
 
static constexpr o2::header::DataOrigin gDataOriginCDBWrapper
 
static constexpr o2::header::DataOrigin gDataOriginCDBPayload
 
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
 
uint32_t Charge
Bits 18 - 32 : charge.
 
uint32_t Address
Bits 0 - 17 : Address.