ATLAS Offline Software
LArCalibPatchingAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //Dear emacs, this is -*-c++-*-
6 
15 #ifndef LARCALIBPATCHINGALG_H
16 #define LARCALIBPATCHINGALG_H
17 
18 #include <vector>
19 #include <string>
20 
32 
33 
34 
52 template<class CONDITIONSCONTAINER>
54 
55 public:
59  LArCalibPatchingAlg (const std::string& name, ISvcLocator* pSvcLocator);
60 
65 
72 
76  StatusCode execute() {return StatusCode::SUCCESS;}
77 
84  StatusCode finalize(){return StatusCode::SUCCESS;}
85 
86 private:
87 
88  typedef typename CONDITIONSCONTAINER::ConstConditionsMapIterator CONTIT;
89  typedef typename CONDITIONSCONTAINER::LArCondObj LArCondObj;
90 
96  bool patch(const HWIdentifier chid, const int gain, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, const LArCalibLineMapping *clCont);
97 
98 
105  bool getAverage(const HWIdentifier chid, const int gain, LArRampP1& patch, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, bool isphi=true);
106 
113  bool getAverage(const HWIdentifier chid, const int gain, LArOFCP1& patch, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, bool isphi=true);
114 
121  bool getAverage(const HWIdentifier chid, const int gain, LArAutoCorrP1& patch, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, bool isphi=false);
122 
123  bool setZero(const HWIdentifier chid, const int gain, LArRampP1& patch);
124  bool setZero(const HWIdentifier chid, const int gain, LArOFCP1& patch);
125  bool setZero(const HWIdentifier chid, const int gain, LArCaliWaveVec& patch);
126  bool setZero(const HWIdentifier chid, const int gain, LArAutoCorrP1& patch);
127 
128 
129 
130 
131  //The following #ifdef-logic is to make this package compile against 13.2.0. as well as 14.X.0
132  //since the payload object of LArMphysOverMcal has changed from LArMphysOverMcalP1 to LArSingleFloatP
133 
134 
135 #ifdef LARRAWCONDITIONS_LARMPHYSOVERMCALP
136 
143  //For backward compatiblity only!!! Will be removed at some point
144  bool getAverage(const HWIdentifier chid, const int gain, LArMphysOverMcalP1& patch, const LArBadChannelCont* bcCont, bool isphi=true);
145 #endif
146 
147 
148 #ifdef LARRAWCONDITIONS_LARSINGLEFLOATP
149 
155  bool getAverage(const HWIdentifier chid, const int gain, LArSingleFloatP& patch, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, bool isphi=true);
156  bool setZero(LArSingleFloatP& patch);
157 #endif
158 
159 
160 
161 
162  bool getAverage(const HWIdentifier,const int, LArCaliWaveVec&, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, bool isphi=true) ;
163 
171  std::vector<HWIdentifier>& getPhiRing(const HWIdentifier chid, const LArBadChannelCont* bcCont, const LArOnOffIdMapping* cabling, unsigned distance=1);
172 
173  /* Get list of channels in the same FEB. Used for FEBAverage method */
174  std::vector<HWIdentifier>& getFEBChans(const HWIdentifier chid, const LArBadChannelCont* bcCont);
175 
180  {return StatusCode::SUCCESS;};
182 
188  SetZero
189  };
190 
191  SG::ReadCondHandleKey<LArBadChannelCont> m_BCKey {this, "BadChanKey", "LArBadChannel", "SG key for LArBadChan object"};
192  SG::ReadCondHandleKey<LArOnOffIdMapping> m_cablingKey{this, "OnOffMap", "LArOnOffIdMap", "SG key for mapping object"};
193  SG::ReadCondHandleKey<LArCalibLineMapping> m_CLKey{this, "CalibLineKey", "LArCalibLineMap", "SG calib line key"};
195  Gaudi::Property<std::vector<std::string> > m_problemsToPatch{this,"ProblemsToPatch",{}, "Bad-Channel categories to patch"};
196  Gaudi::Property<std::vector<unsigned int> > m_doNotPatchCBs{this, "DoNotPatchCBs", {}, "Do not patch channels from this CalibBoard"};
197 
198 
199  BooleanProperty m_useCorrChannel{this, "UseCorrChannels", true, "True: Use separate correction COOL channel, False: Correction + data in the same channel"};
200  BooleanProperty m_patchAllMissing{this, "PatchAllMissing", false, "True: Patch missing calibration constants regardless of their bad-channel status"};
201  BooleanProperty m_unlock{this, "Unlock", false, "Modify input container"};
202  BooleanProperty m_isSC{this, "SuperCells", false, "Working on the SuperCells ?"};
203 
206 
207  const CONDITIONSCONTAINER* m_contIn;
208  CONDITIONSCONTAINER* m_contOut;
209 
211  StringProperty m_containerKey{this, "ContainerKey", "", "SG key of the LArConditionsContainer to be patched"};
212  StringProperty m_newContainerKey{this, "NewContainerKey", "", "If the corrections go in a separate container put SG key here"};
213  StringProperty m_patchMethodProp{this, "PatchMethod", "FEBNeighbor", "Method to patch conditions for channels with broken calibration line"};
214 
215  std::vector<HWIdentifier> m_idList;
216 
217 };
218 
219 #include "LArCalibPatchingAlg.icc"
220 
221 #endif
222 
LArCalibPatchingAlg::FEBNeighbor
@ FEBNeighbor
Definition: LArCalibPatchingAlg.h:184
LArCalibPatchingAlg::getAverage
bool getAverage(const HWIdentifier chid, const int gain, LArAutoCorrP1 &patch, const LArBadChannelCont *bcCont, const LArOnOffIdMapping *cabling, bool isphi=false)
Specialized method to average LArAutoCorr over a FEB.
LArCalibPatchingAlg::m_patchMethod
patchMethod m_patchMethod
Definition: LArCalibPatchingAlg.h:210
LArCalibPatchingAlg::setSymlink
StatusCode setSymlink(const LArOFCComplete *ofc) const
LArCalibPatchingAlg::setZero
bool setZero(const HWIdentifier chid, const int gain, LArOFCP1 &patch)
LArCalibPatchingAlg::LArCalibPatchingAlg
LArCalibPatchingAlg(const std::string &name, ISvcLocator *pSvcLocator)
regular Algorithm constructor
LArCalibPatchingAlg::getAverage
bool getAverage(const HWIdentifier, const int, LArCaliWaveVec &, const LArBadChannelCont *bcCont, const LArOnOffIdMapping *cabling, bool isphi=true)
LArOFCP1
c-struct reproducing the structure of the persistent data
Definition: LArOFCP1.h:22
LArCalibPatchingAlg::finalize
StatusCode finalize()
Definition: LArCalibPatchingAlg.h:84
LArCalibPatchingAlg::patchMethod
patchMethod
Definition: LArCalibPatchingAlg.h:183
LArCalibPatchingAlg::setZero
bool setZero(const HWIdentifier chid, const int gain, LArCaliWaveVec &patch)
LArRampComplete.h
LArCalibPatchingAlg::getAverage
bool getAverage(const HWIdentifier chid, const int gain, LArRampP1 &patch, const LArBadChannelCont *bcCont, const LArOnOffIdMapping *cabling, bool isphi=true)
Specialized method to average Ramps over a phi-ring.
LArRampComplete
Definition: LArRampComplete.h:50
ATLAS_NOT_THREAD_SAFE
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Definition: checker_macros.h:212
LArCalibPatchingAlg::m_bcMask
LArBadChannelMask m_bcMask
Definition: LArCalibPatchingAlg.h:194
LArMphysOverMcalP1
c-struct reproducing the structure of the persistent data
Definition: LArMphysOverMcalP1.h:19
LArSingleFloatP
Definition: LArSingleFloatP.h:11
LArCalibPatchingAlg::setSymlink
StatusCode setSymlink(const LArAutoCorrComplete *) const
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
LArCalibPatchingAlg::m_onlineHelper
const LArOnlineID_Base * m_onlineHelper
Definition: LArCalibPatchingAlg.h:204
LArRampP1
Persistent data for LArRamp Copied from LAr.
Definition: LArRampP1.h:24
LArCalibLineMapping
Definition: LArCalibLineMapping.h:17
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
LArCalibPatchingAlg.icc
LArAutoCorrP1
c-struct reproducing the structure of the persistent data
Definition: LArAutoCorrP1.h:25
LArCalibPatchingAlg::m_contOut
CONDITIONSCONTAINER * m_contOut
Definition: LArCalibPatchingAlg.h:208
LArCalibPatchingAlg
Definition: LArCalibPatchingAlg.h:53
HWIdentifier
Definition: HWIdentifier.h:13
LArCalibPatchingAlg::getFEBChans
std::vector< HWIdentifier > & getFEBChans(const HWIdentifier chid, const LArBadChannelCont *bcCont)
LArCalibPatchingAlg::stop
StatusCode stop()
Finalize method.
LArCalibPatchingAlg::setZero
bool setZero(const HWIdentifier chid, const int gain, LArAutoCorrP1 &patch)
LArCalibPatchingAlg::m_caloId
const CaloCell_Base_ID * m_caloId
Definition: LArCalibPatchingAlg.h:205
LArCaliWaveContainer
Liquid Argon Cumulative Wave Container.
Definition: LArCaliWaveContainer.h:33
LArCalibPatchingAlg::getPhiRing
std::vector< HWIdentifier > & getPhiRing(const HWIdentifier chid, const LArBadChannelCont *bcCont, const LArOnOffIdMapping *cabling, unsigned distance=1)
Helper method to get a phi-ring.
AthAlgorithm.h
LArBadChannelCont.h
LArAutoCorrComplete
This class implements the ILArAutoCorr interface.
Definition: LArAutoCorrComplete.h:26
LArCalibPatchingAlg::FEBAverage
@ FEBAverage
Definition: LArCalibPatchingAlg.h:187
LArOnOffIdMapping.h
LArMphysOverMcalComplete
This class implements the ILArMphysOverMcal interface.
Definition: LArMphysOverMcalComplete.h:29
LArOFCComplete.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArCalibPatchingAlg::getAverage
bool getAverage(const HWIdentifier chid, const int gain, LArOFCP1 &patch, const LArBadChannelCont *bcCont, const LArOnOffIdMapping *cabling, bool isphi=true)
Specialized method to average OFCs over a phi-ring.
LArCalibPatchingAlg::m_contIn
const CONDITIONSCONTAINER * m_contIn
Definition: LArCalibPatchingAlg.h:207
LArCalibPatchingAlg::PhiAverage
@ PhiAverage
Definition: LArCalibPatchingAlg.h:186
LArCalibPatchingAlg::m_idList
std::vector< HWIdentifier > m_idList
Definition: LArCalibPatchingAlg.h:215
CaloCell_SuperCell_ID.h
Helper class for offline supercell identifiers.
LArCaliWaveVec
Definition: LArCaliWave.h:91
LArCalibPatchingAlg::execute
StatusCode execute()
Empty Execute method.
Definition: LArCalibPatchingAlg.h:76
LArCalibPatchingAlg::setSymlink
StatusCode setSymlink(const LArCaliWaveContainer *) const
Definition: LArCalibPatchingAlg.h:179
LArAutoCorrComplete.h
AthAlgorithm
Definition: AthAlgorithm.h:47
LArCalibPatchingAlg::~LArCalibPatchingAlg
~LArCalibPatchingAlg()
Destructor.
Definition: LArCalibPatchingAlg.h:64
ReadCondHandleKey.h
LArCalibPatchingAlg::setSymlink
StatusCode setSymlink(const LArRampComplete *ramp) const
LArCalibPatchingAlg::CONTIT
CONDITIONSCONTAINER::ConstConditionsMapIterator CONTIT
Definition: LArCalibPatchingAlg.h:88
LArOnlineID_Base
Helper for the Liquid Argon Calorimeter cell identifiers.
Definition: LArOnlineID_Base.h:105
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LArCalibPatchingAlg::patch
bool patch(const HWIdentifier chid, const int gain, const LArBadChannelCont *bcCont, const LArOnOffIdMapping *cabling, const LArCalibLineMapping *clCont)
patch method
SG::ReadCondHandleKey
Definition: ReadCondHandleKey.h:20
LArCalibPatchingAlg::initialize
StatusCode initialize()
Initialize method.
LArCalibPatchingAlg::setZero
bool setZero(const HWIdentifier chid, const int gain, LArRampP1 &patch)
LArCalibPatchingAlg::PhiNeighbor
@ PhiNeighbor
Definition: LArCalibPatchingAlg.h:185
LArCalibPatchingAlg::LArCondObj
CONDITIONSCONTAINER::LArCondObj LArCondObj
Definition: LArCalibPatchingAlg.h:89
LArMphysOverMcalComplete.h
LArCalibPatchingAlg::setSymlink
StatusCode setSymlink(const LArMphysOverMcalComplete *ramp) const
LArCalibLineMapping.h
CaloCell_Base_ID
Helper base class for offline cell identifiers.
Definition: CaloCell_Base_ID.h:41
LArBadChannelMask.h
ReadOfcFromCool.ofc
ofc
Definition: ReadOfcFromCool.py:110
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
LArOFCComplete
This class implements the ILArOFC interface.
Definition: LArOFCComplete.h:25
LArBadChannelMask
Definition: LArBadChannelMask.h:18
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20