37 #include "CoralBase/Blob.h"
42 #define HV_NON_NOMINAL_TOLERANCE 10 // tolerance : 1V for HV
43 #define DEAD_HV_THRESHOLD 10 // HV <10 V="dead"
44 #define MAX_LAR_CELLS 182468
61 ATH_MSG_INFO(
"Will use currents to correct voltage-drop at HV-resistors");
64 ATH_MSG_INFO(
"Will NOT correct voltage-drop at HV-resistors");
86 return StatusCode::SUCCESS;
93 const EventContext& ctx = Gaudi::Hive::currentContext();
103 return StatusCode::SUCCESS;
110 if (writeHandle.isValid()) {
112 return StatusCode::SUCCESS;
117 writeHandle.addDependency (fullRange);
121 ATH_MSG_DEBUG(
"Range of cabling" << larCablingHdl.
getRange() <<
", intersection: " << writeHandle.getRange());
122 writeHandle.addDependency(larCablingHdl);
126 writeHandle.addDependency(caloMgrHandle);
131 onlHVCorr = *onlHVCorrHdl;
132 writeHandle.addDependency(onlHVCorrHdl);
133 ATH_MSG_DEBUG(
"Range of online HV correction " << onlHVCorrHdl.
getRange() <<
", intersection: " << writeHandle.getRange());
138 writeHandle.addDependency(mappingHdl);
147 bool doPathology=
true;
150 if(!pathologyContainer) {
156 writeHandle.addDependency(pHdl);
157 ATH_MSG_DEBUG(
"Range of HV-Pathology " << pHdl.
getRange() <<
", intersection: " << writeHandle.getRange());
158 const std::vector<LArHVPathologiesDb::LArHVElectPathologyDb> &pathCont = pathologyContainer->
getPathology();
159 const size_t nPathologies=pathCont.size();
161 ATH_MSG_INFO(
"Number of HV pathologies found " << nPathologies);
164 for(
unsigned i=0;
i<nPathologies; ++
i) {
169 unsigned int index = (
unsigned int)(idHash);
170 if (
index<hasPathologyEM.size()) {
171 if(!hasPathologyEM[
index].empty()) {
176 std::vector<unsigned short> svec;
179 hasPathologyEM[
index]=svec;
185 unsigned int index = (
unsigned int)(idHash);
186 if (
index<hasPathologyHEC.size()) {
187 if(!hasPathologyHEC[
index].empty()) {
192 std::vector<unsigned short> svec;
195 hasPathologyHEC[
index]=svec;
201 unsigned int index = (
unsigned int)(idHash);
202 if (
index<hasPathologyFCAL.size()) {
203 if(!hasPathologyFCAL[
index].empty()) {
204 if(hasPathologyFCAL[
index].
size()<
static_cast<size_t>(abs(electPath.
electInd+1)))
208 std::vector<unsigned short> svec;
211 hasPathologyFCAL[
index]=svec;
219 const float* rValues{
nullptr};
223 writeHandle.addDependency(readAttrHandle);
228 return StatusCode::FAILURE;
230 rValues =
static_cast<const float*
>(rBlob.startingAddress());
234 writeHandle.addDependency (
h);
235 return writeHandle.getRange();
241 pathologyContainer, hasPathologyEM, hasPathologyHEC, hasPathologyFCAL, rValues));
243 std::vector<float> vScale;
251 const float hvonline = onlHVCorr->HVScaleCorr(hwid);
252 if (hvonline>0. && hvonline<100.) vScale[
i]=vScale[
i]/hvonline;
255 if (vScale[
i]<0.01) {
260 if (vScale[
i] < 0.9) {
261 if (vScale[
i] < 0.4) {
263 <<
" = " << vScale[
i]);
266 <<
" = " << vScale[
i]);
273 if (writeHandle.record(std::move(hvCorr)).isFailure()) {
274 ATH_MSG_ERROR(
"Could not record LArHVCorr object with " << writeHandle.key()
275 <<
" with EventRange " << writeHandle.getRange() <<
" into Conditions Store");
276 return StatusCode::FAILURE;
278 ATH_MSG_INFO(
"recorded new " << writeHandle.key() <<
" with range " << writeHandle.getRange() <<
" into Conditions Store");
280 return StatusCode::SUCCESS;
288 if (writeAffectedHandle.isValid()) {
289 ATH_MSG_DEBUG(
"Found valid write LArAffectedRegions handle");
290 return StatusCode::SUCCESS;
295 ATH_MSG_DEBUG(
"Range of cabling" << larCablingHdl.
getRange() <<
", intersection: " << writeAffectedHandle.getRange());
296 writeAffectedHandle.addDependency(larCablingHdl);
300 writeAffectedHandle.addDependency(readBFHandle);
301 ATH_MSG_DEBUG(
"Range of BadFeb " << readBFHandle.getRange() <<
", intersection: " << writeAffectedHandle.getRange());
303 auto vAffected = std::make_unique<CaloAffectedRegionInfoVec>();
306 writeAffectedHandle.addDependency (
h);
307 return writeAffectedHandle.getRange();
313 writeAffectedHandle.addDependency(mappingHdl);
323 ATH_CHECK(writeAffectedHandle.record(std::move(vAffected)));
324 ATH_MSG_INFO(
"recorded new " << writeAffectedHandle.key() <<
" with range "
325 << writeAffectedHandle.getRange()<<
" into Conditions Store");
327 return StatusCode::SUCCESS;
336 std::vector<const CondAttrListCollection*> attrvec;
343 attrvec.push_back(cattr);
344 const EventIDRange&
range = addDep (dcsHdl);
353 if (voltagePerLine.empty()) {
357 return StatusCode::SUCCESS;
369 ,
const float* rValues)
const
372 std::vector<unsigned int> listElec;
374 const float uAkOhm = 1.e-3;
383 bool hasPathology=
false;
384 if (
index<hasPathologyEM.size()) {
385 if (!hasPathologyEM[
index].empty()) {
391 if (!embElement) std::abort();
393 unsigned int nelec =
cell->getNumElectrodes();
394 unsigned int ngap = 2*nelec;
396 for (
unsigned int i=0;
i<nelec;
i++) {
400 for (
unsigned int igap=0;igap<2;igap++) {
404 auto hvIt=voltage.find(
hvline);
405 if(hvIt != voltage.end()) {
408 curr=hvIt->second.curr;
417 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
418 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
423 for (
unsigned int ii=0;ii<listElec.size();ii++) {
424 if (listElec[ii]==(2*
i+igap) && listElec[ii]<hasPathologyEM[
index].
size() && hasPathologyEM[
index][listElec[ii]]) {
449 if (!embElement) std::abort();
454 for (
unsigned int igap=0;igap<2;igap++) {
458 auto hvIt=voltage.find(
hvline);
459 if(hvIt != voltage.end()) {
462 curr=hvIt->second.curr;
471 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0;
472 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
482 bool hasPathology=
false;
483 if (
index<hasPathologyEM.size()) {
484 if (!hasPathologyEM[
index].empty()) {
491 if (!emecElement) std::abort();
493 unsigned int nelec =
cell->getNumElectrodes();
494 unsigned int ngap = 2*nelec;
496 for (
unsigned int i=0;
i<nelec;
i++) {
498 for (
unsigned int igap=0;igap<2;igap++) {
502 auto hvIt=voltage.find(
hvline);
503 if(hvIt != voltage.end()) {
506 curr=hvIt->second.curr;
515 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
516 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
520 for (
unsigned int ii=0;ii<listElec.size();ii++) {
521 if (listElec[ii]==(2*
i+igap) && listElec[ii]<hasPathologyEM[
index].
size() && hasPathologyEM[
index][listElec[ii]]) {
528 hv=((hasPathologyEM[
index][listElec[ii]]&0xFFF0)>>4);
545 if (!emecElement) std::abort();
550 for (
unsigned int igap=0;igap<2;igap++) {
554 auto hvIt=voltage.find(
hvline);
555 if(hvIt != voltage.end()) {
558 curr=hvIt->second.curr;
567 if(curr >0.) curr *= uAkOhm * rValues[ridx];
else curr=0.;
568 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr. " << curr <<
" R: "<<rValues[ridx]);
578 ATH_MSG_ERROR(
"This could not be, what happened with EM identifiers ?");
579 return StatusCode::FAILURE;
588 bool hasPathology=
false;
589 if (
index<hasPathologyHEC.size()) {
590 if (!hasPathologyHEC[
index].empty()) {
596 if (!hecElement) std::abort();
598 unsigned int nsubgaps =
cell->getNumSubgaps();
599 float wt = 1./nsubgaps;
601 for (
unsigned int i=0;
i<nsubgaps;
i++) {
606 auto hvIt=voltage.find(
hvline);
607 if(hvIt != voltage.end()) {
610 curr=hvIt->second.curr;
620 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
621 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" cur. " << curr <<
" R: "<<rValues[ridx]);
625 for (
unsigned int ii=0;ii<listElec.size();ii++) {
626 if (listElec[ii]==
i && listElec[ii]<hasPathologyHEC[
index].
size() && hasPathologyHEC[
index][listElec[ii]]) {
651 bool hasPathology=
false;
652 if (
index<hasPathologyFCAL.size()) {
653 if (!hasPathologyFCAL[
index].empty()) {
660 if (!fcalElement) std::abort();
662 unsigned int nlines =
tile->getNumHVLines();
663 unsigned int nlines_found=0;
664 for (
unsigned int i=0;
i<nlines;
i++) {
666 if (
line) nlines_found++;
668 if (nlines_found>0) {
669 float wt = 1./nlines_found;
671 for (
unsigned int i=0;
i<nlines;
i++) {
674 unsigned int hvline =
line->hvLineNo(hvCabling);
677 auto hvIt=voltage.find(
hvline);
678 if(hvIt != voltage.end()) {
681 if(rValues && useCurrent) {
682 curr=hvIt->second.curr;
692 if(curr > 0.) curr *= uAkOhm * rValues[ridx];
else curr = 0.;
693 ATH_MSG_VERBOSE(
"channel. "<<std::hex<<
id.get_identifier32()<<std::dec <<
" hvline: "<<
hvline<<
" curr." << curr <<
" R: "<<rValues[ridx]);
697 for (
unsigned int ii=0;ii<listElec.size();ii++) {
698 if (listElec[ii]==
i && listElec[ii]<hasPathologyFCAL[
index].
size() && hasPathologyFCAL[
index][listElec[ii]]) {
705 hv=((hasPathologyFCAL[
index][listElec[ii]]&0xFFF0)>>4);
721 return StatusCode::SUCCESS;
726 for (
unsigned int i=0;
i<
v.size();
i++) {
727 if (std::fabs(hv-
v[
i].hv) <0.1) {
734 v.emplace_back(hv,wt);
741 std::vector<unsigned int> myList;
745 if (electPath.
cellID == (
unsigned int)(
id.get_identifier32().get_compact())) {
746 myList.push_back(electPath.
electInd);
761 for(
const auto *attrlist : fldvec) {
765 for(;citr!=citr_e;++citr) {
766 const unsigned chan=citr->first;
768 const coral::Attribute& attr=((citr)->
second)[
"R_VMEAS"];
770 if (!attr.isNull()) voltage=attr.data<
float>();
771 const coral::Attribute& attrc=((citr)->
second)[
"R_IMEAS"];
773 if (!attrc.isNull())
current=attrc.data<
float>();
781 return StatusCode::SUCCESS;
808 float phi_min=+30.,phi_max=-30.;
810 bool are_previous_HV_affected=
false;
811 bool are_previous_HV_dead=
false;
812 for (
unsigned int ielec=0;ielec<32;ielec++) {
815 double hv[2]={0.,0.};
816 for (
unsigned int iGap=0;iGap<2;iGap++) {
818 auto hvIt=voltage.find(
hvline);
819 if(hvIt == voltage.end()) {
823 hv[iGap]=hvIt->second.hv;
826 ATH_MSG_VERBOSE(
" electrode HV " << ielec <<
" " << electrode.
getPhi() <<
" "<< hv[0] <<
" " << hv[1] );
831 bool isAffected=
false;
836 if (are_previous_HV_dead && !isDead) {
837 are_previous_HV_dead=
false;
838 ATH_MSG_VERBOSE(
" -- end dead region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
840 vAffected->push_back(current_CaloAffectedRegionInfo);
844 if (are_previous_HV_affected && !isAffected) {
845 are_previous_HV_affected=
false;
846 ATH_MSG_VERBOSE(
" -- end affected region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
848 vAffected->push_back(current_CaloAffectedRegionInfo);
852 if (!are_previous_HV_dead) {
855 ATH_MSG_VERBOSE(
" -- start dead region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
856 are_previous_HV_dead =
true;
865 if (!are_previous_HV_affected) {
868 ATH_MSG_VERBOSE(
" -- start affected region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
869 are_previous_HV_affected =
true;
873 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
879 if (are_previous_HV_affected) {
880 ATH_MSG_VERBOSE(
" -- finish affected region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
882 vAffected->push_back(current_CaloAffectedRegionInfo);
884 if (are_previous_HV_dead) {
885 ATH_MSG_VERBOSE(
" -- finish dead region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
887 vAffected->push_back(current_CaloAffectedRegionInfo);
903 for (
int iGap=0;iGap<2;iGap++) {
905 auto hvIt=voltage.find(
hvline);
906 if(hvIt == voltage.end()) {
910 hv[iGap]=hvIt->second.hv;
916 ATH_MSG_VERBOSE(
" HV " << hv[0] <<
" " << hv[1] <<
" " <<
" etamin,etamax,phimin,phimax " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " << phi_max);
921 bool isAffected=
false;
927 vAffected->push_back(current_CaloAffectedRegionInfo);
931 vAffected->push_back(current_CaloAffectedRegionInfo);
938 return StatusCode::FAILURE;
940 return StatusCode::SUCCESS;
967 ATH_MSG_VERBOSE(
"iSide,iPhi,iSector,iEta " << iSide <<
" " <<
iPhi <<
" " << iSector <<
" "
968 <<
iEta <<
" eta_min , eta_max " << eta_min <<
" " << eta_max );
971 float phi_min=+30.,phi_max=-30.;
973 bool are_previous_HV_affected=
false;
974 bool are_previous_HV_dead=
false;
979 for (
unsigned int iGap=0;iGap<2;iGap++) {
981 auto hvIt=voltage.find(
hvline);
982 if(hvIt == voltage.end()) {
986 hv[iGap]=hvIt->second.hv;
993 bool isAffected=
false;
996 <<
" " << hv[1] <<
" " <<
" isDead/isAffected " << isDead <<
" " << isAffected );
999 if (are_previous_HV_dead && !isDead) {
1000 are_previous_HV_dead=
false;
1001 ATH_MSG_VERBOSE(
" -- end dead region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1003 vAffected->push_back(current_CaloAffectedRegionInfo);
1007 if (are_previous_HV_affected && !isAffected) {
1008 are_previous_HV_affected=
false;
1009 ATH_MSG_VERBOSE(
" -- end affected region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1011 vAffected->push_back(current_CaloAffectedRegionInfo);
1015 if (!are_previous_HV_dead) {
1018 are_previous_HV_dead =
true;
1019 ATH_MSG_VERBOSE(
" -- start dead region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
1023 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
1028 if (!are_previous_HV_affected) {
1031 are_previous_HV_affected =
true;
1032 ATH_MSG_VERBOSE(
" -- start affected region " << eta_min <<
" " << eta_max <<
" " << phi_min <<
" " <<phi_max);
1036 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
1042 if (are_previous_HV_affected) {
1046 ATH_MSG_VERBOSE(
" - finih affected region after electrode loop " << eta_min <<
" " << eta_max
1047 <<
" " << phi_max <<
" " <<phi_max);
1049 vAffected->push_back(current_CaloAffectedRegionInfo);
1051 if (are_previous_HV_dead) {
1052 ATH_MSG_VERBOSE(
" -- finish dead region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_max <<
" " <<phi_max);
1054 vAffected->push_back(current_CaloAffectedRegionInfo);
1068 for (
int iGap=0;iGap<2;iGap++) {
1070 auto hvIt=voltage.find(
hvline);
1071 if(hvIt == voltage.end()) {
1075 hv[iGap]=hvIt->second.hv;
1081 ATH_MSG_VERBOSE(
"iSide,iPhi" << iSide <<
" " <<
iPhi <<
" HV " << hv[0] <<
" " << hv[1] <<
" "
1082 <<
" etamin,etamax,phimin,phimax " << eta_min <<
" " << eta_max <<
" "
1083 << phi_min <<
" " << phi_max);
1088 bool isAffected=
false;
1094 vAffected->push_back(current_CaloAffectedRegionInfo);
1098 vAffected->push_back(current_CaloAffectedRegionInfo);
1104 return StatusCode::FAILURE;
1106 return StatusCode::SUCCESS;
1131 ATH_MSG_VERBOSE(
"iSide,iPhi,iSector,iEta " << iSide <<
" " <<
iPhi <<
" " << iSector <<
" "
1132 <<
iEta <<
" eta_min , eta_max " << eta_min <<
" " << eta_max);
1134 float phi_min=+30.,phi_max=-30.;
1136 bool are_previous_HV_affected=0;
1137 bool are_previous_HV_dead=0;
1142 for (
unsigned int iGap=0;iGap<2;iGap++) {
1144 auto hvIt=voltage.find(
hvline);
1145 if(hvIt == voltage.end()) {
1149 hv[iGap]=hvIt->second.hv;
1156 bool isAffected=
false;
1159 << hv[0] <<
" " << hv[1] <<
" " <<
" isDead, isAffected "
1160 << isDead <<
" " << isAffected);
1163 if (are_previous_HV_dead && !isDead) {
1164 are_previous_HV_dead=
false;
1165 ATH_MSG_VERBOSE(
" -- end dead region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1167 vAffected->push_back(current_CaloAffectedRegionInfo);
1171 if (are_previous_HV_affected && !isAffected) {
1172 are_previous_HV_affected=
false;
1173 ATH_MSG_VERBOSE(
" -- end affected region " << eta_min <<
" " << eta_max <<
" " <<phi_min <<
" " << phi_max);
1175 vAffected->push_back(current_CaloAffectedRegionInfo);
1179 if (!are_previous_HV_dead) {
1182 ATH_MSG_VERBOSE(
" -- start dead region " << phi_min <<
" " << phi_max);
1183 are_previous_HV_dead =
true;
1192 if (!are_previous_HV_affected) {
1195 are_previous_HV_affected =
true;
1196 ATH_MSG_VERBOSE(
" -- start affected region " << phi_min <<
" " << phi_max);
1200 ATH_MSG_VERBOSE(
" extend affected region " << phi_min <<
" " << phi_max);
1206 if (are_previous_HV_affected) {
1210 ATH_MSG_VERBOSE(
" - finish affected region after electrode loop " << eta_min <<
" "
1211 << eta_max <<
" " << phi_max <<
" " <<phi_max);
1213 vAffected->push_back(current_CaloAffectedRegionInfo);
1215 if (are_previous_HV_dead) {
1216 ATH_MSG_VERBOSE(
" - end dead region after electrode loop " << eta_min <<
" " << eta_max <<
" " << phi_max <<
" " <<phi_max);
1218 vAffected->push_back(current_CaloAffectedRegionInfo);
1226 return StatusCode::FAILURE;
1228 return StatusCode::SUCCESS;
1237 float etamax_layer[4]={3.3,3.1,3.1,3.3};
1238 float etamin_layer[4]={1.5,1.5,1.6,1.7};
1250 float eta_min,eta_max;
1252 eta_min = etamin_layer[iSampling];
1253 eta_max = etamax_layer[iSampling];
1255 eta_min = -1.*etamax_layer[iSampling];
1256 eta_max = -1.*etamin_layer[iSampling];
1263 for (
unsigned int iGap=0;iGap<hvMod.
getNumSubgaps();iGap++) {
1266 auto hvIt=voltage.find(
hvline);
1267 if(hvIt == voltage.end()) {
1271 if(iGap<4) hv[iGap]=hvIt->second.hv;
1278 bool isAffected=
false;
1281 ATH_MSG_VERBOSE(
" HV values " << hv[0] <<
" " << hv[1] <<
" " << hv[2] <<
" " << hv[3] <<
" "
1282 <<
" isDead/isAffected " << isDead <<
" " << isAffected);
1289 ATH_MSG_VERBOSE(
" new dead region " << eta_min <<
" " << eta_max <<
" " << phiMin <<
" " << phiMax <<
" layer " << 8+iSampling);
1291 vAffected->push_back(current_CaloAffectedRegionInfo);
1294 ATH_MSG_VERBOSE(
" new affected region " << eta_min <<
" " << eta_max <<
" " << phiMin <<
" " << phiMax <<
" layer " << 8+iSampling);
1296 vAffected->push_back(current_CaloAffectedRegionInfo);
1304 return StatusCode::FAILURE;
1306 return StatusCode::SUCCESS;
1320 float eta_min=3.1,eta_max=4.9;
1326 float HVnominal =
HV_nominal(
"FCAL",(
float)(iSampling));
1330 ATH_MSG_VERBOSE(
" FCAL HVModule side,sampling,sector " << iSide <<
" " << iSampling <<
" "
1331 << iSector <<
" HV nominal " << HVnominal);
1336 float phi_min = ((
float)(iSector))*dphi;
1340 ATH_MSG_VERBOSE(
" eta_min,eta_max,phi_min,phi_max " << eta_min <<
" " << eta_max <<
" " << phi_min
1341 <<
" " << phi_max <<
" number of lines " << hvMod.
getNumHVLines());
1343 for (
unsigned int iLine=0;iLine<hvMod.
getNumHVLines();iLine++) {
1345 unsigned int ihvline =
hvline.hvLineNo(hvCabling);
1346 auto hvIt=voltage.find(ihvline);
1347 if(hvIt == voltage.end()) {
1348 ATH_MSG_WARNING(
"Do not have hvline: "<<ihvline<<
" in LArHVData ! Assuming missing DCS data");
1351 if (iLine<4) hv[iLine]=hvIt->second.hv;
1357 bool isAffected=
false;
1360 ATH_MSG_VERBOSE(
" HV values " << hv[0] <<
" " << hv[1] <<
" " << hv[2] <<
" " << hv[3] <<
" "
1361 <<
" isDead/isAffected " << isDead <<
" " << isAffected);
1367 vAffected->push_back(current_CaloAffectedRegionInfo);
1372 vAffected->push_back(current_CaloAffectedRegionInfo);
1379 return StatusCode::FAILURE;
1381 return StatusCode::SUCCESS;
1393 bool IsMissingFeb=(bfCont->
status(febId).deadAll() || bfCont->
status(febId).deadReadout());
1397 bool is_additive1=0;
1399 int layer_min=+30,layer_max=-30;
1400 float eta_min=+30,eta_max=-30;
1401 float phi_min=+30,phi_max=-30;
1403 int layer_min_additive1=+30,layer_max_additive1=-30;
1404 float eta_min_additive1=+30,eta_max_additive1=-30;
1405 float phi_min_additive1=+30,phi_max_additive1=-30;
1409 for (
int icha=0;icha<chans_per_feb;icha++) {
1417 float current_eta=caloddElement->
eta();
1418 float current_eta_low=caloddElement->
eta()-0.5*caloddElement->
deta();
1419 float current_eta_high=caloddElement->
eta()+0.5*caloddElement->
deta();
1420 float current_phi_low=caloddElement->
phi()-0.5*caloddElement->
dphi();
1421 float current_phi_high=caloddElement->
phi()+0.5*caloddElement->
dphi();
1423 if (caloddElement->
is_lar_em_barrel() && caloddElement->
getLayer()==3 && fabs(current_eta)>0.79 && fabs(current_eta)<1.33) {
1426 if (current_layer<layer_min_additive1)
1427 layer_min_additive1=current_layer;
1428 if (current_layer>layer_max_additive1)
1429 layer_max_additive1=current_layer;
1431 if (current_eta_low<eta_min_additive1)
1432 eta_min_additive1=current_eta_low;
1433 if (current_eta_high>eta_max_additive1)
1434 eta_max_additive1=current_eta_high;
1437 extendPhiRegion(current_phi_high,phi_min_additive1,phi_max_additive1);
1443 if (current_layer<layer_min)
1444 layer_min=current_layer;
1445 if (current_layer>layer_max)
1446 layer_max=current_layer;
1448 if (current_eta_low<eta_min)
1449 eta_min=current_eta_low;
1450 if (current_eta_high>eta_max)
1451 eta_max=current_eta_high;
1462 vAffected->push_back(current_CaloAffectedRegionInfo);
1467 vAffected->push_back(current_additive1_CaloAffectedRegionInfo);
1471 return StatusCode::SUCCESS;
1476 if (strcmp(identification,
"EMBPS")==0)
1478 else if (strcmp(identification,
"EMECPS")==0)
1480 else if (strcmp(identification,
"EMB")==0)
1482 else if (strcmp(identification,
"EMEC")==0) {
1483 if ( fabs(myparameter)<1.5 )
1485 else if (fabs(myparameter)<1.6)
1487 else if (fabs(myparameter)<1.8 )
1489 else if ( fabs(myparameter) < 2.0 )
1491 else if ( fabs(myparameter) < 2.1 )
1493 else if ( fabs(myparameter) < 2.3 )
1495 else if ( fabs(myparameter) < 2.5 )
1497 else if ( fabs(myparameter) < 2.8 )
1501 else if (strcmp(identification,
"HEC")==0) {
1504 else if (strcmp(identification,
"FCAL")==0) {
1505 if (myparameter<0.5)
1507 else if (myparameter<1.5)
1509 else if (myparameter<2.5)
1523 if (phi_min>10. || phi_max<-10.) {
1529 bool isInRegion=
false;
1530 if (phi_min<phi_max) {
1531 if (
phi>phi_min &&
phi<phi_max) isInRegion=
true;
1534 if (
phi>phi_min ||
phi<phi_max) isInRegion=
true;
1536 if (isInRegion)
return;
1540 if (fabs(dphi1)<fabs(dphi2) )