ROOT logo
#include "hmdcstoreevents.h"
#include "hmdclistcells.h"
#include "hmdcclus.h"

//*-- AUTHOR : Pechenov Vladimir
//*-- Modified : 14/05/2004 by V.Pechenov

//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////
// HMdcStoreWires
//
// HMdcStoreEvents
//
// HMdcStoreClusters
//
////////////////////////////////////////////////////////////////

ClassImp(HMdcStoreWires)
ClassImp(HMdcStoreEvents)
ClassImp(HMdcStoreTracks)
ClassImp(HMdcStoreClusters)

HMdcStoreWires::HMdcStoreWires(void) {
  nDTPerEvent.setArrType(kShort);
  iterEvents=nDTPerEvent.makeIterator();
  mdcWireAddr.setArrType(kUShort);
  iterWires=mdcWireAddr.makeIterator();
  nEvents=0;
  nDrTimes=0;
  nRdEvents=0;
  nRdDrTimes=0;
  maxMemSize=200*1024*1024;
}

HMdcStoreWires::~HMdcStoreWires(void) {
  if(iterEvents) delete iterEvents;
  if(iterWires) delete iterWires;
  iterEvents=0;
  iterWires=0;
}

void HMdcStoreWires::setMaxMemSize(UInt_t mSize) {
  maxMemSize=mSize*1024*1024;
}

UInt_t HMdcStoreWires::getMemSize(void) const {
  return mdcWireAddr.getMemSize()+nDTPerEvent.getMemSize();
}

Bool_t HMdcStoreWires::testMemSize(void) const {
  return getMemSize() < maxMemSize;
}

void HMdcStoreWires::setEndEvent(void) {
  if(nDrTimes) {
    nDTPerEvent.addNext(nDrTimes);
    nDrTimes=0;
    nEvents++;
  }
}

void HMdcStoreWires::addWireAddr(Int_t s,Int_t m,Int_t l,Int_t c) {
  mdcWireAddr.addNext(packAddress(s,m,l,c));
  nDrTimes++;
}

void HMdcStoreWires::resetIter(void) {
  iterEvents->reset();
  iterWires->reset();
  nRdEvents=0;
  nRdDrTimes=0;
  nDrTmPerEv=0;
}

Bool_t HMdcStoreWires::getNextEvent(void) {
  if(nRdEvents==nEvents) return kFALSE;
  if(!iterEvents->getNext(nDrTmPerEv)) return kFALSE;
  nRdEvents++;
  nRdDrTimes=0;
  return kTRUE;
}

Bool_t HMdcStoreWires::getNextWireAddr(Int_t& s, Int_t& m, 
    Int_t& l, Int_t& c) {
  UShort_t addr; 
  if(nRdDrTimes==nDrTmPerEv || !iterWires->getNext(addr)) return kFALSE;
  unpackAddress(addr,s,m,l,c);
  nRdDrTimes++;
  return kTRUE;
}

void HMdcStoreWires::addEvent(const HMdcEvntListCells& event) {
  Int_t s,m,l,c;
  s=m=l=c=-1;
  while(event.nextCell(s,m,l,c)) addWireAddr(s,m,l,c);
  setEndEvent();
}

Bool_t HMdcStoreWires::getNextEvent(HMdcEvntListCells& event) {
  event.clear();
  if(!getNextEvent()) return kFALSE;
  Int_t s,m,l,c;
  s=m=l=c=-1;
  while(getNextWireAddr(s,m,l,c)) event.setTime(s,m,l,c,1);  // tim1 only !!!
  return kTRUE;
}

//====================================================

HMdcStoreEvents::HMdcStoreEvents(void) {
  nDTPerEvent.setArrType(kUShort);
  iterEvents=nDTPerEvent.makeIterator();
  mdcCells.setArrType(kUInt);
  iterWires=mdcCells.makeIterator();
  nEvents=0;
  nDrTimes=0;
  nRdEvents=0;
  nRdDrTimes=0;
  maxMemSize=200*1024*1024;
}

HMdcStoreEvents::~HMdcStoreEvents(void) {
  if(iterEvents) delete iterEvents;
  if(iterWires) delete iterWires;
  iterEvents=0;
  iterWires=0;
}

void HMdcStoreEvents::setMaxMemSize(UInt_t mSize) {
  maxMemSize=mSize*1024*1024;
}

UInt_t HMdcStoreEvents::getMemSize(void) const {
  return mdcCells.getMemSize()+nDTPerEvent.getMemSize();
}

Bool_t HMdcStoreEvents::testMemSize(void) const {
  return getMemSize() < maxMemSize;
}

void HMdcStoreEvents::setEndEvent(void) {
  if(nDrTimes) {
    nDTPerEvent.addNext(nDrTimes);
    nDrTimes=0;
    nEvents++;
  }
}

void HMdcStoreEvents::addWire(Int_t s,Int_t m,Int_t l,Int_t c,
    Float_t tm, Bool_t flag) {
  mdcCells.addNext(packCell(s,m,l,c,tm,flag));
  nDrTimes++;
}

void HMdcStoreEvents::resetIter(void) {
  iterEvents->reset();
  iterWires->reset();
  nRdEvents=0;
  nRdDrTimes=0;
  nDrTmPerEv=0;
}

Bool_t HMdcStoreEvents::getNextEvent(void) {
  if(nRdEvents==nEvents) return kFALSE;
  if(!iterEvents->getNext(nDrTmPerEv)) return kFALSE;
  nRdEvents++;
  nRdDrTimes=0;
  return kTRUE;
}

Bool_t HMdcStoreEvents::getNextCell(Int_t& s, Int_t& m, 
    Int_t& l, Int_t& c, Float_t& tm) {
  UInt_t addr;
  if(nRdDrTimes==nDrTmPerEv || !iterWires->getNext(addr)) return kFALSE;
  unpackCell(addr,s,m,l,c,tm);
  nRdDrTimes++;
  return kTRUE;
}

Bool_t HMdcStoreEvents::getNextCell(Int_t& s, Int_t& m, 
    Int_t& l, Int_t& c, Float_t& tm, Bool_t& flag, UInt_t** addr) {
  if(nRdDrTimes==nDrTmPerEv || !iterWires->getNext(addr)) return kFALSE;
  flag = unpackCell(**addr,s,m,l,c,tm);
  nRdDrTimes++;
  return kTRUE;
}

Bool_t HMdcStoreEvents::getNextCell(Int_t& s, Int_t& m, 
    Int_t& l, Int_t& c, Float_t& tm, Bool_t& flag) {
  UInt_t addr; 
  if(nRdDrTimes==nDrTmPerEv || !iterWires->getNext(addr)) return kFALSE;
  flag = unpackCell(addr,s,m,l,c,tm);
  nRdDrTimes++;
  return kTRUE;
}


void HMdcStoreEvents::addEvent(const HMdcEvntListCells& event) {
  Int_t s,m,l,c;
  Float_t tm;
  s=m=l=c=-1;
  while(event.nextTime(s,m,l,c,tm)) addWire(s,m,l,c,tm);
  setEndEvent();
}

Bool_t HMdcStoreEvents::getNextEvent(HMdcEvntListCells& event,
    Bool_t checkFlag) {
  event.clear();
  if(!getNextEvent()) return kFALSE;
  Int_t s,m,l,c;
  Float_t tm;
  Bool_t flag;
  s=m=l=c=-1;
  while(getNextCell(s,m,l,c,tm,flag)) if(!checkFlag || flag)
    event.addTime1(s,m,l,c,tm);  // time1 only !!!
  return kTRUE;
}

//----------------------------------------------------------

HMdcStoreTracks::HMdcStoreTracks(void) {
  address.setArrType(kUChar);
  trackPos.setArrType(kFloat);
  nTracksEvent.setArrType(kUShort);
  iterAddress  = address.makeIterator();
  iterTrackPos = trackPos.makeIterator();
  iterNTrckEv  = nTracksEvent.makeIterator();
  clear();
}

void HMdcStoreTracks::clear(void) {
  nEventTracks=0;
  nReadTracks=0;
  arrayEnd=kFALSE;
  eventFlag=kFALSE;
  x1=y1=x2=y2=0.;
  flagAddress=0;
}

HMdcStoreTracks::~HMdcStoreTracks(void) {
  if(iterAddress) delete iterAddress;
  iterAddress=0;
  if(iterTrackPos) delete iterTrackPos;
  iterTrackPos=0;
  if(iterNTrckEv) delete iterNTrckEv;
  iterNTrckEv=0;
}
    
UInt_t HMdcStoreTracks::getMemSize(void) const {
  return trackPos.getMemSize()+nTracksEvent.getMemSize()+address.getMemSize();
}

void HMdcStoreTracks::resetIter(void) {
  iterAddress->reset();
  iterTrackPos->reset();
  iterNTrckEv->reset();
  clear();
}

void HMdcStoreTracks::setTrackPar(UChar_t s, UChar_t m1,Float_t xf,Float_t yf,
    UChar_t m2,Float_t xl,Float_t yl, UChar_t flag) {
  x1=xf;
  y1=yf;
  x2=xl;
  y2=yl;
  flagAddress=(s&7) + ((m1&3)<<3) + ((m2&3)<<5) + ((flag&1)<<7);
}

Bool_t HMdcStoreTracks::setEndTrack(void) {
  iterAddress ->setNext(flagAddress);
  iterTrackPos->setNext(x1);
  iterTrackPos->setNext(y1);
  iterTrackPos->setNext(x2);
  iterTrackPos->setNext(y2);
  if(nEventTracks>=32767) {
    Error("setEndTrack","Number of tracks in event >=32767 !");
    exit(1);
  }
  nEventTracks++;
  return kTRUE;
}

void HMdcStoreTracks::setEndEvent(Bool_t flag) {
  if(flag) nEventTracks+=32768;
  iterNTrckEv->setNext(nEventTracks);
  nEventTracks=0;
}

Bool_t HMdcStoreTracks::getTrackPar(void) {
  if(!iterAddress->getNext(flagAddress)) return kFALSE;
  if(!iterTrackPos->getNext(x1)) return kFALSE;
  if(!iterTrackPos->getNext(y1)) return kFALSE;
  if(!iterTrackPos->getNext(x2)) return kFALSE;
  if(!iterTrackPos->getNext(y2)) return kFALSE;
  return kTRUE;
}

Bool_t HMdcStoreTracks::nextEvent(void) {
  if(arrayEnd) return kFALSE;
  while(nReadTracks<nEventTracks) if(!nextTrack()) return kFALSE;
  if(!iterNTrckEv->getNext(nEventTracks)) {
    arrayEnd=kTRUE;
    return kFALSE;
  }
  eventFlag = (nEventTracks&32768) != 0;
  nEventTracks &= 32767;
  nReadTracks=0;
  return kTRUE;
}

Bool_t HMdcStoreTracks::nextTrack(void) {
  // reading cluster without reading wires!!!
  if(arrayEnd) return kFALSE;
  if(nReadTracks==nEventTracks) return kFALSE;
  nReadTracks++;
  return getTrackPar();
}

void HMdcStoreTracks::getTrackPar(Float_t& xf,Float_t& yf,
                                      Float_t& xl,Float_t& yl) const {
  xf=x1;
  yf=y1;
  xl=x2;
  yl=y2;
}

Bool_t HMdcStoreTracks::resetTrackPar(Float_t xf,Float_t yf,
                                      Float_t xl,Float_t yl) {
  x1=xf;
  y1=yf;
  x2=xl;
  y2=yl;
  Int_t cursor = (Int_t)iterTrackPos->getCursor();
  iterTrackPos->setCursor(cursor-4);
  iterTrackPos->setNext(x1);
  iterTrackPos->setNext(y1);
  iterTrackPos->setNext(x2);
  iterTrackPos->setNext(y2);
  return kTRUE;
}

void HMdcStoreTracks::resetEventIter(void) {
  // for reading the same event again
  if(nReadTracks<=0) return;
  Int_t cursor = (Int_t)iterTrackPos->getCursor();
  iterTrackPos->setCursor(cursor-4*nReadTracks);
  cursor = iterAddress->getCursor();
  iterAddress->setCursor(cursor-nReadTracks);
  nReadTracks=0;
}

Bool_t HMdcStoreTracks::resetTrackFlag(Bool_t flag) {
  if(getTrackFlag()) {if( flag) return kTRUE;}
  else               {if(!flag) return kTRUE;}
  flagAddress &= 127;
  if(flag) flagAddress += 128;
  iterAddress->set(flagAddress);
  return kTRUE;
}

Bool_t HMdcStoreTracks::resetEventFlag(Bool_t flag) {
  eventFlag=flag;
  if(eventFlag) iterNTrckEv->set(nEventTracks+32768);
  else          iterNTrckEv->set(nEventTracks);
  return kTRUE;
}

//----------------------------------------------
    
UInt_t HMdcStoreClusters::getMemSize(void) const {
  return HMdcStoreTracks::getMemSize()+wires.getMemSize();
}

void HMdcStoreClusters::resetIter(void) {
  HMdcStoreTracks::resetIter();
  wires.resetIter();
}

void HMdcStoreClusters::setEndCluster(void) {
  HMdcStoreTracks::setEndTrack();
  wires.setEndEvent();
}

Bool_t HMdcStoreClusters::getNextCluster(void) {
  if(!nextTrack()) return kFALSE;
  return wires.getNextEvent();
}

void HMdcStoreClusters::addClustWires(const HMdcEvntListCells& event, 
        const HMdcClus* cl1, const HMdcClus* cl2) {
  addClustWires(event,cl1);
  addClustWires(event,cl2);
}

void HMdcStoreClusters::addClustWires(const HMdcEvntListCells& event, 
        const HMdcClus* cl) {
  // store wires list only
  if(cl==0) return;
  Int_t sec=cl->getSec();
  Int_t seg=cl->getIOSeg();
  Int_t lay=-1;
  Int_t cell=-1;
  while(cl->getNextCell(lay,cell)) {
    Int_t l=lay%6;
    Int_t mod=(lay/6)+seg*2;
    wires.addWire(sec,mod,l,cell,event.getTimeValue(sec,mod,l,cell));
  }   
}

// Bool_t HMdcStoreClusters::getNextCluster(HMdcEvntListCells& event) {
//   if(!nextTrack()) return kFALSE;
//   return wires.getNextEvent(event,wiresListPack,numWires);
// }

Bool_t HMdcStoreClusters::getNextCluster(HMdcEvntListCells& event,
    Bool_t checkFlag) {
  if(!nextTrack()) return kFALSE;
  event.clear();
  if(!wires.getNextEvent()) return kFALSE;
  Int_t s,m,l,c;
  Float_t tm;
  Bool_t flag;
  s=m=l=c=-1;
  numWires=0;
  while(wires.getNextCell(s,m,l,c,tm,flag,wiresListPack+numWires)) {
    if(!checkFlag || flag) event.addTime1(s,m,l,c,tm);  // time1 only !!!
    if(numWires<1200) numWires++;
  }
  return kTRUE;
}

Bool_t HMdcStoreClusters::unsetFlag(Int_t si,Int_t mi,Int_t li,Int_t ci) {
  UInt_t addr = HMdcStoreEvents::packCell(si,mi,li,ci,0.)&0xFFFF;
  for(Int_t ind=0;ind<numWires;ind++) {
    UInt_t& wire = *(wiresListPack[ind]);
    if((wire&0xFFFF) != addr) continue;
    HMdcStoreEvents::unsetFlag(wire);
    return kTRUE;
  }
  return kFALSE;
}

Bool_t HMdcStoreClusters::setFlag(Int_t si,Int_t mi,Int_t li,Int_t ci) {
  UInt_t addr = HMdcStoreEvents::packCell(si,mi,li,ci,0.)&0xFFFF;
  for(Int_t ind=0;ind<numWires;ind++) {
    UInt_t& wire = *(wiresListPack[ind]);
    if((wire&0xFFFF) != addr) continue;
    HMdcStoreEvents::setFlag(wire);
    return kTRUE;
  }
  return kFALSE;
}
 hmdcstoreevents.cc:1
 hmdcstoreevents.cc:2
 hmdcstoreevents.cc:3
 hmdcstoreevents.cc:4
 hmdcstoreevents.cc:5
 hmdcstoreevents.cc:6
 hmdcstoreevents.cc:7
 hmdcstoreevents.cc:8
 hmdcstoreevents.cc:9
 hmdcstoreevents.cc:10
 hmdcstoreevents.cc:11
 hmdcstoreevents.cc:12
 hmdcstoreevents.cc:13
 hmdcstoreevents.cc:14
 hmdcstoreevents.cc:15
 hmdcstoreevents.cc:16
 hmdcstoreevents.cc:17
 hmdcstoreevents.cc:18
 hmdcstoreevents.cc:19
 hmdcstoreevents.cc:20
 hmdcstoreevents.cc:21
 hmdcstoreevents.cc:22
 hmdcstoreevents.cc:23
 hmdcstoreevents.cc:24
 hmdcstoreevents.cc:25
 hmdcstoreevents.cc:26
 hmdcstoreevents.cc:27
 hmdcstoreevents.cc:28
 hmdcstoreevents.cc:29
 hmdcstoreevents.cc:30
 hmdcstoreevents.cc:31
 hmdcstoreevents.cc:32
 hmdcstoreevents.cc:33
 hmdcstoreevents.cc:34
 hmdcstoreevents.cc:35
 hmdcstoreevents.cc:36
 hmdcstoreevents.cc:37
 hmdcstoreevents.cc:38
 hmdcstoreevents.cc:39
 hmdcstoreevents.cc:40
 hmdcstoreevents.cc:41
 hmdcstoreevents.cc:42
 hmdcstoreevents.cc:43
 hmdcstoreevents.cc:44
 hmdcstoreevents.cc:45
 hmdcstoreevents.cc:46
 hmdcstoreevents.cc:47
 hmdcstoreevents.cc:48
 hmdcstoreevents.cc:49
 hmdcstoreevents.cc:50
 hmdcstoreevents.cc:51
 hmdcstoreevents.cc:52
 hmdcstoreevents.cc:53
 hmdcstoreevents.cc:54
 hmdcstoreevents.cc:55
 hmdcstoreevents.cc:56
 hmdcstoreevents.cc:57
 hmdcstoreevents.cc:58
 hmdcstoreevents.cc:59
 hmdcstoreevents.cc:60
 hmdcstoreevents.cc:61
 hmdcstoreevents.cc:62
 hmdcstoreevents.cc:63
 hmdcstoreevents.cc:64
 hmdcstoreevents.cc:65
 hmdcstoreevents.cc:66
 hmdcstoreevents.cc:67
 hmdcstoreevents.cc:68
 hmdcstoreevents.cc:69
 hmdcstoreevents.cc:70
 hmdcstoreevents.cc:71
 hmdcstoreevents.cc:72
 hmdcstoreevents.cc:73
 hmdcstoreevents.cc:74
 hmdcstoreevents.cc:75
 hmdcstoreevents.cc:76
 hmdcstoreevents.cc:77
 hmdcstoreevents.cc:78
 hmdcstoreevents.cc:79
 hmdcstoreevents.cc:80
 hmdcstoreevents.cc:81
 hmdcstoreevents.cc:82
 hmdcstoreevents.cc:83
 hmdcstoreevents.cc:84
 hmdcstoreevents.cc:85
 hmdcstoreevents.cc:86
 hmdcstoreevents.cc:87
 hmdcstoreevents.cc:88
 hmdcstoreevents.cc:89
 hmdcstoreevents.cc:90
 hmdcstoreevents.cc:91
 hmdcstoreevents.cc:92
 hmdcstoreevents.cc:93
 hmdcstoreevents.cc:94
 hmdcstoreevents.cc:95
 hmdcstoreevents.cc:96
 hmdcstoreevents.cc:97
 hmdcstoreevents.cc:98
 hmdcstoreevents.cc:99
 hmdcstoreevents.cc:100
 hmdcstoreevents.cc:101
 hmdcstoreevents.cc:102
 hmdcstoreevents.cc:103
 hmdcstoreevents.cc:104
 hmdcstoreevents.cc:105
 hmdcstoreevents.cc:106
 hmdcstoreevents.cc:107
 hmdcstoreevents.cc:108
 hmdcstoreevents.cc:109
 hmdcstoreevents.cc:110
 hmdcstoreevents.cc:111
 hmdcstoreevents.cc:112
 hmdcstoreevents.cc:113
 hmdcstoreevents.cc:114
 hmdcstoreevents.cc:115
 hmdcstoreevents.cc:116
 hmdcstoreevents.cc:117
 hmdcstoreevents.cc:118
 hmdcstoreevents.cc:119
 hmdcstoreevents.cc:120
 hmdcstoreevents.cc:121
 hmdcstoreevents.cc:122
 hmdcstoreevents.cc:123
 hmdcstoreevents.cc:124
 hmdcstoreevents.cc:125
 hmdcstoreevents.cc:126
 hmdcstoreevents.cc:127
 hmdcstoreevents.cc:128
 hmdcstoreevents.cc:129
 hmdcstoreevents.cc:130
 hmdcstoreevents.cc:131
 hmdcstoreevents.cc:132
 hmdcstoreevents.cc:133
 hmdcstoreevents.cc:134
 hmdcstoreevents.cc:135
 hmdcstoreevents.cc:136
 hmdcstoreevents.cc:137
 hmdcstoreevents.cc:138
 hmdcstoreevents.cc:139
 hmdcstoreevents.cc:140
 hmdcstoreevents.cc:141
 hmdcstoreevents.cc:142
 hmdcstoreevents.cc:143
 hmdcstoreevents.cc:144
 hmdcstoreevents.cc:145
 hmdcstoreevents.cc:146
 hmdcstoreevents.cc:147
 hmdcstoreevents.cc:148
 hmdcstoreevents.cc:149
 hmdcstoreevents.cc:150
 hmdcstoreevents.cc:151
 hmdcstoreevents.cc:152
 hmdcstoreevents.cc:153
 hmdcstoreevents.cc:154
 hmdcstoreevents.cc:155
 hmdcstoreevents.cc:156
 hmdcstoreevents.cc:157
 hmdcstoreevents.cc:158
 hmdcstoreevents.cc:159
 hmdcstoreevents.cc:160
 hmdcstoreevents.cc:161
 hmdcstoreevents.cc:162
 hmdcstoreevents.cc:163
 hmdcstoreevents.cc:164
 hmdcstoreevents.cc:165
 hmdcstoreevents.cc:166
 hmdcstoreevents.cc:167
 hmdcstoreevents.cc:168
 hmdcstoreevents.cc:169
 hmdcstoreevents.cc:170
 hmdcstoreevents.cc:171
 hmdcstoreevents.cc:172
 hmdcstoreevents.cc:173
 hmdcstoreevents.cc:174
 hmdcstoreevents.cc:175
 hmdcstoreevents.cc:176
 hmdcstoreevents.cc:177
 hmdcstoreevents.cc:178
 hmdcstoreevents.cc:179
 hmdcstoreevents.cc:180
 hmdcstoreevents.cc:181
 hmdcstoreevents.cc:182
 hmdcstoreevents.cc:183
 hmdcstoreevents.cc:184
 hmdcstoreevents.cc:185
 hmdcstoreevents.cc:186
 hmdcstoreevents.cc:187
 hmdcstoreevents.cc:188
 hmdcstoreevents.cc:189
 hmdcstoreevents.cc:190
 hmdcstoreevents.cc:191
 hmdcstoreevents.cc:192
 hmdcstoreevents.cc:193
 hmdcstoreevents.cc:194
 hmdcstoreevents.cc:195
 hmdcstoreevents.cc:196
 hmdcstoreevents.cc:197
 hmdcstoreevents.cc:198
 hmdcstoreevents.cc:199
 hmdcstoreevents.cc:200
 hmdcstoreevents.cc:201
 hmdcstoreevents.cc:202
 hmdcstoreevents.cc:203
 hmdcstoreevents.cc:204
 hmdcstoreevents.cc:205
 hmdcstoreevents.cc:206
 hmdcstoreevents.cc:207
 hmdcstoreevents.cc:208
 hmdcstoreevents.cc:209
 hmdcstoreevents.cc:210
 hmdcstoreevents.cc:211
 hmdcstoreevents.cc:212
 hmdcstoreevents.cc:213
 hmdcstoreevents.cc:214
 hmdcstoreevents.cc:215
 hmdcstoreevents.cc:216
 hmdcstoreevents.cc:217
 hmdcstoreevents.cc:218
 hmdcstoreevents.cc:219
 hmdcstoreevents.cc:220
 hmdcstoreevents.cc:221
 hmdcstoreevents.cc:222
 hmdcstoreevents.cc:223
 hmdcstoreevents.cc:224
 hmdcstoreevents.cc:225
 hmdcstoreevents.cc:226
 hmdcstoreevents.cc:227
 hmdcstoreevents.cc:228
 hmdcstoreevents.cc:229
 hmdcstoreevents.cc:230
 hmdcstoreevents.cc:231
 hmdcstoreevents.cc:232
 hmdcstoreevents.cc:233
 hmdcstoreevents.cc:234
 hmdcstoreevents.cc:235
 hmdcstoreevents.cc:236
 hmdcstoreevents.cc:237
 hmdcstoreevents.cc:238
 hmdcstoreevents.cc:239
 hmdcstoreevents.cc:240
 hmdcstoreevents.cc:241
 hmdcstoreevents.cc:242
 hmdcstoreevents.cc:243
 hmdcstoreevents.cc:244
 hmdcstoreevents.cc:245
 hmdcstoreevents.cc:246
 hmdcstoreevents.cc:247
 hmdcstoreevents.cc:248
 hmdcstoreevents.cc:249
 hmdcstoreevents.cc:250
 hmdcstoreevents.cc:251
 hmdcstoreevents.cc:252
 hmdcstoreevents.cc:253
 hmdcstoreevents.cc:254
 hmdcstoreevents.cc:255
 hmdcstoreevents.cc:256
 hmdcstoreevents.cc:257
 hmdcstoreevents.cc:258
 hmdcstoreevents.cc:259
 hmdcstoreevents.cc:260
 hmdcstoreevents.cc:261
 hmdcstoreevents.cc:262
 hmdcstoreevents.cc:263
 hmdcstoreevents.cc:264
 hmdcstoreevents.cc:265
 hmdcstoreevents.cc:266
 hmdcstoreevents.cc:267
 hmdcstoreevents.cc:268
 hmdcstoreevents.cc:269
 hmdcstoreevents.cc:270
 hmdcstoreevents.cc:271
 hmdcstoreevents.cc:272
 hmdcstoreevents.cc:273
 hmdcstoreevents.cc:274
 hmdcstoreevents.cc:275
 hmdcstoreevents.cc:276
 hmdcstoreevents.cc:277
 hmdcstoreevents.cc:278
 hmdcstoreevents.cc:279
 hmdcstoreevents.cc:280
 hmdcstoreevents.cc:281
 hmdcstoreevents.cc:282
 hmdcstoreevents.cc:283
 hmdcstoreevents.cc:284
 hmdcstoreevents.cc:285
 hmdcstoreevents.cc:286
 hmdcstoreevents.cc:287
 hmdcstoreevents.cc:288
 hmdcstoreevents.cc:289
 hmdcstoreevents.cc:290
 hmdcstoreevents.cc:291
 hmdcstoreevents.cc:292
 hmdcstoreevents.cc:293
 hmdcstoreevents.cc:294
 hmdcstoreevents.cc:295
 hmdcstoreevents.cc:296
 hmdcstoreevents.cc:297
 hmdcstoreevents.cc:298
 hmdcstoreevents.cc:299
 hmdcstoreevents.cc:300
 hmdcstoreevents.cc:301
 hmdcstoreevents.cc:302
 hmdcstoreevents.cc:303
 hmdcstoreevents.cc:304
 hmdcstoreevents.cc:305
 hmdcstoreevents.cc:306
 hmdcstoreevents.cc:307
 hmdcstoreevents.cc:308
 hmdcstoreevents.cc:309
 hmdcstoreevents.cc:310
 hmdcstoreevents.cc:311
 hmdcstoreevents.cc:312
 hmdcstoreevents.cc:313
 hmdcstoreevents.cc:314
 hmdcstoreevents.cc:315
 hmdcstoreevents.cc:316
 hmdcstoreevents.cc:317
 hmdcstoreevents.cc:318
 hmdcstoreevents.cc:319
 hmdcstoreevents.cc:320
 hmdcstoreevents.cc:321
 hmdcstoreevents.cc:322
 hmdcstoreevents.cc:323
 hmdcstoreevents.cc:324
 hmdcstoreevents.cc:325
 hmdcstoreevents.cc:326
 hmdcstoreevents.cc:327
 hmdcstoreevents.cc:328
 hmdcstoreevents.cc:329
 hmdcstoreevents.cc:330
 hmdcstoreevents.cc:331
 hmdcstoreevents.cc:332
 hmdcstoreevents.cc:333
 hmdcstoreevents.cc:334
 hmdcstoreevents.cc:335
 hmdcstoreevents.cc:336
 hmdcstoreevents.cc:337
 hmdcstoreevents.cc:338
 hmdcstoreevents.cc:339
 hmdcstoreevents.cc:340
 hmdcstoreevents.cc:341
 hmdcstoreevents.cc:342
 hmdcstoreevents.cc:343
 hmdcstoreevents.cc:344
 hmdcstoreevents.cc:345
 hmdcstoreevents.cc:346
 hmdcstoreevents.cc:347
 hmdcstoreevents.cc:348
 hmdcstoreevents.cc:349
 hmdcstoreevents.cc:350
 hmdcstoreevents.cc:351
 hmdcstoreevents.cc:352
 hmdcstoreevents.cc:353
 hmdcstoreevents.cc:354
 hmdcstoreevents.cc:355
 hmdcstoreevents.cc:356
 hmdcstoreevents.cc:357
 hmdcstoreevents.cc:358
 hmdcstoreevents.cc:359
 hmdcstoreevents.cc:360
 hmdcstoreevents.cc:361
 hmdcstoreevents.cc:362
 hmdcstoreevents.cc:363
 hmdcstoreevents.cc:364
 hmdcstoreevents.cc:365
 hmdcstoreevents.cc:366
 hmdcstoreevents.cc:367
 hmdcstoreevents.cc:368
 hmdcstoreevents.cc:369
 hmdcstoreevents.cc:370
 hmdcstoreevents.cc:371
 hmdcstoreevents.cc:372
 hmdcstoreevents.cc:373
 hmdcstoreevents.cc:374
 hmdcstoreevents.cc:375
 hmdcstoreevents.cc:376
 hmdcstoreevents.cc:377
 hmdcstoreevents.cc:378
 hmdcstoreevents.cc:379
 hmdcstoreevents.cc:380
 hmdcstoreevents.cc:381
 hmdcstoreevents.cc:382
 hmdcstoreevents.cc:383
 hmdcstoreevents.cc:384
 hmdcstoreevents.cc:385
 hmdcstoreevents.cc:386
 hmdcstoreevents.cc:387
 hmdcstoreevents.cc:388
 hmdcstoreevents.cc:389
 hmdcstoreevents.cc:390
 hmdcstoreevents.cc:391
 hmdcstoreevents.cc:392
 hmdcstoreevents.cc:393
 hmdcstoreevents.cc:394
 hmdcstoreevents.cc:395
 hmdcstoreevents.cc:396
 hmdcstoreevents.cc:397
 hmdcstoreevents.cc:398
 hmdcstoreevents.cc:399
 hmdcstoreevents.cc:400
 hmdcstoreevents.cc:401
 hmdcstoreevents.cc:402
 hmdcstoreevents.cc:403
 hmdcstoreevents.cc:404
 hmdcstoreevents.cc:405
 hmdcstoreevents.cc:406
 hmdcstoreevents.cc:407
 hmdcstoreevents.cc:408
 hmdcstoreevents.cc:409
 hmdcstoreevents.cc:410
 hmdcstoreevents.cc:411
 hmdcstoreevents.cc:412
 hmdcstoreevents.cc:413
 hmdcstoreevents.cc:414
 hmdcstoreevents.cc:415
 hmdcstoreevents.cc:416
 hmdcstoreevents.cc:417
 hmdcstoreevents.cc:418
 hmdcstoreevents.cc:419
 hmdcstoreevents.cc:420
 hmdcstoreevents.cc:421
 hmdcstoreevents.cc:422
 hmdcstoreevents.cc:423
 hmdcstoreevents.cc:424
 hmdcstoreevents.cc:425
 hmdcstoreevents.cc:426
 hmdcstoreevents.cc:427
 hmdcstoreevents.cc:428
 hmdcstoreevents.cc:429
 hmdcstoreevents.cc:430
 hmdcstoreevents.cc:431
 hmdcstoreevents.cc:432
 hmdcstoreevents.cc:433
 hmdcstoreevents.cc:434
 hmdcstoreevents.cc:435
 hmdcstoreevents.cc:436
 hmdcstoreevents.cc:437
 hmdcstoreevents.cc:438
 hmdcstoreevents.cc:439
 hmdcstoreevents.cc:440
 hmdcstoreevents.cc:441
 hmdcstoreevents.cc:442
 hmdcstoreevents.cc:443
 hmdcstoreevents.cc:444
 hmdcstoreevents.cc:445
 hmdcstoreevents.cc:446
 hmdcstoreevents.cc:447
 hmdcstoreevents.cc:448
 hmdcstoreevents.cc:449
 hmdcstoreevents.cc:450
 hmdcstoreevents.cc:451
 hmdcstoreevents.cc:452