134int NoiseCalibEPN::process(
const gsl::span<const o2::zdc::OrbitData>& orbitData, 
const gsl::span<const o2::zdc::BCData>& bcdata, 
const gsl::span<const o2::zdc::ChannelData>& chdata)
 
  141  std::map<uint32_t, int> 
orbit; 
 
  143  for (
int ich = 0; ich < 
NChannels; ich++) {
 
  144    offset[ich] = std::numeric_limits<float>::infinity();
 
  146  if (mSaveDebugHistos) {
 
  147    int norb = orbitData.size();
 
  151    for (
int iorb = 0; iorb < norb; iorb++) {
 
  152      orbit[orbitData[iorb].ir.orbit] = iorb;
 
  159  auto nbc = bcdata.size();
 
  160  for (
int ibc = 1; ibc < nbc; ibc++) {
 
  161    auto& bcp = bcdata[ibc - 1];
 
  162    auto& bcc = bcdata[ibc];
 
  163    if (bcc.ir.bc != 0 || bcp.ir.bc != 3563 || (bcp.ir.orbit + 1) != bcc.ir.orbit) {
 
  166    auto chEnt = bcc.ref.getFirstEntry();
 
  167    auto nch = bcc.ref.getEntries();
 
  169    if (mSaveDebugHistos) {
 
  170      std::map<uint32_t, int>::iterator it = 
orbit.find(bcc.ir.orbit);
 
  171      if (it != 
orbit.end()) {
 
  172        auto& orbitdata = orbitData[it->second];
 
  173        for (
int ich = 0; ich < 
NChannels; ich++) {
 
  174          auto myped = float(orbitdata.data[ich]) * mModuleConfig->
baselineFactor;
 
  179            offset[ich] = std::numeric_limits<float>::infinity();
 
  183        for (
int ich = 0; ich < 
NChannels; ich++) {
 
  184          offset[ich] = std::numeric_limits<float>::infinity();
 
  189    for (
int ich = 0; ich < nch; ich++) {
 
  190      const auto& chd = chdata[chEnt++];
 
  194        mtp.
w = bcp.moduleTriggers[mRopt->
amod[chd.id]];
 
  195        mtc.
w = bcc.moduleTriggers[mRopt->
amod[chd.id]];
 
  197            || mtp.
f.Auto_0 || mtp.
f.Alice_0 || (bcp.triggers & mChMask[chd.id]) 
 
  198            || mtc.
f.Auto_0 || mtc.
f.Alice_0 || (bcc.triggers & mChMask[chd.id]) 
 
  199            || mtc.
f.Auto_1 || mtc.
f.Alice_1                                     
 
  202          printf(
"%u.%04u SKIP %s%s%s%s%s%s%s%s%s\n",
 
  203                 mtp.
f.Auto_m ? 
"p.Auto_m" : 
"",
 
  204                 mtp.
f.Auto_0 ? 
"p.Auto_0" : 
"",
 
  205                 mtp.
f.Alice_0 ? 
"p.Alice_0" : 
"",
 
  206                 (bcp.triggers & mChMask[chd.id]) ? 
"p.HIT" : 
"",
 
  207                 mtc.
f.Auto_0 ? 
"c.Auto_0" : 
"",
 
  208                 mtc.
f.Alice_0 ? 
"c.Alice_0" : 
"",
 
  209                 (bcc.triggers & mChMask[chd.id]) ? 
"c.HIT" : 
"",
 
  210                 mtc.
f.Auto_1 ? 
"c.Auto_1" : 
"",
 
  211                 mtc.
f.Alice_1 ? 
"c.Alice_1" : 
"");
 
  218          auto s = chd.data[is];
 
  219          mH[0][chd.id]->fill(s);
 
  220          if (mSaveDebugHistos) {
 
  221            mHSum[0][chd.id]->fill(s);
 
  230          if (mSaveDebugHistos) {
 
  235        mH[1][chd.id]->fill(ss);
 
  237        if (mSaveDebugHistos) {
 
  238          mHSum[1][chd.id]->fill(ss);
 
 
  263    LOG(info) << 
"Saving EPN debug histograms on file " << fn;
 
  269  TDirectory* cwd = gDirectory;
 
  271  TFile* 
f = 
new TFile(fn.data(), 
"update");
 
  273    LOG(error) << 
"Cannot update file: " << fn;
 
  276  for (int32_t is = 0; is < 
NChannels; is++) {
 
  277    auto p = 
mHSum[0][is]->createTH1F(TString::Format(
"hs%d", is).Data());
 
  278    p->SetTitle(TString::Format(
"EPN Baseline samples %s", 
ChannelNames[is].
data()));
 
  279    p->Write(
"", TObject::kOverwrite);
 
  281  for (int32_t is = 0; is < 
NChannels; is++) {
 
  282    auto p = 
mHSum[1][is]->createTH1F(TString::Format(
"hss%d", is).Data());
 
  283    p->SetTitle(TString::Format(
"EPN Bunch sum of samples %s", 
ChannelNames[is].
data()));
 
  284    p->Write(
"", TObject::kOverwrite);
 
  286  for (int32_t is = 0; is < 
NChannels; is++) {
 
  287    auto p = 
mHSum[2][is]->createTH1F(TString::Format(
"hsd%d", is).Data());
 
  288    p->SetTitle(TString::Format(
"EPN Baseline estimation difference %s", 
ChannelNames[is].
data()));
 
  289    p->Write(
"", TObject::kOverwrite);