StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StGenericL2Emulator.cxx
1 // *-- Author : J.Balewski, R.Fatemi
2 //
3 // $Id: StGenericL2Emulator.cxx,v 1.18 2009/10/12 18:04:36 pibero Exp $
4 
5 #include "StChain.h"
6 #include "St_DataSetIter.h"
7 
8 #include <Stiostream.h>
9 #include <math.h>
10 
11 #include "TFile.h"
12 #include "TArrayF.h"
13 
14 #include <StMessMgr.h>
15 
16 
17 // ETOW stuff
18 #include <StEEmcUtil/database/StEEmcDb.h>
19 #include <StEEmcUtil/database/EEmcDbItem.h>
20 #include <StEEmcUtil/database/EEmcDbCrate.h>
21 
22 
23 // BTOW stuff
24 #include "StEmcUtil/geometry/StEmcGeom.h"
25 #include "StEmcUtil/database/StBemcTables.h"
26 #include "StEmcUtil/database/StEmcDecoder.h"
27 
28 // StEvent
29 #include "StEventTypes.h"
30 #include "StEvent/StEvent.h"
31 #include "StEvent/StEmcCollection.h"
32 #include "StEvent/StEmcDetector.h"
33 #include "StEvent/StTriggerId.h"
34 #include "StEvent/StTriggerIdCollection.h"
35 
36 //MuDst
37 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
38 #include "StMuDSTMaker/COMMON/StMuDst.h"
39 #include "StMuDSTMaker/COMMON/StMuTriggerIdCollection.h"
40 #include "StMuDSTMaker/COMMON/StMuEvent.h"
41 
42 //trg stuff
43 #include "StDaqLib/TRG/trgStructures.h"
44 
45 //L2 stuff
46 #include "L2algoUtil/L2EmcDb.h"
47 #include "L2algoUtil/L2DbConfig.h" // time-dep config
48 #include "L2algoUtil/L2DbTime.h" // time-dep config
49 
50 //trg-data from ezTree, to read on-line decision, tmp
51 #include "StMuDSTMaker/EZTREE/EztTrigBlob.h" // to access DB time stamp
52 #include "St_db_Maker/St_db_Maker.h"
53 
54 // L0-trigSimu
55 #include "StTriggerSimuMaker.h"
56 #include "StTriggerUtilities/Eemc/StEemcTriggerSimu.h"
57 #include "StTriggerUtilities/Eemc/EMCdsm2Tree.h"
58 
59 #include "StGenericL2Emulator.h"
60 
61  /* usefull dimensions */
62 #define MaxBtowRdo (L2EmcDb::BTOW_MAXFEE*L2EmcDb::BTOW_DATSIZE)
63 #define MaxEtowRdo (L2EmcDb::ETOW_MAXFEE*L2EmcDb::ETOW_DATSIZE)
64 
65 ClassImp(StGenericL2Emulator)
66 
68  mBTOW_BANK =new unsigned short [MaxBtowRdo];
69  mETOW_BANK =new unsigned short [MaxEtowRdo];
70  mTrigData = new TrgDataType; //note it is _local_ container to store L2Results - it has nothing in common with the same type container filled during data taking - do not mix them up -JB
71  mUseMuDst=true;
72  setMC(false);
73 
74  mSetupPath="wrong2";
75  mOutPath="wrong3";
76  mYear=-1;
77  mYearMonthDay=-2;
78  mHourMinSec=-3;
79 }
80 
81 //________________________________________________________
82 //________________________________________________________
83 
84 StGenericL2Emulator::~StGenericL2Emulator(){
85  delete [] mBTOW_BANK;
86  delete [] mETOW_BANK;
87 
88 }
89 
90 
91 
92 
93 //________________________________________________________
94 //________________________________________________________
95 
96 void StGenericL2Emulator::init(){
97  mTotInpEve=0;
98  //................EEMC stuff ..............
99  mDbE = (StEEmcDb*)StMaker::GetChain()->GetDataSet("StEEmcDb");
100  assert(mDbE);
101  mGeomB = StEmcGeom::instance("bemc");
102  //....
103  mL2EmcDb=0; // will be instantiated in InitRun
104 
105  LOG_INFO << Form("generic:init() , use: MuDst=1 (StEvent=0)=%d isMC=%d",mUseMuDst,mMCflag) <<endm;
106 }
107 
108 //____________________________________________________________
109 //____________________________________________________________
110 //____________________________________________________________
111 void
112 StGenericL2Emulator::make(){
113  int L0trgSwitch=1; // flag passed to L2-algos, derived from L0 decision
114 #if 0 // filter some events base on L0-trigger decision, if you want
115  StTriggerSimuMaker *L0trgSim=(StTriggerSimuMaker *)StMaker::GetChain()->GetMaker("StarTrigSimu");
116  assert(L0trgSim);
117  // L0trgSim->eemc->dsm3TRG->print();
118  EMCdsm2Tree *dsm2tree=L0trgSim->eemc->dsm2TreeADC; // use response based on ADC
119  LOG_INFO<<Form("sim L0,dsm2,EEMC: EJP2bit=%d; EEtot1bit=%d , val=%d",
120  dsm2tree->getOutEndcapJP2bit(), dsm2tree->getOutEndcapSum1bit(),dsm2tree->getIntEndcapSum())<<endm;
121 
122  if(dsm2tree->getOutEndcapJP2bit()==0) return;
123 
124  //....... processing only events w/ EJP0 ....., just an example
125  L0trgSwitch=1; // can assigne here a different value depending on L0 sim
126 #endif
127 
128 
129  mTotInpEve++;
130 
131 
132  if(mUseMuDst) {// pick one source of ADCs
133  doBanksFromMuDst();
134  } else {
135  doBanksFromStRawData();
136  }
137 
138 
139  int ia;
140  for(ia=0;ia<mL2algoN;ia++) {//execute all instantiated L2algos
141  if(mL2algo[ia]==0) continue;
142  mL2algo[ia]-> doEvent(L0trgSwitch, mTotInpEve, (TrgDataType*)mTrigData,mBTOW_in, mBTOW_BANK, mETOW_in, mETOW_BANK);
143  } // tmp, accept should be filled in internaly, in next iteration, Jan
144 
145  // printf("L2Generic::make BB=%d EE=%d \n",mBTOW_in,mETOW_in);
146 
147  addTriggerList();
148 
149  return;
150 }
151 
152 
153 //========================================
154 //========================================
155 void
156 StGenericL2Emulator::initRun1(){
157  //WARN: do NOT use runNo for any setup - it would berak for M-C
158 
159  St_db_Maker* mydb = (St_db_Maker*) StMaker::GetChain()->GetMaker("StarDb");
160  assert(mydb);
161  mYear=mydb->GetDateTime().GetYear();
162  mYearMonthDay=mydb->GetDateTime().GetDate();
163  mHourMinSec=mydb->GetDateTime().GetTime();
164 
165 
166  //define path for L2 setup files & output
167  mSetPath=Form("%sL2/%d/db/",mSetupPath.Data(),mYear);
168  LOG_INFO <<"initRun1() "<<"DB setPath="<<mSetPath.Data()<<" outPath="<<mOutPath.Data()<<endm;
169 
170  // read in time-dependent L2 configuration
171  L2DbConfig confDB1(mSetPath+"/L2DbTime.dat");
172  L2DbTime * confL2 = confDB1.getConfiguration( mYearMonthDay, mHourMinSec );
173  assert( confL2 ); // trigger code has not been setup properly
174 
175 
176  // create new L2Db instance , new per run
177  if(mL2EmcDb) delete mL2EmcDb;
178  mL2EmcDb=new L2EmcDb((char*)mSetPath.Data(),(char*)mOutPath.Data());
179  // override default ped and mask files
180  mL2EmcDb->setPedFile ( confL2->getPedFile() );
181  mL2EmcDb->setMaskFile( confL2->getMaskFile() );
182 
183 
184  // access BTOW DB only re-map ADC back to rdo indexing
185  StBemcTables *myTable=new StBemcTables;
186  StMaker* maker= StMaker::GetChain()->GetMaker("StarDb");
187  myTable->loadTables(maker );
188  // this is how BTOW mapping is accesible
189  mMappB = new StEmcDecoder(mydb->GetDateTime().GetDate(),mydb->GetDateTime().GetTime());
190  LOG_INFO << "initRun1() done"<<endm;
191 
192 
193 }
194 
195 //========================================
196 //========================================
197 void
198 StGenericL2Emulator::initRun2(int runNo){
199  //WARN: do NOT use runNo for any setup - it would berak for M-C
200  // read in time-dependent L2 offline trigger ID's
201  enum {mxPar=10}; // maximuma for any algo, separate ints & floats
202  int intsPar[mxPar]; // params passed from run control gui
203  float floatsPar[mxPar];
204 
205  LOG_INFO << Form("initRun2() run#=%d begin",runNo)<<endm;
206  L2DbConfig confDB2(mSetPath+"/L2TriggerIds.dat");
207 
208  int ia;
209  for(ia=0;ia<mL2algoN;ia++) { //initialize trigger ID for given L2-algo
210  // printf("uu i=%d, =%s=\n",ia,mL2algo[ia]->getName());
211  if (mL2algo[ia]==0) continue;
212  TString algoName=mL2algo[ia]->getName();
213  L2DbTime *config = confDB2.getConfiguration(mYearMonthDay,mHourMinSec,algoName);
214  if(config==0) {
215  LOG_ERROR << Form("\n************\ninitRun2() failed L2-%s configuration for yyyy=%d hhmmss=%d,\n On explicit request from Renee, the L2 emulator will continue with disabled this particulra L2-algo.\nThis will result with false positives - ignore emulated trigger results for this algo,\nIt would be much better to fix the setup and provide missing record.\nYou have been warned, Jan B.\n***********\n",algoName.Data(),mYearMonthDay,mHourMinSec)<<endm;
216  mL2algo[ia]=0; continue;
217  // assert(config); disabed to let the code go dispite missing setup, Jan
218  }
219  TString aa1 = config->getBuf1(); // setup name
220  TString aa2 = config->getBuf2();
221  Int_t trgId = atoi(aa2.Data());
222  LOG_INFO<<Form("L2algo=%s=initRun2(), trigID=%d setup=%s= ",algoName.Data(),trgId,aa1.Data())<<endm;
223 
224  TString fullPath=Form("%sL2/%d/algos/%s", mSetupPath.Data(), mYear,aa1.Data());
225  L2VirtualAlgo::readParams(fullPath, mxPar, intsPar, floatsPar);// tmp, no check of # of params
226  assert(mL2algo[ia]->initRun( runNo,intsPar,floatsPar)==0);
227  mL2algo[ia]->setOflTrigID(trgId);
228  }
229  LOG_INFO << "initRun2() done"<<endm;
230 }
231 
232 //========================================
233 
234 StTriggerSimuDecision
235 StGenericL2Emulator::isTrigger(int trigId) {
236  unsigned int j;
237  for(j=0; j<mAcceptTriggerList.size();j++) {
238  if(trigId==mAcceptTriggerList[j]) return kYes;
239  }
240  for(j=0; j<mVetoTriggerList.size();j++) {
241  if(trigId==mVetoTriggerList[j]) return kNo;
242  }
243  return kDoNotCare;
244 }
245 
246 //========================================
247 //========================================
248 void
249 StGenericL2Emulator::finish() {
250 
251  LOG_INFO <<"Finish()=======\n totEveSeen="<< mTotInpEve<<endm;
252 
253  int ia;
254  for(ia=0;ia<mL2algoN;ia++) //execute all instantiated L2algos
255  if(mL2algo[ia]) mL2algo[ia]->finishRun();
256  LOG_INFO <<"Finish()======= end"<<endm;
257 
258 }
259 //========================================
260 //========================================
261 void
262 StGenericL2Emulator::clear( ){
263  mBTOW_in=mETOW_in=0;
264  memset(mBTOW_BANK,0,MaxBtowRdo*sizeof(unsigned short));
265  memset(mETOW_BANK,0,MaxEtowRdo*sizeof(unsigned short));
266  memset(mTrigData,0,sizeof(TrgDataType));
267  mAcceptTriggerList.clear();
268  mVetoTriggerList.clear();
269 }
270 
271 
272 //____________________________________________________________
273 //____________________________________________________________
274 //____________________________________________________________
276  StEvent* mEvent = (StEvent*)StMaker::GetChain()-> GetInputDS("StEvent");
277  assert(mEvent); // fix your chain
278  StEmcCollection* emcCollection = mEvent->emcCollection();
279 
280  StEmcDetector* twB = emcCollection->detector(kBarrelEmcTowerId);
281  StEmcDetector* twE = emcCollection->detector(kEndcapEmcTowerId);
282  if(twE==0) {
283  printf(" StGenericL2Emulator found no E-EMC tower data in StEvent, skip event\n");
284  return ;
285  }
286 
287  int i;
288 
289  if(twB) {
290  printf(" StGenericL2Emulator:: B_EMC Tower HITS ...\n");
291  for ( i = 1; i <= (int)twB->numberOfModules(); i++) { // The B-EMC modules
292  StSPtrVecEmcRawHit& emcTowerHits = twB->module(i)->hits();
293  unsigned int j;
294  for ( j = 0; j < emcTowerHits.size(); j++) {
295  int adc= emcTowerHits[j]->adc();
296  int mod= emcTowerHits[j]->module();
297  int sub= emcTowerHits[j]->sub();
298  int eta= emcTowerHits[j]->eta();
299  float energy= emcTowerHits[j]->energy();
300  printf("j=%d, mod=%d, sub=%d, eta=%d adc=%d ener=%f\n",j,mod,sub,eta,adc,energy);
301  }
302  }
303  } else {
304  printf("StGenericL2Emulator found no B-EMC tower data in StEvent, skip event\n");
305  }
306 
307  if(twE) {
308  printf("StGenericL2Emulator:: E_EMC Tower HITS ... %d\n",twE->numberOfModules());
309  for ( i = 0; i < (int)twE->numberOfModules(); i++) { // The E-EMC modules
310  // printf("AAA %d\n",i);
311  StEmcModule* stmod = twE->module(i);
312  if(stmod==0) continue;
313  StSPtrVecEmcRawHit& emcTowerHits = stmod->hits();
314  unsigned int j;
315  for ( j = 0; j < emcTowerHits.size(); j++) {
316  int adc= emcTowerHits[j]->adc();
317  int sec= emcTowerHits[j]->module()+1;
318  int sub= emcTowerHits[j]->sub()+'A';
319  int eta= emcTowerHits[j]->eta()+1;
320  float energy= emcTowerHits[j]->energy();
321  printf("j=%d, sec=%d, sub=%c, eta=%d adc=%d ener=%f\n",j,sec,sub,eta,adc,energy);
322  }
323  }
324  } else {
325  printf("StGenericL2Emulator found no E-EMC tower data in StEvent, skip event\n");
326  }
327 
328 }
329 
330 
331 //========================================
332 //========================================
333 void
334 StGenericL2Emulator::doBanksFromStRawData(){
335  assert(mUseMuDst==false);
336  return; // tmp disabled, see below
337  assert(1==2); // define E/BTOW_in=1 somehow before use, JB
338 
339  StEvent *mEvent = (StEvent *)StMaker::GetChain()-> GetInputDS("StEvent");
340  if (!mEvent) {
341  LOG_ERROR<< "StGenericL2Emulator::getStEmcDetector() -- no StEvent found" << endm; return ;
342  }
343  StEmcCollection *emcColl = mEvent->emcCollection();
344  if (!emcColl) {
345  return ;
346  }
347 
348  int icr;
349 
350  //.................BTOW is simple ........
351  StEmcRawData *rawB = mEvent->emcCollection()->bemcRawData();
352  assert(rawB);
353  icr=0;
354  printf(" BTOW size=%d\n",rawB->sizeData(icr));
355  assert(rawB->sizeData(icr) <=MaxBtowRdo);
356  unsigned short* adc=rawB->data(icr);
357  int i;
358  // copy BTOW ADCs 1:1
359  for(i=0;i<rawB->sizeData(icr);i++) mBTOW_BANK[i]=adc[i];
360 
361  //...........ETOW : transpose crates & channals back to oryginal daq format
362  StEmcRawData *rawE = mEvent->emcCollection()->eemcRawData();
363  assert(rawE);
364  assert(rawE->sizeData(icr) <=MaxEtowRdo);
365 
366  for(icr=0;icr<mDbE->getNFiber();icr++) {
367  const EEmcDbCrate *fiber=mDbE->getFiber(icr);
368  if(fiber->crID>6) continue; // drop non-tower crates
369  if(rawE->sizeHeader(icr)<=0) continue; // unused fibers
370  assert(fiber->useIt); // code not ready to handle masked crates
371  printf(" ETOW crID=%d type=%c size=%d\n",fiber->crID,fiber->type,rawE->sizeData(icr));
372  assert(fiber->crID==icr+1);
373  unsigned short* adc=rawE->data(icr);
374  int i;
375  for(i=0;i<rawE->sizeData(icr);i++) {
376  int rdo=icr + i*L2EmcDb::ETOW_MAXFEE;
377  assert(rdo>=0 && rdo<MaxEtowRdo); // siher ist siher
378  mETOW_BANK[rdo]=adc[i];
379  }
380  // for(i=0;i<30;i++) printf("ch=%d adc=%d\n",i,adc[i]);//test
381  }
382 
383 }
384 
385 
386 
387 
388 
389 
390 //========================================
391 //========================================
392 void
393 StGenericL2Emulator::doBanksFromMuDst(){
394 
395  assert(mUseMuDst==true);
396 
397  StEvent *mEvent = (StEvent*)StMaker::GetChain()-> GetInputDS("StEvent");
398  assert(mEvent);
399 
400  StMuDstMaker *muMk = (StMuDstMaker*)StMaker::GetChain()->GetMaker("MuDst");
401  assert(muMk);
402 
403  StMuEmcCollection* muEmc = muMk->muDst()->muEmcCollection();
404 
405  //......................... E T O W ....................
406  int nE=0;
407  int i;
408  for (i=0; i < muEmc->getNEndcapTowerADC(); i++) {
409  int sec,eta,sub,rawAdc; //muDst ranges:sec:1-12, sub:1-5, eta:1-12
410  muEmc->getEndcapTowerADC(i,rawAdc,sec,sub,eta);
411  assert(sec>0 && sec<=MaxSectors);// total corruption of muDst
412  //Db ranges: sec=1-12,sub=A-E,eta=1-12,type=T,P-R ; slow method
413  const EEmcDbItem *x=mDbE->getTile(sec,'A'+sub-1,eta,'T');
414  assert(x); // DB mapping must be provided for all channels
415  assert(x->crate>0);
416  assert(x->crate<=6);
417  int rdo=x->crate-1 + x->chan*L2EmcDb::ETOW_MAXFEE;
418  mETOW_BANK[rdo]=rawAdc;
419  nE++;
420  }
421  mETOW_in=1;
422  LOG_DEBUG << Form("doBanksFromMuDst() , ETOW nAdc=%d",nE)<<endm; assert(nE==720);
423 
424 
425  //......................... B T O W ....................
426  //use StEvent as default to get simulation right in BEMC
427  if( mEvent)
428  {
429  StEmcCollection *emc = mEvent->emcCollection();
430  if (emc)
431  {
432  StEmcDetector* detector=emc->detector(kBarrelEmcTowerId);
433  if(detector)
434  {
435  for(Int_t m = 1; m <= 120; ++m)
436  {
437  StEmcModule* module = detector->module(m);
438  if(module)
439  {
440  StSPtrVecEmcRawHit& rawHit=module->hits();
441  for(UInt_t k = 0; k < rawHit.size(); ++k)
442  {
443  if(rawHit[k])
444  {
445  int did, RDO;
446 
447  Int_t m=rawHit[k]->module();
448  Int_t e=rawHit[k]->eta();
449  Int_t s=abs(rawHit[k]->sub());
450  Int_t adc=rawHit[k]->adc();
451 
452  //Get software tower id to get DaqID
453  mGeomB->getId(m,e,s,did);
454  mMappB->GetDaqIdFromTowerId(did,RDO);
455  mBTOW_BANK[RDO]=adc;
456  }
457  }
458  }
459  }
460  }
461  }
462  mBTOW_in=1;
463  }
464  else
465  {
466 
467  int nB=0;
468  int id;
469  for (id=1; id <=4800 ; id++)
470  {
471  int rawAdc= muEmc->getTowerADC(id);
472  int RDO;
473  assert(mMappB->GetDaqIdFromTowerId(id,RDO)==1);// is good range
474  mBTOW_BANK[RDO]=rawAdc;
475  nB++;
476  }
477 
478  mBTOW_in=1; // tmp, it should detectd there is no BTOW data
479  /*The easiest way in muEmcCollection is
480  getCrateStatus(int crate, int detector = bemc)
481  This is just a placehold so there is no methods to check stuff.
482  Alex
483  */
484 
485  LOG_INFO << Form("doBanksFromMuDst() , BTOW nAdc=%d",nB)<<endm;
486  assert(nB==4800);
487 
488  }
489 
490 }
491 
492 //========================================
493 //========================================
494 void
496  int i;
497 
498  printf("printBEblocks(), just begin & end of each block, mBTOW_in=%d mETOW_in=%d\n",mBTOW_in,mETOW_in);
499 
500  if(mBTOW_in) {
501  for(i=0;i<10;i++) printf("BTOWi=%d ADC=%d\n",i,mBTOW_BANK[i]);
502  for(i=4790;i<4800;i++) printf("BTOWi=%d ADC=%d\n",i,mBTOW_BANK[i]);
503  }
504 
505  if( mETOW_in){
506  for(i=0;i<10;i++) printf("ETOWi=%d ADC=%d\n",i,mETOW_BANK[i]);
507  for(i=710;i<720;i++) printf("ETOWi=%d ADC=%d\n",i,mETOW_BANK[i]);
508  }
509 }
510 
511 
512 
513 //========================================
514 void
515 StGenericL2Emulator::addTriggerList() {
516 
517  int ia;
518  for(ia=0;ia<mL2algoN;ia++) {
519  if (mL2algo[ia]==0) continue;
520  if (mL2algo[ia]->getOflTrigID()==0) continue; // undefined triggerID
521  if (mL2algo[ia]->accepted())
522  mAcceptTriggerList.push_back(mL2algo[ia]->getOflTrigID());
523  else
524  mVetoTriggerList.push_back(mL2algo[ia]->getOflTrigID());
525  }
526 
527  LOG_DEBUG << Form("addTriggerList() yesSize=%d vetoSize=%d",mAcceptTriggerList.size(),mVetoTriggerList.size())<<endm;
528 }
529 
530 const unsigned int * StGenericL2Emulator::result() const {
531  return ( (TrgDataType*)mTrigData)->TrgSum.L2Result;
532 }
533 
534 // $Log: StGenericL2Emulator.cxx,v $
535 // Revision 1.18 2009/10/12 18:04:36 pibero
536 // Moved StEEmcUtil/EEdsm to StTriggerUtilities/Eemc
537 //
538 // Revision 1.17 2009/02/04 20:26:22 rfatemi
539 // Update include for StEmcDecoder as well as access to StEEmc
540 //
541 // Revision 1.16 2008/10/14 00:53:12 balewski
542 // allow production of bin.eve files from 2008 pp data to be used by L2-algos
543 //
544 // Revision 1.15 2008/01/23 16:22:26 balewski
545 // make event loop silent
546 //
547 // Revision 1.14 2008/01/23 02:52:23 balewski
548 // allow L2-algo to be disabled in initRun if setup time stamp is wrong.
549 //
550 // Revision 1.13 2008/01/17 01:56:52 kocolosk
551 // export 128-byte emulated L2Result
552 //
553 // Revision 1.12 2007/12/15 00:59:06 balewski
554 // protect against unforeseen time stamp
555 //
556 // Revision 1.11 2007/12/11 16:39:40 rfatemi
557 // Fixed Bug in StGenericL2Emulator
558 //
559 // Revision 1.10 2007/12/09 15:56:28 rfatemi
560 // Allow BEMC to get ADC from StEvent instead of MuDst
561 //
562 // Revision 1.9 2007/11/19 22:18:16 balewski
563 // most L2algos provide triggerID's
564 //
565 // Revision 1.8 2007/11/18 21:58:53 balewski
566 // L2algos triggerId list fixed
567 //
568 // Revision 1.7 2007/11/13 23:05:59 balewski
569 // toward more unified L2-algos
570 //
571 // Revision 1.6 2007/11/13 00:12:26 balewski
572 // added offline triggerID, take1
573 //
574 // Revision 1.5 2007/11/08 21:29:09 balewski
575 // now L2emu runs on M-C
576 //
577 // Revision 1.4 2007/11/06 22:07:20 balewski
578 // added timeStamp controlled L2 setup from Jason
579 //
580 // Revision 1.3 2007/10/25 02:06:54 balewski
581 // added L2upsilon & binary event dump
582 //
583 // Revision 1.2 2007/10/23 02:47:10 balewski
584 // cleanup
585 //
586 // Revision 1.1 2007/10/22 23:09:58 balewski
587 // split L2 to generic and year specific, not finished
588 //
589 // Revision 1.2 2007/10/12 20:11:50 balewski
590 // cleanu setup , output path
591 //
592 // Revision 1.1 2007/10/11 00:33:09 balewski
593 // L2algo added
594 //
595 // Revision 1.5 2003/09/02 17:57:55 perev
596 // gcc 3.2 updates + WarnOff
597 //
598 // Revision 1.4 2003/07/18 18:31:46 perev
599 // test for nonexistance of XXXReader added
600 //
601 // Revision 1.3 2003/04/30 20:36:37 perev
602 // Warnings cleanup. Modified lines marked VP
603 //
604 // Revision 1.2 2003/02/14 00:04:31 balewski
605 // remove few printouts
606 //
607 // Revision 1.1 2003/01/28 23:13:00 balewski
608 // star
609 //
610 
611 
612 
613 
614 
615 
StMuDst * muDst()
Definition: StMuDstMaker.h:425
void setPedFile(const char *c)
Definition: L2EmcDb.cxx:30
int useIt
flag to ignore data from misconfig/broken crate/box
Definition: EEmcDbCrate.h:19
const unsigned int * result() const
bag of 64 bytes whose interpretation changes year-by-year
void setMaskFile(const char *c)
Definition: L2EmcDb.cxx:31
void loadTables(StMaker *anyMaker)
load tables.
char type
is &#39;T&#39; for towers &amp; &#39;S&#39; for MAPMT
Definition: EEmcDbCrate.h:18
static StMuEmcCollection * muEmcCollection()
returns pointer to current StMuEmcCollection
Definition: StMuDst.h:389
void printBEblocks()
regenerated banks
void printBEtowers()
hits in StEvent
int crID
logical crate ID
Definition: EEmcDbCrate.h:13
int GetDaqIdFromTowerId(int softId, int &RDO) const
Get Daq Id from Software Id for towers.
int chan
hardware channel
Definition: EEmcDbItem.h:28