ATLAS Offline Software
CscCalcPed.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef CSCCALCPED_H
6 #define CSCCALCPED_H
7 
13 #include "GaudiKernel/ServiceHandle.h"
14 #include "GaudiKernel/ToolHandle.h"
15 
21 
22 #include <string>
23 #include <vector>
24 #include <bitset>
25 
26 #include "TH1I.h"
27 #include "TH1F.h"
28 #include "TH2F.h"
29 #include <algorithm>//for min_Element, max_element
30 
31 namespace MuonCalib{
44  class CscCalcPed: public AthAlgorithm
45  {
46  public:
47  CscCalcPed(const std::string& name, ISvcLocator* pSvcLocator);
48  ~CscCalcPed()=default;
49 
51  StatusCode initialize(void);
52  StatusCode execute(void);
53  StatusCode finalize(void);
54 
55  private:
56 
57  /***********Private member functions*/
65 
69  void outputParameter3(const CscCalibResultCollection & results, std::ofstream & out);
70 
73  StatusCode fillBitHist(TH1I * bitHist, const uint16_t & val, TH2F* bitProds);
74  template <typename dataType> dataType GetMinMax(std::vector<dataType> & vec) {
75  const auto [pMin, pMax] = std::minmax_element(vec.begin(), vec.end());
76  return *pMax - *pMin;
77  }
78 
79  void onlineToOfflineHashId(const unsigned int & onlineId, unsigned int &hashId) const;
80 
81  /*********Private member variables*/
83  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
84  IChronoStatSvc* m_chronoSvc;
85  ToolHandle<Muon::ICSC_RDO_Decoder> m_cscRdoDecoderTool{this,"CscRdoDecoderTool","Muon::CscRDO_Decoder"};
86  SG::ReadCondHandleKey<CscCondDbData> m_readKey{this, "ReadKey", "CscCondDbData", "Key of CscCondDbData"};
87 
88 
90  std::string m_outputFileName;
92  std::string m_calOutputVersion;
94 
95 
96  //bool m_makeHists, m_dumpAllHists;
99 
100  std::string m_onlineDbFile;
101 
103  unsigned int m_maxStripHash;
104 
106 
107  const unsigned int m_numBits;
108 
111 
113 
114  bool m_doF001;
115 
121  std::vector<int> m_onlineThresholds;
129  double * m_crossTalkFix;
130 
131  //String for interface to patch changes
132  std::string m_cmt_parameter;
133 
135 
136  };//end class CscCalcPed
137 
138 
139  inline StatusCode CscCalcPed::fillBitHist(TH1I * bitHist, const uint16_t & val, TH2F* bitProds)
140  {
141  if(!bitHist)
142  return StatusCode::RECOVERABLE;
143 
144  //Num bits should always be m_numBits
145  std::bitset<12> bitVal(val);
146 
147  for(unsigned int bitIndex = 0; bitIndex < m_numBits; bitIndex++){
148  if(bitVal[bitIndex]){
149  bitHist->Fill(bitIndex);
150  if(bitProds){
151  for(unsigned int bitIndex2 = 0 ; bitIndex2 <= bitIndex ; bitIndex2++) {
152  if(bitVal[bitIndex2]){
153  bitProds->Fill(bitIndex,bitIndex2);
154  if(bitIndex != bitIndex2)
155  bitProds->Fill(bitIndex2,bitIndex);
156  }
157 
158  }
159  }
160  }
161 
162  }
163 
164 
165  return StatusCode::SUCCESS;
166  }
167 
168 }//end namespace:
169 
170 #endif
MuonCalib::CscCalcPed::onlineToOfflineHashId
void onlineToOfflineHashId(const unsigned int &onlineId, unsigned int &hashId) const
Definition: CscCalcPed.cxx:933
ICSC_RDO_Decoder.h
MuonCalib::CscCalcPed::m_chronoSvc
IChronoStatSvc * m_chronoSvc
Definition: CscCalcPed.h:84
MuonCalib::CscCalcPed::m_doSampleHists
bool m_doSampleHists
Definition: CscCalcPed.h:110
MuonCalib::CscCalcPed::CscCalcPed
CscCalcPed(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CscCalcPed.cxx:24
MuonCalib::CscCalcPed::m_ampHists
DataVector< TH1I > * m_ampHists
Definition: CscCalcPed.h:116
MuonCalib::CscCalcPed::m_eventCnt
int m_eventCnt
Definition: CscCalcPed.h:128
MuonCalib::CscCalcPed
does calibration of the CSC chambers
Definition: CscCalcPed.h:45
MuonCalib::CscCalcPed::m_cscRdoDecoderTool
ToolHandle< Muon::ICSC_RDO_Decoder > m_cscRdoDecoderTool
Definition: CscCalcPed.h:85
MuonCalib::CscCalcPed::m_doF001
bool m_doF001
Definition: CscCalcPed.h:114
TH1I
Definition: rootspy.cxx:332
TH2F
Definition: rootspy.cxx:420
MuonCalib::CscCalcPed::m_thresholdMultiplier
float m_thresholdMultiplier
Definition: CscCalcPed.h:97
MuonCalib::CscCalcPed::m_readKey
SG::ReadCondHandleKey< CscCondDbData > m_readKey
Definition: CscCalcPed.h:86
CscCondDbData.h
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
MuonCalib::CscCalcPed::m_crossTalkFix
double * m_crossTalkFix
Definition: CscCalcPed.h:129
MuonCalib::CscCalcPed::m_ampHistNumBins
unsigned int m_ampHistNumBins
Definition: CscCalcPed.h:105
MuonCalib::CscCalcPed::fillBitHist
StatusCode fillBitHist(TH1I *bitHist, const uint16_t &val, TH2F *bitProds)
Definition: CscCalcPed.h:139
MuonCalib::CscCalcPed::calculateParameters
StatusCode calculateParameters()
Finalize functions.
Definition: CscCalcPed.cxx:498
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
MuonCalib::CscCalcPed::m_onlineThresholds
std::vector< int > m_onlineThresholds
Definition: CscCalcPed.h:121
MuonCalib::CscCalcPed::m_numBits
const unsigned int m_numBits
Definition: CscCalcPed.h:107
MuonCalib::CscCalcPed::m_bitProds
DataVector< TH2F > * m_bitProds
Definition: CscCalcPed.h:119
MuonCalib::CscCalcPed::collectEventInfo
StatusCode collectEventInfo()
event loop functions
Definition: CscCalcPed.cxx:346
MuonCalib::CscCalcPed::calOutput3
StatusCode calOutput3()
Definition: CscCalcPed.cxx:747
MuonCalib::CscCalcPed::m_outputFileName
std::string m_outputFileName
Parameters input through joboptions.
Definition: CscCalcPed.h:90
AthAlgorithm.h
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
MuonCalib::CscCalcPed::execute
StatusCode execute(void)
Definition: CscCalcPed.cxx:284
MuonCalib::CscCalcPed::m_f001s
CscCalibResultCollection * m_f001s
Definition: CscCalcPed.h:126
MuonCalib::CscCalcPed::calOutput1
StatusCode calOutput1()
Definition: CscCalcPed.cxx:667
MuonCalib::CscCalcPed::hashToChamberName
StatusCode hashToChamberName(IdentifierHash, std::string)
Utility functions.
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonCalib::CscCalcPed::m_bitCorrelation
DataVector< TH1F > * m_bitCorrelation
Definition: CscCalcPed.h:120
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MuonCalib::CscCalcPed::m_ampHistLowBound
unsigned int m_ampHistLowBound
Definition: CscCalcPed.h:105
MuonCalib::CscCalcPed::m_titlePrefix
std::string m_titlePrefix
Definition: CscCalcPed.h:91
MuonCalib::CscCalcPed::m_doOnlineDbFile
bool m_doOnlineDbFile
Definition: CscCalcPed.h:134
MuonCalib::CscCalcPed::m_noises
CscCalibResultCollection * m_noises
Definition: CscCalcPed.h:124
DataVector< TH2F >
MuonCalib::CscCalcPed::initialize
StatusCode initialize(void)
basic required functions
Definition: CscCalcPed.cxx:68
CscCalibResultCollection.h
AthAlgorithm
Definition: AthAlgorithm.h:47
MuonCalib::CscCalcPed::m_onlineDbFile
std::string m_onlineDbFile
filename for file with online database information
Definition: CscCalcPed.h:100
MuonCalib::CscCalcPed::m_titlePostfix
std::string m_titlePostfix
Definition: CscCalcPed.h:91
MuonCalib::CscCalcPed::m_rmses
CscCalibResultCollection * m_rmses
Definition: CscCalcPed.h:125
MuonCalib::CscCalcPed::~CscCalcPed
~CscCalcPed()=default
MuonCalib::CscCalcPed::m_onlineTHoldBreaches
CscCalibResultCollection * m_onlineTHoldBreaches
Definition: CscCalcPed.h:127
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
python.ami.results
def results
Definition: ami.py:386
MuonCalib::CscCalcPed::m_maxStripHash
unsigned int m_maxStripHash
Internally global variables.
Definition: CscCalcPed.h:103
MuonCalib::CscCalcPed::finalize
StatusCode finalize(void)
Definition: CscCalcPed.cxx:299
MuonCalib::CscCalcPed::m_doCorrelation
bool m_doCorrelation
Definition: CscCalcPed.h:93
SG::ReadCondHandleKey< CscCondDbData >
MuonCalib::CscCalcPed::m_sampHists
DataVector< DataVector< TH1I > > * m_sampHists
Definition: CscCalcPed.h:117
MuonCalib::CscCalcPed::writeCalibrationFile
StatusCode writeCalibrationFile()
Definition: CscCalcPed.cxx:582
DataVector.h
An STL vector of pointers that by default owns its pointed-to elements.
CscCalibResultCollection
Definition: CscCalibResultCollection.h:24
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
MuonCalib::CscCalcPed::m_cmt_parameter
std::string m_cmt_parameter
Definition: CscCalcPed.h:132
MuonCalib::CscCalcPed::m_expectedChamberLayer
int m_expectedChamberLayer
Definition: CscCalcPed.h:98
MuonCalib::CscCalcPed::m_doBitHists
bool m_doBitHists
Definition: CscCalcPed.h:109
MuonCalib::CscCalcPed::m_ampHistHighBound
unsigned int m_ampHistHighBound
Definition: CscCalcPed.h:105
MuonCalib::CscCalcPed::calOutput0
StatusCode calOutput0()
Definition: CscCalcPed.cxx:604
MuonCalib::CscCalcPed::outputParameter3
void outputParameter3(const CscCalibResultCollection &results, std::ofstream &out)
Definition: CscCalcPed.cxx:770
MuonCalib::CscCalcPed::makeBitCorrelation
DataVector< TH2F > * makeBitCorrelation()
Definition: CscCalcPed.cxx:859
MuonCalib::CscCalcPed::m_calOutputVersion
std::string m_calOutputVersion
Definition: CscCalcPed.h:92
IdentifierHash
Definition: IdentifierHash.h:38
MuonCalib::CscCalcPed::m_peds
CscCalibResultCollection * m_peds
Definition: CscCalcPed.h:123
MuonCalib::CscCalcPed::m_numSamplesExpected
int m_numSamplesExpected
Definition: CscCalcPed.h:112
MuonCalib::CscCalcPed::m_bitHists
DataVector< TH1I > * m_bitHists
Definition: CscCalcPed.h:118
MuonCalib::CscCalcPed::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Services and tools.
Definition: CscCalcPed.h:83
IMuonIdHelperSvc.h
MuonCalib::CscCalcPed::storeGateRecord
StatusCode storeGateRecord()
Definition: CscCalcPed.cxx:798
MuonCalib::CscCalcPed::m_onlineThresholdFailureCount
std::vector< int > m_onlineThresholdFailureCount
Definition: CscCalcPed.h:122
ServiceHandle< Muon::IMuonIdHelperSvc >
MuonCalib::CscCalcPed::GetMinMax
dataType GetMinMax(std::vector< dataType > &vec)
Definition: CscCalcPed.h:74