21 #include <boost/algorithm/string.hpp> 22 #include <boost/tokenizer.hpp> 45 for(
const auto& hitlist: *handle)
51 return fetchAll(boost::erase_tail_copy(tag,2),e);
62 mf::LogInfo(
"HitSub expression")<<
"parse string:\'"<<str<<
"\'";
64 boost::char_separator<char>
sep{
"",
"-+"};
65 boost::tokenizer<boost::char_separator<char>> tok{
str,
sep};
77 if(
t[0]==
'-'||
t[0]==
'+'){next_op=
t[0];
continue;}
80 stream<<next_op<<
" Hits["<<
t<<
"]= "<<hits.size()<<
"\n";
82 case '-': result.
subtract(hits);
break;
83 case '+': result.
add(hits);
break;
84 default:
throw std::logic_error(
"Wrong operation:"+
std::to_string(next_op));
87 stream<<
"Result="<<result.size();
110 void endJob()
override;
124 produces<novaddt::HitList>(
fLabel);
138 stream<<
" Hits statistics: ";
139 for(
const auto &
t:
stats){
140 stream<<
"\n "<<std::setw(25)<<
t.first<<
" = "<<std::setw(25)<<
t.second;
Expression(const std::string &expr)
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::vector< DAQHit > HitList
int stats(TString inputFilePath, Int_t firstRun, Int_t lastRun, Float_t thresh, TString myDet)
const std::map< std::string, uint64_t > & GetStatistics()
DEFINE_ART_MODULE(TestTMapFile)
void add(const AnyCollection &v)
ProductID put(std::unique_ptr< PROD > &&product)
novaddt::HitSet fetchAll(const std::string &tag, const art::Event &e)
novaddt::HitSet fetch(const std::string &tag, const art::Event &e)
a class for expression parsing.
novaddt::HitSet fetchOne(const std::string &tag, const art::Event &e)
HitSubtract(fhicl::ParameterSet const &p)
bool ends_with(const std::string &suffix, const std::string &s)
MaybeLogger_< ELseverityLevel::ELsev_success, false > LogDebug
std::map< std::string, uint64_t > fSeenHits
void Parse(const std::string &s)
novaddt::HitSet Eval(const art::Event &e)
void produce(art::Event &e) override
std::string to_string(ModuleType mt)
ValidHandle< PROD > getValidHandle(InputTag const &tag) const
void subtract(const AnyCollection &v)
std::vector< std::string > fTokens