ATLAS Offline Software
DQTNonCollBkg_ZDC.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ********************************************************************
6 //
7 // NAME: DQTNonCollBkg_ZDC
8 // PACKAGE: DataQualityTools
9 //
10 // AUTHORS: Anadi Canepa (acanepa@cern.ch)
11 // Marco Leite (leite@cern.ch)
12 //
13 //
14 // This code provides histograms about the ZDC (http://zdctwiki)
15 // energy and timing.
16 // Energy is obtained by module and the weighted sum is used for the total energy.
17 // Timing (for now) is calculated using only the first hadronic section.
18 //
19 // In the future, this code should use what will become the "official" ZDC reconstruction
20 // algorithm and calibration, and should refer to the tools in that package. For now, we just
21 // replicate the code here.
22 //
23 // The histograms produced at the moment are:
24 // m_EnergySideA -> Total Energy Side A (weigted sum of hadronic sections 0,1,2)
25 // m_EnergySideC -> Total Energy Side C (weigted sum of hadronic sections 0,1,2)
26 // m_TimeSideA -> Timing Side A calculated by "preferred method" using hadronic section 0 signal
27 // m_TimeSideC -> Timing Side C calculated by "preferred method" using hadronic section 0 signal
28 //
29 // The location of these histograms in the root file (and in ATLAS DQM web tool) is defined by
30 // the 'histopath' property declared in the interface and
31 // currently it points to GLOBAL/DQTNonCollBkg_ZDC.
32 //
33 // The 4 methods provided here are the standard DataQuality methods for histogram processing.
34 //
35 // What this class *IS NOT DOING* yet:
36 // 1) Retrieve information from the segmented channels
37 // 2) Automatically combine the gains and delays in order to optmally
38 // extract the information of timing and energy (now we are playing safe with low gain and
39 // undelayed channels)
40 //
41 //
42 // Notice: the ZDC configuration was changed in July 2010 due to the LHCf removal
43 // and instalation of new ZDC electromagnetic modules. Before this date, the ZDC
44 // consisted of only 3 hadronic modules per each side. Since July 2010, there is an
45 // electromagnetic module in front of these.
46 //
47 //
48 // ********************************************************************
49 
50 #ifndef DQTNONCOLLBKG_ZDC_H
51 #define DQTNONCOLLBKG_ZDC_H
52 
53 #include <set>
54 #include <stdint.h>
55 #include "TH2F.h"
56 #include "TProfile.h"
57 #include "LWHists/TH1I_LW.h"
58 
59 #include "TMath.h"
60 #include <string>
61 #include <vector>
62 #include <map>
63 #include <algorithm>
64 #include <numeric>
65 #include <functional>
66 
67 #include "GaudiKernel/MsgStream.h"
68 #include "GaudiKernel/ITHistSvc.h"
69 #include "GaudiKernel/ToolHandle.h"
70 
72 
73 #include "ZdcIdentifier/ZdcID.h"
74 
77 
79 
81 {
82 
83  public:
84 
85  DQTNonCollBkg_ZDC(const std::string & type, const std::string & name, const IInterface* parent);
86 
88 
90 
92  //StatusCode bookHistograms( bool isNewEventsBlock, bool isNewLumiBlock, bool isNewRun );
93 
95 
97  //StatusCode procHistograms( bool isEndOfEventsBlock, bool isEndOfLumiBlock, bool isEndOfRun );
98 
99  StatusCode checkHists(bool fromFinalize);
100 
101  bool bookDQTNonCollBkg_ZDC();
102 
103  //Methods to extract the ZDC information
104 
105  int getEnergyAndTimeByModule(const Identifier& id,
106  const std::vector< std::vector <int> >& wfm);
107 
108 private:
109 
110  std::vector<float> m_EnergySideA;
111  std::vector<float> m_EnergySideC;
112 
113  std::vector<float> m_TimeSideA;
114  std::vector<float> m_TimeSideC;
115 
116  //ZDC Global information histograms
117 
122 
124 
125  //ZDC detailed information histograms
126  //that can be included in the future
127  /*
128  TH1F_LW * m_TimeHdA0;
129  TH1F_LW * m_TimeHdA1;
130  TH1F_LW * m_TimeHdA2;
131 
132  TH1F_LW * m_TimeHdA0;
133  TH1F_LW * m_TimeHdA1;
134  TH1F_LW * m_TimeHdC2;
135 
136  TH1F_LW * m_EnergyHdA0;
137  TH1F_LW * m_EnergyHdA1;
138  TH1F_LW * m_EnergyHdA2;
139 
140  TH1F_LW * m_EnergyHdC0;
141  TH1F_LW * m_EnergyHdC1;
142  TH1F_LW * m_EnergyHdC2;
143  */
144 
145  //StoreGate variables:
146  //m_digitsContainerName : the container that will be used to extract the ZDC information
148  { "ZdcDigitsCollection" };
149 
150  unsigned int m_nsamples;
151 
153 
154  std::map<unsigned, TH1F_LW*> m_map_BCID_DeltaT;
155 
156  ToolHandle<Trig::TrigDecisionTool> m_trigDec;
157  std::vector<std::string> m_L1Names;
158  std::vector<double> m_L1Trigs;
159 
160  // Calibration for Energy.
161  // This will move to COOL
162  std::map<Identifier::value_type, float > m_map_LowGain;
163  std::map<Identifier::value_type, float > m_map_HighGain;
164 
165  // StoreGate keys
167  { "EventInfo" };
168  };
169 
170 #endif
DQTNonCollBkg_ZDC::bookHistograms
StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: DQTNonCollBkg_ZDC.cxx:92
DQTNonCollBkg_ZDC::m_L1Names
std::vector< std::string > m_L1Names
Definition: DQTNonCollBkg_ZDC.h:157
DQTNonCollBkg_ZDC::procHistograms
StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
Definition: DQTNonCollBkg_ZDC.cxx:349
DQTNonCollBkg_ZDC::m_map_HighGain
std::map< Identifier::value_type, float > m_map_HighGain
Definition: DQTNonCollBkg_ZDC.h:163
DQTNonCollBkg_ZDC::fillHistograms
StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: DQTNonCollBkg_ZDC.cxx:172
DQTNonCollBkg_ZDC::m_HistEnergySideA
TH1F_LW * m_HistEnergySideA
Definition: DQTNonCollBkg_ZDC.h:118
TrigDecisionTool.h
DQTNonCollBkg_ZDC::m_EventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
Definition: DQTNonCollBkg_ZDC.h:167
ZdcDigitsCollection.h
SG::ReadHandleKey< ZdcDigitsCollection >
DQTNonCollBkg_ZDC::m_TimeSideC
std::vector< float > m_TimeSideC
Definition: DQTNonCollBkg_ZDC.h:114
DQTNonCollBkg_ZDC
Definition: DQTNonCollBkg_ZDC.h:81
DQTNonCollBkg_ZDC::m_bcid
TH1F_LW * m_bcid
Definition: DQTNonCollBkg_ZDC.h:152
DQTNonCollBkg_ZDC::m_HistTimeSideC
TH1F_LW * m_HistTimeSideC
Definition: DQTNonCollBkg_ZDC.h:121
DQTNonCollBkg_ZDC::getEnergyAndTimeByModule
int getEnergyAndTimeByModule(const Identifier &id, const std::vector< std::vector< int > > &wfm)
Definition: DQTNonCollBkg_ZDC.cxx:379
TH1F_LW
Definition: TH1F_LW.h:23
DQTNonCollBkg_ZDC::m_trigDec
ToolHandle< Trig::TrigDecisionTool > m_trigDec
Definition: DQTNonCollBkg_ZDC.h:156
DQTNonCollBkg_ZDC::~DQTNonCollBkg_ZDC
~DQTNonCollBkg_ZDC()
Definition: DQTNonCollBkg_ZDC.cxx:77
DataQualityFatherMonTool
Definition: DataQualityFatherMonTool.h:38
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TH1I_LW.h
DQTNonCollBkg_ZDC::m_HistEnergySideC
TH1F_LW * m_HistEnergySideC
Definition: DQTNonCollBkg_ZDC.h:119
test_pyathena.parent
parent
Definition: test_pyathena.py:15
DQTNonCollBkg_ZDC::m_EnergySideC
std::vector< float > m_EnergySideC
Definition: DQTNonCollBkg_ZDC.h:111
DQTNonCollBkg_ZDC::m_digitsContainerName
SG::ReadHandleKey< ZdcDigitsCollection > m_digitsContainerName
Definition: DQTNonCollBkg_ZDC.h:148
DQTNonCollBkg_ZDC::bookDQTNonCollBkg_ZDC
bool bookDQTNonCollBkg_ZDC()
Definition: DQTNonCollBkg_ZDC.cxx:122
DQTNonCollBkg_ZDC::checkHists
StatusCode checkHists(bool fromFinalize)
This implementation does nothing; equivalent functionality may be provided by procHists(....
Definition: DQTNonCollBkg_ZDC.cxx:371
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
DQTNonCollBkg_ZDC::initialize
StatusCode initialize()
Definition: DQTNonCollBkg_ZDC.cxx:83
DQTNonCollBkg_ZDC::m_L1Trigs
std::vector< double > m_L1Trigs
Definition: DQTNonCollBkg_ZDC.h:158
DQTNonCollBkg_ZDC::m_nsamples
unsigned int m_nsamples
Definition: DQTNonCollBkg_ZDC.h:150
EventInfo.h
ZdcID.h
DQTNonCollBkg_ZDC::m_map_LowGain
std::map< Identifier::value_type, float > m_map_LowGain
Definition: DQTNonCollBkg_ZDC.h:162
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DQTNonCollBkg_ZDC::DQTNonCollBkg_ZDC
DQTNonCollBkg_ZDC(const std::string &type, const std::string &name, const IInterface *parent)
Definition: DQTNonCollBkg_ZDC.cxx:29
DataQualityFatherMonTool.h
DQTNonCollBkg_ZDC::m_HistTimeSideA
TH1F_LW * m_HistTimeSideA
Definition: DQTNonCollBkg_ZDC.h:120
DQTNonCollBkg_ZDC::m_HistTimeDeltaSidesAC
TH1F_LW * m_HistTimeDeltaSidesAC
Definition: DQTNonCollBkg_ZDC.h:123
DQTNonCollBkg_ZDC::m_map_BCID_DeltaT
std::map< unsigned, TH1F_LW * > m_map_BCID_DeltaT
Definition: DQTNonCollBkg_ZDC.h:154
DQTNonCollBkg_ZDC::m_TimeSideA
std::vector< float > m_TimeSideA
Definition: DQTNonCollBkg_ZDC.h:113
DQTNonCollBkg_ZDC::m_EnergySideA
std::vector< float > m_EnergySideA
Definition: DQTNonCollBkg_ZDC.h:110