CMS 3D CMS Logo

SiStripPopConHandlerUnitTestGain.h
Go to the documentation of this file.
1 #ifndef SISTRIPPOPCON_UNITTEST_HANDLER_GAIN_H
2 #define SISTRIPPOPCON_UNITTEST_HANDLER_GAIN_H
3 
9 
12 
16 
17 #include <sstream>
18 #include <vector>
19 #include <string>
20 #include <iostream>
21 #include <typeinfo>
22 #include <ctime>
23 
24 #include "CLHEP/Random/RandFlat.h"
25 #include "CLHEP/Random/RandGauss.h"
26 
30 
31 namespace popcon {
32 
33  template <typename T>
35  public:
36  enum DataType { UNDEFINED = 0, _Cabling = 1, _Pedestal = 2, _Noise = 3, _Threshold = 4, _BadStrip = 5, _Gain = 6 };
37 
38  //---------------------------------------
39  //
41  : m_name(pset.getUntrackedParameter<std::string>("name", "SiStripPopPopConConfigDbObjHandler")),
42  m_since(pset.getUntrackedParameter<uint32_t>("since", 5)),
43  m_debugMode(pset.getUntrackedParameter<bool>("debug", true)){};
44 
45  //---------------------------------------
46  //
48 
49  //---------------------------------------
50  //
51  void getNewObjects() override {
52  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << "[getNewObjects] for PopCon application " << m_name;
53 
54  if (m_debugMode) {
55  std::stringstream ss;
56  ss << "\n\n------- " << m_name << " - > getNewObjects\n";
57  if (this->tagInfo().size) {
58  //check whats already inside of database
59  ss << "got offlineInfo" << this->tagInfo().name << ", size " << this->tagInfo().size
60  << " , last object valid since " << this->tagInfo().lastInterval.since << " token "
61  << this->tagInfo().lastInterval.payloadId << "\n\n UserText " << this->userTextLog() << "\n LogDBEntry \n"
62  << this->logDBEntry().logId << "\n"
63  << this->logDBEntry().destinationDB << "\n"
64  << this->logDBEntry().provenance << "\n"
65  << this->logDBEntry().usertext << "\n"
66  << this->logDBEntry().iovtag << "\n"
67  << this->logDBEntry().iovtimetype << "\n"
68  << this->logDBEntry().payloadIdx << "\n"
69  << this->logDBEntry().payloadClass << "\n"
70  << this->logDBEntry().payloadToken << "\n"
71  << this->logDBEntry().exectime << "\n"
72  << this->logDBEntry().execmessage << "\n"
73  << "\n\n-- user text "
74  << this->logDBEntry().usertext.substr(this->logDBEntry().usertext.find_last_of('@'));
75  } else {
76  ss << " First object for this tag ";
77  }
78  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << ss.str();
79  }
80  if (isTransferNeeded())
82 
83  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
84  << "[getNewObjects] for PopCon application " << m_name << " Done\n--------------\n";
85  }
86 
87  //---------------------------------------
88  //
89  std::string id() const override { return m_name; }
90 
91  private:
92  //methods
93 
95  if (typeid(T) == typeid(SiStripFedCabling)) {
96  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
97  << "[getDataType] for PopCon application " << m_name << " " << typeid(T).name();
98  return _Cabling;
99  }
100  return UNDEFINED;
101  }
102 
103  //---------------------------------------
104  //
106  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << "[isTransferNeeded] checking for transfer" << std::endl;
107  std::stringstream ss_logdb, ss;
108  std::stringstream ss1;
109 
110  //get log information from previous upload
111  if (this->tagInfo().size)
112  ss_logdb << this->logDBEntry().usertext.substr(this->logDBEntry().usertext.find_last_of('@'));
113  else
114  ss_logdb << "";
115 
116  ss << "@ " << clock();
117 
118  if (!strcmp(ss.str().c_str(), ss_logdb.str().c_str())) {
119  //string are equal, no need to do transfer
120  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
121  << "[isTransferNeeded] the selected conditions are already uploaded in the last iov ("
122  << this->tagInfo().lastInterval.since << ") open for the object " << this->logDBEntry().payloadClass
123  << " in the db " << this->logDBEntry().destinationDB << " parameters: " << ss.str()
124  << "\n NO TRANSFER NEEDED";
125  return false;
126  }
127  this->m_userTextLog = ss.str();
128  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
129  << "[isTransferNeeded] the selected conditions will be uploaded: " << ss.str() << "\n A- " << ss.str()
130  << "\n B- " << ss_logdb.str() << "\n Fine";
131 
132  return true;
133  }
134 
135  //---------------------------------------
136  //
137  void setForTransfer() {
138  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
139  << "[setForTransfer] " << m_name << " getting data to be transferred " << std::endl;
140 
141  T* obj = nullptr;
142 
143  fillObject(obj);
144 
145  if (!this->tagInfo().size)
146  m_since = 1;
147  else if (m_debugMode)
148  m_since = this->tagInfo().lastInterval.since + 1;
149 
150  if (obj != nullptr) {
151  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << "setting since = " << m_since << std::endl;
152  this->m_to_transfer.push_back(std::make_pair(obj, m_since));
153  } else {
154  edm::LogError("SiStripPopPopConConfigDbObjHandler")
155  << "[setForTransfer] " << m_name << " : NULL pointer of obj " << typeid(T).name()
156  << " reported by SiStripCondObjBuilderFromDb\n Transfer aborted" << std::endl;
157  }
158  }
159 
160  private:
161  // data members
163  unsigned long long m_since;
166 
167  void fillObject(T*& obj) {
168  std::cout << __LINE__ << std::endl;
169 
170  if (typeid(T) == typeid(SiStripApvGain)) {
171  std::cout << __LINE__ << std::endl;
172 
173  obj = new SiStripApvGain();
174 
175  const auto detInfo =
177  int count = -1;
178  for (const auto& it : detInfo.getAllData()) {
179  count++;
180  //Generate Gains for det detid
181  SiStripApvGain::InputVector inputApvGain;
182  for (int apv = 0; apv < it.second.nApvs; ++(++apv)) {
183  float MeanTick = 555.;
184  float RmsTick = 55.;
185 
186  float tick = CLHEP::RandGauss::shoot(MeanTick, RmsTick);
187 
188  if (count < 6)
189  edm::LogInfo("SiStripGainBuilder") << "detid " << it.first << " \t"
190  << " APV " << apv << " \t" << tick << " \t" << std::endl;
191  inputApvGain.push_back(tick); //APV0
192  inputApvGain.push_back(tick); //APV1
193  }
194 
195  SiStripApvGain::Range gain_range(inputApvGain.begin(), inputApvGain.end());
196  if (!obj->put(it.first, gain_range))
197  edm::LogError("SiStripGainBuilder") << "[SiStripGainBuilder::analyze] detid already exists" << std::endl;
198  }
199  }
200  }
201  };
202 
203 } // namespace popcon
204 
205 #endif //SISTRIPPOPCON_UNITTEST_HANDLER_H
PopConSourceHandler.h
SiStripPartition.h
popcon::SiStripPopConHandlerUnitTestGain::id
std::string id() const override
Definition: SiStripPopConHandlerUnitTestGain.h:89
electrons_cff.bool
bool
Definition: electrons_cff.py:366
popcon::PopConSourceHandler::m_to_transfer
OldContainer m_to_transfer
Definition: PopConSourceHandler.h:162
MessageLogger.h
popcon::SiStripPopConHandlerUnitTestGain::fillObject
void fillObject(T *&obj)
Definition: SiStripPopConHandlerUnitTestGain.h:167
popcon::SiStripPopConHandlerUnitTestGain::_Threshold
Definition: SiStripPopConHandlerUnitTestGain.h:36
gather_cfg.cout
cout
Definition: gather_cfg.py:144
SiStripCondObjBuilderFromDb.h
popcon::SiStripPopConHandlerUnitTestGain::m_debugMode
bool m_debugMode
Definition: SiStripPopConHandlerUnitTestGain.h:164
popcon::SiStripPopConHandlerUnitTestGain::setForTransfer
void setForTransfer()
Definition: SiStripPopConHandlerUnitTestGain.h:137
SiStripNoises.h
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiStripDbParams.h
SiStripFedCabling
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses,...
Definition: SiStripFedCabling.h:25
cond::LogDBEntry_t::execmessage
std::string execmessage
Definition: Types.h:98
SiStripDetInfoFileReader::read
SiStripDetInfo read(std::string filePath)
Definition: SiStripDetInfoFileReader.cc:11
cond::TagInfo_t::name
std::string name
Definition: Types.h:72
popcon::SiStripPopConHandlerUnitTestGain::_Noise
Definition: SiStripPopConHandlerUnitTestGain.h:36
popcon::SiStripPopConHandlerUnitTestGain
Definition: SiStripPopConHandlerUnitTestGain.h:34
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
edm::FileInPath
Definition: FileInPath.h:61
popcon::SiStripPopConHandlerUnitTestGain::getNewObjects
void getNewObjects() override
Definition: SiStripPopConHandlerUnitTestGain.h:51
Service.h
cond::LogDBEntry_t::provenance
std::string provenance
Definition: Types.h:89
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
SiStripDetInfoFileReader.h
SiStripApvGain.h
popcon::SiStripPopConHandlerUnitTestGain::SiStripPopConHandlerUnitTestGain
SiStripPopConHandlerUnitTestGain(const edm::ParameterSet &pset)
Definition: SiStripPopConHandlerUnitTestGain.h:40
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
funct::true
true
Definition: Factorize.h:173
cond::LogDBEntry_t::payloadToken
std::string payloadToken
Definition: Types.h:96
edm::ParameterSet
Definition: ParameterSet.h:47
popcon::PopConSourceHandler::tagInfo
cond::TagInfo_t const & tagInfo() const
Definition: PopConSourceHandler.h:78
cond::Iov_t::payloadId
Hash payloadId
Definition: Types.h:55
cond::LogDBEntry_t::usertext
std::string usertext
Definition: Types.h:90
cond::Iov_t::since
Time_t since
Definition: Types.h:53
popcon::SiStripPopConHandlerUnitTestGain::UNDEFINED
Definition: SiStripPopConHandlerUnitTestGain.h:36
edm::Service< SiStripCondObjBuilderFromDb >
cond::LogDBEntry_t::iovtag
std::string iovtag
Definition: Types.h:91
popcon::SiStripPopConHandlerUnitTestGain::isTransferNeeded
bool isTransferNeeded()
Definition: SiStripPopConHandlerUnitTestGain.h:105
cond::LogDBEntry_t::destinationDB
std::string destinationDB
Definition: Types.h:88
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
popcon::PopConSourceHandler
Definition: PopConSourceHandler.h:30
popcon::SiStripPopConHandlerUnitTestGain::_Pedestal
Definition: SiStripPopConHandlerUnitTestGain.h:36
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
popcon::SiStripPopConHandlerUnitTestGain::m_since
unsigned long long m_since
Definition: SiStripPopConHandlerUnitTestGain.h:163
popcon::SiStripPopConHandlerUnitTestGain::getDataType
DataType getDataType()
Definition: SiStripPopConHandlerUnitTestGain.h:94
cond::TagInfo_t::lastInterval
Iov_t lastInterval
Definition: Types.h:73
popcon::SiStripPopConHandlerUnitTestGain::condObjBuilder
edm::Service< SiStripCondObjBuilderFromDb > condObjBuilder
Definition: SiStripPopConHandlerUnitTestGain.h:165
popcon::SiStripPopConHandlerUnitTestGain::DataType
DataType
Definition: SiStripPopConHandlerUnitTestGain.h:36
cond::LogDBEntry_t::iovtimetype
std::string iovtimetype
Definition: Types.h:92
cond::LogDBEntry_t::payloadClass
std::string payloadClass
Definition: Types.h:95
std
Definition: JetResolutionObject.h:76
popcon
Definition: Exception.h:6
T
long double T
Definition: Basic3DVectorLD.h:48
SiStripApvGain::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripApvGain.h:28
SiStripDetInfoFileReader::kDefaultFile
constexpr static char const *const kDefaultFile
Definition: SiStripDetInfoFileReader.h:10
cond::LogDBEntry_t::logId
unsigned long long logId
Definition: Types.h:87
ParameterSetfwd.h
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
popcon::SiStripPopConHandlerUnitTestGain::_BadStrip
Definition: SiStripPopConHandlerUnitTestGain.h:36
popcon::SiStripPopConHandlerUnitTestGain::m_name
std::string m_name
Definition: SiStripPopConHandlerUnitTestGain.h:162
ParameterSet.h
popcon::SiStripPopConHandlerUnitTestGain::~SiStripPopConHandlerUnitTestGain
~SiStripPopConHandlerUnitTestGain() override
Definition: SiStripPopConHandlerUnitTestGain.h:47
popcon::SiStripPopConHandlerUnitTestGain::_Cabling
Definition: SiStripPopConHandlerUnitTestGain.h:36
Types.h
SiStripApvGain
Definition: SiStripApvGain.h:25
edm::Log
Definition: MessageLogger.h:70
cond::LogDBEntry_t::payloadIdx
unsigned int payloadIdx
Definition: Types.h:93
popcon::PopConSourceHandler::m_userTextLog
std::string m_userTextLog
Definition: PopConSourceHandler.h:168
popcon::SiStripPopConHandlerUnitTestGain::_Gain
Definition: SiStripPopConHandlerUnitTestGain.h:36
SiStripApvGain::InputVector
std::vector< float > InputVector
Definition: SiStripApvGain.h:32
popcon::PopConSourceHandler::logDBEntry
cond::LogDBEntry_t const & logDBEntry() const
Definition: PopConSourceHandler.h:84
popcon::PopConSourceHandler::userTextLog
std::string const & userTextLog() const
Definition: PopConSourceHandler.h:111
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
cond::TagInfo_t::size
size_t size
Definition: Types.h:74
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
cond::LogDBEntry_t::exectime
std::string exectime
Definition: Types.h:97