![]() |
ATLAS Offline Software
|
This class performs the analytic autocalibration whose basic ideas were developed by Mario Deile (see ATL-MUON-2004-021). More...
#include <RtCalibrationAnalytic.h>
Public Types | |
| using | MuonSegVec = std::vector<std::shared_ptr<MuonCalibSegment>> |
| using | MuonSegIt = MuonSegVec::iterator |
| using | MuonSegCit = MuonSegVec::const_iterator |
| using | MdtCalibOutputPtr = std::shared_ptr<IMdtCalibrationOutput> |
Public Member Functions | |
| RtCalibrationAnalytic (const std::string &name) | |
| Default constructor: r-t accuracy is set to 0.5 mm. | |
| RtCalibrationAnalytic (const std::string &name, const double rt_accuracy, const unsigned int &func_type, const unsigned int &ord, const bool &split, const bool &full_matrix, const bool &fix_min, const bool &fix_max, const int &max_it, bool do_smoothing=false, bool do_parabolic_extrapolation=false) | |
| Constructor: r-t accuracy is set to rt_accuracy (unit: CLHEP::mm). | |
| ~RtCalibrationAnalytic () | |
| double | reliability () const |
| get the reliability of the r-t: 0: no convergence yet 1: convergence, r-t is reliable 2: convergence, r-t is unreliable | |
| double | estimatedRtAccuracy () const |
| get the estimated r-t quality (CLHEP::mm), the accuracy of the input r-t is computed at the end of the iteration; in order to get the accuracy of the final r-t, the algorithm has to be rerun with the final r-t as an input | |
| int | numberOfSegments () const |
| get the number of segments which were passed to the algorithm | |
| int | numberOfSegmentsUsed () const |
| get the number of segments which are used in the autocalibration | |
| int | iteration () const |
| get the number of the current iteration | |
| bool | splitIntoMultilayers () const |
| returns true, if segments are internally restricted to single multilayers; returns false, if segments may contain hits from both multilayers | |
| bool | fullMatrix () const |
| returns true, if the full matrix relating the errors in the r-t relationship to the residuals should be used; returns false, if the unit matrix is used | |
| bool | smoothing () const |
| returns true, if the r-t relationship will be smoothened using the conventional autocalibration after convergence; returns false otherwise | |
| void | setEstimateRtAccuracy (const double acc) |
| set the estimated r-t accuracy =acc | |
| void | splitIntoMultilayers (const bool &yes_or_no) |
| yes_or_no=true: segments are internally restriced to single multilayers; yes_or_no=false: segments over two multilayers of a chamber are allowed | |
| void | fullMatrix (const bool &yes_or_no) |
| yes_or_no=true: the full matrix relating the errors in the r-t relationship to the residuals is used yes_or_no=false: unit matrix is used (algorithm is equivalent to to the conventional/classical method | |
| void | switch_on_control_histograms (const std::string &file_name) |
| this methods requests control histograms from the algorithms; the algorithm will write them to ROOT file called "file_name" | |
| void | switch_off_control_histograms () |
| the algorithm does not produce controll histograms (this is the default) | |
| void | forceMonotony () |
| force r(t) to be monotonically increasing | |
| void | doNotForceMonotony () |
| do not force r(t) to be monotonically increasing | |
| void | doSmoothing () |
| requires that the r-t relationship will be smoothened using the conventional autocalibration after convergence | |
| void | noSmoothing () |
| do not smoothen the r-t relationship after convergence | |
| void | doParabolicExtrapolation () |
| requires that parabolic extrapolation will be used for small and large radii | |
| void | noParabolicExtrapolation () |
| no parabolic extrapolation is done | |
| MdtCalibOutputPtr | analyseSegments (const MuonSegVec &seg) |
| perform the full autocalibration including iterations (required since MdtCalibInterfaces-00-01-06) | |
| bool | handleSegment (MuonCalibSegment &seg) |
| analyse the segment "seg" (this method was required before MdtCalibInterfaces-00-01-06) | |
| void | setInput (const IMdtCalibrationOutput *rt_input) |
| set the r-t relationship, the internal autocalibration objects are reset | |
| bool | analyse () |
| perform the autocalibration with the segments acquired so far | |
| bool | converged () const |
| returns true, if the autocalibration has converged | |
| MdtCalibOutputPtr | getResults () const |
| returns the final r-t relationship | |
| virtual std::string | name () const |
| returns name (region) of instance | |
Private Member Functions | |
| void | init (const double rt_accuracy, const unsigned int &func_type, const unsigned int &ord, const bool &split, const bool &full_matrix, const bool &fix_min, const bool &fix_max, const int &max_it, bool do_smoothing, bool do_parabolic_extrapolation) |
| double | t_from_r (const double r) |
| void | display_segment (MuonCalibSegment *segment, std::ofstream &outfile) |
| std::shared_ptr< RtRelationLookUp > | performParabolicExtrapolation (const bool &min, const bool &max, const IRtRelation &in_rt) |
Private Attributes | |
| bool | m_control_histograms = false |
| bool | m_split_into_ml = false |
| bool | m_full_matrix = false |
| bool | m_fix_min = false |
| bool | m_fix_max = false |
| int | m_max_it = 0 |
| bool | m_force_monotony = false |
| int | m_nb_segments = 0 |
| int | m_nb_segments_used = 0 |
| int | m_iteration = 0 |
| std::array< bool, 2 > | m_multilayer {} |
| int | m_status = 0 |
| double | m_rt_accuracy = 0.0 |
| double | m_rt_accuracy_previous = 0.0 |
| double | m_chi2_previous = 0.0 |
| double | m_chi2 = 0.0 |
| std::shared_ptr< const IRtRelation > | m_rt |
| double | m_t_length = 0.0 |
| double | m_t_mean = 0.0 |
| std::shared_ptr< IRtRelation > | m_rt_new |
| std::shared_ptr< RtCalibrationOutput > | m_output |
| double | m_r_max = 0.0 |
| QuasianalyticLineReconstruction | m_tracker |
| bool | m_do_smoothing = false |
| bool | m_do_parabolic_extrapolation = false |
| unsigned int | m_order = 0U |
| std::vector< CLHEP::HepVector > | m_U |
| CLHEP::HepSymMatrix | m_A |
| CLHEP::HepVector | m_alpha |
| CLHEP::HepVector | m_b |
| std::unique_ptr< BaseFunction > | m_base_function |
| std::unique_ptr< TFile > | m_tfile |
| std::unique_ptr< TH1F > | m_cut_evolution |
| std::unique_ptr< TH1F > | m_nb_segment_hits |
| std::unique_ptr< TH1F > | m_CL |
| std::unique_ptr< TH2F > | m_residuals |
| MeanRMS | m_track_slope |
| MeanRMS | m_track_position |
| std::string | m_name |
This class performs the analytic autocalibration whose basic ideas were developed by Mario Deile (see ATL-MUON-2004-021).
Definition at line 59 of file RtCalibrationAnalytic.h.
|
inherited |
Definition at line 30 of file IMdtCalibration.h.
|
inherited |
Definition at line 29 of file IMdtCalibration.h.
|
inherited |
Definition at line 28 of file IMdtCalibration.h.
|
inherited |
Definition at line 27 of file IMdtCalibration.h.
| RtCalibrationAnalytic::RtCalibrationAnalytic | ( | const std::string & | name | ) |
Default constructor: r-t accuracy is set to 0.5 mm.
The r-t accuracy is used internally to distinguish between good and bad segments. By default Legendre polynomials are used to parametrize the r-t correction. The order of the r-t correction polynomial is set to 5. Segments are restricted to single multilayers. The full matrix relating the errors in r(t) to the residuals is used. By default no smoothing is applied after convergence.
Definition at line 38 of file RtCalibrationAnalytic.cxx.
| RtCalibrationAnalytic::RtCalibrationAnalytic | ( | const std::string & | name, |
| const double | rt_accuracy, | ||
| const unsigned int & | func_type, | ||
| const unsigned int & | ord, | ||
| const bool & | split, | ||
| const bool & | full_matrix, | ||
| const bool & | fix_min, | ||
| const bool & | fix_max, | ||
| const int & | max_it, | ||
| bool | do_smoothing = false, | ||
| bool | do_parabolic_extrapolation = false ) |
Constructor: r-t accuracy is set to rt_accuracy (unit: CLHEP::mm).
The r-t accuracy is used internally to distinguish between good and bad segments.
| func_type | type of function to be used for the r-t correction; = 1: Legendre polynomial, = 2: Chebyshev polynomial, = 3: polygon equidistant in r. |
| ord | The order of the r-t correction polynomial is set to ord. |
| split | = true forces the algorithm to restrict segments to multilayers. Otherwise, segments may contain hits from different multilayers. |
| full_matrix | = true lets the algorithm use the full matrix relating the errors in r(t) to the residuals is used. Otherwise the unit matrix is used, making the code equivalent to the conventional/classical method. |
| fix_min,fix_max | =true fix r(t_min), r(t_max) (this is default). |
| max_it | maximum number of iterations. |
| do_smoothing | Smoothen the r-t relations after convergence. |
| do_parabolic_extrapolation | Use parabolic extrapolations for small and larged drift radii. |
Definition at line 42 of file RtCalibrationAnalytic.cxx.
| RtCalibrationAnalytic::~RtCalibrationAnalytic | ( | ) |
Definition at line 49 of file RtCalibrationAnalytic.cxx.
| bool RtCalibrationAnalytic::analyse | ( | ) |
perform the autocalibration with the segments acquired so far
Definition at line 740 of file RtCalibrationAnalytic.cxx.
|
virtual |
perform the full autocalibration including iterations (required since MdtCalibInterfaces-00-01-06)
Implements MuonCalib::IMdtCalibration.
Definition at line 339 of file RtCalibrationAnalytic.cxx.
| bool RtCalibrationAnalytic::converged | ( | ) | const |
returns true, if the autocalibration has converged
Definition at line 905 of file RtCalibrationAnalytic.cxx.
|
private |
Definition at line 170 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::doNotForceMonotony | ( | ) |
do not force r(t) to be monotonically increasing
Definition at line 331 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::doParabolicExtrapolation | ( | ) |
requires that parabolic extrapolation will be used for small and large radii
Definition at line 334 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::doSmoothing | ( | ) |
requires that the r-t relationship will be smoothened using the conventional autocalibration after convergence
Definition at line 332 of file RtCalibrationAnalytic.cxx.
| double RtCalibrationAnalytic::estimatedRtAccuracy | ( | ) | const |
get the estimated r-t quality (CLHEP::mm), the accuracy of the input r-t is computed at the end of the iteration; in order to get the accuracy of the final r-t, the algorithm has to be rerun with the final r-t as an input
Definition at line 257 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::forceMonotony | ( | ) |
| bool RtCalibrationAnalytic::fullMatrix | ( | ) | const |
returns true, if the full matrix relating the errors in the r-t relationship to the residuals should be used; returns false, if the unit matrix is used
Definition at line 292 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::fullMatrix | ( | const bool & | yes_or_no | ) |
yes_or_no=true: the full matrix relating the errors in the r-t relationship to the residuals is used yes_or_no=false: unit matrix is used (algorithm is equivalent to to the conventional/classical method
Definition at line 338 of file RtCalibrationAnalytic.cxx.
|
virtual |
returns the final r-t relationship
Implements MuonCalib::IMdtCalibration.
Definition at line 906 of file RtCalibrationAnalytic.cxx.
| bool RtCalibrationAnalytic::handleSegment | ( | MuonCalibSegment & | seg | ) |
analyse the segment "seg" (this method was required before MdtCalibInterfaces-00-01-06)
Definition at line 468 of file RtCalibrationAnalytic.cxx.
|
private |
Definition at line 56 of file RtCalibrationAnalytic.cxx.
| int RtCalibrationAnalytic::iteration | ( | ) | const |
|
inlinevirtualinherited |
| void RtCalibrationAnalytic::noParabolicExtrapolation | ( | ) |
| void RtCalibrationAnalytic::noSmoothing | ( | ) |
do not smoothen the r-t relationship after convergence
Definition at line 333 of file RtCalibrationAnalytic.cxx.
| int RtCalibrationAnalytic::numberOfSegments | ( | ) | const |
get the number of segments which were passed to the algorithm
Definition at line 264 of file RtCalibrationAnalytic.cxx.
| int RtCalibrationAnalytic::numberOfSegmentsUsed | ( | ) | const |
get the number of segments which are used in the autocalibration
Definition at line 271 of file RtCalibrationAnalytic.cxx.
|
private |
Definition at line 907 of file RtCalibrationAnalytic.cxx.
| double RtCalibrationAnalytic::reliability | ( | ) | const |
get the reliability of the r-t: 0: no convergence yet 1: convergence, r-t is reliable 2: convergence, r-t is unreliable
Definition at line 250 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::setEstimateRtAccuracy | ( | const double | acc | ) |
set the estimated r-t accuracy =acc
Definition at line 336 of file RtCalibrationAnalytic.cxx.
|
virtual |
set the r-t relationship, the internal autocalibration objects are reset
Implements MuonCalib::IMdtCalibration.
Definition at line 688 of file RtCalibrationAnalytic.cxx.
| bool RtCalibrationAnalytic::smoothing | ( | ) | const |
returns true, if the r-t relationship will be smoothened using the conventional autocalibration after convergence; returns false otherwise
Definition at line 299 of file RtCalibrationAnalytic.cxx.
| bool RtCalibrationAnalytic::splitIntoMultilayers | ( | ) | const |
returns true, if segments are internally restricted to single multilayers; returns false, if segments may contain hits from both multilayers
Definition at line 285 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::splitIntoMultilayers | ( | const bool & | yes_or_no | ) |
yes_or_no=true: segments are internally restriced to single multilayers; yes_or_no=false: segments over two multilayers of a chamber are allowed
Definition at line 337 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::switch_off_control_histograms | ( | ) |
the algorithm does not produce controll histograms (this is the default)
Definition at line 322 of file RtCalibrationAnalytic.cxx.
| void RtCalibrationAnalytic::switch_on_control_histograms | ( | const std::string & | file_name | ) |
this methods requests control histograms from the algorithms; the algorithm will write them to ROOT file called "file_name"
Definition at line 306 of file RtCalibrationAnalytic.cxx.
|
private |
Definition at line 143 of file RtCalibrationAnalytic.cxx.
|
private |
Definition at line 288 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 290 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 292 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 295 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 255 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 249 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 301 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 217 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 299 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 281 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 278 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 230 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 229 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 232 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 223 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 238 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 231 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 239 of file RtCalibrationAnalytic.h.
|
privateinherited |
Definition at line 52 of file IMdtCalibration.h.
|
private |
Definition at line 300 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 236 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 237 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 285 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 266 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 270 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 302 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 260 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 246 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 247 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 265 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 219 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 243 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 261 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 262 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 298 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 346 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 345 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 271 of file RtCalibrationAnalytic.h.
|
private |
Definition at line 287 of file RtCalibrationAnalytic.h.