diff --git a/LArCalorimeter/LArAffectedRegion/LArAffectedRegion/LArAffectedRegionAlg.h b/LArCalorimeter/LArAffectedRegion/LArAffectedRegion/LArAffectedRegionAlg.h index bd3ff1c6e5493f22dc828548d486e00b83a1322b..f8688caeea2e3985f1f90800dd8202f5c9bbb6aa 100644 --- a/LArCalorimeter/LArAffectedRegion/LArAffectedRegion/LArAffectedRegionAlg.h +++ b/LArCalorimeter/LArAffectedRegion/LArAffectedRegion/LArAffectedRegionAlg.h @@ -52,8 +52,8 @@ class LArAffectedRegionAlg : public AthAlgorithm,virtual public IIncidentListene float HV_nominal(const char *identification,const float eta); std::vector<int> returnProblem(const float eta, const float phi, const float delta_eta, const float delta_phi); - int getOccurenceProblem(std::vector<CaloAffectedRegionInfo> m_ArrayLArAffectedRegionInfo_global,float eta_min,float eta_max,float phi_min,float phi_max,int layer_min,int layer_max,int problem,float rate); - void debuggingSearchDoublons(std::vector<CaloAffectedRegionInfo> m_ArrayLArAffectedRegionInfo); + int getOccurenceProblem(const std::vector<CaloAffectedRegionInfo>& ArrayLArAffectedRegionInfo_global,float eta_min,float eta_max,float phi_min,float phi_max,int layer_min,int layer_max,int problem,float rate); + void debuggingSearchDoublons(const std::vector<CaloAffectedRegionInfo>& ArrayLArAffectedRegionInfo); //--- private: diff --git a/LArCalorimeter/LArAffectedRegion/src/LArAffectedRegionAlg.cxx b/LArCalorimeter/LArAffectedRegion/src/LArAffectedRegionAlg.cxx index ac5b8615cb38a986072494dbdff12230cb01edfe..3557031057fb6919c523da01d52856f4c1c89cb7 100644 --- a/LArCalorimeter/LArAffectedRegion/src/LArAffectedRegionAlg.cxx +++ b/LArCalorimeter/LArAffectedRegion/src/LArAffectedRegionAlg.cxx @@ -223,19 +223,21 @@ void LArAffectedRegionAlg::handle(const Incident& inc) { //for non nominal HV for (unsigned int i=0;i<m_ArrayLArAffectedRegionInfo_global.size();++i) { CaloAffectedRegionInfo& info = m_ArrayLArAffectedRegionInfo_global[i]; - coral::AttributeList* attrList = new coral::AttributeList(*attrSpec); - (*attrList)["eta_min"].setValue(info.get_eta_min()); - (*attrList)["eta_max"].setValue(info.get_eta_max()); - (*attrList)["phi_min"].setValue(info.get_phi_min()); - (*attrList)["phi_max"].setValue(info.get_phi_max()); - (*attrList)["layer_min"].setValue(info.get_layer_min()); - (*attrList)["layer_max"].setValue(info.get_layer_max()); - (*attrList)["problem"].setValue(info.get_problem()); - m_attrListColl->add(i, *attrList); // channel number, payload + coral::AttributeList attrList(*attrSpec,true); + attrList["eta_min"].setValue(info.get_eta_min()); + attrList["eta_max"].setValue(info.get_eta_max()); + attrList["phi_min"].setValue(info.get_phi_min()); + attrList["phi_max"].setValue(info.get_phi_max()); + attrList["layer_min"].setValue(info.get_layer_min()); + attrList["layer_max"].setValue(info.get_layer_max()); + attrList["problem"].setValue(info.get_problem()); + m_attrListColl->add(i, attrList); // channel number, payload } m_attrListColl->addNewStart(IOVTime(runNumber, 0)); // start run, LB + attrSpec->release(); //Decrease ref-count, we don't need that guy any more + // Register folder in the IOV Db MetaData if (StatusCode::SUCCESS != m_metaDataTool->registerFolder("/LAR/LArAffectedRegionInfo")) { ATH_MSG_ERROR ( "fillMetaData: Unable to register folder for /LAR/LArAffectedRegionInfo with meta data tool " ); @@ -280,7 +282,6 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMB() { // deals with LAr HV, EMB const LArHVManager *manager = NULL; //std::cout << " in HV_EMB " << std::endl; - CaloPhiRange _range; if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { // accordion calorimeter @@ -338,8 +339,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMB() { // deals with LAr HV, EMB if (isDead) { if (!are_previous_HV_dead) { - phi_min=_range.fix(electrode->getPhi()-1e-4); - phi_max=_range.fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); //std::cout << " -- start dead region " << eta_min << " " << eta_max << " " << phi_min << " " <<phi_max << std::endl; are_previous_HV_dead = true; } @@ -351,8 +352,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMB() { // deals with LAr HV, EMB if (isAffected) { if (!are_previous_HV_affected) { - phi_min=_range.fix(electrode->getPhi()-1e-4); - phi_max=_range.fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); //std::cout << " -- start affected region " << eta_min << " " << eta_max << " " << phi_min << " " <<phi_max << std::endl; are_previous_HV_affected = true; } @@ -395,8 +396,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMB() { // deals with LAr HV, EMB //std::cout << " HV " << hv[0] << " " << hv[1] << " "; float eta_min=hvMod->getEtaMin(); float eta_max=hvMod->getEtaMax(); - float phi_min=_range.fix(hvMod->getPhiMin()); - float phi_max=_range.fix(hvMod->getPhiMax()); + float phi_min=CaloPhiRange::fix(hvMod->getPhiMin()); + float phi_max=CaloPhiRange::fix(hvMod->getPhiMax()); //std::cout << " etamin,etamax,phimin,phimax " << eta_min << " " << eta_max << " " << phi_min << " " << phi_max ; //take decisions according to all the gaps HV : @@ -427,8 +428,6 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMB() { // deals with LAr HV, EMB void LArAffectedRegionAlg::searchNonNominalHV_EMEC_OUTER() { // deals with LAr HV, EM EndCap OUTER const LArHVManager *manager = NULL; - CaloPhiRange _range; - //std::cout << " start HV_EMEC_OUTER " << std::endl; if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { @@ -492,8 +491,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMEC_OUTER() { // deals with LAr H if (isDead) { if (!are_previous_HV_dead) { - phi_min=_range.fix(electrode->getPhi()-1e-4); - phi_max=_range.fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); are_previous_HV_dead = true; //std::cout << " -- start dead region " << eta_min << " " << eta_max << " " << phi_min << " " <<phi_max << std::endl; } @@ -505,8 +504,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMEC_OUTER() { // deals with LAr H if (isAffected) { if (!are_previous_HV_affected) { - phi_min=_range.fix(electrode->getPhi()-1e-4); - phi_max=_range.fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); are_previous_HV_affected = true; //std::cout << " -- start affected region " << eta_min << " " << eta_max << " " << phi_min << " " <<phi_max << std::endl; } @@ -549,8 +548,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMEC_OUTER() { // deals with LAr H //std::cout << " HV " << hv[0] << " " << hv[1] << " "; float eta_min=hvMod->getEtaMin(); float eta_max=hvMod->getEtaMax(); - float phi_min=_range.fix(hvMod->getPhiMin()); - float phi_max=_range.fix(hvMod->getPhiMax()); + float phi_min=CaloPhiRange::fix(hvMod->getPhiMin()); + float phi_max=CaloPhiRange::fix(hvMod->getPhiMax()); //std::cout << " etamin,etamax,phimin,phimax " << eta_min << " " << eta_max << " " << phi_min << " " << phi_max ; //take decisions according to all the gaps HV : @@ -578,8 +577,6 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMEC_OUTER() { // deals with LAr H void LArAffectedRegionAlg::searchNonNominalHV_EMEC_INNER() { // deals with LAr HV, EM EndCap INNER const LArHVManager *manager = NULL; - CaloPhiRange _range; - //std::cout << " start loop over EMEC_INNER " << std::endl; if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { @@ -643,8 +640,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMEC_INNER() { // deals with LAr H if (isDead) { if (!are_previous_HV_dead) { - phi_min=_range.fix(electrode->getPhi()-1e-4); - phi_max=_range.fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); //std::cout << " -- start dead region " << phi_min << " " << phi_max << std::endl; are_previous_HV_dead = true; } @@ -656,8 +653,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_EMEC_INNER() { // deals with LAr H if (isAffected) { if (!are_previous_HV_affected) { - phi_min=_range.fix(electrode->getPhi()-1e-4); - phi_max=_range.fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); are_previous_HV_affected = true; //std::cout << " -- start affected region " << phi_min << " " << phi_max << std::endl; } @@ -690,7 +687,6 @@ void LArAffectedRegionAlg::searchNonNominalHV_HEC() { // deals with LAr HV, HEC // std::cout << " in HEC " << std::endl; const LArHVManager *manager = NULL; - CaloPhiRange _range; float etamax_layer[4]={3.3,3.1,3.1,3.3}; float etamin_layer[4]={1.5,1.5,1.6,1.7}; @@ -734,8 +730,8 @@ void LArAffectedRegionAlg::searchNonNominalHV_HEC() { // deals with LAr HV, HEC (fabs(hv[2]-HVnominal)>HV_NON_NOMINAL_TOLERANCE) || (fabs(hv[3]-HVnominal)>HV_NON_NOMINAL_TOLERANCE)) ) isAffected=true; //std::cout << " isDead/isAffected " << isDead << " " << isAffected << std::endl; - float phiMin = _range.fix(hvMod->getPhiMin()); - float phiMax = _range.fix(hvMod->getPhiMax()); + float phiMin = CaloPhiRange::fix(hvMod->getPhiMin()); + float phiMax = CaloPhiRange::fix(hvMod->getPhiMax()); if (isDead) { //stores it, DEAD means all hvs < threshold @@ -758,7 +754,6 @@ void LArAffectedRegionAlg::searchNonNominalHV_HEC() { // deals with LAr HV, HEC void LArAffectedRegionAlg::searchNonNominalHV_FCAL() { // deals with LAr HV, FCAL //std::cout << " inFCAL " << std::endl; - CaloPhiRange _range; const LArHVManager *manager = NULL; if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { @@ -778,12 +773,12 @@ void LArAffectedRegionAlg::searchNonNominalHV_FCAL() { // deals with LAr HV, FCA //std::cout << " FCAL HVModule side,sampling,sector " << iSide << " " << iSampling << " " << iSector << std::endl; //std::cout << " HV nominal " << HVnominal << std::endl; - float dphi=_range.twopi()/16; - if (iSampling==1) dphi=_range.twopi()/8.; - if (iSampling==2) dphi=_range.twopi()/4.; + float dphi=CaloPhiRange::twopi()/16; + if (iSampling==1) dphi=CaloPhiRange::twopi()/8.; + if (iSampling==2) dphi=CaloPhiRange::twopi()/4.; float phi_min = ((float)(iSector))*dphi; - phi_min = _range.fix(phi_min); - float phi_max = _range.fix(dphi+phi_min); + phi_min = CaloPhiRange::fix(phi_min); + float phi_max = CaloPhiRange::fix(dphi+phi_min); //std::cout << " eta_min,eta_max,phi_min,phi_max " << eta_min << " " << eta_max << " " << phi_min << " " << phi_max << std::endl; @@ -1043,21 +1038,21 @@ float LArAffectedRegionAlg::HV_nominal(const char *identification,const float my //==================================================================================== // Return the occurence of given AffectedRegion in the list of Affected Region (useful to extend the AffectedRegion in the case of a new run, and useful to update the MetaData) -int LArAffectedRegionAlg::getOccurenceProblem(std::vector<CaloAffectedRegionInfo> m_ArrayLArAffectedRegionInfo_global,float eta_min,float eta_max,float phi_min,float phi_max,int layer_min,int layer_max,int problem,float rate) { +int LArAffectedRegionAlg::getOccurenceProblem(const std::vector<CaloAffectedRegionInfo>& ArrayLArAffectedRegionInfo_global,float eta_min,float eta_max,float phi_min,float phi_max,int layer_min,int layer_max,int problem,float rate) { float epsilon=1e-3; int occurences=0; - for (unsigned int i = 0; i < m_ArrayLArAffectedRegionInfo_global.size(); ++i) { + for (unsigned int i = 0; i < ArrayLArAffectedRegionInfo_global.size(); ++i) { - if (fabs(m_ArrayLArAffectedRegionInfo_global[i].get_eta_min()-eta_min)<epsilon && - fabs(m_ArrayLArAffectedRegionInfo_global[i].get_eta_max()-eta_max)<epsilon && - fabs(m_ArrayLArAffectedRegionInfo_global[i].get_phi_min()-phi_min)<epsilon && - fabs(m_ArrayLArAffectedRegionInfo_global[i].get_phi_max()-phi_max)<epsilon && - m_ArrayLArAffectedRegionInfo_global[i].get_layer_min()==layer_min && - m_ArrayLArAffectedRegionInfo_global[i].get_layer_max()==layer_max && - m_ArrayLArAffectedRegionInfo_global[i].get_problem()==problem && - fabs(m_ArrayLArAffectedRegionInfo_global[i].get_rate()-rate)<epsilon) { + if (fabs(ArrayLArAffectedRegionInfo_global[i].get_eta_min()-eta_min)<epsilon && + fabs(ArrayLArAffectedRegionInfo_global[i].get_eta_max()-eta_max)<epsilon && + fabs(ArrayLArAffectedRegionInfo_global[i].get_phi_min()-phi_min)<epsilon && + fabs(ArrayLArAffectedRegionInfo_global[i].get_phi_max()-phi_max)<epsilon && + ArrayLArAffectedRegionInfo_global[i].get_layer_min()==layer_min && + ArrayLArAffectedRegionInfo_global[i].get_layer_max()==layer_max && + ArrayLArAffectedRegionInfo_global[i].get_problem()==problem && + fabs(ArrayLArAffectedRegionInfo_global[i].get_rate()-rate)<epsilon) { occurences++; // std::cout << "found the asked AffectedRegion in the global list of AffectedRegion" << std::endl; } @@ -1105,21 +1100,21 @@ std::vector<int> LArAffectedRegionAlg::returnProblem(const float eta, const floa return list_problem; } //========================================================================================= -void LArAffectedRegionAlg::debuggingSearchDoublons(std::vector<CaloAffectedRegionInfo> m_ArrayLArAffectedRegionInfo) { //debugging method to check if there are doublons in the current run : for example because of lack of method for some detectors parts +void LArAffectedRegionAlg::debuggingSearchDoublons(const std::vector<CaloAffectedRegionInfo>& ArrayLArAffectedRegionInfo) { //debugging method to check if there are doublons in the current run : for example because of lack of method for some detectors parts - for (unsigned int i=0;i<m_ArrayLArAffectedRegionInfo.size();++i) { + for (unsigned int i=0;i<ArrayLArAffectedRegionInfo.size();++i) { int occurences=0; - for (unsigned int j=i+1;j<m_ArrayLArAffectedRegionInfo.size();++j) { + for (unsigned int j=i+1;j<ArrayLArAffectedRegionInfo.size();++j) { - if (m_ArrayLArAffectedRegionInfo[i].get_eta_min() ==m_ArrayLArAffectedRegionInfo[j].get_eta_min() && - m_ArrayLArAffectedRegionInfo[i].get_eta_max() ==m_ArrayLArAffectedRegionInfo[j].get_eta_max() && - m_ArrayLArAffectedRegionInfo[i].get_phi_min() ==m_ArrayLArAffectedRegionInfo[j].get_phi_min() && - m_ArrayLArAffectedRegionInfo[i].get_phi_max() ==m_ArrayLArAffectedRegionInfo[j].get_phi_max() && - m_ArrayLArAffectedRegionInfo[i].get_layer_min()==m_ArrayLArAffectedRegionInfo[j].get_layer_min() && - m_ArrayLArAffectedRegionInfo[i].get_layer_max()==m_ArrayLArAffectedRegionInfo[j].get_layer_max() && - m_ArrayLArAffectedRegionInfo[i].get_problem() ==m_ArrayLArAffectedRegionInfo[j].get_problem() && - m_ArrayLArAffectedRegionInfo[i].get_rate() ==m_ArrayLArAffectedRegionInfo[j].get_rate()) { + if (ArrayLArAffectedRegionInfo[i].get_eta_min() ==ArrayLArAffectedRegionInfo[j].get_eta_min() && + ArrayLArAffectedRegionInfo[i].get_eta_max() ==ArrayLArAffectedRegionInfo[j].get_eta_max() && + ArrayLArAffectedRegionInfo[i].get_phi_min() ==ArrayLArAffectedRegionInfo[j].get_phi_min() && + ArrayLArAffectedRegionInfo[i].get_phi_max() ==ArrayLArAffectedRegionInfo[j].get_phi_max() && + ArrayLArAffectedRegionInfo[i].get_layer_min()==ArrayLArAffectedRegionInfo[j].get_layer_min() && + ArrayLArAffectedRegionInfo[i].get_layer_max()==ArrayLArAffectedRegionInfo[j].get_layer_max() && + ArrayLArAffectedRegionInfo[i].get_problem() ==ArrayLArAffectedRegionInfo[j].get_problem() && + ArrayLArAffectedRegionInfo[i].get_rate() ==ArrayLArAffectedRegionInfo[j].get_rate()) { //std::cout << "found a doublon for " << "index=" << i << ", with index=" << j << std::endl; occurences++; } @@ -1127,7 +1122,7 @@ void LArAffectedRegionAlg::debuggingSearchDoublons(std::vector<CaloAffectedRegio /* if (occurences) { std::cout << "found " << occurences << ", the asked AffectedRegion in given list of AffectedRegion : see next line" << std::endl; - m_ArrayLArAffectedRegionInfo[i].PrintInfo(); + ArrayLArAffectedRegionInfo[i].PrintInfo(); } */ } @@ -1137,13 +1132,12 @@ void LArAffectedRegionAlg::debuggingSearchDoublons(std::vector<CaloAffectedRegio void LArAffectedRegionAlg::extendPhiRegion(float phi, float & phi_min, float & phi_max) { static float epsilon=1e-4; - static CaloPhiRange _range; - phi = _range.fix(phi); + phi = CaloPhiRange::fix(phi); if (phi_min>10. || phi_max<-10.) { - phi_min = _range.fix(phi-epsilon); - phi_max = _range.fix(phi+epsilon); + phi_min = CaloPhiRange::fix(phi-epsilon); + phi_max = CaloPhiRange::fix(phi+epsilon); return; } @@ -1156,8 +1150,8 @@ void LArAffectedRegionAlg::extendPhiRegion(float phi, float & phi_min, float & p } if (isInRegion) return; - float dphi1 = _range.diff(phi,phi_min); - float dphi2 = _range.diff(phi,phi_max); + float dphi1 = CaloPhiRange::diff(phi,phi_min); + float dphi2 = CaloPhiRange::diff(phi,phi_max); if (fabs(dphi1)<fabs(dphi2) ) phi_min=phi; else