diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/TrigEFMissingET/EFMissingETFromHelper.h b/Trigger/TrigAlgorithms/TrigEFMissingET/TrigEFMissingET/EFMissingETFromHelper.h index b48d8c3d5c0fa5ed9c0ee70f5d9b808bd235026f..0b2f17d2d094decb32c3d4b4fc6522f24b5d18f4 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/TrigEFMissingET/EFMissingETFromHelper.h +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/TrigEFMissingET/EFMissingETFromHelper.h @@ -18,7 +18,8 @@ PURPOSE: Updates TrigMissingET using TrigMissingETHelper info ********************************************************************/ #include "TrigEFMissingET/EFMissingETBaseTool.h" -//#include "TrigCaloEvent/TrigMissingET.h" +#include "TrigEFMissingET/EFMissingETHelper.h" +// #include "TrigMissingEtEvent/TrigMissingET.h" #include "TrigMissingEtEvent/TrigMissingET.h" @@ -58,23 +59,10 @@ class EFMissingETFromHelper : public EFMissingETBaseTool StatusCode executeMT(xAOD::TrigMissingET *met, TrigEFMissingEtHelper *metHelper); private: - void setMET(xAOD::TrigMissingET *met, - float ex, float ey, float ez, - float sumE, float sumEt, - short sumOfSigns, float c0, float c1); - - void setMETComp(xAOD::TrigMissingET *met, int comp_i, char* comp_name, - float ex, float ey, float ez, - float sumE, float sumEt, - short sumOfSigns, float c0, float c1, - short status, unsigned short Ntot, - bool update=false); - - void updateMETComp(xAOD::TrigEFMissingET *met, const int comp_i - float ex, float ey, float ez, - float sumE, float sumEt, - short sumOfSigns, float c0, float c1, - short status, unsigned short Ntot); + void setMET(xAOD::TrigMissingET *met, TrigEFMissingEtHelper *metHelper, + unsigned char comp_i); + void setMETComp(xAOD::TrigMissingET *met, TrigEFMissingEtHelper *metHelper, + unsigned char comp_i, char add_i=-1); }; diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromHelper.cxx b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromHelper.cxx index 123fd72080c84ca9e86f3cfc298e891dc02e05ee..27a114da11defaff69c9464b2e70447a64831549 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromHelper.cxx +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/src/EFMissingETFromHelper.cxx @@ -10,7 +10,7 @@ PACKAGE: Trigger/TrigAlgorithms/TrigEFMissingET AUTHORS: Gabriel Gallardo, Manfredi Ronzani CREATED: September 27, 2018 -PURPOSE: Updates TrigMissingET using TrigEFMissingETHelper info for AthenaMT. +PURPOSE: Updates TrigMissingET using TrigEFMissingEtHelper info for AthenaMT. Components are left uncorrected when saved into TrigMissingET as auxiliary information. @@ -69,11 +69,22 @@ StatusCode EFMissingETFromHelper::finalize() return StatusCode::SUCCESS; } -void EFMissingETFromHelper::setMET(xAOD::TrigMissingET *met, - const float ex, const float ey, const float ez, - const float sumE, const float sumEt, - const short sumOfSigns, const float c0, const float c1) +void EFMissingETFromHelper::setMET(xAOD::TrigMissingET *const met, TrigEFMissingEtHelper *metHelper, + const unsigned char comp_i) { + TrigEFMissingEtComponent* metComp = metHelper->GetComponent(comp_i); + + float ex = metComp->m_ex; + float ey = metComp->m_ey; + float ez = metComp->m_ez; + float sumE = metComp->m_sumE; + float sumEt = metComp->m_sumEt; + float c0 = metComp->m_calib0; + float c1 = metComp->m_calib1; + // short status = metComp->m_status; + short sumOfSigns = metComp->m_sumOfSigns; + // unsigned short Ntot = metComp->m_usedChannels; + met->setEx( met->ex() + sumOfSigns * c0 + c1 * ex ); met->setEy( met->ey() + sumOfSigns * c0 + c1 * ey ); met->setEz( met->ez() + sumOfSigns * c0 + c1 * ez ); @@ -82,14 +93,39 @@ void EFMissingETFromHelper::setMET(xAOD::TrigMissingET *met, return; } -void EFMissingETFromHelper::setMETComp(xAOD::TrigMissingET *met, const int comp_i, const char* comp_name, - const float ex, const float ey, const float ez, - const float sumE, float sumEt, - const short sumOfSigns, const float c0, const float c1, - const short status, const unsigned short Ntot, - bool update) + +void EFMissingETFromHelper::setMETComp(xAOD::TrigMissingET *const met, TrigEFMissingEtHelper *metHelper, + const unsigned char comp_i, const char add_i) { - if (comp_name && !update) + TrigEFMissingEtComponent* metComp = metHelper->GetComponent(comp_i); + + float ex = metComp->m_ex; + float ey = metComp->m_ey; + float ez = metComp->m_ez; + float sumE = metComp->m_sumE; + float sumEt = metComp->m_sumEt; + float c0 = metComp->m_calib0; + float c1 = metComp->m_calib1; + short status = metComp->m_status; + short sumOfSigns = metComp->m_sumOfSigns; + unsigned short Ntot = metComp->m_usedChannels; + char comp_name[10]=""; + strcpy(comp_name, metComp->m_name); + + bool addComponent = (add_i>=0); + if (addComponent) + { + ex += met->exComponent(add_i); + ey += met->eyComponent(add_i); + ez += met->ezComponent(add_i); + sumE += met->sumEComponent(add_i); + sumEt += met->sumEtComponent(add_i); + sumOfSigns += met->sumOfSignsComponent(add_i); + status |= met->statusComponent(add_i); + Ntot += met->usedChannelsComponent(add_i); + } + + if (!strcmp(comp_name, "") && !addComponent) met->setNameOfComponent( comp_i, comp_name ); met->setExComponent( comp_i, ex ); met->setEyComponent( comp_i, ey ); @@ -104,26 +140,7 @@ void EFMissingETFromHelper::setMETComp(xAOD::TrigMissingET *met, const int comp_ return; } -void EFMissingETFromHelper::updateMETComp(xAOD::TrigEFMissingET *met, const int comp_i, - float ex, float ey, float ez, - float sumE, float sumEt, - short sumOfSigns, float c0, float c1, - short status, unsigned short Ntot) -{ - setMETComp(met, comp_i, nullptr, - ex + met->exComponent(comp_i+1), - ey + met->eyComponent(comp_i+1), - ez + met->ezComponent(comp_i+1), - sumE + met->sumEComponent(comp_i+1), - sumEt + met->sumEtComponent(comp_i+1), - sumOfSigns + met->sumOfSignsComponent(comp_i+1), - c0, c1, - status | met->statusComponent(comp_i+1), - Ntot + met->usedChannelsComponent(comp_i+1), - true - ) -} StatusCode EFMissingETFromHelper::execute() { return StatusCode::SUCCESS; @@ -200,71 +217,59 @@ StatusCode EFMissingETFromHelper::execute(xAOD::TrigMissingET *met , // take info from *metHelper and update *met for (unsigned char i=0; i<elem; ++i) { // loop over transient components - TrigEFMissingEtComponent* metComp = metHelper->GetComponent(i); - - float ex = metComp->m_ex; - float ey = metComp->m_ey; - float ez = metComp->m_ez; - float sumE = metComp->m_sumE; - float sumEt = metComp->m_sumEt; - float c0 = metComp->m_calib0; - float c1 = metComp->m_calib1; - short status = metComp->m_status; - short sumOfSigns = metComp->m_sumOfSigns; - unsigned short Ntot = metComp->m_usedChannels; // basic info - DK calibration if (i<elem-18){ // skip muon or Had Topo granular or EM Topo correction for all quantities - setMET(met, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1); + setMET(met, metHelper, i); } if(save9comp && i == 24) { // Save summed HAD MET - setMET(met, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1); + setMET(met, metHelper, i); } if( (save2comp || save6comp) && i == 34) { // Save JET MET - setMET(met, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1); + setMET(met, metHelper, i); } if(save3comp && i == 39) { // Save PUC MET - setMET(met, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1); + setMET(met, metHelper, i); } if (skipAuxInfo) continue; // auxiliary info - uncorrected if (comp == unsigned(elem-17) && i < 24) { // finest granularity - setMETComp(met, i, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i); } else if(comp == unsigned(elem-17) && i == 41) { // save muons - setMETComp(met, i-17, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i-17); } else if (save6comp) { if (i>=34 && i < 39) { // Central and Forward Jets - setMETComp(met, i-34, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i-34); } if (i==41) { // Muons - setMETComp(met, 5, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i-5); } } else if (save9comp) { if (i > 24 && i < 29 ) { // HAD scale quantities - setMETComp(met, metComp, i-25, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i-25); } else if( i > 29 && i < 34) { // EM scale quantities - setMETComp(met, metComp, i-25-1, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i-25-1); } else if( i == 41) { // Muon - setMETComp(met, metComp, i-25-8, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, i-25-8); } } else if (save5comp) { switch (i) { case 0: case 1: case 2: case 3: // LAr, barrel - updateMETComp(met, 0, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 0, 1); break; case 4: case 5: case 6: case 7: // LAr, end-cap case 21: // + FCalEM - updateMETComp(met, 1, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 1, 2); break; case 12: case 13: case 14: // Tile, barrel + case 18: case 19: case 20: // Tile, extended barrel - updateMETComp(met, 2, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 2, 3); break; case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: @@ -272,32 +277,32 @@ StatusCode EFMissingETFromHelper::execute(xAOD::TrigMissingET *met , case 39: case 40 : // Topo. cluster elements or jets - do nothing. break; case 41: // muons - setMETComp(met, 4, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 4); break; default: // Hadr. end-cap + Tile gap + FCalHad - updateMETComp(met, 3, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 3, 4); } } else if (save3comp) { switch (i) { case 39: // Corrected MET - setMETComp(met, 0, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 0); break; case 40: // Original MET - setMETComp(met, 1, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 1); break; case 41: // Muons - setMETComp(met, 2, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 2); } } else if (save2comp) { // Jets + muons only if (i==34) { // Jets - setMETComp(met, 0, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 0); } if (i==41) { // Muons - setMETComp(met, 1, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 1); } } else if (save1comp) { // muons only if (i==41) { // REPLACE WITH A TEST OVER COMP. NAME - setMETComp(met, 0, metComp->m_name, ex, ey, ez, sumE, sumEt, sumOfSigns, c0, c1, status, Ntot); + setMETComp(met, metHelper, 0); } }