CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
EventWithHistory Class Reference

#include <EventWithHistory.h>

Inheritance diagram for EventWithHistory:
TinyEvent

Public Member Functions

long long absoluteBX (const unsigned int ev1) const
 
long long absoluteBX () const
 
long long absoluteBXinCycle (const unsigned int ev1, const int bx0) const
 
long long absoluteBXinCycle (const int bx0) const
 
int add (const EventWithHistory &he, const int idepth)
 
int add (const TinyEvent &he, const int idepth)
 
const int bx () const
 
long long deltaBX (const unsigned int ev2, const unsigned int ev1) const
 
long long deltaBX (const unsigned int ev1) const
 
long long deltaBX () const
 
long long deltaBX (const TinyEvent &se) const
 
long long deltaBXinCycle (const unsigned int ev2, const unsigned int ev1, const int bx0) const
 
long long deltaBXinCycle (const unsigned int ev1, const int bx0) const
 
long long deltaBXinCycle (const int bx0) const
 
long long deltaBXinCycle (const TinyEvent &se, const int bx0) const
 
unsigned int depth () const
 
const edm::EventNumber_t event () const
 
 EventWithHistory ()
 
 EventWithHistory (const TinyEvent &se)
 
 EventWithHistory (const edm::EventNumber_t event, const int orbit, const int bx)
 
 EventWithHistory (const edm::EventNumber_t event, const unsigned int orbit, const int bx)
 
 EventWithHistory (const edm::Event &event)
 
 EventWithHistory (const std::vector< edm::EventAuxiliary > &he)
 
 EventWithHistory (const edm::Event &event, const L1AcceptBunchCrossingCollection &l11bcc, const long long orbitoffset=0, const int bxoffset=0)
 
 EventWithHistory (const EventWithHistory &he)
 
const TinyEventget (const unsigned int ev) const
 
bool isFutureHistory () const
 
EventWithHistoryoperator= (const EventWithHistory &he)
 
int operator== (const EventWithHistory &other) const
 
const unsigned int orbit () const
 
- Public Member Functions inherited from TinyEvent
long long absoluteBX () const
 
long long absoluteBXinCycle (const int bx0) const
 
long long deltaBX (const TinyEvent &se) const
 
long long deltaBXinCycle (const TinyEvent &se, const int bx0) const
 
int isNextOf (const TinyEvent &se) const
 
int operator< (const TinyEvent &other) const
 
TinyEventoperator= (const TinyEvent &se)
 
int operator== (const TinyEvent &other) const
 
 TinyEvent ()
 
 TinyEvent (const edm::EventNumber_t event, const int orbit, const int bx)
 
 TinyEvent (const edm::EventNumber_t event, const unsigned int orbit, const int bx)
 
 TinyEvent (const TinyEvent &se)
 
 TinyEvent (const edm::Event &event)
 
 TinyEvent (const edm::EventAuxiliary &eaux)
 

Private Attributes

std::vector< TinyEvent_prevse
 

Additional Inherited Members

- Public Attributes inherited from TinyEvent
unsigned int _bx
 
edm::EventNumber_t _event
 
unsigned int _orbit
 

Detailed Description

Definition at line 16 of file EventWithHistory.h.

Constructor & Destructor Documentation

EventWithHistory::EventWithHistory ( )

Definition at line 8 of file EventWithHistory.cc.

8 : TinyEvent(), _prevse() { }
std::vector< TinyEvent > _prevse
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const TinyEvent se)
explicit

Definition at line 10 of file EventWithHistory.cc.

10 : TinyEvent(se), _prevse() { }
std::vector< TinyEvent > _prevse
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const edm::EventNumber_t  event,
const int  orbit,
const int  bx 
)
explicit

Definition at line 12 of file EventWithHistory.cc.

12  :
const unsigned int orbit() const
std::vector< TinyEvent > _prevse
const int bx() const
const edm::EventNumber_t event() const
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const edm::EventNumber_t  event,
const unsigned int  orbit,
const int  bx 
)
explicit

Definition at line 15 of file EventWithHistory.cc.

15  :
const unsigned int orbit() const
std::vector< TinyEvent > _prevse
const int bx() const
const edm::EventNumber_t event() const
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const edm::Event event)
explicit

Definition at line 18 of file EventWithHistory.cc.

18  :
19  TinyEvent(event), _prevse() { }
std::vector< TinyEvent > _prevse
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const std::vector< edm::EventAuxiliary > &  he)

Definition at line 21 of file EventWithHistory.cc.

References _prevse.

21  :
22  TinyEvent((veaux.size()>0) ? veaux[veaux.size()-1]: TinyEvent()), _prevse()
23 {
24  for(std::vector<edm::EventAuxiliary>::const_reverse_iterator eaux=veaux.rbegin();eaux!=veaux.rend();eaux++) {
25  if(eaux!=veaux.rbegin()) {
26  _prevse.push_back(*eaux);
27  }
28  }
29 }
std::vector< TinyEvent > _prevse
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const edm::Event event,
const L1AcceptBunchCrossingCollection l11bcc,
const long long  orbitoffset = 0,
const int  bxoffset = 0 
)

Definition at line 31 of file EventWithHistory.cc.

References _prevse, counter, deltaBX(), edm::EventID::event(), edm::EventBase::id(), and TinyEvent::operator=().

32  :
33  TinyEvent(), _prevse()
34 {
35 
36  std::map<int,TinyEvent> tmpmap;
37 
38  for(L1AcceptBunchCrossingCollection::const_iterator l1abc=l1abcc.begin();l1abc!=l1abcc.end();++l1abc) {
39  if(event.id().event() > (edm::EventNumber_t)(-1*l1abc->l1AcceptOffset()) ) {
40  edm::EventNumber_t evnumb = event.id().event()+l1abc->l1AcceptOffset();
41  if(orbitoffset < (long long)l1abc->orbitNumber()) {
42  unsigned int neworbit = l1abc->orbitNumber() - orbitoffset;
43  int newbx = l1abc->bunchCrossing() - bxoffset;
44 
45  /*
46  the lines below assumes that the BX number is between 0 and 3563. If this is not the case it will jump to 0 and to the next orbit in case of
47  evets with BX=3564
48  */
49  while(newbx > 3563) {
50  ++neworbit;
51  newbx -= 3564;
52  }
53  while(newbx < 0) {
54  --neworbit;
55  newbx += 3564;
56  }
57 
58  if(l1abc->eventType()!=0) {
59  TinyEvent tmpse(evnumb,neworbit,newbx);
60  tmpmap[l1abc->l1AcceptOffset()]=tmpse;
61  }
62  else {
63  edm::LogWarning("L1AcceptBunchCrossingNoType") << "L1AcceptBunchCrossing with no type found: ";
64  for(L1AcceptBunchCrossingCollection::const_iterator debu=l1abcc.begin();debu!=l1abcc.end();++debu) {
65  edm::LogPrint("L1AcceptBunchCrossingNoType") << *debu;
66  }
67  }
68  }
69  else {
70  edm::LogError("L1AcceptBunchCrossingOffsetTooLarge") << " Too large orbit offset "
71  << orbitoffset << " "
72  << l1abc->orbitNumber();
73  }
74  }
75  else {
76  edm::LogInfo("L1AcceptBunchCrossingNegativeEvent") << "L1AcceptBunchCrossing with negative event: ";
77  for(L1AcceptBunchCrossingCollection::const_iterator debu=l1abcc.begin();debu!=l1abcc.end();++debu) {
78  edm::LogVerbatim("L1AcceptBunchCrossingNegativeEvent") << *debu;
79  }
80  }
81  }
82  // look for the event itself
83  if(tmpmap.find(0)!=tmpmap.end()) {
84 
85  TinyEvent::operator=(tmpmap[0]);
86 
87  // loop on the rest of the map and stop when it is missing
88  // check that the events are in the right order and break if not
89 
90  int counter=-1;
91  while(tmpmap.find(counter)!=tmpmap.end()) {
92 
93  if(tmpmap[counter+1].deltaBX(tmpmap[counter]) > 0) {
94  _prevse.push_back(tmpmap[counter]);
95  --counter;
96  }
97  else {
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) {
102  edm::LogPrint("L1AcceptBunchCrossingNotInOrder") << *debu;
103  }
104  break;
105  }
106  }
107  }
108  else {
109  TinyEvent::operator=(event);
110  edm::LogWarning("L1AcceptBunchCrossingNoCollection") << " L1AcceptBunchCrossing with offset=0 not found "
111  << " likely L1ABCCollection is empty ";
112  }
113 
114 }
EventNumber_t event() const
Definition: EventID.h:41
long long deltaBX() const
unsigned long long EventNumber_t
std::vector< TinyEvent > _prevse
TinyEvent & operator=(const TinyEvent &se)
Definition: TinyEvent.h:29
edm::EventID id() const
Definition: EventBase.h:60
static std::atomic< unsigned int > counter
TinyEvent()
Definition: TinyEvent.h:15
EventWithHistory::EventWithHistory ( const EventWithHistory he)

Definition at line 116 of file EventWithHistory.cc.

116 : TinyEvent(he), _prevse(he._prevse) { }
std::vector< TinyEvent > _prevse
TinyEvent()
Definition: TinyEvent.h:15

Member Function Documentation

long long EventWithHistory::absoluteBX ( const unsigned int  ev1) const

Definition at line 231 of file EventWithHistory.cc.

References _prevse, absoluteBX(), and TinyEvent::absoluteBX().

Referenced by EventWithHistoryFilter::is_selected().

231  {
232 
233  if(ev1==0) return TinyEvent::absoluteBX();
234  if(ev1<=_prevse.size()) return _prevse[ev1-1].absoluteBX();
235 
236  return -1;
237 
238 }
std::vector< TinyEvent > _prevse
long long absoluteBX() const
Definition: TinyEvent.h:57
long long absoluteBX() const
long long EventWithHistory::absoluteBX ( ) const

Definition at line 240 of file EventWithHistory.cc.

References TinyEvent::absoluteBX().

Referenced by absoluteBX().

240  {
241 
242  return TinyEvent::absoluteBX();
243 
244 }
long long absoluteBX() const
Definition: TinyEvent.h:57
long long EventWithHistory::absoluteBXinCycle ( const unsigned int  ev1,
const int  bx0 
) const

Definition at line 246 of file EventWithHistory.cc.

References _prevse, and TinyEvent::absoluteBXinCycle().

Referenced by EventWithHistoryFilter::is_selected().

246  {
247 
248  if(ev1==0) return TinyEvent::absoluteBXinCycle(bx0);
249  if(ev1<=_prevse.size()) return _prevse[ev1-1].absoluteBXinCycle(bx0);
250 
251  return -1;
252 
253 }
long long absoluteBXinCycle(const int bx0) const
Definition: TinyEvent.h:63
long long absoluteBXinCycle(const unsigned int ev1, const int bx0) const
std::vector< TinyEvent > _prevse
long long EventWithHistory::absoluteBXinCycle ( const int  bx0) const

Definition at line 255 of file EventWithHistory.cc.

References TinyEvent::absoluteBXinCycle().

255  {
256 
257  return TinyEvent::absoluteBXinCycle(bx0);
258 
259 }
long long absoluteBXinCycle(const int bx0) const
Definition: TinyEvent.h:63
int EventWithHistory::add ( const EventWithHistory he,
const int  idepth 
)

Definition at line 146 of file EventWithHistory.cc.

References ev.

Referenced by counter.Counter::register().

146  {
147 
148  if(!add((const TinyEvent&) he,idepth)) return 0;
149 
150  for(std::vector<TinyEvent>::const_iterator ev=he._prevse.begin();ev!=he._prevse.end();ev++) {
151  if(!add(*ev,idepth)) return 0;
152  }
153  return 1;
154 }
bool ev
int add(const EventWithHistory &he, const int idepth)
int EventWithHistory::add ( const TinyEvent he,
const int  idepth 
)

Definition at line 156 of file EventWithHistory.cc.

References _prevse, funct::abs(), depth(), isFutureHistory(), and TinyEvent::isNextOf().

Referenced by counter.Counter::register().

156  {
157 
158  bool isfuture = (idepth <0);
159  const unsigned int adepth = abs(idepth);
160 
161  // protect against the possibility of filling with past and future history
162 
163  if( depth()>0 && ((isfuture && !isFutureHistory()) || (!isfuture && isFutureHistory()))) return 0;
164 
165  if(adepth==0) return 0;
166  if(_prevse.size()>= adepth) return 0;
167 
168  if(_prevse.size()==0) {
169  if((!isfuture && isNextOf(se)) || (isfuture && se.isNextOf(*this))) {
170  _prevse.push_back(se);
171  return 1;
172  }
173  else {
174  return 0;
175  }
176  }
177  else {
178  if((!isfuture && _prevse[_prevse.size()-1].isNextOf(se)) || (isfuture && se.isNextOf(_prevse[_prevse.size()-1]))) {
179  _prevse.push_back(se);
180  return 1;
181  }
182  else {
183  return 0;
184  }
185  }
186  return 0;
187 }
unsigned int depth() const
std::vector< TinyEvent > _prevse
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int isNextOf(const TinyEvent &se) const
Definition: TinyEvent.h:51
bool isFutureHistory() const
const int EventWithHistory::bx ( ) const

Definition at line 191 of file EventWithHistory.cc.

References TinyEvent::_bx.

191 { return TinyEvent::_bx; }
unsigned int _bx
Definition: TinyEvent.h:89
long long EventWithHistory::deltaBX ( const unsigned int  ev2,
const unsigned int  ev1 
) const

Definition at line 209 of file EventWithHistory.cc.

References _prevse, and TinyEvent::deltaBX().

Referenced by EventWithHistoryFilter::is_selected().

209  {
210 
211  if(ev2==ev1) return 0;
212 
213  if(ev2<ev1 && ev1<=_prevse.size()) {
214  if(ev2==0) return TinyEvent::deltaBX(_prevse[ev1-1]);
215  return _prevse[ev2-1].deltaBX(_prevse[ev1-1]);
216  }
217 
218  return -1;
219 }
std::vector< TinyEvent > _prevse
long long deltaBX(const TinyEvent &se) const
Definition: TinyEvent.h:69
long long EventWithHistory::deltaBX ( const unsigned int  ev1) const

Definition at line 221 of file EventWithHistory.cc.

References deltaBX().

221 { return deltaBX(0,ev1); }
long long deltaBX() const
long long EventWithHistory::deltaBX ( ) const

Definition at line 223 of file EventWithHistory.cc.

Referenced by deltaBX(), and EventWithHistory().

223 { return deltaBX(0,1); }
long long deltaBX() const
long long EventWithHistory::deltaBX ( const TinyEvent se) const

Definition at line 225 of file EventWithHistory.cc.

References TinyEvent::deltaBX().

225  {
226 
227  return TinyEvent::deltaBX(se);
228 
229 }
long long deltaBX(const TinyEvent &se) const
Definition: TinyEvent.h:69
long long EventWithHistory::deltaBXinCycle ( const unsigned int  ev2,
const unsigned int  ev1,
const int  bx0 
) const

Definition at line 261 of file EventWithHistory.cc.

References _prevse, and TinyEvent::deltaBXinCycle().

Referenced by deltaBXinCycle(), and EventWithHistoryFilter::is_selected().

261  {
262 
263  if(ev2==ev1 && ev1<=_prevse.size()) {
264  if(ev2==0) return TinyEvent::deltaBXinCycle(*this,bx0);
265  return _prevse[ev2-1].deltaBXinCycle(_prevse[ev1-1],bx0);
266  }
267 
268  if(ev2<ev1 && ev1<=_prevse.size()) {
269  if(ev2==0) return TinyEvent::deltaBXinCycle(_prevse[ev1-1],bx0);
270  return _prevse[ev2-1].deltaBXinCycle(_prevse[ev1-1],bx0);
271  }
272 
273  return -1;
274 }
std::vector< TinyEvent > _prevse
long long deltaBXinCycle(const TinyEvent &se, const int bx0) const
Definition: TinyEvent.h:79
long long EventWithHistory::deltaBXinCycle ( const unsigned int  ev1,
const int  bx0 
) const

Definition at line 276 of file EventWithHistory.cc.

References deltaBXinCycle().

276  {
277  return deltaBXinCycle(0,ev1,bx0);
278 }
long long deltaBXinCycle(const unsigned int ev2, const unsigned int ev1, const int bx0) const
long long EventWithHistory::deltaBXinCycle ( const int  bx0) const

Definition at line 280 of file EventWithHistory.cc.

References deltaBXinCycle().

280  {
281  return deltaBXinCycle(0,1,bx0);
282 }
long long deltaBXinCycle(const unsigned int ev2, const unsigned int ev1, const int bx0) const
long long EventWithHistory::deltaBXinCycle ( const TinyEvent se,
const int  bx0 
) const

Definition at line 284 of file EventWithHistory.cc.

References TinyEvent::deltaBXinCycle().

284  {
285 
286  return TinyEvent::deltaBXinCycle(se,bx0);
287 
288 }
long long deltaBXinCycle(const TinyEvent &se, const int bx0) const
Definition: TinyEvent.h:79
unsigned int EventWithHistory::depth ( void  ) const

Definition at line 201 of file EventWithHistory.cc.

References _prevse.

Referenced by add(), EventWithHistoryFilter::is_selected(), isFutureHistory(), and operator==().

201 { return _prevse.size(); }
std::vector< TinyEvent > _prevse
const edm::EventNumber_t EventWithHistory::event ( ) const

Definition at line 189 of file EventWithHistory.cc.

References TinyEvent::_event.

Referenced by Types.EventID::cppID().

189 { return TinyEvent::_event; }
edm::EventNumber_t _event
Definition: TinyEvent.h:87
const TinyEvent * EventWithHistory::get ( const unsigned int  ev) const
bool EventWithHistory::isFutureHistory ( ) const

Definition at line 203 of file EventWithHistory.cc.

References _prevse, depth(), and TinyEvent::isNextOf().

Referenced by add().

203  {
204 
205  return (depth()>0 && _prevse[0].isNextOf(*this));
206 
207 }
unsigned int depth() const
std::vector< TinyEvent > _prevse
int isNextOf(const TinyEvent &se) const
Definition: TinyEvent.h:51
EventWithHistory & EventWithHistory::operator= ( const EventWithHistory he)

Definition at line 118 of file EventWithHistory.cc.

References _prevse, and TinyEvent::operator=().

118  {
119 
120  if(this != &he) {
122  _prevse = he._prevse;
123  }
124  return *this;
125 }
std::vector< TinyEvent > _prevse
TinyEvent & operator=(const TinyEvent &se)
Definition: TinyEvent.h:29
int EventWithHistory::operator== ( const EventWithHistory other) const

Definition at line 129 of file EventWithHistory.cc.

References _prevse, depth(), cond::serialization::equal(), i, and TinyEvent::operator==().

129  {
130 
131  int equal = TinyEvent::operator==(other);
132 
133  // depth is not checked anymore
134 
135  // equal = equal && (depth() == other.depth());
136 
137  if(equal) {
138  for(unsigned int i=0;i<((depth()<other.depth())?depth():other.depth());i++) {
139  equal = equal && (_prevse[i] == other._prevse[i]);
140  }
141  }
142 
143  return equal;
144 }
unsigned int depth() const
int i
Definition: DBlmapReader.cc:9
bool equal(const T &first, const T &second)
Definition: Equal.h:34
std::vector< TinyEvent > _prevse
int operator==(const TinyEvent &other) const
Definition: TinyEvent.h:45
const unsigned int EventWithHistory::orbit ( ) const

Definition at line 190 of file EventWithHistory.cc.

References TinyEvent::_orbit.

190 { return TinyEvent::_orbit; }
unsigned int _orbit
Definition: TinyEvent.h:88

Member Data Documentation

std::vector<TinyEvent> EventWithHistory::_prevse
private