00001
00002 #include "EcalTrigPrimESProducer.h"
00003
00004 #include <iostream>
00005 #include <fstream>
00006 #include <TMath.h>
00007 #include <sstream>
00008
00009 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00010
00011
00012
00013
00014
00015 struct GzInputStream
00016 {
00017 typedef voidp gzFile ;
00018 gzFile gzf ;
00019 char buffer[256] ;
00020 std::istringstream iss ;
00021 bool eof ;
00022 GzInputStream( const char * file )
00023 : eof(false)
00024 {
00025 gzf = gzopen(file,"rb") ;
00026 if (gzf==Z_NULL)
00027 {
00028 eof = true ;
00029 edm::LogWarning("EcalTPG") <<"Database file "<<file<<" not found!!!";
00030 }
00031 else readLine() ;
00032 }
00033 void readLine()
00034 {
00035 char * res = gzgets(gzf,buffer,256) ;
00036 eof = (res==Z_NULL) ;
00037 if (!eof)
00038 {
00039 iss.clear() ;
00040 iss.str(buffer) ;
00041 }
00042 }
00043 ~GzInputStream()
00044 { gzclose(gzf) ; }
00045 operator void*()
00046 { return ((eof==true)?((void*)0):iss) ; }
00047 } ;
00048
00049 template <typename T>
00050 GzInputStream & operator>>( GzInputStream & gis, T & var )
00051 {
00052 while ((gis)&&(!(gis.iss>>var)))
00053 { gis.readLine() ; }
00054 return gis ;
00055 }
00056
00057
00058
00059
00060
00061
00062 EcalTrigPrimESProducer::EcalTrigPrimESProducer(const edm::ParameterSet& iConfig) :
00063 dbFilename_(iConfig.getUntrackedParameter<std::string>("DatabaseFile","")),
00064 flagPrint_(iConfig.getParameter<bool>("WriteInFile"))
00065 {
00066
00067
00068 setWhatProduced(this, &EcalTrigPrimESProducer::producePedestals) ;
00069 setWhatProduced(this, &EcalTrigPrimESProducer::produceLinearizationConst) ;
00070 setWhatProduced(this, &EcalTrigPrimESProducer::produceSlidingWindow) ;
00071 setWhatProduced(this, &EcalTrigPrimESProducer::produceFineGrainEB) ;
00072 setWhatProduced(this, &EcalTrigPrimESProducer::produceFineGrainEEstrip) ;
00073 setWhatProduced(this, &EcalTrigPrimESProducer::produceFineGrainEEtower) ;
00074 setWhatProduced(this, &EcalTrigPrimESProducer::produceLUT) ;
00075 setWhatProduced(this, &EcalTrigPrimESProducer::produceWeight) ;
00076 setWhatProduced(this, &EcalTrigPrimESProducer::produceWeightGroup) ;
00077 setWhatProduced(this, &EcalTrigPrimESProducer::produceLutGroup) ;
00078 setWhatProduced(this, &EcalTrigPrimESProducer::produceFineGrainEBGroup) ;
00079 setWhatProduced(this, &EcalTrigPrimESProducer::producePhysicsConst) ;
00080 setWhatProduced(this, &EcalTrigPrimESProducer::produceBadX) ;
00081 setWhatProduced(this, &EcalTrigPrimESProducer::produceBadStrip) ;
00082 setWhatProduced(this, &EcalTrigPrimESProducer::produceBadTT) ;
00083 setWhatProduced(this, &EcalTrigPrimESProducer::produceSpike) ;
00084
00085 }
00086
00087
00088 EcalTrigPrimESProducer::~EcalTrigPrimESProducer()
00089 {
00090 }
00091
00092
00093
00094
00095
00096
00097
00098
00099 std::auto_ptr<EcalTPGPedestals> EcalTrigPrimESProducer::producePedestals(const EcalTPGPedestalsRcd & iRecord)
00100 {
00101 std::auto_ptr<EcalTPGPedestals> prod(new EcalTPGPedestals());
00102 parseTextFile() ;
00103 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00104 for (it = mapXtal_.begin() ; it != mapXtal_.end() ; it++) {
00105 EcalTPGPedestal item ;
00106 item.mean_x12 = (it->second)[0] ;
00107 item.mean_x6 = (it->second)[3] ;
00108 item.mean_x1 = (it->second)[6] ;
00109 prod->setValue(it->first,item) ;
00110 }
00111 return prod;
00112 }
00113
00114 std::auto_ptr<EcalTPGLinearizationConst> EcalTrigPrimESProducer::produceLinearizationConst(const EcalTPGLinearizationConstRcd & iRecord)
00115 {
00116 std::auto_ptr<EcalTPGLinearizationConst> prod(new EcalTPGLinearizationConst());
00117 parseTextFile() ;
00118 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00119 for (it = mapXtal_.begin() ; it != mapXtal_.end() ; it++) {
00120 EcalTPGLinearizationConstant item ;
00121 item.mult_x12 = (it->second)[1] ;
00122 item.mult_x6 = (it->second)[4] ;
00123 item.mult_x1 = (it->second)[7] ;
00124 item.shift_x12 = (it->second)[2] ;
00125 item.shift_x6 = (it->second)[5] ;
00126 item.shift_x1 = (it->second)[8] ;
00127 prod->setValue(it->first,item) ;
00128 }
00129 return prod;
00130 }
00131
00132 std::auto_ptr<EcalTPGSlidingWindow> EcalTrigPrimESProducer::produceSlidingWindow(const EcalTPGSlidingWindowRcd & iRecord)
00133 {
00134 std::auto_ptr<EcalTPGSlidingWindow> prod(new EcalTPGSlidingWindow());
00135 parseTextFile() ;
00136 for (int subdet=0 ; subdet<2 ; subdet++) {
00137 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00138 for (it = mapStrip_[subdet].begin() ; it != mapStrip_[subdet].end() ; it++) {
00139 prod->setValue(it->first,(it->second)[0]) ;
00140 }
00141 }
00142 return prod;
00143 }
00144
00145 std::auto_ptr<EcalTPGFineGrainEBIdMap> EcalTrigPrimESProducer::produceFineGrainEB(const EcalTPGFineGrainEBIdMapRcd & iRecord)
00146 {
00147 std::auto_ptr<EcalTPGFineGrainEBIdMap> prod(new EcalTPGFineGrainEBIdMap());
00148 parseTextFile() ;
00149 EcalTPGFineGrainConstEB fg ;
00150 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00151 for (it = mapFg_.begin() ; it != mapFg_.end() ; it++) {
00152 fg.setValues((it->second)[0], (it->second)[1], (it->second)[2], (it->second)[3], (it->second)[4]) ;
00153 prod->setValue(it->first,fg) ;
00154 }
00155 return prod;
00156 }
00157
00158 std::auto_ptr<EcalTPGFineGrainStripEE> EcalTrigPrimESProducer::produceFineGrainEEstrip(const EcalTPGFineGrainStripEERcd & iRecord)
00159 {
00160 std::auto_ptr<EcalTPGFineGrainStripEE> prod(new EcalTPGFineGrainStripEE());
00161 parseTextFile() ;
00162
00163 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00164 for (it = mapStrip_[1].begin() ; it != mapStrip_[1].end() ; it++) {
00165 EcalTPGFineGrainStripEE::Item item ;
00166 item.threshold = (it->second)[2] ;
00167 item.lut = (it->second)[3] ;
00168 prod->setValue(it->first,item) ;
00169 }
00170
00171 for (it = mapStrip_[0].begin() ; it != mapStrip_[0].end() ; it++) {
00172 EcalTPGFineGrainStripEE::Item item ;
00173 item.threshold = (it->second)[2] ;
00174 item.lut = (it->second)[3] ;
00175 prod->setValue(it->first,item) ;
00176 }
00177 return prod;
00178 }
00179
00180 std::auto_ptr<EcalTPGFineGrainTowerEE> EcalTrigPrimESProducer::produceFineGrainEEtower(const EcalTPGFineGrainTowerEERcd & iRecord)
00181 {
00182 std::auto_ptr<EcalTPGFineGrainTowerEE> prod(new EcalTPGFineGrainTowerEE());
00183 parseTextFile() ;
00184 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00185 for (it = mapTower_[1].begin() ; it != mapTower_[1].end() ; it++) {
00186 prod->setValue(it->first,(it->second)[1]) ;
00187 }
00188 return prod;
00189 }
00190
00191 std::auto_ptr<EcalTPGLutIdMap> EcalTrigPrimESProducer::produceLUT(const EcalTPGLutIdMapRcd & iRecord)
00192 {
00193 std::auto_ptr<EcalTPGLutIdMap> prod(new EcalTPGLutIdMap());
00194 parseTextFile() ;
00195 EcalTPGLut lut ;
00196 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00197 for (it = mapLut_.begin() ; it != mapLut_.end() ; it++) {
00198 unsigned int lutArray[1024] ;
00199 for (int i=0 ; i <1024 ; i++) lutArray[i] = (it->second)[i] ;
00200 lut.setLut(lutArray) ;
00201 prod->setValue(it->first,lut) ;
00202 }
00203 return prod;
00204 }
00205
00206 std::auto_ptr<EcalTPGWeightIdMap> EcalTrigPrimESProducer::produceWeight(const EcalTPGWeightIdMapRcd & iRecord)
00207 {
00208 std::auto_ptr<EcalTPGWeightIdMap> prod(new EcalTPGWeightIdMap());
00209 parseTextFile() ;
00210 EcalTPGWeights weights ;
00211 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00212 for (it = mapWeight_.begin() ; it != mapWeight_.end() ; it++) {
00213 weights.setValues((it->second)[0],
00214 (it->second)[1],
00215 (it->second)[2],
00216 (it->second)[3],
00217 (it->second)[4]) ;
00218 prod->setValue(it->first,weights) ;
00219 }
00220 return prod;
00221 }
00222
00223 std::auto_ptr<EcalTPGWeightGroup> EcalTrigPrimESProducer::produceWeightGroup(const EcalTPGWeightGroupRcd & iRecord)
00224 {
00225 std::auto_ptr<EcalTPGWeightGroup> prod(new EcalTPGWeightGroup());
00226 parseTextFile() ;
00227 for (int subdet=0 ; subdet<2 ; subdet++) {
00228 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00229 for (it = mapStrip_[subdet].begin() ; it != mapStrip_[subdet].end() ; it++) {
00230 prod->setValue(it->first,(it->second)[1]) ;
00231 }
00232 }
00233 return prod;
00234 }
00235
00236 std::auto_ptr<EcalTPGLutGroup> EcalTrigPrimESProducer::produceLutGroup(const EcalTPGLutGroupRcd & iRecord)
00237 {
00238 std::auto_ptr<EcalTPGLutGroup> prod(new EcalTPGLutGroup());
00239 parseTextFile() ;
00240 for (int subdet=0 ; subdet<2 ; subdet++) {
00241 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00242 for (it = mapTower_[subdet].begin() ; it != mapTower_[subdet].end() ; it++) {
00243 prod->setValue(it->first,(it->second)[0]) ;
00244 }
00245 }
00246 return prod;
00247 }
00248
00249 std::auto_ptr<EcalTPGFineGrainEBGroup> EcalTrigPrimESProducer::produceFineGrainEBGroup(const EcalTPGFineGrainEBGroupRcd & iRecord)
00250 {
00251 std::auto_ptr<EcalTPGFineGrainEBGroup> prod(new EcalTPGFineGrainEBGroup());
00252 parseTextFile() ;
00253 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00254 for (it = mapTower_[0].begin() ; it != mapTower_[0].end() ; it++) {
00255 prod->setValue(it->first,(it->second)[1]) ;
00256 }
00257 return prod;
00258 }
00259
00260 std::auto_ptr<EcalTPGPhysicsConst> EcalTrigPrimESProducer::producePhysicsConst(const EcalTPGPhysicsConstRcd & iRecord)
00261 {
00262 std::auto_ptr<EcalTPGPhysicsConst> prod(new EcalTPGPhysicsConst());
00263 parseTextFile() ;
00264 std::map<uint32_t, std::vector<float> >::const_iterator it ;
00265 for (it = mapPhys_.begin() ; it != mapPhys_.end() ; it++) {
00266 EcalTPGPhysicsConst::Item item ;
00267 item.EtSat = (it->second)[0] ;
00268 item.ttf_threshold_Low = (it->second)[1] ;
00269 item.ttf_threshold_High = (it->second)[2] ;
00270 item.FG_lowThreshold = (it->second)[3] ;
00271 item.FG_highThreshold = (it->second)[4] ;
00272 item.FG_lowRatio = (it->second)[5] ;
00273 item.FG_highRatio = (it->second)[6] ;
00274 prod->setValue(it->first,item) ;
00275 }
00276 return prod;
00277 }
00278
00279 std::auto_ptr<EcalTPGCrystalStatus> EcalTrigPrimESProducer::produceBadX(const EcalTPGCrystalStatusRcd & iRecord)
00280 {
00281 std::auto_ptr<EcalTPGCrystalStatus> prod(new EcalTPGCrystalStatus());
00282 parseTextFile() ;
00283 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00284 for (it = mapXtal_.begin() ; it != mapXtal_.end() ; it++) {
00285
00286 EcalTPGCrystalStatusCode badXValue;
00287 badXValue.setStatusCode(0);
00288 prod->setValue(it->first,badXValue) ;
00289 }
00290 return prod;
00291
00292 }
00293
00294 std::auto_ptr<EcalTPGStripStatus> EcalTrigPrimESProducer::produceBadStrip(const EcalTPGStripStatusRcd & iRecord)
00295 {
00296 std::auto_ptr<EcalTPGStripStatus> prod(new EcalTPGStripStatus());
00297
00298 return prod;
00299
00300 }
00301
00302 std::auto_ptr<EcalTPGTowerStatus> EcalTrigPrimESProducer::produceBadTT(const EcalTPGTowerStatusRcd & iRecord)
00303 {
00304 std::auto_ptr<EcalTPGTowerStatus> prod(new EcalTPGTowerStatus());
00305 parseTextFile() ;
00306 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it ;
00307
00308 for (it = mapTower_[0].begin() ; it != mapTower_[0].end() ; it++) {
00309
00310 prod->setValue(it->first,0) ;
00311 }
00312
00313 for (it = mapTower_[1].begin() ; it != mapTower_[1].end() ; it++) {
00314
00315 prod->setValue(it->first,0) ;
00316 }
00317
00318 return prod;
00319 }
00320
00321 std::auto_ptr<EcalTPGSpike> EcalTrigPrimESProducer::produceSpike(const EcalTPGSpikeRcd &iRecord)
00322 {
00323 std::auto_ptr<EcalTPGSpike> prod(new EcalTPGSpike());
00324 parseTextFile();
00325
00326 std::map<uint32_t, std::vector<uint32_t> >::const_iterator it;
00327 for(it = mapTower_[0].begin(); it != mapTower_[0].end(); ++it)
00328 {
00329 prod->setValue(it->first, (it->second)[2]);
00330 }
00331 return prod;
00332 }
00333
00334 void EcalTrigPrimESProducer::parseTextFile()
00335 {
00336 if (mapXtal_.size() != 0) return ;
00337
00338 uint32_t id ;
00339 std::string dataCard ;
00340 std::string line;
00341 std::ifstream infile ;
00342 std::vector<unsigned int> param ;
00343 std::vector<float> paramF ;
00344 int NBstripparams[2] = {4, 4} ;
00345 unsigned int data ;
00346 float dataF ;
00347
00348 std::string bufString;
00349 std::string iString;
00350 std::string fString;
00351 std::string filename = "SimCalorimetry/EcalTrigPrimProducers/data/"+dbFilename_;
00352 std::string finalFileName ;
00353 size_t slash=dbFilename_.find("/");
00354 if (slash!=0) {
00355 edm::FileInPath fileInPath(filename);
00356 finalFileName = fileInPath.fullPath() ;
00357 }
00358 else {
00359 finalFileName = dbFilename_.c_str() ;
00360 edm::LogWarning("EcalTPG") <<"Couldnt find database file via fileinpath, trying with pathname directly!!";
00361 }
00362
00363
00364 int k=0;
00365
00366 GzInputStream gis(finalFileName.c_str()) ;
00367 while (gis>>dataCard) {
00368
00369 if (dataCard == "PHYSICS_EB" || dataCard == "PHYSICS_EE") {
00370 gis>>std::dec>>id ;
00371
00372 if (flagPrint_){
00373 std::cout<<dataCard<<" "<<std::dec<<id <<std::endl;
00374 }
00375
00376 paramF.clear() ;
00377
00378 std::string st1;
00379 std::string st2;
00380
00381 for (int i=0 ; i <7 ; i++) {
00382 gis>>std::dec>>dataF ;
00383 paramF.push_back(dataF) ;
00384
00385
00386 if (flagPrint_){
00387
00388 if (i < 3){
00389 std::ostringstream oss;
00390 oss << dataF;
00391 std::string result1 = oss.str();
00392
00393 st1.append(result1);
00394 if (i != 2)
00395 st1.append(" ");
00396 }
00397
00398 if (i > 2){
00399 std::ostringstream oss;
00400 oss << dataF;
00401 std::string result2 = oss.str();
00402
00403 st2.append(result2);
00404 if (i != 6)
00405 st2.append(" ");
00406 }
00407
00408 }
00409 }
00410
00411 if (flagPrint_){
00412 std::cout << "" << st1 << std::endl;
00413 std::cout << "" << st2 << std::endl;
00414 std::cout << ""<< std::endl;
00415 }
00416
00417
00418 mapPhys_[id] = paramF ;
00419 }
00420
00421 if (dataCard == "CRYSTAL") {
00422
00423 gis>>std::dec>>id ;
00424
00425 std::string st3;
00426 std::string st4;
00427 std::string st5;
00428
00429 if(flagPrint_){
00430
00431 if(k==0)
00432 std::cout << "COMMENT ====== barrel crystals ====== " <<std::endl;
00433
00434 if (k==61200)
00435 std::cout << "COMMENT ====== endcap crystals ====== " <<std::endl;
00436
00437 k=k+1;
00438
00439 std::cout<<dataCard<<" "<<std::dec<<id << std::endl;
00440 }
00441
00442 param.clear() ;
00443 for (int i=0 ; i <9 ; i++) {
00444 gis>>std::hex>>data ;
00445
00446 param.push_back(data);
00447
00448 if(flagPrint_){
00449 if (i<3){
00450 std::ostringstream oss;
00451 oss << std::hex<< data;
00452 std::string result1 = oss.str();
00453
00454 st3.append("0x");
00455 st3.append(result1);
00456 if (i !=2)
00457 st3.append(" ");
00458
00459 }else if(i>2 && i<6){
00460 std::ostringstream oss;
00461 oss << std::hex << data;
00462 std::string result2 = oss.str();
00463
00464 st4.append("0x");
00465 st4.append(result2);
00466 if (i != 5)
00467 st4.append(" ");
00468 }else if(i>5 && i<9){
00469 std::ostringstream oss;
00470 oss << std::hex<< data;
00471 std::string result3 = oss.str();
00472
00473 st5.append("0x");
00474 st5.append(result3);
00475 if (i != 8)
00476 st5.append(" ");
00477 }
00478 }
00479
00480 }
00481
00482 if(flagPrint_){
00483 std::cout << " " << st3 << std::endl;
00484 std::cout << " " << st4 << std::endl;
00485 std::cout << " " << st5 << std::endl;
00486 }
00487
00488
00489 mapXtal_[id] = param ;
00490 }
00491
00492 if (dataCard == "STRIP_EB") {
00493 gis>>std::dec>>id ;
00494
00495 std::string st1;
00496
00497 if(flagPrint_)
00498 std::cout<<dataCard<<" "<<std::dec<<id <<std::endl;
00499
00500 param.clear() ;
00501 for (int i=0 ; i <NBstripparams[0] ; i++) {
00502 gis>>std::hex>>data ;
00503
00504 param.push_back(data);
00505
00506 if(flagPrint_){
00507 if (i==0){
00508 std::cout<<"0x"<<std::hex<< data << std::endl;
00509 }
00510 else if (i==1){
00511 std::cout<<""<<std::hex<< data << std::endl;
00512 }
00513 else if (i>1){
00514 std::ostringstream oss;
00515 if (i==2){
00516 oss<<"0x"<<std::hex<<data;
00517 std::string result4 = oss.str();
00518 st1.append(result4);
00519 }else if(i==3){
00520 std::ostringstream oss;
00521 oss<<" 0x"<<std::hex<<data;
00522 std::string result5 = oss.str();
00523
00524 st1.append(result5);
00525 std::cout<< "" << st1 << std::endl;
00526 }
00527 }
00528 }
00529 }
00530
00531
00532 mapStrip_[0][id] = param ;
00533 }
00534
00535 if (dataCard == "STRIP_EE") {
00536 gis>>std::dec>>id ;
00537
00538 std::string st6;
00539
00540 if(flagPrint_){
00541 std::cout<<dataCard<<" "<<std::dec<<id << std::endl;
00542 }
00543
00544 param.clear() ;
00545 for (int i=0 ; i <NBstripparams[1] ; i++) {
00546 gis>>std::hex>>data ;
00547 param.push_back(data);
00548
00549 if(flagPrint_){
00550 if (i==0){
00551 std::cout<<"0x"<<std::hex<<data << std::endl;
00552 }else if (i==1){
00553 std::cout<<" "<<std::hex<<data<< std::endl;
00554 }else if (i>1){
00555 std::ostringstream oss;
00556 if (i==2){
00557 oss<<"0x"<<std::hex<<data;
00558 std::string result4 = oss.str();
00559 st6.append(result4);
00560 }else if(i==3){
00561 std::ostringstream oss;
00562 oss<<" 0x"<<std::hex<<data;
00563 std::string result5 = oss.str();
00564
00565 st6.append(result5);
00566 std::cout<< "" << st6 << std::endl;
00567 }
00568 }
00569 }
00570 }
00571
00572
00573 mapStrip_[1][id] = param ;
00574 }
00575
00576 if(dataCard == "TOWER_EE"){
00577 gis>>std::dec>>id ;
00578
00579 if(flagPrint_)
00580 std::cout<<dataCard<<" "<<std::dec<<id <<std::endl;
00581
00582 param.clear() ;
00583 for (int i=0 ; i <2 ; i++) {
00584 gis>>std::hex>>data ;
00585 param.push_back(data);
00586
00587 if(flagPrint_){
00588 if(i==1){
00589 std::cout << "0x" <<std::dec<<data << std::endl;
00590 }else{
00591 std::cout << " " <<std::dec<<data << std::endl;
00592 }
00593 }
00594 }
00595
00596
00597 mapTower_[1][id] = param ;
00598 }
00599
00600 if (dataCard == "TOWER_EB") {
00601 gis>>std::dec>>id ;
00602
00603 if(flagPrint_)
00604 std::cout<<dataCard<<" "<<std::dec<<id << std::endl;
00605
00606 param.clear() ;
00607 for (int i=0 ; i <3 ; i++) {
00608 gis>>std::dec>>data ;
00609
00610 if(flagPrint_){
00611 std::cout << " " << std::dec << data << std::endl;
00612 }
00613
00614 param.push_back(data) ;
00615 }
00616
00617
00618 mapTower_[0][id] = param ;
00619 }
00620
00621 if (dataCard == "WEIGHT") {
00622
00623 if(flagPrint_)
00624 std::cout<<std::endl;
00625
00626 gis>>std::hex>>id ;
00627 if(flagPrint_){
00628 std::cout<<dataCard<<" "<<std::dec<<id <<std::endl;
00629 }
00630
00631 param.clear() ;
00632
00633 std::string st6;
00634 for (int i=0 ; i <5 ; i++) {
00635 gis>>std::hex>>data ;
00636 param.push_back(data);
00637
00638 if(flagPrint_){
00639 std::ostringstream oss;
00640 oss << std::hex<< data;
00641 std::string result4 = oss.str();
00642
00643 st6.append("0x");
00644 st6.append(result4);
00645 st6.append(" ");
00646 }
00647
00648 }
00649
00650 if(flagPrint_){
00651 std::cout << st6 << std::endl;
00652 std::cout<<std::endl;
00653 }
00654
00655
00656 mapWeight_[id] = param ;
00657 }
00658
00659 if (dataCard == "FG") {
00660
00661 if(flagPrint_)
00662 std::cout <<std::endl;
00663
00664 gis>>std::hex>>id ;
00665 if(flagPrint_)
00666 std::cout<<dataCard<<" "<<std::dec<<id <<std::endl;
00667
00668 param.clear() ;
00669 std::string st7;
00670 for (int i=0 ; i <5 ; i++) {
00671 gis>>std::hex>>data ;
00672 param.push_back(data);
00673
00674 if(flagPrint_){
00675 std::ostringstream oss;
00676 oss << std::hex<< data;
00677
00678 std::string result5 = oss.str();
00679
00680 st7.append("0x");
00681 st7.append(result5);
00682 if (i != 4)
00683 st7.append(" ");
00684 }
00685 }
00686
00687 if(flagPrint_){
00688 std::cout << st7 << std::endl;
00689 std::cout<<std::endl ;
00690 }
00691
00692 mapFg_[id] = param ;
00693 }
00694
00695 if (dataCard == "LUT") {
00696 gis>>std::hex>>id ;
00697
00698 if(flagPrint_)
00699 std::cout<<dataCard<<" "<<std::dec<<id <<std::endl;
00700
00701 param.clear() ;
00702 for (int i=0 ; i <1024 ; i++) {
00703 gis>>std::hex>>data ;
00704 param.push_back(data);
00705
00706 if(flagPrint_){
00707 std::cout<<"0x"<<std::hex<<data <<std::endl;
00708 }
00709 }
00710
00711 if(flagPrint_)
00712 std::cout<<std::endl ;
00713 std::cout<<std::endl ;
00714
00715 mapLut_[id] = param ;
00716 }
00717 }
00718 }
00719
00720 std::vector<int> EcalTrigPrimESProducer::getRange(int subdet, int tccNb, int towerNbInTcc, int stripNbInTower, int xtalNbInStrip)
00721 {
00722 std::vector<int> range ;
00723 if (subdet == 0) {
00724
00725 range.push_back(37) ;
00726 range.push_back(73) ;
00727 range.push_back(1) ;
00728 range.push_back(69) ;
00729 range.push_back(1) ;
00730 range.push_back(6) ;
00731 range.push_back(1) ;
00732 range.push_back(6) ;
00733 } else {
00734
00735 if (subdet >0 ) {
00736 range.push_back(73) ;
00737 range.push_back(109) ;
00738 } else {
00739 range.push_back(1) ;
00740 range.push_back(37) ;
00741 }
00742 range.push_back(1) ;
00743 range.push_back(29) ;
00744 range.push_back(1) ;
00745 range.push_back(6) ;
00746 range.push_back(1) ;
00747 range.push_back(6) ;
00748 }
00749
00750 if (tccNb>0) {
00751 range[0] = tccNb ;
00752 range[1] = tccNb+1 ;
00753 }
00754 if (towerNbInTcc>0) {
00755 range[2] = towerNbInTcc ;
00756 range[3] = towerNbInTcc+1 ;
00757 }
00758 if (stripNbInTower>0) {
00759 range[4] = stripNbInTower ;
00760 range[5] = stripNbInTower+1 ;
00761 }
00762 if (xtalNbInStrip>0) {
00763 range[6] = xtalNbInStrip ;
00764 range[7] = xtalNbInStrip+1 ;
00765 }
00766
00767 return range ;
00768 }
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780
00781
00782
00783
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805