ATLAS Offline Software
T0CalibrationMT.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <algorithm>
8 #include <iostream>
9 #include <string>
10 #include <vector>
11 
13 #include "GaudiKernel/MsgStream.h"
15 #include "MdtCalibT0/ADCMTHistos.h"
16 #include "MdtCalibT0/HistogramId.h"
19 #include "MdtCalibT0/T0MTHistos.h"
24 #include "MuonCalibStl/ToString.h"
25 #include "TF1.h"
26 #include "TFile.h"
27 #include "TH1.h"
28 #include "TH1F.h"
29 #include "TH2F.h"
30 
31 namespace MuonCalib {
32 
33  T0CalibrationMT::T0CalibrationMT(const std::string& name, const T0MTSettings *settings, const std::vector<int> &sort_by,
34  const std::vector<int> &adc_sort_by) :
36  m_settings(settings),
37  m_converged(false),
38  m_name(name),
39  m_currentItnum(0),
40  m_sort_by(sort_by),
41  m_adc_sort_by(adc_sort_by),
42  m_delete_settings(false) {
43  if (!m_settings) {
44  m_settings = new T0MTSettings();
45  m_delete_settings = true;
46  }
47 
48  std::string HistoFileName = "T0MT_" + m_name + ".root";
49  m_file = std::make_unique<TFile>(HistoFileName.c_str(), "recreate");
50  m_regiondir = m_file->mkdir(m_name.c_str());
51 
52  m_histos.resize(sort_by.size());
53  m_adc_histos.resize(adc_sort_by.size());
54 
55  m_tube_ids.resize(sort_by.size());
56  m_adc_tube_ids.resize(adc_sort_by.size());
57  }
58 
60  m_file->Write();
61  m_file->Close();
62  if (m_delete_settings) delete m_settings;
63  }
64 
66  for (const MuonCalibSegment::MdtHitPtr& hit : seg.mdtHOT()) {
67  MuonFixedId id = hit->identify();
68  m_nhits_per_tube[id.getIdInt()]++;
69  // get the T0 originally subtracted for this hit
70  int nML = id.mdtMultilayer();
71  int nL = id.mdtTubeLayer();
72  int nT = id.mdtTube();
73  const MdtTubeFitContainer::SingleTubeCalib *stc(nullptr);
74  NtupleStationId sid(id);
75  sid.SetMultilayer(0);
76  std::map<NtupleStationId, MdtTubeFitContainer *>::const_iterator res_it(m_result.find(sid));
77  if (res_it != m_result.end()) {
78  const MdtIdHelper& idHelper{res_it->second->idHelperSvc()->mdtIdHelper()};
79  const Identifier tubeId = idHelper.channelID(id.stationNameString(),
80  id.eta(), id.phi(), nML, nL, nT);
81  stc = res_it->second->getCalib(tubeId);
82  }
83  double oldT0 = 0;
84  if (stc)
85  oldT0 = stc->t0;
86  else {
87  MsgStream log(Athena::getMessageSvc(), "T0CalibrationMT");
88  log << MSG::WARNING << "no Single Tube Calib info found for ML=" << nML << " L=" << nL << " T=" << nT << endmsg;
89  }
90 
91  // get histos
92  for (unsigned int i = 0; i < m_sort_by.size(); i++) {
93  T0MTHistos *histos = getHistos(id, i);
94  histos->GetTSpec()->Fill(hit->driftTime() + oldT0 + hit->tubeT0());
95  }
96  for (unsigned int i = 0; i < m_adc_sort_by.size(); i++) {
97  ADCMTHistos *adc_histos = getADCHistos(id, i);
98  adc_histos->GetADCSpec()->Fill(hit->adcCount());
99  }
100  // relative t0 offsets
101  m_rel_tube_t0s[sid].AddHit(*hit);
102  }
103  return true;
104  }
105 
107  MsgStream log(Athena::getMessageSvc(), "T0CalibrationMT");
108  std::map<int, MdtTubeFitContainer::SingleTubeFit> full;
109  std::map<int, MdtTubeFitContainer::SingleTubeCalib> st;
110  std::map<int, std::string> fit_by;
111  if (m_settings->FitTime())
112  for (unsigned int i = 0; i < m_sort_by.size(); i++) { analyse_tdc(i, full, st, fit_by); }
113  for (unsigned int i = 0; i < m_adc_sort_by.size(); i++) { analyse_adc(i, full, st); }
114 
115  for (auto & it : full) {
116  if (it.first == 0) continue;
117  MuonFixedId fId(it.first);
118  NtupleStationId sid(fId);
119  sid.SetMultilayer(0);
122  fi.group_by = fit_by[it.first];
123  int nML = fId.mdtMultilayer();
124  int nL = fId.mdtTubeLayer();
125  int nT = fId.mdtTube();
126  const MdtIdHelper& idHelper{m_result[sid]->idHelperSvc()->mdtIdHelper()};
127  const Identifier tubeId = idHelper.channelID(fId.stationNameString(),
128  fId.eta(), fId.phi(), nML, nL, nT);
129 
130  bool setInfo = m_result[sid]->setCalib(std::move(stc), tubeId, log);
131  if (!setInfo) {
132  log << MSG::WARNING << "T0CalibrationMT::PROBLEM! could not set SingleTubeCalib info" << endmsg;
133  }
134  fi.n_hits = m_nhits_per_tube[fId.getIdInt()];
135  fi.n_hits_above_adc_cut = m_nhits_per_tube[fId.getIdInt()];
136  setInfo = m_result[sid]->setFit(std::move(fi), tubeId, log);
137  if (!setInfo) {
138  MsgStream log(Athena::getMessageSvc(), "T0CalibrationMT");
139  log << MSG::WARNING << "T0CalibrationMT::PROBLEM! could not set SingleTubeFit info" << endmsg;
140  }
141  }
142 
143  m_currentItnum++;
144  m_file->Write();
145  return true;
146  }
147 
148  bool T0CalibrationMT::analyse_tdc(const int &nr, std::map<int, MdtTubeFitContainer::SingleTubeFit> &full,
149  std::map<int, MdtTubeFitContainer::SingleTubeCalib> &st, std::map<int, std::string> &fit_by_map) {
150  if (m_settings->VerboseLevel() > 1) {
151  MsgStream log(Athena::getMessageSvc(), "T0CalibrationMT");
152  log << MSG::VERBOSE << "T0CalibrationMT::analyse iteration " << m_currentItnum << endmsg;
153  }
154  std::string fit_by("UNKNOWN");
155  switch (m_sort_by[nr]) {
156  case HistogramId::TUBE: fit_by = "TUBE"; break;
157  case HistogramId::LAYER: fit_by = "LAYER"; break;
158  case HistogramId::MULTILAYER: fit_by = "MULTILAYER"; break;
159  case HistogramId::CHAMBER: fit_by = "CHAMBER"; break;
160  case HistogramId::MEZZ_CARD: fit_by = "MEZZ_CARD"; break;
161  }
162 
163  for (std::map<HistogramId, std::unique_ptr<T0MTHistos>>::iterator it = m_histos[nr].begin(); it != m_histos[nr].end(); ++it)
164  // loop over m_histos histograms
165  {
166  doTimeFit(it->second.get(), m_tube_ids[nr][it->first], full, st, fit_by_map, fit_by);
167  }
168  return true;
169  }
170 
171  bool T0CalibrationMT::analyse_adc(const int &nr, std::map<int, MdtTubeFitContainer::SingleTubeFit> &full,
172  std::map<int, MdtTubeFitContainer::SingleTubeCalib> &st) {
173  for (std::map<HistogramId, std::unique_ptr<ADCMTHistos>>::iterator it = m_adc_histos[nr].begin(); it != m_adc_histos[nr].end();
174  ++it)
175  if (m_settings->FitADC()) { doAdcFit(it->second.get(), m_adc_tube_ids[nr][it->first], full, st); }
176  return true;
177  }
178 
180  for (const auto & seg : segs) handleSegment(*seg);
181  analyse();
182  return getResults();
183  }
184 
185  void T0CalibrationMT::doTimeFit(T0MTHistos *T0h, const std::set<MuonFixedId> &tube_ids,
186  std::map<int, MdtTubeFitContainer::SingleTubeFit> &fim,
187  std::map<int, MdtTubeFitContainer::SingleTubeCalib> &stcm, std::map<int, std::string> &fit_by_map,
188  const std::string &fit_by) {
189  TDirectory *cwd = gDirectory;
190  m_regiondir->cd();
191  // do t0 fit
193  if (fit_by == "CHAMBER")
194  theGroup = MdtRelativeTubeT0::CHAMBER;
195  else if (fit_by == "MULTILAYER")
197  else if (fit_by == "LAYER")
198  theGroup = MdtRelativeTubeT0::LAYER;
199  else if (fit_by == "MEZZ_CARD")
200  theGroup = MdtRelativeTubeT0::MEZZ_CARD;
201  if (T0h->FitT0() && m_settings->MinEntriesTime() <= T0h->GetTSpec()->GetEntries()) {
202  const TF1 *fun(T0h->GetT0Function());
203  for (auto tube_id : tube_ids) {
204  if (tube_id.getIdInt() == 0) continue;
205  NtupleStationId stId(tube_id);
206  stId.SetMultilayer(0);
207  double rel_t0(0.0);
208  if (m_settings->T0Settings()->CorrectRelT0s()) rel_t0 = m_rel_tube_t0s[stId].GetRelativeOffset(tube_id, theGroup);
210  MdtTubeFitContainer::SingleTubeCalib &stc(stcm[tube_id.getIdInt()]);
211  // store parameters
212  fi.statistics = static_cast<int>(T0h->GetTSpec()->GetEntries());
213  fi.chi2Tdc = T0h->T0Chi2();
214  fi.par[0] = fun->GetParameter(T0MTHistos ::T0_PAR_NR_BACK);
215  fi.cov[0] = fun->GetParError(T0MTHistos ::T0_PAR_NR_BACK);
216  fi.par[4] = fun->GetParameter(T0MTHistos ::T0_PAR_NR_T0) + rel_t0;
217  fi.cov[4] = fun->GetParError(T0MTHistos ::T0_PAR_NR_T0);
218  fi.par[6] = fun->GetParameter(T0MTHistos ::T0_PAR_NR_T);
219  fi.cov[6] = fun->GetParError(T0MTHistos ::T0_PAR_NR_T);
220  stc.t0 = fun->GetParameter(T0MTHistos ::T0_PAR_NR_T0) + rel_t0;
221  stc.statusCode = T0h->StatusCode();
222  m_converged = true;
223  fit_by_map[tube_id.getIdInt()] = fit_by;
224  }
225  }
226  if (T0h->FitTmax() && m_settings->MinEntriesTime() <= T0h->GetTSpec()->GetEntries()) {
227  const TF1 *fun(T0h->GetTMaxFunction());
228  // store parameters
229  for (auto tube_id : tube_ids) {
230  if (tube_id.getIdInt() == 0) continue;
232  // MdtTubeFitContainer::SingleTubeCalib &stc(stcm[*it]);
233  fi.par[5] = fun->GetParameter(T0MTHistos ::TMAX_PAR_NR_TMAX);
234  fi.cov[5] = fun->GetParError(T0MTHistos ::TMAX_PAR_NR_TMAX);
235  fi.chi2TdcEnd = fun->GetChisquare() / fun->GetNDF();
236  }
237  }
238  cwd->cd();
239  }
240 
241  void T0CalibrationMT::doAdcFit(ADCMTHistos *T0h, const std::set<MuonFixedId> &tube_ids,
242  std::map<int, MdtTubeFitContainer::SingleTubeFit> &fim,
243  std::map<int, MdtTubeFitContainer::SingleTubeCalib> &stcm) {
244  if (T0h->FitAdc() && m_settings->MinEntriesADC() <= T0h->GetADCSpec()->GetEntries()) {
245  const TF1 *fun(T0h->GetAdcFunction());
246  if (fun == nullptr) return;
247  for (auto tube_id : tube_ids) {
248  if (tube_id.getIdInt() == 0) continue;
250  MdtTubeFitContainer::SingleTubeCalib &stc(stcm[tube_id.getIdInt()]);
251 
252  stc.adcCal = fun->GetParameter(1);
253  for (int i = 0; (i < fun->GetNpar() && i < 4); i++) {
254  fi.adc_par[i] = fun->GetParameter(i);
255  fi.adc_err[i] = fun->GetParError(i);
256  }
257  fi.adc_chi2 = fun->GetChisquare() / fun->GetNDF();
258  }
259  }
260  }
261 
262  IMdtCalibration::MdtCalibOutputPtr T0CalibrationMT::getResults() const { return std::make_shared<T0CalibrationOutput>(m_result); }
263 
264  ADCMTHistos *T0CalibrationMT::getADCHistos(const MuonFixedId &idtube, unsigned int nr) {
265  HistogramId id;
266  id.Initialize(idtube, m_adc_sort_by[nr]);
267  if (!m_adc_histos[nr][id]) {
268  TDirectory *cwd = gDirectory;
269  m_regiondir->cd();
270  m_adc_histos[nr][id] = std::make_unique<ADCMTHistos>(id.getIdInt(), m_settings, id.HistogramName().c_str());
271  cwd->cd();
272  }
273  m_adc_tube_ids[nr][id].insert(idtube);
274  return m_adc_histos[nr][id].get();
275  }
276 
277  T0MTHistos *T0CalibrationMT::getHistos(const MuonFixedId &idtube, unsigned int nr) {
278  HistogramId id;
279  id.Initialize(idtube, m_sort_by[nr]);
280  if (!m_histos[nr][id]) {
281  TDirectory *cwd = gDirectory;
282  m_regiondir->cd();
283  m_histos[nr][id] = std::make_unique<T0MTHistos>(id.getIdInt(), m_settings, id.HistogramName().c_str());
284  cwd->cd();
285  }
286  m_tube_ids[nr][id].insert(idtube);
287  return m_histos[nr][id].get();
288  }
289 
291  // This method is called both by the event loop and by the tool.
292  // Only the call from the tool is relevant for this implementation
293  // and should be performed only once.
294 
295  if (m_result.size()) return;
296 
297  const T0CalibrationOutput *t0Input = dynamic_cast<const T0CalibrationOutput *>(calib_in);
298  if (!calib_in || !t0Input) return;
299  m_result = t0Input->GetMap();
300  for (auto & it : m_result)
301  it.second->setImplementation("T0CalibrationMT");
302  }
303 
304  bool T0CalibrationMT::converged() const { return m_converged; }
305 
306 } // namespace MuonCalib
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::t0
float t0
< relative t0 in chamber (ns)
Definition: MdtTubeCalibContainer.h:20
MuonCalib::IMdtCalibration::MdtCalibOutputPtr
std::shared_ptr< IMdtCalibrationOutput > MdtCalibOutputPtr
Definition: IMdtCalibration.h:30
generateReferenceFile.fun
fun
Definition: generateReferenceFile.py:18
MuonCalib::T0CalibrationMT::m_result
std::map< NtupleStationId, MdtTubeFitContainer * > m_result
tube constants
Definition: T0CalibrationMT.h:95
MuonCalib::T0CalibrationMT::m_file
std::unique_ptr< TFile > m_file
pointer to the histogram file
Definition: T0CalibrationMT.h:87
MuonCalib::NtupleStationId::SetMultilayer
void SetMultilayer(const int &ml)
Definition: NtupleStationId.h:110
MuonCalib::T0CalibrationMT::m_adc_tube_ids
std::vector< std::map< HistogramId, std::set< MuonFixedId > > > m_adc_tube_ids
Definition: T0CalibrationMT.h:93
MuonCalib::T0MTHistos::T0Chi2
const double & T0Chi2() const
returns t0 chi2
Definition: T0MTHistos.h:114
MuonCalibSegment.h
T0MTSettings.h
MuonCalib::T0MTSettings::MinEntriesADC
const int & MinEntriesADC() const
Definition: T0MTSettings.h:92
T0MTHistos.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
getMessageSvc.h
singleton-like access to IMessageSvc via open function and helper
MuonCalib::T0CalibrationMT::m_currentItnum
int m_currentItnum
current iteration (always 1?)
Definition: T0CalibrationMT.h:86
MuonCalib::MdtTubeFitContainer::SingleTubeFit
Definition: MdtTubeFitContainer.h:18
MuonCalib::T0MTSettings::MinEntriesTime
const int & MinEntriesTime() const
Definition: T0MTSettings.h:90
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
MuonCalib::T0CalibrationMT::m_delete_settings
bool m_delete_settings
Definition: T0CalibrationMT.h:99
MuonCalib::NtupleStationId
Definition: NtupleStationId.h:36
MuonCalib::MdtRelativeTubeT0::CHAMBER
@ CHAMBER
Definition: MdtRelativeTubeT0.h:17
MuonCalib::MdtRelativeTubeT0::MULTILAYER
@ MULTILAYER
Definition: MdtRelativeTubeT0.h:17
MuonCalib::T0CalibrationMT::~T0CalibrationMT
~T0CalibrationMT()
destructor
Definition: T0CalibrationMT.cxx:59
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
skel.it
it
Definition: skel.GENtoEVGEN.py:423
MuonCalib::T0MTSettingsT0::CorrectRelT0s
const bool & CorrectRelT0s() const
Definition: T0MTSettingsT0.h:77
MuonCalib::IMdtCalibration
Definition: IMdtCalibration.h:25
ToString.h
MuonCalib::MuonFixedId::mdtMultilayer
int mdtMultilayer() const
Mdt specific:
Definition: MuonFixedId.h:835
MuonCalib::MuonCalibSegment
Definition: MuonCalibSegment.h:39
MuonCalib::T0CalibrationMT::getResults
virtual IMdtCalibration::MdtCalibOutputPtr getResults() const override
Definition: T0CalibrationMT.cxx:262
MdtTubeFitContainer.h
MuonCalib::T0MTHistos::GetT0Function
const TF1 * GetT0Function() const
returns function fitted to the riding edge of the spectrum
Definition: T0MTHistos.h:104
MuonCalib::T0CalibrationMT::m_nhits_per_tube
std::map< int, int > m_nhits_per_tube
number of hits per tube
Definition: T0CalibrationMT.h:94
MuonCalib::T0MTSettings::T0Settings
const T0MTSettingsT0 * T0Settings() const
get settings for the t0-fit
Definition: T0MTSettings.h:78
MuonCalib::T0CalibrationMT::analyse_adc
bool analyse_adc(const int &nr, std::map< int, MdtTubeFitContainer::SingleTubeFit > &full, std::map< int, MdtTubeFitContainer::SingleTubeCalib > &st)
Definition: T0CalibrationMT.cxx:171
MuonCalib::T0MTHistos::StatusCode
int StatusCode() const
returns status code - the status code applies only to the t0 fit
Definition: T0MTHistos.h:102
MuonCalib::MdtRelativeTubeT0::UNKNOWN
@ UNKNOWN
Definition: MdtRelativeTubeT0.h:17
MuonCalib::T0MTHistos::GetTSpec
TH1F * GetTSpec() const
get drift time spectrum
Definition: T0MTHistos.h:72
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
MuonCalib::T0CalibrationOutput
Definition: T0CalibrationOutput.h:19
MuonCalib::T0CalibrationMT::doAdcFit
void doAdcFit(ADCMTHistos *T0h, const std::set< MuonFixedId > &tube_ids, std::map< int, MdtTubeFitContainer::SingleTubeFit > &fim, std::map< int, MdtTubeFitContainer::SingleTubeCalib > &stcm)
fit adc spectrum
Definition: T0CalibrationMT.cxx:241
MuonCalib::MuonFixedId::stationNameString
std::string stationNameString() const
Definition: MuonFixedId.h:655
MuonCalib::T0CalibrationMT::m_sort_by
const std::vector< int > & m_sort_by
Definition: T0CalibrationMT.h:97
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::statusCode
unsigned int statusCode
Definition: MdtTubeCalibContainer.h:26
MuonCalib::T0MTHistos::T0_PAR_NR_T
static constexpr int T0_PAR_NR_T
Definition: T0MTHistos.h:57
MuonCalib::T0MTHistos::FitTmax
bool FitTmax()
Performs tmax-fit Returns true if fit is successfull.
Definition: T0MTHistos.cxx:142
MuonCalib::T0CalibrationMT::handleSegment
bool handleSegment(MuonCalibSegment &seg)
fill tube spectra
Definition: T0CalibrationMT.cxx:65
MdtRelativeTubeT0.h
T0CalibrationOutput.h
MuonCalib::T0MTHistos
Definition: T0MTHistos.h:40
MuonCalib::T0CalibrationMT::T0CalibrationMT
T0CalibrationMT(const std::string &name, const T0MTSettings *settings, const std::vector< int > &sort_by, const std::vector< int > &adc_sort_by)
constructor
Definition: T0CalibrationMT.cxx:33
calibdata.tube_id
tube_id
Definition: calibdata.py:30
MuonCalib::T0CalibrationMT::doTimeFit
void doTimeFit(T0MTHistos *T0h, const std::set< MuonFixedId > &tube_ids, std::map< int, MdtTubeFitContainer::SingleTubeFit > &fim, std::map< int, MdtTubeFitContainer::SingleTubeCalib > &stcm, std::map< int, std::string > &fit_by_map, const std::string &fit_by)
fit time spectrum
Definition: T0CalibrationMT.cxx:185
MuonCalib::T0MTHistos::T0_PAR_NR_BACK
static constexpr int T0_PAR_NR_BACK
Definition: T0MTHistos.h:57
MuonCalib::T0CalibrationMT::m_adc_histos
std::vector< std::map< HistogramId, std::unique_ptr< ADCMTHistos > > > m_adc_histos
vector of pointers tube histograms
Definition: T0CalibrationMT.h:91
MuonCalib::ADCMTHistos::FitAdc
bool FitAdc()
fit adc
Definition: ADCMTHistos.cxx:60
MuonCalib::T0MTSettings::FitADC
const bool & FitADC() const
if true fit adc spectrum
Definition: T0MTSettings.h:87
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
MuonCalib::HistogramId::MEZZ_CARD
static const int MEZZ_CARD
Definition: HistogramId.h:45
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
MuonCalib::T0MTSettings::VerboseLevel
const int & VerboseLevel() const
verbose level 0: no output 1: Fitter output
Definition: T0MTSettings.h:73
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
MuonCalib::MuonFixedId::getIdInt
unsigned int getIdInt() const
Definition: MuonFixedId.h:543
MuonCalib::T0CalibrationMT::converged
bool converged() const
return m_converged
Definition: T0CalibrationMT.cxx:304
MuonCalib::T0CalibrationMT::m_tube_ids
std::vector< std::map< HistogramId, std::set< MuonFixedId > > > m_tube_ids
Definition: T0CalibrationMT.h:92
MuonCalib::T0CalibrationMT::getADCHistos
ADCMTHistos * getADCHistos(const MuonFixedId &idtube, unsigned int nr)
retrieve pointer for tube idtube histograms
Definition: T0CalibrationMT.cxx:264
MdtIdHelper
Definition: MdtIdHelper.h:61
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
MuonCalib::T0CalibrationMT::m_adc_sort_by
const std::vector< int > & m_adc_sort_by
Definition: T0CalibrationMT.h:98
MuonCalib::T0CalibrationMT::analyseSegments
virtual IMdtCalibration::MdtCalibOutputPtr analyseSegments(const MuonSegVec &segs) override
new interface function
Definition: T0CalibrationMT.cxx:179
MuonCalib::T0CalibrationOutput::GetMap
std::map< NtupleStationId, MdtTubeFitContainer * > & GetMap()
Definition: T0CalibrationOutput.h:28
MuonCalib::T0CalibrationMT::m_histos
std::vector< std::map< HistogramId, std::unique_ptr< T0MTHistos > > > m_histos
vector of pointers tube histograms
Definition: T0CalibrationMT.h:90
MuonCalib::T0MTSettings::FitTime
const bool & FitTime() const
if true fit drift time spectrum
Definition: T0MTSettings.h:84
MuonCalib::T0MTHistos::T0_PAR_NR_T0
static constexpr int T0_PAR_NR_T0
parameter numbers in t0 fit
Definition: T0MTHistos.h:57
MuonCalib::ADCMTHistos
Definition: ADCMTHistos.h:44
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib::adcCal
float adcCal
quality flag for the SingleTubeCalib constants: 0 all ok, 1 no hits found, 2 too few hits,...
Definition: MdtTubeCalibContainer.h:24
MuonCalib::T0CalibrationMT::m_name
std::string m_name
calibration region name
Definition: T0CalibrationMT.h:85
MuonCalib::HistogramId::TUBE
static const int TUBE
valid values of the sort_by argument of the Initialize function
Definition: HistogramId.h:45
MuonCalib::ADCMTHistos::GetADCSpec
TH1F * GetADCSpec()
get adc spectrum
Definition: ADCMTHistos.h:67
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MuonCalib::T0CalibrationMT::getHistos
T0MTHistos * getHistos(const MuonFixedId &idtube, unsigned int nr)
retrieve pointer for tube idtube histograms
Definition: T0CalibrationMT.cxx:277
MuonCalib::T0MTHistos::GetTMaxFunction
const TF1 * GetTMaxFunction() const
returns function fitted to the riding edge of the spectrum
Definition: T0MTHistos.h:110
MuonCalib::T0CalibrationMT::setInput
void setInput(const IMdtCalibrationOutput *input) override
unused
Definition: T0CalibrationMT.cxx:290
MuonCalib::MuonFixedId
Definition: MuonFixedId.h:50
MuonCalib::IMdtCalibrationOutput
Definition: IMdtCalibrationOutput.h:28
find_data.full
full
Definition: find_data.py:27
MuonCalib::MdtRelativeTubeT0::TubeGroup
TubeGroup
Definition: MdtRelativeTubeT0.h:17
MuonCalib::T0MTHistos::FitT0
bool FitT0()
Perform t0-fit Returns true if fit is successfull.
Definition: T0MTHistos.cxx:114
MuonCalib::MuonFixedId::phi
int phi() const
Definition: MuonFixedId.h:704
MuonCalib::MdtRelativeTubeT0::MEZZ_CARD
@ MEZZ_CARD
Definition: MdtRelativeTubeT0.h:17
cwd
std::string cwd
Definition: listroot.cxx:38
MuonCalib::T0CalibrationMT::analyse
bool analyse()
extract parameters from spectra
Definition: T0CalibrationMT.cxx:106
MuonCalib::HistogramId::LAYER
static const int LAYER
Definition: HistogramId.h:45
ADCMTHistos.h
MuonCalib::T0CalibrationMT::m_regiondir
TDirectory * m_regiondir
pointer to the ROOT directory
Definition: T0CalibrationMT.h:88
MuonCalib::MdtRelativeTubeT0::LAYER
@ LAYER
Definition: MdtRelativeTubeT0.h:17
MuonCalib::T0CalibrationMT::m_rel_tube_t0s
std::map< NtupleStationId, MdtRelativeTubeT0 > m_rel_tube_t0s
Definition: T0CalibrationMT.h:96
MuonCalib::ADCMTHistos::GetAdcFunction
TF1 * GetAdcFunction() const
returnd function fitted to adc-spectrum
Definition: ADCMTHistos.h:84
T0CalibrationMT.h
DeleteObject.h
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
MuonCalib::HistogramId::MULTILAYER
static const int MULTILAYER
Definition: HistogramId.h:45
MuonCalib::T0CalibrationMT::analyse_tdc
bool analyse_tdc(const int &nr, std::map< int, MdtTubeFitContainer::SingleTubeFit > &full, std::map< int, MdtTubeFitContainer::SingleTubeCalib > &st, std::map< int, std::string > &fit_by_map)
Definition: T0CalibrationMT.cxx:148
checkFileSG.fi
fi
Definition: checkFileSG.py:65
MuonCalib::T0MTHistos::TMAX_PAR_NR_TMAX
static constexpr int TMAX_PAR_NR_TMAX
parameters numbers for tmax fit
Definition: T0MTHistos.h:61
MuonCalib::MuonFixedId::mdtTube
int mdtTube() const
Mdt specific:
Definition: MuonFixedId.h:775
MuonCalib::MuonFixedId::eta
int eta() const
Definition: MuonFixedId.h:681
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib
Definition: MdtTubeCalibContainer.h:18
MuonCalib::IMdtCalibration::MuonSegVec
std::vector< std::shared_ptr< MuonCalibSegment > > MuonSegVec
Definition: IMdtCalibration.h:27
checkCorrelInHIST.histos
dictionary histos
Definition: checkCorrelInHIST.py:413
MuonCalib::MuonCalibSegment::mdtHOT
const MdtHitVec & mdtHOT() const
retrieve the full set of MdtCalibHitBase s assigned to this segment
Definition: MuonCalibSegment.cxx:148
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
MuonCalib::T0CalibrationMT::m_settings
const T0MTSettings * m_settings
pointer to the settings
Definition: T0CalibrationMT.h:83
HistogramId.h
MuonCalib::T0CalibrationMT::m_converged
bool m_converged
convergence status
Definition: T0CalibrationMT.h:84
MuonCalib::HistogramId::CHAMBER
static const int CHAMBER
Definition: HistogramId.h:45
MuonCalib::HistogramId
Definition: HistogramId.h:24
MuonFixedId.h
MuonCalib::T0MTSettings
Definition: T0MTSettings.h:28
MuonCalib::MuonFixedId::mdtTubeLayer
int mdtTubeLayer() const
Mdt specific:
Definition: MuonFixedId.h:813
MuonCalib::MuonCalibSegment::MdtHitPtr
std::shared_ptr< MdtCalibHitBase > MdtHitPtr
typedef for a collection of MdtCalibHitBase s
Definition: MuonCalibSegment.h:44