LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
lariov::SIOVElectronicsCalibProvider Class Reference

Retrieves information: electronics calibrations, specifically gain and shaping time. More...

#include "SIOVElectronicsCalibProvider.h"

Inheritance diagram for lariov::SIOVElectronicsCalibProvider:
lariov::DatabaseRetrievalAlg

Public Member Functions

 SIOVElectronicsCalibProvider (fhicl::ParameterSet const &p)
 Constructors. More...
 
void Reconfigure (fhicl::ParameterSet const &p) override
 Reconfigure function called by fhicl constructor. More...
 
void UpdateTimeStamp (DBTimeStamp_t ts)
 Update event time stamp. More...
 
bool Update (DBTimeStamp_t ts)
 Update Snapshot and inherited DBFolder if using database. Return true if updated. More...
 
const ElectronicsCalibElectronicsCalibObject (DBChannelID_t ch) const
 Retrieve electronics calibration information. More...
 
float Gain (DBChannelID_t ch) const override
 
float GainErr (DBChannelID_t ch) const override
 
float ShapingTime (DBChannelID_t ch) const override
 
float ShapingTimeErr (DBChannelID_t ch) const override
 
CalibrationExtraInfo const & ExtraInfo (DBChannelID_t ch) const override
 
bool UpdateFolder (DBTimeStamp_t ts)
 Return true if fFolder is successfully updated. More...
 
const std::string & URL () const
 Get connection information. More...
 
const std::string & FolderName () const
 
const std::string & Tag () const
 
const IOVTimeStampBegin () const
 Get Timestamp information. More...
 
const IOVTimeStampEnd () const
 

Protected Attributes

std::unique_ptr< DBFolderfFolder
 

Private Member Functions

bool DBUpdate () const
 Do actual database updates. More...
 
bool DBUpdate (DBTimeStamp_t ts) const
 

Private Attributes

DBTimeStamp_t fEventTimeStamp
 
DBTimeStamp_t fCurrentTimeStamp
 
DataSource::ds fDataSource
 
Snapshot< ElectronicsCalibfData
 

Detailed Description

Retrieves information: electronics calibrations, specifically gain and shaping time.

Configuration parameters

  • DatabaseRetrievalAlg (parameter set, mandatory): configuration for the database; see lariov::DatabaseRetrievalAlg
  • UseDB (boolean, default: false): retrieve information from the database
  • UseFile (boolean, default: false): retrieve information from a file; not implemented yet
  • DefaultGain (real, default: ): Gain returned when /UseDB/ and /UseFile/ parameters are false
  • DefaultGainErr (real, default: ): Gain uncertainty returned when /UseDB/ and /UseFile/ parameters are false
  • DefaultShapingTime (real, default: ): Shaping Time returned when /UseDB/ and /UseFile/ parameters are false
  • DefaultShapingTimeErr (real, default: ): Shaping Time uncertainty returned when /UseDB/ and /UseFile/ parameters are false

Definition at line 42 of file SIOVElectronicsCalibProvider.h.

Constructor & Destructor Documentation

lariov::SIOVElectronicsCalibProvider::SIOVElectronicsCalibProvider ( fhicl::ParameterSet const &  p)

Constructors.

Definition at line 14 of file SIOVElectronicsCalibProvider.cxx.

References Reconfigure().

15  : DatabaseRetrievalAlg(p.get<fhicl::ParameterSet>("DatabaseRetrievalAlg"))
16  , fEventTimeStamp(0)
18  {
19  this->Reconfigure(p);
20  }
DatabaseRetrievalAlg(const std::string &foldername, const std::string &url, const std::string &url2="", const std::string &tag="", bool usesqlite=false, bool testmode=false)
Constructors.
void Reconfigure(fhicl::ParameterSet const &p) override
Reconfigure function called by fhicl constructor.

Member Function Documentation

const IOVTimeStamp& lariov::DatabaseRetrievalAlg::Begin ( ) const
inlineinherited

Get Timestamp information.

Definition at line 63 of file DatabaseRetrievalAlg.h.

Referenced by lariov::SIOVPmtGainProvider::DBUpdate(), DBUpdate(), lariov::DetPedestalRetrievalAlg::DBUpdate(), and lariov::SIOVChannelStatusProvider::DBUpdate().

63 { return fFolder->CachedStart(); }
std::unique_ptr< DBFolder > fFolder
bool lariov::SIOVElectronicsCalibProvider::DBUpdate ( ) const
private

Do actual database updates.

Definition at line 131 of file SIOVElectronicsCalibProvider.cxx.

References fEventTimeStamp.

Referenced by ElectronicsCalibObject(), and Update().

132  {
133  return DBUpdate(fEventTimeStamp);
134  }
bool DBUpdate() const
Do actual database updates.
bool lariov::SIOVElectronicsCalibProvider::DBUpdate ( DBTimeStamp_t  ts) const
private

Definition at line 139 of file SIOVElectronicsCalibProvider.cxx.

References lariov::DatabaseRetrievalAlg::Begin(), lariov::DataSource::Database, lariov::DatabaseRetrievalAlg::End(), fCurrentTimeStamp, fData, fDataSource, lariov::DatabaseRetrievalAlg::fFolder, lariov::ElectronicsCalib::SetExtraInfo(), lariov::ElectronicsCalib::SetGain(), lariov::ElectronicsCalib::SetGainErr(), lariov::ElectronicsCalib::SetShapingTime(), lariov::ElectronicsCalib::SetShapingTimeErr(), and lariov::DatabaseRetrievalAlg::UpdateFolder().

140  {
141 
142  bool result = false;
144 
145  mf::LogInfo("SIOVElectronicsCalibProvider")
146  << "SIOVElectronicsCalibProvider::DBUpdate called with new timestamp.";
147 
148  fCurrentTimeStamp = ts;
149 
150  // Call non-const base class method.
151 
152  result = const_cast<SIOVElectronicsCalibProvider*>(this)->UpdateFolder(ts);
153  if (result) {
154  //DBFolder was updated, so now update the Snapshot
155  fData.Clear();
156  fData.SetIoV(this->Begin(), this->End());
157 
158  std::vector<DBChannelID_t> channels;
159  fFolder->GetChannelList(channels);
160  for (auto it = channels.begin(); it != channels.end(); ++it) {
161 
162  double gain, gain_err, shaping_time, shaping_time_err;
163  fFolder->GetNamedChannelData(*it, "gain", gain);
164  fFolder->GetNamedChannelData(*it, "gain_err", gain_err);
165  fFolder->GetNamedChannelData(*it, "shaping_time", shaping_time);
166  fFolder->GetNamedChannelData(*it, "shaping_time_err", shaping_time_err);
167 
168  ElectronicsCalib pg(*it);
169  pg.SetGain((float)gain);
170  pg.SetGainErr((float)gain_err);
171  pg.SetShapingTime((float)shaping_time);
172  pg.SetShapingTimeErr((float)shaping_time_err);
173  pg.SetExtraInfo(CalibrationExtraInfo("ElectronicsCalib"));
174 
175  fData.AddOrReplaceRow(pg);
176  }
177  }
178  }
179 
180  return result;
181  }
std::unique_ptr< DBFolder > fFolder
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
bool UpdateFolder(DBTimeStamp_t ts)
Return true if fFolder is successfully updated.
const IOVTimeStamp & End() const
SIOVElectronicsCalibProvider(fhicl::ParameterSet const &p)
Constructors.
const IOVTimeStamp & Begin() const
Get Timestamp information.
const ElectronicsCalib & lariov::SIOVElectronicsCalibProvider::ElectronicsCalibObject ( DBChannelID_t  ch) const

Retrieve electronics calibration information.

Definition at line 183 of file SIOVElectronicsCalibProvider.cxx.

References DBUpdate(), and fData.

Referenced by ExtraInfo(), Gain(), GainErr(), ShapingTime(), and ShapingTimeErr().

185  {
186  DBUpdate();
187  return fData.GetRow(ch);
188  }
bool DBUpdate() const
Do actual database updates.
const IOVTimeStamp& lariov::DatabaseRetrievalAlg::End ( ) const
inlineinherited
CalibrationExtraInfo const & lariov::SIOVElectronicsCalibProvider::ExtraInfo ( DBChannelID_t  ch) const
override

Definition at line 210 of file SIOVElectronicsCalibProvider.cxx.

References ElectronicsCalibObject(), and lariov::ElectronicsCalib::ExtraInfo().

211  {
212  return this->ElectronicsCalibObject(ch).ExtraInfo();
213  }
const ElectronicsCalib & ElectronicsCalibObject(DBChannelID_t ch) const
Retrieve electronics calibration information.
CalibrationExtraInfo const & ExtraInfo() const
const std::string& lariov::DatabaseRetrievalAlg::FolderName ( ) const
inlineinherited

Definition at line 59 of file DatabaseRetrievalAlg.h.

59 { return fFolder->FolderName(); }
std::unique_ptr< DBFolder > fFolder
float lariov::SIOVElectronicsCalibProvider::Gain ( DBChannelID_t  ch) const
override

Definition at line 190 of file SIOVElectronicsCalibProvider.cxx.

References ElectronicsCalibObject(), and lariov::ElectronicsCalib::Gain().

191  {
192  return this->ElectronicsCalibObject(ch).Gain();
193  }
const ElectronicsCalib & ElectronicsCalibObject(DBChannelID_t ch) const
Retrieve electronics calibration information.
float lariov::SIOVElectronicsCalibProvider::GainErr ( DBChannelID_t  ch) const
override

Definition at line 195 of file SIOVElectronicsCalibProvider.cxx.

References ElectronicsCalibObject(), and lariov::ElectronicsCalib::GainErr().

196  {
197  return this->ElectronicsCalibObject(ch).GainErr();
198  }
const ElectronicsCalib & ElectronicsCalibObject(DBChannelID_t ch) const
Retrieve electronics calibration information.
void lariov::SIOVElectronicsCalibProvider::Reconfigure ( fhicl::ParameterSet const &  p)
overridevirtual

Reconfigure function called by fhicl constructor.

Reimplemented from lariov::DatabaseRetrievalAlg.

Definition at line 22 of file SIOVElectronicsCalibProvider.cxx.

References lariov::DataSource::Database, lariov::DataSource::Default, fData, fDataSource, file, lariov::DataSource::File, Get, fhicl::ParameterSet::get(), lariov::IOVTimeStamp::MaxTimeStamp(), lariov::DatabaseRetrievalAlg::Reconfigure(), lariov::ChData::SetChannel(), lariov::ElectronicsCalib::SetExtraInfo(), lariov::ElectronicsCalib::SetGain(), lariov::ElectronicsCalib::SetGainErr(), lariov::ElectronicsCalib::SetShapingTime(), lariov::ElectronicsCalib::SetShapingTimeErr(), lariov::IOVTimeStamp::SetStamp(), lariov::IOVTimeStamp::Stamp(), lariov::IOVTimeStamp::SubStamp(), and tmp.

Referenced by SIOVElectronicsCalibProvider().

23  {
24 
25  this->DatabaseRetrievalAlg::Reconfigure(p.get<fhicl::ParameterSet>("DatabaseRetrievalAlg"));
26  fData.Clear();
27  IOVTimeStamp tmp = IOVTimeStamp::MaxTimeStamp();
28  tmp.SetStamp(tmp.Stamp() - 1, tmp.SubStamp());
29  fData.SetIoV(tmp, IOVTimeStamp::MaxTimeStamp());
30 
31  bool UseDB = p.get<bool>("UseDB", false);
32  bool UseFile = p.get<bool>("UseFile", false);
33  std::string fileName = p.get<std::string>("FileName", "");
34 
35  //priority: (1) use db, (2) use table, (3) use defaults
36  //If none are specified, use defaults
37  if (UseDB)
39  else if (UseFile)
41  else
43 
45  float default_gain = p.get<float>("DefaultGain");
46  float default_gain_err = p.get<float>("DefaultGainErr");
47  float default_st = p.get<float>("DefaultShapingTime");
48  float default_st_err = p.get<float>("DefaultShapingTimeErr");
49 
50  ElectronicsCalib defaultCalib(0);
51 
52  defaultCalib.SetGain(default_gain);
53  defaultCalib.SetGainErr(default_gain_err);
54  defaultCalib.SetShapingTime(default_st);
55  defaultCalib.SetShapingTimeErr(default_st_err);
56  defaultCalib.SetExtraInfo(CalibrationExtraInfo("ElectronicsCalib"));
57 
58  auto const& wireReadoutGeom = art::ServiceHandle<geo::WireReadout const>()->Get();
59  for (auto const& wid : wireReadoutGeom.Iterate<geo::WireID>()) {
60  DBChannelID_t ch = wireReadoutGeom.PlaneWireToChannel(wid);
61  defaultCalib.SetChannel(ch);
62  fData.AddOrReplaceRow(defaultCalib);
63  }
64  }
65  else if (fDataSource == DataSource::File) {
66  cet::search_path sp("FW_SEARCH_PATH");
67  std::string abs_fp = sp.find_file(fileName);
68  std::cout << "Using electronics calibrations from local file: " << abs_fp << "\n";
69  std::ifstream file(abs_fp);
70  if (!file) {
71  throw cet::exception("SIOVElectronicsCalibProvider")
72  << "File " << abs_fp << " is not found.";
73  }
74 
75  std::string line;
76  ElectronicsCalib dp(0);
77  while (std::getline(file, line)) {
78  size_t current_comma = line.find(',');
79  DBChannelID_t ch = (DBChannelID_t)std::stoi(line.substr(0, current_comma));
80  float gain = std::stof(
81  line.substr(current_comma + 1, line.find(',', current_comma + 1) - (current_comma + 1)));
82 
83  current_comma = line.find(',', current_comma + 1);
84  float gain_err = std::stof(
85  line.substr(current_comma + 1, line.find(',', current_comma + 1) - (current_comma + 1)));
86 
87  current_comma = line.find(',', current_comma + 1);
88  float shaping_time = std::stof(
89  line.substr(current_comma + 1, line.find(',', current_comma + 1) - (current_comma + 1)));
90 
91  current_comma = line.find(',', current_comma + 1);
92  float shaping_time_err = std::stof(line.substr(current_comma + 1));
93 
94  CalibrationExtraInfo info("ElectronicsCalib");
95 
96  dp.SetChannel(ch);
97  dp.SetGain(gain);
98  dp.SetGainErr(gain_err);
99  dp.SetShapingTime(shaping_time);
100  dp.SetShapingTimeErr(shaping_time_err);
101  dp.SetExtraInfo(info);
102 
103  fData.AddOrReplaceRow(dp);
104  }
105  }
106  else {
107  std::cout << "Using electronics calibrations from conditions database" << std::endl;
108  }
109  }
virtual void Reconfigure(fhicl::ParameterSet const &p)
Configure using fhicl::ParameterSet.
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
Definition: AddMC.C:8
Float_t tmp
Definition: plot.C:35
TFile * file
static IOVTimeStamp MaxTimeStamp()
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
float lariov::SIOVElectronicsCalibProvider::ShapingTime ( DBChannelID_t  ch) const
override

Definition at line 200 of file SIOVElectronicsCalibProvider.cxx.

References ElectronicsCalibObject(), and lariov::ElectronicsCalib::ShapingTime().

201  {
202  return this->ElectronicsCalibObject(ch).ShapingTime();
203  }
const ElectronicsCalib & ElectronicsCalibObject(DBChannelID_t ch) const
Retrieve electronics calibration information.
float lariov::SIOVElectronicsCalibProvider::ShapingTimeErr ( DBChannelID_t  ch) const
override

Definition at line 205 of file SIOVElectronicsCalibProvider.cxx.

References ElectronicsCalibObject(), and lariov::ElectronicsCalib::ShapingTimeErr().

206  {
207  return this->ElectronicsCalibObject(ch).ShapingTimeErr();
208  }
const ElectronicsCalib & ElectronicsCalibObject(DBChannelID_t ch) const
Retrieve electronics calibration information.
float ShapingTimeErr() const
const std::string& lariov::DatabaseRetrievalAlg::Tag ( ) const
inlineinherited

Definition at line 60 of file DatabaseRetrievalAlg.h.

60 { return fFolder->Tag(); }
std::unique_ptr< DBFolder > fFolder
bool lariov::SIOVElectronicsCalibProvider::Update ( DBTimeStamp_t  ts)

Update Snapshot and inherited DBFolder if using database. Return true if updated.

Definition at line 122 of file SIOVElectronicsCalibProvider.cxx.

References DBUpdate(), and fEventTimeStamp.

123  {
124 
125  fEventTimeStamp = ts;
126  return DBUpdate(ts);
127  }
bool DBUpdate() const
Do actual database updates.
bool lariov::DatabaseRetrievalAlg::UpdateFolder ( DBTimeStamp_t  ts)
inlineinherited

Return true if fFolder is successfully updated.

Definition at line 55 of file DatabaseRetrievalAlg.h.

Referenced by lariov::SIOVPmtGainProvider::DBUpdate(), DBUpdate(), lariov::DetPedestalRetrievalAlg::DBUpdate(), and lariov::SIOVChannelStatusProvider::DBUpdate().

55 { return fFolder->UpdateData(ts); }
std::unique_ptr< DBFolder > fFolder
void lariov::SIOVElectronicsCalibProvider::UpdateTimeStamp ( DBTimeStamp_t  ts)

Update event time stamp.

Definition at line 113 of file SIOVElectronicsCalibProvider.cxx.

References fEventTimeStamp.

Referenced by lariov::SIOVElectronicsCalibService::PreProcessEvent().

114  {
115  mf::LogInfo("SIOVElectronicsCalibProvider")
116  << "SIOVElectronicsCalibProvider::UpdateTimeStamp called.";
117  fEventTimeStamp = ts;
118  }
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
const std::string& lariov::DatabaseRetrievalAlg::URL ( ) const
inlineinherited

Get connection information.

Definition at line 58 of file DatabaseRetrievalAlg.h.

58 { return fFolder->URL(); }
std::unique_ptr< DBFolder > fFolder

Member Data Documentation

DBTimeStamp_t lariov::SIOVElectronicsCalibProvider::fCurrentTimeStamp
mutableprivate

Definition at line 75 of file SIOVElectronicsCalibProvider.h.

Referenced by DBUpdate().

Snapshot<ElectronicsCalib> lariov::SIOVElectronicsCalibProvider::fData
mutableprivate

Definition at line 79 of file SIOVElectronicsCalibProvider.h.

Referenced by DBUpdate(), ElectronicsCalibObject(), and Reconfigure().

DataSource::ds lariov::SIOVElectronicsCalibProvider::fDataSource
private

Definition at line 77 of file SIOVElectronicsCalibProvider.h.

Referenced by DBUpdate(), and Reconfigure().

DBTimeStamp_t lariov::SIOVElectronicsCalibProvider::fEventTimeStamp
private

Definition at line 74 of file SIOVElectronicsCalibProvider.h.

Referenced by DBUpdate(), Update(), and UpdateTimeStamp().


The documentation for this class was generated from the following files: