46 void atomic_sum_double(std::atomic<double>& oValue,
double element) {
47 double v = oValue.load();
48 double sum = v+element;
49 while( not oValue.compare_exchange_strong(v, sum) ) {
58 edm::LuminosityBlockCache<Sums>> {
87 filterPath(iConfig.getParameter<
std::
string>(
"filterPath")),
89 thisProcess(),pathIndex(100000)
98 for (
unsigned int i = 0;
i < theNames.size();
i++ ) {
103 edm::LogError(
"ServiceNotAvailable") <<
"TriggerNamesServive not available, no filter information stored";
108 produces<GenFilterInfo, edm::Transition::EndLuminosityBlock>();
133 if (!genEventScale.
isValid())
return;
139 unsigned int nSize = (*trigR).size();
145 atomic_sum_double(sums->sumpass_w_, weight);
146 atomic_sum_double(sums->sumpass_w2_, weight*weight);
148 atomic_sum_double(sums->sumtotal_w_, weight);
149 atomic_sum_double(sums->sumtotal_w2_, weight*weight);
153 sums->numEventsPassPos_++;
154 sums->numEventsTotalPos_++;
158 sums->numEventsPassNeg_++;
159 sums->numEventsTotalNeg_++;
165 atomic_sum_double(sums->sumtotal_w_,weight);
166 atomic_sum_double(sums->sumtotal_w2_, weight*weight);
169 sums->numEventsTotalPos_++;
171 sums->numEventsTotalNeg_++;
179 std::shared_ptr<Sums>
181 return std::make_shared<Sums>();
190 auto sums = luminosityBlockCache(iLumi.
index());
191 std::unique_ptr<GenFilterInfo> thisProduct(
new GenFilterInfo(
192 sums->numEventsPassPos_,
193 sums->numEventsPassNeg_,
194 sums->numEventsTotalPos_,
195 sums->numEventsTotalNeg_,
bool wasrun() const
Was at least one path run?
std::string const & getProcessName() const
std::atomic< unsigned int > numEventsPassNeg_
LuminosityBlockIndex index() const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::atomic< unsigned int > numEventsTotalPos_
bool accept() const
Has at least one path accepted the event?
std::shared_ptr< Sums > globalBeginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) const override
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
std::atomic< unsigned int > numEventsPassPos_
edm::EDGetTokenT< GenEventInfoProduct > genEventInfoToken_
#define DEFINE_FWK_MODULE(type)
std::atomic< double > sumpass_w2_
void put(std::unique_ptr< PROD > product)
Put a new product.
std::atomic< double > sumpass_w_
void globalEndLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) const override
std::atomic< unsigned int > numEventsTotalNeg_
LuminosityBlock const & getLuminosityBlock() const
std::atomic< double > sumtotal_w_
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
GenFilterEfficiencyProducer(const edm::ParameterSet &)
Strings const & getTrigPaths() const
void globalEndLuminosityBlockProduce(edm::LuminosityBlock &, const edm::EventSetup &) const override
~GenFilterEfficiencyProducer() override
std::atomic< double > sumtotal_w2_
edm::service::TriggerNamesService * tns_