9 const std::string chainNameStr{
"ChainName"};
10 const std::string chainCounterStr{
"ChainCounter"};
11 const std::string itemNameStr{
"ItemName"};
12 const std::string prescaleStr{
"Prescale"};
13 const std::string lvl1PrescaleStr{
"Lvl1Prescale"};
14 const std::string lowerChainNameStr{
"LowerChainName"};
15 const std::string validStr{
"Valid"};
16 const std::string beforePrescaleStr{
"BeforePrescale"};
17 const std::string afterPrescaleStr{
"AfterPrescale"};
18 const std::string l1AcceptStr{
"L1Accept"};
19 const std::string lbAvInstLumiStr{
"LBAvInstLumi"};
20 const std::string lbAvEvtsPerBXStr{
"LBAvEvtsPerBX"};
47 cool::IDatabaseSvc& databasesvc = cool::DatabaseSvcFactory::databaseService();
50 coral::IConnectionServiceConfiguration& csconfig=
m_coralsvc.configuration();
51 csconfig.setReplicaSortingAlgorithm(*
m_repsort);
58 catch (std::exception&e) {
69 if (inconn.find(
'/')==std::string::npos) {
70 return "sqlite://X;schema=mycool.db;dbname="+inconn;
79 size_t found = triggername.find_first_of(
'_');
80 if(found != std::string::npos){
81 std::string s_lvl = triggername.substr(0,found);
82 if(s_lvl ==
"EF")
return 3;
83 if(s_lvl ==
"L2")
return 2;
84 if(s_lvl ==
"L1")
return 1;
85 if(s_lvl ==
"HLT")
return 2;
100 cool::ValidityKey
run = runnum;
107 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
108 cool::IObjectIteratorPtr itr = folder_ptr->browseObjects(
m_VKstart,
m_VKstop,
id);
111 if (itr->goToNext()) {
112 const cool::IRecord& payload=itr->currentRef().payload();
113 return payload[lvl1PrescaleStr].data<cool::Int32>();
123 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
124 cool::IObjectIteratorPtr itr = folder_ptr->browseObjects(
m_VKstart,
m_VKstop,
id);
127 if (itr->goToNext()) {
128 const cool::IRecord& payload=itr->currentRef().payload();
129 return payload[prescaleStr].data<cool::Float>();
140 if (trigger ==
"")
return UINT_MAX;
142 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
143 cool::IObjectIteratorPtr obj_itr=folder_ptr->browseObjects(
m_VKstart,
m_VKstart, cool::ChannelSelection::all());
145 while (obj_itr->goToNext()){
146 const cool::IRecord& payload=obj_itr->currentRef().payload();
150 return obj_itr->currentRef().channelId();
154 m_logger <<
Root::kERROR <<
"Couldn't find L1 trigger [" << trigger <<
"] in folder [" << folder_name <<
"]" << Root::GEndl;
163 if (lumimethod ==
"")
return UINT_MAX;
164 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
165 if(folder_ptr->existsChannel(lumimethod)){
167 return folder_ptr->channelId(lumimethod);
169 m_logger <<
Root::kWARNING <<
"Couldn't find lumimethod: " << lumimethod <<
" in COOL database!" << Root::GEndl;
178 if (trigger ==
"")
return UINT_MAX;
179 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
180 cool::IObjectIteratorPtr obj_itr=folder_ptr->browseObjects(
m_VKstart,
m_VKstart, cool::ChannelSelection::all());
183 while (obj_itr->goToNext()){
184 const cool::IRecord& payload=obj_itr->currentRef().payload();
187 return payload[chainCounterStr].data<cool::UInt32>();
191 m_logger <<
Root::kERROR <<
"Couldn't find HLT trigger [" << trigger <<
"] in folder [" << folder_name <<
"]" << Root::GEndl;
199 m_logger <<
Root::kINFO <<
"Listing available triggers [triggername(prescale, chanid)]: " << Root::GEndl;
200 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
201 cool::IObjectIteratorPtr obj_itr=folder_ptr->browseObjects(
m_VKstart,
m_VKstart, cool::ChannelSelection::all());
202 while (obj_itr->goToNext()){
203 const cool::IRecord& payload=obj_itr->currentRef().payload();
212 m_logger <<
Root::kINFO <<
"Listing available triggers [triggername(prescale, chanid)]: " << Root::GEndl;
214 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
215 cool::IObjectIteratorPtr obj_itr2=folder_ptr->browseObjects(
m_VKstart,
m_VKstart, cool::ChannelSelection::all());
216 while (obj_itr2->goToNext()){
217 const cool::IRecord& payload2=obj_itr2->currentRef().payload();
218 m_logger <<
Root::kINFO << payload2[chainNameStr].data<std::string>() <<
"(" << payload2[prescaleStr].
data<cool::Float>() <<
", " << payload2[chainCounterStr].data<cool::UInt32>() <<
"), ";
231 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
232 cool::IObjectIteratorPtr obj_itr=folder_ptr->browseObjects(
m_VKstart,
m_VKstart, cool::ChannelSelection::all());
234 while (obj_itr->goToNext()){
235 const cool::IRecord& payload=obj_itr->currentRef().payload();
238 return payload[lowerChainNameStr].data<std::string>();
243 m_logger <<
Root::kERROR <<
"Couldn't find HLT trigger [" << trigger <<
"] in folder [" << folder_name <<
"]" << Root::GEndl;
251std::map<cool::ValidityKey, CoolQuery::LumiFolderData>
254 std::map<cool::ValidityKey, LumiFolderData> mymap;
257 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
258 if (!folder_ptr->existsChannel(
id)) {
259 m_logger <<
Root::kWARNING <<
"Lumi channel id " <<
id <<
" does not exist in database " << folder_name <<
"!" << Root::GEndl;
263 cool::IObjectIteratorPtr itr;
264 if(folder_ptr->existsUserTag(tag)) {
271 while (itr->goToNext()) {
272 const cool::IRecord& payload=itr->currentRef().payload();
273 folderData.
LBAvInstLumi = payload[lbAvInstLumiStr].data<
float>();
274 folderData.
LBAvEvtsPerBX = payload[lbAvEvtsPerBXStr].data<
float>();
275 folderData.
Valid = payload[validStr].data<cool::UInt32>();
276 mymap.insert( std::pair<cool::ValidityKey, LumiFolderData>(itr->currentRef().since(), folderData));
284std::map<cool::ValidityKey, CoolQuery::L1CountFolderData>
287 std::map<cool::ValidityKey, L1CountFolderData> mymap;
290 cool::IFolderPtr folder_ptr =
m_sourceDbPtr->getFolder(folder_name);
291 if (!folder_ptr->existsChannel(
id)) {
292 m_logger <<
Root::kWARNING <<
"Lumi channel id " <<
id <<
" does not exist in database " << folder_name <<
"!" << Root::GEndl;
296 cool::IObjectIteratorPtr itr;
300 while (itr->goToNext()) {
301 const cool::IRecord& payload=itr->currentRef().payload();
302 folderData.
BeforePrescale = payload[beforePrescaleStr].data<cool::UInt63>();
303 folderData.
AfterPrescale = payload[afterPrescaleStr].data<cool::UInt63>();
304 folderData.
L1Accept = payload[l1AcceptStr].data<cool::UInt63>();
305 mymap.insert( std::pair<cool::ValidityKey, L1CountFolderData>(itr->currentRef().since(), folderData));
char data[hepevt_bytes_allocation_ATLAS]
cool::ChannelId getHLTChannelId(const std::string &trigger, const std::string &folder_name)
void setIOV(const cool::ValidityKey start, const cool::ValidityKey stop)
CoolQuery(const std::string &database, const std::string &triggerchain)
std::map< cool::ValidityKey, L1CountFolderData > getL1CountFolderData(const std::string &folder_name, const cool::ChannelId &id)
unsigned int getTriggerLevel(const std::string &triggername)
coral::ConnectionService m_coralsvc
cool::IDatabasePtr m_sourceDbPtr
Root::TMsgLogger m_logger
cool::Float getHLTPrescaleFromChannelId(const std::string &folder_name, const cool::ChannelId &id)
void setIOVForRun(unsigned int runnum)
ReplicaSorter * m_repsort
void printHLTTriggers(const std::string &folder_name)
std::map< cool::ValidityKey, LumiFolderData > getLumiFolderData(const std::string &folder_name, const std::string &tag, const cool::ChannelId &id)
cool::ValidityKey m_VKstart
cool::Int32 getL1PrescaleFromChannelId(const std::string &folder_name, const cool::ChannelId &id)
void printL1Triggers(const std::string &folder_name)
std::string m_triggerchain
cool::ChannelId getL1ChannelId(const std::string &trigger, const std::string &folder_name)
std::string transConn(const std::string &inconn)
cool::ChannelId getLumiChannelId(const std::string &lumimethod, const std::string &folder_name)
std::string getHLTLowerChainName(const std::string &trigger, const std::string &folder_name)
cool::ValidityKey m_VKstop
static std::vector< std::string > triggerchain
cool::UInt63 AfterPrescale
cool::UInt63 BeforePrescale
int run(int argc, char *argv[])