00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00014
00015
00016
00017
00018 #include <mysql/mysql.h>
00019
00020
00021 #include "RTS/trg/include/trgConfNum.h"
00022 #include "StDSMUtilities/StDSM2009Utilities.hh"
00023
00024 #include <Stiostream.h>
00025 #include "StChain.h"
00026 #include "TFile.h"
00027 #include <math.h>
00028
00029 #include <fstream>
00030 #include "StEmcUtil/database/StEmcDecoder.h"
00031
00032 #include "St_db_Maker/St_db_Maker.h"
00033 #include "Eemc/EMCdsm2Tree.h"
00034
00035
00036 #include "StEvent/StEvent.h"
00037
00038
00039 #include "Eemc/StEemcTriggerSimu.h"
00040 #include "Eemc/EemcHttpInfo.h"
00041 #include "Eemc/EEfeeTPTree.h"
00042 #include "Eemc/EEfeeTP.h"
00043
00044
00045 #include "StTriggerUtilities/Bemc/StBemcTriggerSimu.h"
00046 #include "StEmcRawMaker/StBemcTables.h"
00047 #include "StEmcUtil/geometry/StEmcGeom.h"
00048
00049
00050 #include "StTriggerUtilities/Emc/StEmcTriggerSimu.h"
00051
00052
00053 #include "Bbc/StBbcTriggerSimu.h"
00054
00055
00056 #include "L2Emulator/StL2TriggerSimu.h"
00057
00058
00059 #include "StTriggerSimuMaker.h"
00060 #include "StTriggerSimuResult.h"
00061
00062
00063 #include "TBufferFile.h"
00064 #include "tables/St_triggerDefinition_Table.h"
00065 #include "StTriggerDefinition.h"
00066
00067
00068 #include "tables/St_triggerThreshold_Table.h"
00069 #include "StTriggerThreshold.h"
00070
00071 ClassImp(StTriggerSimuMaker)
00072
00073 StTriggerSimuMaker::StTriggerSimuMaker(const char *name):StMaker(name) {
00074 mDbMk = dynamic_cast<St_db_Maker*> ( this->GetMakerInheritsFrom("St_db_Maker") );
00075 mYear=-1;
00076 mMCflag=0;
00077 eemc=0;
00078 bbc=0;
00079 bemc=0;
00080 lTwo=0;
00081 mHList=0;
00082 emc = new StEmcTriggerSimu;
00083 for (int a=0; a<numSimulators; a++){
00084 mSimulators[a]=0;
00085 }
00086
00087 fill(mBarrelJetPatchTh,mBarrelJetPatchTh+3,-1);
00088 fill(mBarrelHighTowerTh,mBarrelHighTowerTh+4,-1);
00089
00090 fill(mEndcapJetPatchTh,mEndcapJetPatchTh+3,-1);
00091 fill(mEndcapHighTowerTh,mEndcapHighTowerTh+2,-1);
00092
00093 fill(mOverlapJetPatchTh,mOverlapJetPatchTh+3,-1);
00094
00095 mChangeJPThresh = 0;
00096 }
00097
00098 StTriggerSimuMaker::~StTriggerSimuMaker() { }
00099
00100
00101 void StTriggerSimuMaker::useEemc(int flag){
00102 eemc=new StEemcTriggerSimu();
00103 eemc->setConfig(flag);
00104 mSimulators[0]=eemc;
00105 }
00106
00107 void StTriggerSimuMaker::useBbc(){
00108 bbc=new StBbcTriggerSimu;
00109 mSimulators[1]=bbc;
00110 }
00111
00112 void StTriggerSimuMaker::useBemc(){
00113 bemc=new StBemcTriggerSimu;
00114 bemc->setHeadMaker(this);
00115 mSimulators[2]=bemc;
00116 }
00117
00118 void StTriggerSimuMaker::useL2(StGenericL2Emulator* L2Mk){
00119 lTwo=new StL2TriggerSimu(L2Mk);
00120 mSimulators[4]=lTwo;
00121
00122 }
00123
00124 void StTriggerSimuMaker::useL2(StGenericL2Emulator2009* L2Mk){
00125 lTwo=new StL2TriggerSimu(L2Mk);
00126 mSimulators[4]=lTwo;
00127
00128 }
00129
00130 Int_t StTriggerSimuMaker::Init() {
00131 LOG_INFO <<Form("StTriggerSimuMaker::Init(), MCflag=%d",mMCflag)<<endm;
00132 if(eemc) {
00133 eemc->setHList(mHList);
00134 }
00135
00136 if(bemc) {
00137 bemc->setHList(mHList);
00138 }
00139
00140 for(Int_t i=0; i<numSimulators; i++) {
00141 if(mSimulators[i]){
00142 mSimulators[i]->setMC(mMCflag);
00143 mSimulators[i]->Init();
00144 }
00145
00146 }
00147
00148
00149 return StMaker::Init();
00150 }
00151
00152 void StTriggerSimuMaker::Clear(const Option_t*){
00153 LOG_DEBUG<<"StTriggerSimuMaker::Clear()"<<endm;
00154
00155 for(Int_t i=0; i<numSimulators; i++) {
00156 if (mSimulators[i]){
00157 mSimulators[i]->Clear();
00158 }
00159 }
00160
00161 mResults.clear();
00162 }
00163
00164 Int_t StTriggerSimuMaker::InitRun(int runNumber) {
00165 assert(mDbMk);
00166 mYear = mDbMk->GetDateTime().GetYear();
00167 int yyyymmdd = mDbMk->GetDateTime().GetDate();
00168 int hhmmss = mDbMk->GetDateTime().GetTime();
00169 LOG_INFO << Form("InitRun() run=%d yyyymmdd=%d hhmmss=%06d\n", runNumber, yyyymmdd, hhmmss) << endm;
00170
00171
00172 if (mYear >= 2009 && (mSimulators[0] || mSimulators[2])) {
00173 emc->setHeadMaker(this);
00174 emc->setBemc(bemc);
00175 emc->setEemc(eemc);
00176 emc->setMC(mMCflag);
00177 mSimulators[3] = emc;
00178 if (!get2009DsmRegistersFromOfflineDatabase(runNumber) && !get2009DsmRegistersFromOnlineDatabase(runNumber)) {
00179 LOG_WARN << "Can't get 2009 DSM registers" << endm;
00180 }
00181 LOG_INFO << "Overwriting the following registers:" << endm;
00182 overwrite2009DsmRegisters();
00183 if (mChangeJPThresh) {
00184 LOG_INFO << "Shift the following registers by " << mChangeJPThresh << ":" << endm;
00185 changeJetPatchTh();
00186 }
00187 }
00188
00189 for (Int_t i = 0; i < numSimulators; ++i)
00190 if (mSimulators[i])
00191 mSimulators[i]->InitRun(runNumber);
00192
00193 return kStOK;
00194 }
00195
00196 Int_t StTriggerSimuMaker::Make() {
00197
00198 for(Int_t i=0; i<numSimulators; i++) {
00199 if (mSimulators[i]){
00200 mSimulators[i]->Make();
00201 }
00202 }
00203
00204 vector<int> trigIds = triggerIds();
00205 TString line = "Triggers: ";
00206 for (size_t i = 0; i < trigIds.size(); ++i) {
00207 line += Form("%d ",trigIds[i]);
00208 buildDetailedResult(trigIds[i]);
00209 }
00210 LOG_DEBUG << line << endm;
00211
00212 return kStOK;
00213 }
00214
00215 bool StTriggerSimuMaker::isTrigger(int trigId) {
00216
00217 for(Int_t i=0; i<numSimulators; i++) {
00218 if (mSimulators[i] && mSimulators[i]->triggerDecision(trigId) == kNo) return false;
00219 }
00220
00221 return true;
00222 }
00223
00224 vector<int> StTriggerSimuMaker::triggerIds() const
00225 {
00226 vector<int> v;
00227
00228 if (mYear < 2009) {
00229 if (bemc) copy(bemc->triggerIds().begin(),bemc->triggerIds().end(),back_inserter(v));
00230 if (eemc) copy(eemc->triggerIds().begin(),eemc->triggerIds().end(),back_inserter(v));
00231 }
00232 else {
00233 set<int> s = emc->triggerIds();
00234 copy(s.begin(),s.end(),back_inserter(v));
00235 }
00236
00237 return v;
00238 }
00239
00240 bool StTriggerSimuMaker::isTriggerDefined(int trigId)
00241 {
00242
00243 bool TrigDefined;
00244
00245 TrigDefined = false;
00246
00247 if (mYear < 2009) {
00248 if (bemc) {
00249 vector<int> b = bemc->triggerIds();
00250 for (size_t i = 0; i < b.size(); ++i) {
00251 if (trigId==b[i]) TrigDefined=true;
00252 }
00253 }
00254 if (eemc) {
00255 vector<int> e = bemc->triggerIds();
00256 for (size_t i = 0; i < e.size(); ++i) {
00257 if (trigId==e[i]) TrigDefined=true;
00258 }
00259 }
00260 }
00261 else {
00262 set<int> s = emc->triggerIds();
00263 if (s.count(trigId)>0) TrigDefined = true;
00264 }
00265
00266
00267 return TrigDefined;
00268 }
00269
00270
00271 void StTriggerSimuMaker::buildDetailedResult(int trigId) {
00272 StTriggerSimuResult& result = mResults[trigId];
00273 result.setTriggerId(trigId);
00274 if(bbc) {
00275 result.setBbcDecision(bbc->triggerDecision(trigId));
00276 }
00277 if(bemc) {
00278 result.setBemcDecision(bemc->triggerDecision(trigId));
00279
00280 if(bemc->triggerDecision(trigId)==1) {
00281
00282 vector< pair<int,int> > Towers=bemc->getTowersAboveThreshold(trigId);
00283 for(vector< pair<int,int> >::iterator itr=Towers.begin(); itr!=Towers.end(); itr++){
00284 result.addHighTower((*itr).first,(*itr).second);
00285 }
00286
00287 vector< pair<int,int> > tPatches=bemc->getTriggerPatchesAboveThreshold(trigId);
00288 for(vector< pair<int,int> >::iterator itr=tPatches.begin(); itr!=tPatches.end(); itr++){
00289 result.addTriggerPatch((*itr).first,(*itr).second);
00290 }
00291
00292 vector< pair<int,int> > jPatches=bemc->getJetPatchesAboveThreshold(trigId);
00293 for(vector< pair<int,int> >::iterator itr=jPatches.begin(); itr!=jPatches.end(); itr++){
00294 result.addJetPatch((*itr).first,(*itr).second);
00295 }
00296 }
00297 }
00298 if(eemc) {
00299 result.setEemcDecision(eemc->triggerDecision(trigId));
00300 }
00301 if (emc) {
00302 }
00303 if(lTwo) {
00304 result.setL2Decision(lTwo->triggerDecision(trigId));
00305 result.setL2Result(lTwo->result());
00306 }
00307 }
00308
00309 Int_t StTriggerSimuMaker::Finish() {
00310 return StMaker::Finish();
00311 }
00312
00313 bool StTriggerSimuMaker::get2009DsmRegistersFromOfflineDatabase(int runNumber)
00314 {
00315 return getTriggerDefinitions(runNumber) && getTriggerThresholds(runNumber);
00316 }
00317
00318 bool StTriggerSimuMaker::getTriggerDefinitions(int runNumber)
00319 {
00320 TDataSet* DB = GetInputDB("Calibrations/trg");
00321 if (DB) {
00322 St_triggerDefinition* desc = dynamic_cast<St_triggerDefinition*>(DB->Find("triggerDefinition"));
00323 if (desc) {
00324 triggerDefinition_st* table = desc->GetTable();
00325 LOG_INFO << setw(20) << "triggerIndex"
00326 << setw(20) << "name"
00327 << setw(20) << "triggerId"
00328 << setw(20) << "onbits"
00329 << setw(20) << "offbits"
00330 << setw(20) << "onbits1"
00331 << setw(20) << "onbits2"
00332 << setw(20) << "onbits3"
00333 << setw(20) << "offbits1"
00334 << setw(20) << "offbits2"
00335 << setw(20) << "offbits3"
00336 << endm;
00337 TBufferFile buf(TBuffer::kRead);
00338 buf.SetBuffer(table[0].trigdef,sizeof(table[0].trigdef),false);
00339 TObjArray* a = 0;
00340 buf >> a;
00341 for (int i = 0; i < a->GetEntriesFast(); ++i) {
00342 StTriggerDefinition* trigdef = dynamic_cast<StTriggerDefinition*>(a->At(i));
00343 LOG_INFO << setw(20) << trigdef->triggerIndex
00344 << setw(20) << trigdef->name
00345 << setw(20) << trigdef->triggerId
00346 << setw(20) << trigdef->onbits
00347 << setw(20) << trigdef->offbits
00348 << setw(20) << trigdef->onbits1
00349 << setw(20) << trigdef->onbits2
00350 << setw(20) << trigdef->onbits3
00351 << setw(20) << trigdef->offbits1
00352 << setw(20) << trigdef->offbits2
00353 << setw(20) << trigdef->offbits3
00354 << endm;
00355 TriggerDefinition trigDef;
00356 trigDef.triggerIndex = trigdef->triggerIndex;
00357 strcpy(trigDef.name,trigdef->name.Data());
00358 trigDef.triggerId = trigdef->triggerId;
00359 trigDef.onbits = trigdef->onbits;
00360 trigDef.offbits = trigdef->offbits;
00361 trigDef.onbits1 = trigdef->onbits1;
00362 trigDef.onbits2 = trigdef->onbits2;
00363 trigDef.onbits3 = trigdef->onbits3;
00364 trigDef.offbits1 = trigdef->offbits1;
00365 trigDef.offbits2 = trigdef->offbits2;
00366 trigDef.offbits3 = trigdef->offbits3;
00367 emc->defineTrigger(trigDef);
00368 }
00369 a->Delete();
00370 return true;
00371 }
00372 }
00373 return false;
00374 }
00375
00376 bool StTriggerSimuMaker::getTriggerThresholds(int runNumber)
00377 {
00378 TDataSet* DB = GetInputDB("Calibrations/trg");
00379 if (DB) {
00380 St_triggerThreshold* desc = dynamic_cast<St_triggerThreshold*>(DB->Find("triggerThreshold"));
00381 if (desc) {
00382 LOG_INFO << "Using BEMC offline database" << endm;
00383 triggerThreshold_st* table = desc->GetTable();
00384 LOG_INFO << setw(20) << "object"
00385 << setw(20) << "index"
00386 << setw(20) << "reg"
00387 << setw(20) << "label"
00388 << setw(20) << "value"
00389 << setw(20) << "defaultvalue"
00390 << endm;
00391 TBufferFile buf(TBuffer::kRead);
00392 buf.SetBuffer(table[0].trigthr,sizeof(table[0].trigthr),false);
00393 TObjArray* a = 0;
00394 buf >> a;
00395 for (int i = 0; i < a->GetEntriesFast(); ++i) {
00396 StTriggerThreshold* trigthr = dynamic_cast<StTriggerThreshold*>(a->At(i));
00397 LOG_INFO << setw(20) << trigthr->object
00398 << setw(20) << trigthr->index
00399 << setw(20) << trigthr->reg
00400 << setw(20) << trigthr->label
00401 << setw(20) << trigthr->value
00402 << setw(20) << trigthr->defaultvalue
00403 << endm;
00404 int value = trigthr->value;
00405 if (value == -1) value = trigthr->defaultvalue;
00406 switch (trigthr->object) {
00407 case L1_CONF_NUM:
00408 switch (trigthr->index) {
00409 case 20:
00410 emc->get2009_DSMLayer2_Result()->setRegister(trigthr->reg,value);
00411 break;
00412 case 30:
00413 emc->get2009_DSMLayer3_Result()->setRegister(trigthr->reg,value);
00414 break;
00415 }
00416 break;
00417 case BC1_CONF_NUM:
00418 switch (trigthr->index) {
00419 case 21:
00420 eemc->get2009_DSMLayer1_Result()->setRegister(trigthr->reg,value);
00421 break;
00422 case 23:
00423 eemc->get2009_DSMLayer0_Result()->setRegister(trigthr->reg,value);
00424 break;
00425 case 33:
00426 bemc->get2009_DSMLayer1_Result()->setRegister(trigthr->reg,value);
00427 break;
00428 }
00429 break;
00430 case BCW_CONF_NUM:
00431 switch (trigthr->index) {
00432 case 16:
00433 for (int dsm = 0; dsm < 15; ++dsm)
00434 (*bemc->get2009_DSMLayer0_Result())[dsm].registers[trigthr->reg] = value;
00435 break;
00436 }
00437 break;
00438 case BCE_CONF_NUM:
00439 switch (trigthr->index) {
00440 case 16:
00441 for (int dsm = 15; dsm < 30; ++dsm)
00442 (*bemc->get2009_DSMLayer0_Result())[dsm].registers[trigthr->reg] = value;
00443 break;
00444 }
00445 break;
00446 }
00447 }
00448 a->Delete();
00449 return true;
00450 }
00451 }
00452 return false;
00453 }
00454
00455 bool StTriggerSimuMaker::get2009DsmRegistersFromOnlineDatabase(int runNumber)
00456 {
00457
00458
00459 MYSQL mysql;
00460 const char* host = "dbbak.starp.bnl.gov";
00461 const char* user = "";
00462 const char* pass = "";
00463 unsigned int port = 3400+GetDBTime().GetYear()%100-1;
00464 const char* database = "Conditions_rts";
00465 const char* unix_socket = NULL;
00466 unsigned long client_flag = 0;
00467 TString query;
00468
00469 LOG_INFO << Form("host=%s user=\"%s\" pass=\"%s\" port=%d database=%s",host,user,pass,port,database) << endm;
00470
00471 mysql_init(&mysql);
00472
00473 if (!mysql_real_connect(&mysql,host,user,pass,database,port,unix_socket,client_flag)) {
00474 LOG_WARN << "Can't connect to database: " << mysql_error(&mysql) << endm;
00475 return false;
00476 }
00477
00478
00479
00480 if (mMCflag == 1 || mMCflag == 2) {
00481
00482 query = Form("select max(idx_rn) from triggers where beginTime <= '%s'",GetDBTime().AsSQLString());
00483 LOG_INFO << query << endm;
00484 mysql_query(&mysql,query);
00485
00486 if (MYSQL_RES* result = mysql_store_result(&mysql)) {
00487 while (MYSQL_ROW row = mysql_fetch_row(result)) {
00488 runNumber = atoi(row[0]);
00489 }
00490 }
00491 LOG_INFO << "DB Time = " << GetDBTime().AsSQLString() << endm;
00492 LOG_INFO << "Run Number = " << runNumber << endm;
00493 }
00494
00495 LOG_INFO << "Using BEMC online database" << endm;
00496
00497
00498 query = Form("select object,idx,reg,label,value,defaultvalue from dict where hash=(select dicthash from run where idx_rn = %d)",runNumber);
00499 LOG_INFO << query << endm;
00500 mysql_query(&mysql,query);
00501
00502 if (MYSQL_RES* result = mysql_store_result(&mysql)) {
00503 LOG_INFO << setw(10) << "object"
00504 << setw(10) << "idx"
00505 << setw(10) << "reg"
00506 << setw(30) << "label"
00507 << setw(10) << "value"
00508 << setw(15) << "defaultvalue"
00509 << endm;
00510
00511 while (MYSQL_ROW row = mysql_fetch_row(result)) {
00512 int object = atoi(row[0]);
00513 int idx = atoi(row[1]);
00514 int reg = atoi(row[2]);
00515 TString label = row[3];
00516 int value = atoi(row[4]);
00517 int defaultvalue = atoi(row[5]);
00518
00519 LOG_INFO << setw(10) << object
00520 << setw(10) << idx
00521 << setw(10) << reg
00522 << setw(30) << label
00523 << setw(10) << value
00524 << setw(15) << defaultvalue
00525 << endm;
00526
00527 if (value == -1) value = defaultvalue;
00528
00529 switch (object) {
00530 case L1_CONF_NUM:
00531 switch (idx) {
00532 case 20:
00533 emc->get2009_DSMLayer2_Result()->setRegister(reg,value);
00534 break;
00535 case 30:
00536 emc->get2009_DSMLayer3_Result()->setRegister(reg,value);
00537 break;
00538 }
00539 break;
00540 case BC1_CONF_NUM:
00541 switch (idx) {
00542 case 21:
00543 eemc->get2009_DSMLayer1_Result()->setRegister(reg,value);
00544 break;
00545 case 23:
00546 eemc->get2009_DSMLayer0_Result()->setRegister(reg,value);
00547 break;
00548 case 33:
00549 bemc->get2009_DSMLayer1_Result()->setRegister(reg,value);
00550 break;
00551 }
00552 break;
00553 case BCW_CONF_NUM:
00554 switch (idx) {
00555 case 16:
00556 for (int dsm = 0; dsm < 15; ++dsm)
00557 (*bemc->get2009_DSMLayer0_Result())[dsm].registers[reg] = value;
00558 break;
00559 }
00560 break;
00561 case BCE_CONF_NUM:
00562 switch (idx) {
00563 case 16:
00564 for (int dsm = 15; dsm < 30; ++dsm)
00565 (*bemc->get2009_DSMLayer0_Result())[dsm].registers[reg] = value;
00566 break;
00567 }
00568 break;
00569 }
00570 }
00571 mysql_free_result(result);
00572 }
00573
00574 LOG_INFO << "The following registers have new values:" << endm;
00575
00576
00577
00578 TriggerDefinition triggers[32];
00579
00580 query = Form("select idx_trigger,name,offlineBit from triggers where idx_rn = %d", runNumber);
00581 LOG_INFO << query << endm;
00582 mysql_query(&mysql,query);
00583
00584 if (MYSQL_RES* result = mysql_store_result(&mysql)) {
00585 while (MYSQL_ROW row = mysql_fetch_row(result)) {
00586 int idx_trigger = atoi(row[0]);
00587 triggers[idx_trigger].triggerIndex = idx_trigger;
00588 strcpy(triggers[idx_trigger].name,row[1]);
00589 triggers[idx_trigger].triggerId = atoi(row[2]);
00590 }
00591 mysql_free_result(result);
00592 }
00593
00594 query = Form("select idx_idx,onbits,offbits,onbits1,onbits2,onbits3,offbits1,offbits2,offbits3 from pwc where idx_rn = %d", runNumber);
00595 LOG_INFO << query << endm;
00596 mysql_query(&mysql,query);
00597
00598 if (MYSQL_RES* result = mysql_store_result(&mysql)) {
00599 LOG_INFO << setw(20) << "idx_trigger"
00600 << setw(20) << "name"
00601 << setw(20) << "offlineBit"
00602 << setw(20) << "onbits"
00603 << setw(20) << "offbits"
00604 << setw(20) << "onbits1"
00605 << setw(20) << "onbits2"
00606 << setw(20) << "onbits3"
00607 << setw(20) << "offbits1"
00608 << setw(20) << "offbits2"
00609 << setw(20) << "offbits3"
00610 << endm;
00611
00612 while (MYSQL_ROW row = mysql_fetch_row(result)) {
00613 int idx_trigger = atoi(row[0]);
00614 triggers[idx_trigger].onbits = atoi(row[1]);
00615 emc->defineTrigger(triggers[idx_trigger]);
00616 LOG_INFO << setw(20) << idx_trigger
00617 << setw(20) << triggers[idx_trigger].name
00618 << setw(20) << triggers[idx_trigger].triggerId
00619 << setw(20) << Form("0x%08x",triggers[idx_trigger].onbits)
00620 << setw(20) << Form("0x%08x",triggers[idx_trigger].offbits)
00621 << setw(20) << Form("0x%08x",triggers[idx_trigger].onbits1)
00622 << setw(20) << Form("0x%08x",triggers[idx_trigger].onbits2)
00623 << setw(20) << Form("0x%08x",triggers[idx_trigger].onbits3)
00624 << setw(20) << Form("0x%08x",triggers[idx_trigger].offbits1)
00625 << setw(20) << Form("0x%08x",triggers[idx_trigger].offbits2)
00626 << setw(20) << Form("0x%08x",triggers[idx_trigger].offbits3)
00627 << endm;
00628 }
00629 mysql_free_result(result);
00630 }
00631
00632 mysql_close(&mysql);
00633
00634 return true;
00635 }
00636
00637 void StTriggerSimuMaker::overwrite2009DsmRegisters()
00638 {
00639 for (int reg = 0; reg < 3; ++reg) {
00640 int value = mBarrelJetPatchTh[reg];
00641 if (value != -1) {
00642 LOG_INFO << setw(20) << reg
00643 << setw(30) << "BEMC-JP-th" << reg
00644 << setw(20) << value
00645 << endm;
00646 bemc->get2009_DSMLayer1_Result()->setRegister(reg,value);
00647 }
00648 }
00649
00650 for (int reg = 0; reg < 4; ++reg) {
00651 int value = mBarrelHighTowerTh[reg];
00652 if (value != -1) {
00653 LOG_INFO << setw(20) << reg
00654 << setw(30) << "BEMC-HT-th" << reg
00655 << setw(20) << value
00656 << endm;
00657 bemc->get2009_DSMLayer0_Result()->setRegister(reg,value);
00658 }
00659 }
00660
00661 for (int reg = 0; reg < 3; ++reg) {
00662 int value = mEndcapJetPatchTh[reg];
00663 if (value != -1) {
00664 LOG_INFO << setw(20) << reg
00665 << setw(30) << "EEMC-JP-th" << reg
00666 << setw(20) << value
00667 << endm;
00668 eemc->get2009_DSMLayer1_Result()->setRegister(reg,value);
00669 }
00670 }
00671
00672 for (int reg = 0; reg < 2; ++reg) {
00673 int value = mEndcapHighTowerTh[reg];
00674 if (value != -1) {
00675 LOG_INFO << setw(20) << reg
00676 << setw(30) << "EEMC-HT-th" << reg
00677 << setw(20) << value
00678 << endm;
00679 eemc->get2009_DSMLayer0_Result()->setRegister(reg,value);
00680 }
00681 }
00682
00683 for (int reg = 0; reg < 3; ++reg) {
00684 int value = mOverlapJetPatchTh[reg];
00685 if (value != -1) {
00686 LOG_INFO << setw(20) << reg
00687 << setw(30) << "BEMC-EEMC-overlap-JP-th" << reg
00688 << setw(20) << value
00689 << endm;
00690 emc->get2009_DSMLayer2_Result()->setRegister(reg,value);
00691 }
00692 }
00693 }
00694
00695 void StTriggerSimuMaker::changeJetPatchTh()
00696 {
00697 for (int reg = 0; reg < 3; ++reg) {
00698 int value = bemc->get2009_DSMLayer1_Result()->getRegister(reg);
00699 value += mChangeJPThresh;
00700 LOG_INFO << setw(20) << reg
00701 << setw(30) << "BEMC-JP-th" << reg
00702 << setw(20) << value
00703 << endm;
00704 bemc->get2009_DSMLayer1_Result()->setRegister(reg,value);
00705 }
00706
00707 for (int reg = 0; reg < 3; ++reg) {
00708 int value = eemc->get2009_DSMLayer1_Result()->getRegister(reg);
00709 value += mChangeJPThresh;
00710 LOG_INFO << setw(20) << reg
00711 << setw(30) << "EEMC-JP-th" << reg
00712 << setw(20) << value
00713 << endm;
00714 eemc->get2009_DSMLayer1_Result()->setRegister(reg,value);
00715 }
00716
00717 for (int reg = 0; reg < 3; ++reg) {
00718 int value = emc->get2009_DSMLayer2_Result()->getRegister(reg);
00719 value += mChangeJPThresh;
00720 LOG_INFO << setw(20) << reg
00721 << setw(30) << "BEMC-EEMC-overlap-JP-th" << reg
00722 << setw(20) << value
00723 << endm;
00724 emc->get2009_DSMLayer2_Result()->setRegister(reg,value);
00725 }
00726 }
00727
00728 void StTriggerSimuMaker::setLastDsmRegister(int reg, int value)
00729 {
00730 emc->get2009_DSMLayer3_Result()->setRegister(reg,value);
00731 }
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
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
00806
00807
00808
00809
00810
00811
00812
00813
00814
00815
00816
00817
00818
00819
00820
00821
00822
00823
00824
00825
00826
00827
00828
00829
00830
00831
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849