00001 #include "FWCore/ServiceRegistry/interface/Service.h"
00002 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
00003
00004 #include "FWCore/Framework/interface/Event.h"
00005 #include "FWCore/Framework/interface/MakerMacros.h"
00006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00007
00008 #include "DataFormats/Common/interface/Handle.h"
00009
00010 #include "FWCore/Framework/interface/ESHandle.h"
00011 #include "FWCore/Framework/interface/EventSetup.h"
00012 #include "FWCore/Framework/interface/EventSetupRecordKey.h"
00013
00014 #include "DataFormats/Provenance/interface/Timestamp.h"
00015
00016 #include "CondTools/Ecal/interface/EcalTestDevDB.h"
00017
00018 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00019
00020 #include <map>
00021 #include <vector>
00022
00023 using namespace std;
00024
00025 EcalTestDevDB::EcalTestDevDB(const edm::ParameterSet& iConfig) :
00026 m_timetype(iConfig.getParameter<std::string>("timetype")),
00027 m_cacheIDs(),
00028 m_records()
00029 {
00030
00031 std::string container;
00032 std::string tag;
00033 std::string record;
00034
00035 m_firstRun=(unsigned long)atoi( iConfig.getParameter<std::string>("firstRun").c_str());
00036 m_lastRun=(unsigned long)atoi( iConfig.getParameter<std::string>("lastRun").c_str());
00037 m_interval=(unsigned int)atoi( iConfig.getParameter<std::string>("interval").c_str());
00038
00039 typedef std::vector< edm::ParameterSet > Parameters;
00040 Parameters toCopy = iConfig.getParameter<Parameters>("toCopy");
00041 for(Parameters::iterator i = toCopy.begin(); i != toCopy.end(); ++i) {
00042 container = i->getParameter<std::string>("container");
00043 record = i->getParameter<std::string>("record");
00044 m_cacheIDs.insert( std::make_pair(container, 0) );
00045 m_records.insert( std::make_pair(container, record) );
00046 }
00047
00048 }
00049
00050
00051 EcalTestDevDB::~EcalTestDevDB()
00052 {
00053
00054 }
00055
00056 void EcalTestDevDB::analyze( const edm::Event& evt, const edm::EventSetup& evtSetup)
00057 {
00058
00059 edm::Service<cond::service::PoolDBOutputService> dbOutput;
00060 if ( !dbOutput.isAvailable() ) {
00061 throw cms::Exception("PoolDBOutputService is not available");
00062 }
00063
00064
00065
00066 std::string container;
00067 std::string record;
00068 typedef std::map<std::string, std::string>::const_iterator recordIter;
00069 for (recordIter i = m_records.begin(); i != m_records.end(); ++i) {
00070 container = (*i).first;
00071 record = (*i).second;
00072
00073 std::string recordName = m_records[container];
00074
00075
00076
00077
00078 unsigned long nrec=(m_lastRun-m_firstRun)/m_interval+1;
00079 unsigned long nstart=0;
00080 if (m_firstRun == 0 && m_lastRun == 0) {
00081
00082 nstart=0;
00083 nrec=1;
00084 }
00085
00086 for(unsigned long i=nstart; i<nrec; i++) {
00087 unsigned long irun=m_firstRun+i*m_interval;
00088
00089
00090
00091 if (m_firstRun == 0 && m_lastRun == 0) {
00092 cout << "Infinite IOV mode" << endl;
00093 irun = edm::IOVSyncValue::endOfTime().eventID().run();
00094 }
00095
00096 cout << "Starting Transaction for run " << irun << "..." << flush;
00097
00098 if (container == "EcalPedestals") {
00099 EcalPedestals* condObject= generateEcalPedestals();
00100
00101 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00102
00103 std::cout<<"First One "<<std::endl;
00104 dbOutput->createNewIOV<const EcalPedestals>( condObject, dbOutput->beginOfTime(),dbOutput->endOfTime() ,recordName);
00105 } else {
00106
00107 std::cout<<"Old One "<<std::endl;
00108 dbOutput->appendSinceTime<const EcalPedestals>( condObject, irun , recordName);
00109 }
00110
00111 } else if (container == "EcalADCToGeVConstant") {
00112
00113 EcalADCToGeVConstant* condObject= generateEcalADCToGeVConstant();
00114 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00115
00116 std::cout<<"First One "<<std::endl;
00117 dbOutput->createNewIOV<const EcalADCToGeVConstant>( condObject, dbOutput->beginOfTime(),dbOutput->endOfTime() ,recordName);
00118 } else {
00119
00120 std::cout<<"Old One "<<std::endl;
00121 dbOutput->appendSinceTime<const EcalADCToGeVConstant>( condObject, irun , recordName);
00122 }
00123
00124
00125 } else if (container == "EcalIntercalibConstants") {
00126 EcalIntercalibConstants* condObject= generateEcalIntercalibConstants();
00127 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00128
00129 std::cout<<"First One "<<std::endl;
00130 dbOutput->createNewIOV<const EcalIntercalibConstants>( condObject, dbOutput->beginOfTime(),dbOutput->endOfTime() ,recordName);
00131 } else {
00132
00133 std::cout<<"Old One "<<std::endl;
00134 dbOutput->appendSinceTime<const EcalIntercalibConstants>( condObject, irun , recordName);
00135 }
00136
00137 } else if (container == "EcalGainRatios") {
00138 EcalGainRatios* condObject= generateEcalGainRatios();
00139 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00140
00141 std::cout<<"First One "<<std::endl;
00142 dbOutput->createNewIOV<const EcalGainRatios>( condObject,dbOutput->beginOfTime(), dbOutput->endOfTime() ,recordName);
00143 } else {
00144
00145 std::cout<<"Old One "<<std::endl;
00146 dbOutput->appendSinceTime<const EcalGainRatios>( condObject, irun , recordName);
00147 }
00148
00149 } else if (container == "EcalWeightXtalGroups") {
00150 EcalWeightXtalGroups* condObject= generateEcalWeightXtalGroups();
00151 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00152
00153 std::cout<<"First One "<<std::endl;
00154 dbOutput->createNewIOV<const EcalWeightXtalGroups>( condObject, dbOutput->beginOfTime(), dbOutput->endOfTime() ,recordName);
00155 } else {
00156
00157 std::cout<<"Old One "<<std::endl;
00158 dbOutput->appendSinceTime<const EcalWeightXtalGroups>( condObject, irun , recordName);
00159 }
00160
00161 } else if (container == "EcalTBWeights") {
00162 EcalTBWeights* condObject= generateEcalTBWeights();
00163 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00164
00165 std::cout<<"First One "<<std::endl;
00166 dbOutput->createNewIOV<const EcalTBWeights>( condObject, dbOutput->beginOfTime(), dbOutput->endOfTime() ,recordName);
00167 } else {
00168
00169 std::cout<<"Old One "<<std::endl;
00170 dbOutput->appendSinceTime<const EcalTBWeights>( condObject, irun , recordName);
00171 }
00172
00173 } else if (container == "EcalLaserAPDPNRatios") {
00174 EcalLaserAPDPNRatios* condObject= generateEcalLaserAPDPNRatios(irun);
00175 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00176
00177 std::cout<<"First One "<<std::endl;
00178 dbOutput->createNewIOV<const EcalLaserAPDPNRatios>( condObject,dbOutput->beginOfTime(), dbOutput->endOfTime() ,recordName);
00179 } else {
00180
00181 std::cout<<"Old One "<<std::endl;
00182 dbOutput->appendSinceTime<const EcalLaserAPDPNRatios>( condObject, irun , recordName);
00183 }
00184 } else if (container == "EcalLaserAPDPNRatiosRef") {
00185 EcalLaserAPDPNRatiosRef* condObject= generateEcalLaserAPDPNRatiosRef();
00186 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00187
00188 std::cout<<"First One "<<std::endl;
00189 dbOutput->createNewIOV<const EcalLaserAPDPNRatiosRef>( condObject, dbOutput->beginOfTime(), dbOutput->endOfTime() ,recordName);
00190 } else {
00191
00192 std::cout<<"Old One "<<std::endl;
00193 dbOutput->appendSinceTime<const EcalLaserAPDPNRatiosRef>( condObject, irun , recordName);
00194 }
00195 } else if (container == "EcalLaserAlphas") {
00196 EcalLaserAlphas* condObject= generateEcalLaserAlphas();
00197 if(irun==m_firstRun && dbOutput->isNewTagRequest(recordName)) {
00198
00199 std::cout<<"First One "<<std::endl;
00200 dbOutput->createNewIOV<const EcalLaserAlphas>( condObject,dbOutput->beginOfTime(), dbOutput->endOfTime() ,recordName);
00201 } else {
00202
00203 std::cout<<"Old One "<<std::endl;
00204 dbOutput->appendSinceTime<const EcalLaserAlphas>( condObject, irun , recordName);
00205 }
00206 } else {
00207 cout << "it does not work yet for " << container << "..." << flush;
00208
00209 }
00210
00211
00212 }
00213
00214
00215 }
00216
00217
00218 }
00219
00220
00221
00222 EcalPedestals*
00223 EcalTestDevDB::generateEcalPedestals() {
00224
00225
00226 EcalPedestals* peds = new EcalPedestals();
00227 EcalPedestals::Item item;
00228 for(int iEta=-EBDetId::MAX_IETA; iEta<=EBDetId::MAX_IETA ;++iEta) {
00229 if(iEta==0) continue;
00230 for(int iPhi=EBDetId::MIN_IPHI; iPhi<=EBDetId::MAX_IPHI; ++iPhi) {
00231 item.mean_x1 = 200.*( (double)std::rand()/(double(RAND_MAX)+double(1)) );
00232 item.rms_x1 = (double)std::rand()/(double(RAND_MAX)+double(1));
00233 item.mean_x6 = 1200.*( (double)std::rand()/(double(RAND_MAX)+double(1)) );
00234 item.rms_x6 = 6.*( (double)std::rand()/(double(RAND_MAX)+double(1)) );
00235 item.mean_x12 = 2400.*( (double)std::rand()/(double(RAND_MAX)+double(1)) );
00236 item.rms_x12 = 12.*( (double)std::rand()/(double(RAND_MAX)+double(1)) );
00237
00238 EBDetId ebdetid(iEta,iPhi);
00239 peds->insert(std::make_pair(ebdetid.rawId(),item));
00240 }
00241 }
00242 return peds;
00243 }
00244
00245
00246 EcalADCToGeVConstant*
00247 EcalTestDevDB::generateEcalADCToGeVConstant() {
00248
00249
00250 double r = (double)std::rand()/( double(RAND_MAX)+double(1) );
00251 EcalADCToGeVConstant* agc = new EcalADCToGeVConstant(36.+r*4., 60.+r*4);
00252 return agc;
00253 }
00254
00255
00256 EcalIntercalibConstants*
00257 EcalTestDevDB::generateEcalIntercalibConstants() {
00258
00259
00260 EcalIntercalibConstants* ical = new EcalIntercalibConstants();
00261
00262 for(int ieta=-EBDetId::MAX_IETA; ieta<=EBDetId::MAX_IETA; ++ieta) {
00263 if(ieta==0) continue;
00264 for(int iphi=EBDetId::MIN_IPHI; iphi<=EBDetId:: MAX_IPHI; ++iphi) {
00265
00266 EBDetId ebid(ieta,iphi);
00267
00268 double r = (double)std::rand()/( double(RAND_MAX)+double(1) );
00269 ical->setValue( ebid.rawId(), 0.85 + r*0.3 );
00270 }
00271 }
00272 return ical;
00273 }
00274
00275
00276 EcalGainRatios*
00277 EcalTestDevDB::generateEcalGainRatios() {
00278
00279
00280
00281 EcalGainRatios* gratio = new EcalGainRatios;
00282
00283 for(int ieta=-EBDetId::MAX_IETA; ieta<=EBDetId::MAX_IETA; ++ieta) {
00284 if(ieta==0) continue;
00285 for(int iphi=EBDetId::MIN_IPHI; iphi<=EBDetId:: MAX_IPHI; ++iphi) {
00286
00287 EBDetId ebid(ieta,iphi);
00288
00289 double r = (double)std::rand()/( double(RAND_MAX)+double(1) );
00290
00291 EcalMGPAGainRatio gr;
00292 gr.setGain12Over6( 1.9 + r*0.2 );
00293 gr.setGain6Over1( 5.9 + r*0.2 );
00294
00295 gratio->setValue( ebid.rawId(), gr );
00296
00297 }
00298 }
00299 return gratio;
00300 }
00301
00302
00303 EcalWeightXtalGroups*
00304 EcalTestDevDB::generateEcalWeightXtalGroups() {
00305
00306
00307 EcalWeightXtalGroups* xtalGroups = new EcalWeightXtalGroups();
00308 for(int ieta=-EBDetId::MAX_IETA; ieta<=EBDetId::MAX_IETA; ++ieta) {
00309 if(ieta==0) continue;
00310 for(int iphi=EBDetId::MIN_IPHI; iphi<=EBDetId:: MAX_IPHI; ++iphi) {
00311 EBDetId ebid(ieta,iphi);
00312 xtalGroups->setValue(ebid.rawId(), EcalXtalGroupId(ieta) );
00313 }
00314 }
00315 return xtalGroups;
00316 }
00317
00318
00319 EcalTBWeights*
00320 EcalTestDevDB::generateEcalTBWeights() {
00321
00322
00323 EcalTBWeights* tbwgt = new EcalTBWeights();
00324
00325
00326 int nMaxTDC = 10;
00327 for(int igrp=-EBDetId::MAX_IETA; igrp<=EBDetId::MAX_IETA; ++igrp) {
00328 if(igrp==0) continue;
00329 for(int itdc=1; itdc<=nMaxTDC; ++itdc) {
00330
00331 double r = (double)std::rand()/( double(RAND_MAX)+double(1) );
00332
00333
00334 EcalWeightSet wgt;
00335 EcalWeightSet::EcalWeightMatrix& mat1 = wgt.getWeightsBeforeGainSwitch();
00336 EcalWeightSet::EcalWeightMatrix& mat2 = wgt.getWeightsAfterGainSwitch();
00337
00338 for(size_t i=0; i<3; ++i) {
00339 for(size_t j=0; j<10; ++j) {
00340 double ww = igrp*itdc*r + i*10. + j;
00341
00342 mat1(i,j)=ww;
00343 mat2(i,j)=100+ww;
00344 }
00345 }
00346
00347
00348 r = (double)std::rand()/( double(RAND_MAX)+double(1) );
00349 EcalWeightSet::EcalChi2WeightMatrix& mat3 = wgt.getChi2WeightsBeforeGainSwitch();
00350 EcalWeightSet::EcalChi2WeightMatrix& mat4 = wgt.getChi2WeightsAfterGainSwitch();
00351 for(size_t i=0; i<10; ++i) {
00352 for(size_t j=0; j<10; ++j) {
00353 double ww = igrp*itdc*r + i*10. + j;
00354 mat3(i,j)=1000+ww;
00355 mat4(i,j)=1000+100+ww;
00356 }
00357 }
00358
00359
00360 tbwgt->setValue(std::make_pair(igrp,itdc), wgt);
00361 }
00362 }
00363 return tbwgt;
00364 }
00365
00366
00367
00368
00369 EcalLaserAPDPNRatios*
00370 EcalTestDevDB::generateEcalLaserAPDPNRatios(uint32_t i_run) {
00371
00372
00373 EcalLaserAPDPNRatios* laser = new EcalLaserAPDPNRatios();
00374
00375 EcalLaserAPDPNRatios::EcalLaserAPDPNpair APDPNpair;
00376 EcalLaserAPDPNRatios::EcalLaserTimeStamp TimeStamp;
00377
00378
00379
00380 std::cout << "First & last run: " << i_run << " " << m_firstRun << " " << m_lastRun << " " << std::endl;
00381 if (m_firstRun == i_run && (i_run == 0 || i_run == 1) ) {
00382
00383 APDPNpair.p1= (double(1)+1/double(log(exp(1)+double((i_run-m_firstRun)*10))))/double(2);
00384 APDPNpair.p2= (double(1)+1/double(log(exp(1)+double((i_run-m_firstRun)*10)+double(10))))/double(2);
00385 cout << i_run << " " << m_firstRun << " " << APDPNpair.p1 << " " << APDPNpair.p2 << std::endl;
00386
00387 for(int iEta=-EBDetId::MAX_IETA; iEta<=EBDetId::MAX_IETA ;++iEta) {
00388 if(iEta==0) continue;
00389 for(int iPhi=EBDetId::MIN_IPHI; iPhi<=EBDetId::MAX_IPHI; ++iPhi) {
00390
00391
00392
00393 EBDetId ebid(iEta,iPhi);
00394 int hi = ebid.hashedIndex();
00395
00396 if (hi< (int) laser->getLaserMap().size()) {
00397 laser->setValue(hi, APDPNpair);
00398 } else {
00399 edm::LogError("EcalTestDevDB") << "error with laser Map (ratio)!" << endl;
00400 continue;
00401 }
00402 }
00403 }
00404
00405 for(int iX=EEDetId::IX_MIN; iX<=EEDetId::IX_MAX ;++iX) {
00406 for(int iY=EEDetId::IY_MIN; iY<=EEDetId::IY_MAX; ++iY) {
00407
00408
00409 if (!EEDetId::validDetId(iX,iY,1))
00410 continue;
00411
00412 EEDetId eedetidpos(iX,iY,1);
00413
00414
00415
00416 int hi = eedetidpos.hashedIndex() + EBDetId::MAX_HASH + 1;
00417 if (hi< (int) laser->getLaserMap().size()) {
00418 laser->setValue(hi, APDPNpair);
00419 } else {
00420 edm::LogError("EcalTestDevDB") << "error with laser Map (ratio)!" << endl;
00421 continue;
00422 }
00423
00424 if (!EEDetId::validDetId(iX,iY,-1))
00425 continue;
00426
00427 EEDetId eedetidneg(iX,iY,-1);
00428
00429
00430 hi = eedetidneg.hashedIndex() + EBDetId::MAX_HASH + 1;
00431 if (hi< (int) laser->getLaserMap().size()) {
00432 laser->setValue(hi, APDPNpair);
00433 } else {
00434 edm::LogError("EcalTestDevDB") << "error with laser Map (ratio)!" << endl;
00435 continue;
00436 }
00437 }
00438 }
00439
00440 std::cout << std::endl;
00441 for(int i=0; i<92; i++){
00442 if (i< (int)laser->getTimeMap().size()) {
00443 TimeStamp.t1 = 1380*(i_run-m_firstRun) + 15*i;
00444 TimeStamp.t2 = 1380*(i_run-m_firstRun + 1) + 15*i;
00445 laser->setTime(i, TimeStamp);
00446
00447 } else {
00448 edm::LogError("EcalTestDevDB") << "error with laser Map (time)!" << endl;
00449 continue;
00450 }
00451 }
00452
00453 }else{
00454
00455 APDPNpair.p1= (double(1)+1/double(log(exp(1)+double((i_run-m_firstRun)*10))))/double(2);
00456 APDPNpair.p2= (double(1)+1/double(log(exp(1)+double((i_run-m_firstRun)*10)+double(10))))/double(2);
00457 cout << i_run << " " << m_firstRun << " " << APDPNpair.p1 << " " << APDPNpair.p2 << std::endl;
00458
00459 for(int iEta=-EBDetId::MAX_IETA; iEta<=EBDetId::MAX_IETA ;++iEta) {
00460 if(iEta==0) continue;
00461 for(int iPhi=EBDetId::MIN_IPHI; iPhi<=EBDetId::MAX_IPHI; ++iPhi) {
00462 EBDetId ebid(iEta,iPhi);
00463 int hi = ebid.hashedIndex();
00464
00465 if (hi< (int) laser->getLaserMap().size()) {
00466 laser->setValue(hi, APDPNpair);
00467 } else {
00468 edm::LogError("EcalTestDevDB") << "error with laser Map (ratio)!" << endl;
00469 }
00470 }
00471 }
00472 for(int iX=EEDetId::IX_MIN; iX<=EEDetId::IX_MAX ;++iX) {
00473 for(int iY=EEDetId::IY_MIN; iY<=EEDetId::IY_MAX; ++iY) {
00474
00475
00476 if (!EEDetId::validDetId(iX,iY,1))
00477 continue;
00478
00479 EEDetId eedetidpos(iX,iY,1);
00480 int hi = eedetidpos.hashedIndex() + EBDetId::MAX_HASH + 1;
00481 if (hi< (int) laser->getLaserMap().size()) {
00482 laser->setValue(hi, APDPNpair);
00483 } else {
00484 edm::LogError("EcalTestDevDB") << "error with laser Map (ratio)!" << endl;
00485 continue;
00486 }
00487
00488 if (!EEDetId::validDetId(iX,iY,-1))
00489 continue;
00490
00491 EEDetId eedetidneg(iX,iY,-1);
00492 hi = eedetidneg.hashedIndex() + EBDetId::MAX_HASH + 1;
00493 if (hi< (int) laser->getLaserMap().size()) {
00494 laser->setValue(hi, APDPNpair);
00495 } else {
00496 edm::LogError("EcalTestDevDB") << "error with laser Map (ratio)!" << endl;
00497 continue;
00498 }
00499 }
00500 }
00501
00502 std::cout << std::endl;
00503 for(int i=0; i<92; i++){
00504 if (i< (int)laser->getTimeMap().size()) {
00505 TimeStamp.t1 = 1380*(i_run-m_firstRun) + 15*i;
00506 TimeStamp.t2 = 1380*(i_run-m_firstRun + 1) + 15*i;
00507 laser->setTime(i, TimeStamp);
00508
00509 } else {
00510 edm::LogError("EcalTestDevDB") << "error with laser Map (time)!" << endl;
00511 continue;
00512 }
00513 }
00514
00515 }
00516
00517 return laser;
00518 }
00519
00520
00521
00522 EcalLaserAPDPNRatiosRef*
00523 EcalTestDevDB::generateEcalLaserAPDPNRatiosRef() {
00524
00525
00526 EcalLaserAPDPNRatiosRef* laser = new EcalLaserAPDPNRatiosRef();
00527
00528 EcalLaserAPDPNref APDPNref;
00529
00530
00531 for(int iEta=-EBDetId::MAX_IETA; iEta<=EBDetId::MAX_IETA ;++iEta) {
00532 if(iEta==0) continue;
00533 for(int iPhi=EBDetId::MIN_IPHI; iPhi<=EBDetId::MAX_IPHI; ++iPhi) {
00534 APDPNref=double(1.5);
00535 EBDetId ebid(iEta,iPhi);
00536
00537 int hi = ebid.hashedIndex();
00538 if (hi< (int) laser->getMap().size()) {
00539 laser->setValue(hi, APDPNref);
00540 } else {
00541 edm::LogError("EcalTestDevDB") << "error with laser Map (ref)!" << endl;
00542 }
00543
00544 }
00545 }
00546
00547 for(int iX=EEDetId::IX_MIN; iX<=EEDetId::IX_MAX ;++iX) {
00548 for(int iY=EEDetId::IY_MIN; iY<=EEDetId::IY_MAX; ++iY) {
00549
00550 if (!EEDetId::validDetId(iX,iY,1))
00551 continue;
00552
00553 EEDetId eedetidpos(iX,iY,1);
00554 APDPNref=double(1.5);
00555
00556 int hi = eedetidpos.hashedIndex() + EBDetId::MAX_HASH + 1;
00557 if (hi< (int) laser->getMap().size()) {
00558 laser->setValue(hi, APDPNref);
00559 } else {
00560 edm::LogError("EcalTestDevDB") << "error with laser Map (ref)!" << endl;
00561 }
00562
00563 if (!EEDetId::validDetId(iX,iY,-1))
00564 continue;
00565
00566 EEDetId eedetidneg(iX,iY,-1);
00567 APDPNref=double(1.5);
00568
00569 hi = eedetidneg.hashedIndex() + EBDetId::MAX_HASH + 1;
00570 if (hi< (int) laser->getMap().size()) {
00571 laser->setValue(hi, APDPNref);
00572 } else {
00573 edm::LogError("EcalTestDevDB") << "error with laser Map (ref)!" << endl;
00574 }
00575 }
00576 }
00577
00578 return laser;
00579 }
00580
00581
00582 EcalLaserAlphas*
00583 EcalTestDevDB::generateEcalLaserAlphas() {
00584
00585
00586 EcalLaserAlphas* laser = new EcalLaserAlphas();
00587
00588 EcalLaserAlpha Alpha;
00589
00590 for(int iEta=-EBDetId::MAX_IETA; iEta<=EBDetId::MAX_IETA ;++iEta) {
00591 if(iEta==0) continue;
00592 for(int iPhi=EBDetId::MIN_IPHI; iPhi<=EBDetId::MAX_IPHI; ++iPhi) {
00593 Alpha = double(1.55);
00594 EBDetId ebid(iEta,iPhi);
00595
00596 int hi = ebid.hashedIndex();
00597 if (hi< (int) laser->getMap().size()) {
00598 laser->setValue(hi, Alpha);
00599 } else {
00600 edm::LogError("EcalTestDevDB") << "error with laser Map (alpha)!" << endl;
00601 }
00602 }
00603 }
00604
00605 for(int iX=EEDetId::IX_MIN; iX<=EEDetId::IX_MAX ;++iX) {
00606 for(int iY=EEDetId::IY_MIN; iY<=EEDetId::IY_MAX; ++iY) {
00607
00608 if (!EEDetId::validDetId(iX,iY,1))
00609 continue;
00610
00611 EEDetId eedetidpos(iX,iY,1);
00612 Alpha = double(1.55);
00613
00614 int hi = eedetidpos.hashedIndex() + EBDetId::MAX_HASH + 1;
00615 if (hi< (int) laser->getMap().size()) {
00616 laser->setValue(hi, Alpha);
00617 } else {
00618 edm::LogError("EcalTestDevDB") << "error with laser Map (alpha)!" << endl;
00619 }
00620
00621 if (!EEDetId::validDetId(iX,iY,-1))
00622 continue;
00623 EEDetId eedetidneg(iX,iY,-1);
00624 Alpha = double(1.55);
00625
00626 hi = eedetidneg.hashedIndex() + EBDetId::MAX_HASH + 1;
00627 if (hi< (int) laser->getMap().size()) {
00628 laser->setValue(hi, Alpha);
00629 } else {
00630 edm::LogError("EcalTestDevDB") << "error with laser Map (alpha)!" << endl;
00631 }
00632 }
00633 }
00634
00635 return laser;
00636 }