Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
16 #include "GaudiKernel/MsgStream.h"
21 #include "TDirectory.h"
55 m_control_histogram_dir(control_histogram_dir) {
61 for (
int i = 0;
i < 2;
i++) {
71 if (
this != &MLRTDH) {
72 for (
int i = 0;
i < 2;
i++) {
83 template <
typename T>
inline void clearall(T &container) {
85 for (;
it != container.end(); ++
it) {
92 for (
unsigned int i = 0;
i < 2;
i++) {
101 for (
int i = 0;
i < 2;
i++) {
104 std::ostringstream
nm;
105 nm <<
"temporal_residual_ml" <<
i <<
"_iteration" <<
m_residuals[
i].size();
122 for (
unsigned int i = 0;
i < 2;
i++) {
138 std::ostringstream
nm;
141 prov_diff->Add(prof[0], prof[1], 1., -1);
160 if (
this != &MLRTD) {
187 log << MSG::WARNING <<
"MultilayerRtDifference::DoFit: Not enough hits!" <<
endmsg;
190 if (prov_diff->Fit(
"polfun",
"Q",
"", 4., 15.) != 0) {
192 log << MSG::WARNING <<
"MultilayerRtDifference: Fit of polinomial failed! Not updating scale!" <<
endmsg;
197 log << MSG::WARNING <<
"MultilayerRtDifference: No Scale update needed! Scale correction: " <<
m_polfun->GetParameter(0)
201 if (!rt_relation)
return true;
206 if (seg.empty())
return true;
208 for (
const auto &
segment : seg) {
210 float old_corr = hit->TemperatureTime();
211 float corr =
RtScaleFunction(hit->driftTime(), hit->identify().mdtMultilayer() == 2, *rt_relation);
212 hit->setTemperatureTime(corr);
213 hit->setDriftTime(hit->driftTime() - corr + old_corr);
214 hit->setDriftRadius(rt_relation->
radius(hit->driftTime()), hit->sigmaDriftRadius());
JetConstituentVector::iterator iterator
float signedDistanceToTrack() const
retrieve the distance of the track to the wire
virtual ~MultilayerRtDifference()
singleton-like access to IMessageSvc via open function and helper
TProfile * GetProfileDiff(const int &min_number_of_entries)
~MultilayerRtDifference_Histograms()
int mdtMultilayer() const
Mdt specific:
bool DoFit(IRtRelation *rt_relation, const IMdtCalibration::MuonSegVec &seg)
float RtScalePolynomial(const float r)
TGraphErrors * GetEntries(TH2F *histo)
MultilayerRtDifference & operator=(const MultilayerRtDifference &MLRTD)
void SetTmaxDiff(const double d)
set the difference in total drift time betwene the two multilayers (ML1 - ML2)
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
IMessageSvc * getMessageSvc(bool quiet=false)
MultilayerRtDifference(int min_hits, TDirectory *control_histogram_dir=NULL)
void clearall(T &container)
TH2F * GetResHist(const int &ml)
std::list< TH2F * > m_residuals[2]
def TProfile(*args, **kwargs)
std::pair< std::vector< unsigned int >, bool > res
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
void Fill(const MdtCalibHitBase &hit, const IRtRelation &rt_relation)
virtual double radius(double t) const =0
returns drift radius for a given time
Double_t MultilayerRtDifference_ScaleFunction(Double_t *x, Double_t *par)
virtual double driftVelocity(double t) const =0
Returns the drift velocity for a given time.
TDirectory * m_control_histogram_dir
MultilayerRtDifference_Histograms * m_histograms
float driftTime() const
retrieve the drift time
MultilayerRtDifference_Histograms(TDirectory *control_histogram_dir)
double GetTmaxDiff() const
return the difference in total dirft time between the two multilayers (ML1 - ML2)
std::vector< std::shared_ptr< MuonCalibSegment > > MuonSegVec
float RtScaleFunction(const float t, const bool ml2, const IRtRelation &rtrelation)
const MuonFixedId & identify() const
retrieve the MuonFixedId of the hit
TH2F * m_current_residuals[2]
MultilayerRtDifference_Histograms & operator=(const MultilayerRtDifference_Histograms &MLRTDH)
generic interface for a rt-relation
std::list< TProfile * > m_res_prov[2]
float driftRadius() const
retrieve the radius of the drift circle
std::shared_ptr< MdtCalibHitBase > MdtHitPtr
typedef for a collection of MdtCalibHitBase s
std::list< TProfile * > m_res_prov_diff
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)