24 for(std::vector<edm::EventAuxiliary>::const_reverse_iterator eaux=veaux.rbegin();eaux!=veaux.rend();eaux++) {
25 if(eaux!=veaux.rbegin()) {
32 const long long orbitoffset,
const int bxoffset):
36 std::map<int,TinyEvent> tmpmap;
38 for(L1AcceptBunchCrossingCollection::const_iterator l1abc=l1abcc.begin();l1abc!=l1abcc.end();++l1abc) {
41 if(orbitoffset < (
long long)l1abc->orbitNumber()) {
42 unsigned int neworbit = l1abc->orbitNumber() - orbitoffset;
43 int newbx = l1abc->bunchCrossing() - bxoffset;
58 if(l1abc->eventType()!=0) {
60 tmpmap[l1abc->l1AcceptOffset()]=tmpse;
63 edm::LogWarning(
"L1AcceptBunchCrossingNoType") <<
"L1AcceptBunchCrossing with no type found: ";
64 for(L1AcceptBunchCrossingCollection::const_iterator debu=l1abcc.begin();debu!=l1abcc.end();++debu) {
70 edm::LogError(
"L1AcceptBunchCrossingOffsetTooLarge") <<
" Too large orbit offset "
72 << l1abc->orbitNumber();
76 edm::LogInfo(
"L1AcceptBunchCrossingNegativeEvent") <<
"L1AcceptBunchCrossing with negative event: ";
77 for(L1AcceptBunchCrossingCollection::const_iterator debu=l1abcc.begin();debu!=l1abcc.end();++debu) {
83 if(tmpmap.find(0)!=tmpmap.end()) {
91 while(tmpmap.find(counter)!=tmpmap.end()) {
93 if(tmpmap[counter+1].
deltaBX(tmpmap[counter]) > 0) {
94 _prevse.push_back(tmpmap[counter]);
98 edm::LogWarning(
"L1AcceptBunchCrossingNotInOrder") <<
"L1AcceptBunchCrossing not in order: orbit "
99 <<
event.orbitNumber() <<
" BX " <<
event.bunchCrossing()
100 <<
" orbit offset " << orbitoffset <<
" bx offset " << bxoffset <<
" :";
101 for(L1AcceptBunchCrossingCollection::const_iterator debu=l1abcc.begin();debu!=l1abcc.end();++debu) {
110 edm::LogWarning(
"L1AcceptBunchCrossingNoCollection") <<
" L1AcceptBunchCrossing with offset=0 not found "
111 <<
" likely L1ABCCollection is empty ";
150 for(std::vector<TinyEvent>::const_iterator
ev=he._prevse.begin();
ev!=he._prevse.end();
ev++) {
151 if(!
add(*
ev,idepth))
return 0;
158 bool isfuture = (idepth <0);
159 const unsigned int adepth =
abs(idepth);
165 if(adepth==0)
return 0;
166 if(
_prevse.size()>= adepth)
return 0;
195 if(ev==0)
return this;
211 if(ev2==ev1)
return 0;
213 if(ev2<ev1 && ev1<=
_prevse.size()) {
263 if(ev2==ev1 && ev1<=
_prevse.size()) {
268 if(ev2<ev1 && ev1<=
_prevse.size()) {
unsigned int depth() const
long long absoluteBXinCycle(const int bx0) const
EventNumber_t event() const
long long deltaBX() const
const unsigned int orbit() const
const TinyEvent * get(const unsigned int ev) const
unsigned long long EventNumber_t
long long absoluteBXinCycle(const unsigned int ev1, const int bx0) const
bool equal(const T &first, const T &second)
std::vector< TinyEvent > _prevse
Abs< T >::type abs(const T &t)
std::vector< L1AcceptBunchCrossing > L1AcceptBunchCrossingCollection
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
int add(const EventWithHistory &he, const int idepth)
TinyEvent & operator=(const TinyEvent &se)
long long absoluteBX() const
long long deltaBX(const TinyEvent &se) const
const edm::EventNumber_t event() const
int isNextOf(const TinyEvent &se) const
long long deltaBXinCycle(const unsigned int ev2, const unsigned int ev1, const int bx0) const
bool isFutureHistory() const
long long absoluteBX() const
static std::atomic< unsigned int > counter
edm::EventNumber_t _event
EventWithHistory & operator=(const EventWithHistory &he)
int operator==(const TinyEvent &other) const
int operator==(const EventWithHistory &other) const
tuple size
Write out results.
long long deltaBXinCycle(const TinyEvent &se, const int bx0) const