Belle II Software  release-05-02-19
TOPAlignmentAlgorithm.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2019 - Belle II Collaboration *
4  * *
5  * *
6  * Author: The Belle II Collaboration *
7  * Contributors: Marko Staric *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 
12 #pragma once
13 #include <calibration/CalibrationAlgorithm.h>
14 #include <vector>
15 #include <map>
16 
17 namespace Belle2 {
22  namespace TOP {
23 
29  class TOPAlignmentAlgorithm : public CalibrationAlgorithm {
30  public:
31 
34 
36  virtual ~TOPAlignmentAlgorithm() {}
37 
42  void setSpatialPrecision(double precision) {m_spatialPrecision = precision;}
43 
48  void setAngularPrecision(double precision) {m_angularPrecision = precision;}
49 
50  private:
51 
55  struct AlignData {
56  int iter = 0;
57  int ntrk = 0;
58  std::vector<float> alignPars;
59  std::vector<float> alignErrs;
60  bool valid = false;
66  void add(const AlignData& data);
71  void finalize(double scaleFact);
72  };
73 
77  virtual EResult calibrate() final;
78 
82  void mergeData();
83 
84  // algorithm parameters
85  double m_spatialPrecision = 0.1;
86  double m_angularPrecision = 0.001;
88  // input tree variables
89  int m_moduleID = 0;
90  int m_iter = 0;
91  int m_ntrk = 0;
92  int m_errorCode = 0;
93  std::vector<float>* m_vAlignPars = 0;
94  std::vector<float>* m_vAlignParsErr = 0;
95  bool m_valid = false;
96  TBranch* m_bAlignPars = 0;
97  TBranch* m_bAlignParsErr = 0;
99  // maps of moduleID and AlignData
100  std::multimap<int, AlignData> m_inputData;
101  std::map<int, AlignData> m_mergedData;
103  };
104 
105  } // end namespace TOP
107 } // end namespace Belle2
Belle2::TOP::TOPAlignmentAlgorithm::~TOPAlignmentAlgorithm
virtual ~TOPAlignmentAlgorithm()
Destructor.
Definition: TOPAlignmentAlgorithm.h:45
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::finalize
void finalize(double scaleFact)
Calculate weighted averages and rescale errors.
Definition: TOPAlignmentAlgorithm.cc:367
Belle2::TOP::TOPAlignmentAlgorithm::m_bAlignParsErr
TBranch * m_bAlignParsErr
branch of error on alignment parameters
Definition: TOPAlignmentAlgorithm.h:106
Belle2::TOP::TOPAlignmentAlgorithm::setAngularPrecision
void setAngularPrecision(double precision)
Sets required precision of rotation angles to declare calibration as c_OK.
Definition: TOPAlignmentAlgorithm.h:57
Belle2::TOP::TOPAlignmentAlgorithm::TOPAlignmentAlgorithm
TOPAlignmentAlgorithm()
Constructor.
Definition: TOPAlignmentAlgorithm.cc:33
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::valid
bool valid
true if alignment parameters are valid
Definition: TOPAlignmentAlgorithm.h:69
Belle2::TOP::TOPAlignmentAlgorithm::m_mergedData
std::map< int, AlignData > m_mergedData
merged subsamples
Definition: TOPAlignmentAlgorithm.h:110
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::ntrk
int ntrk
number of tracks used
Definition: TOPAlignmentAlgorithm.h:66
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::alignPars
std::vector< float > alignPars
alignment parameters
Definition: TOPAlignmentAlgorithm.h:67
Belle2::TOP::TOPAlignmentAlgorithm::m_valid
bool m_valid
true if alignment parameters are valid
Definition: TOPAlignmentAlgorithm.h:104
Belle2::TOP::TOPAlignmentAlgorithm::m_iter
int m_iter
iteration counter
Definition: TOPAlignmentAlgorithm.h:99
Belle2::TOP::TOPAlignmentAlgorithm::calibrate
virtual EResult calibrate() final
algorithm implementation
Definition: TOPAlignmentAlgorithm.cc:39
Belle2::TOP::TOPAlignmentAlgorithm::m_errorCode
int m_errorCode
error code of the alignment procedure
Definition: TOPAlignmentAlgorithm.h:101
Belle2::TOP::TOPAlignmentAlgorithm::m_vAlignPars
std::vector< float > * m_vAlignPars
alignment parameters
Definition: TOPAlignmentAlgorithm.h:102
Belle2::TOP::TOPAlignmentAlgorithm::m_vAlignParsErr
std::vector< float > * m_vAlignParsErr
error on alignment parameters
Definition: TOPAlignmentAlgorithm.h:103
Belle2::TOP::TOPAlignmentAlgorithm::m_moduleID
int m_moduleID
module ID
Definition: TOPAlignmentAlgorithm.h:98
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TOP::TOPAlignmentAlgorithm::mergeData
void mergeData()
merge subsamples and rescale errors
Definition: TOPAlignmentAlgorithm.cc:280
Belle2::TOP::TOPAlignmentAlgorithm::setSpatialPrecision
void setSpatialPrecision(double precision)
Sets required precision of displacements to declare calibration as c_OK.
Definition: TOPAlignmentAlgorithm.h:51
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::iter
int iter
iteration counter
Definition: TOPAlignmentAlgorithm.h:65
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::add
void add(const AlignData &data)
Merge another data structure to this one.
Definition: TOPAlignmentAlgorithm.cc:345
Belle2::CalibrationAlgorithm::EResult
EResult
The result of calibration.
Definition: CalibrationAlgorithm.h:50
Belle2::TOP::TOPAlignmentAlgorithm::m_angularPrecision
double m_angularPrecision
required precision of rotation angles
Definition: TOPAlignmentAlgorithm.h:95
Belle2::TOP::TOPAlignmentAlgorithm::AlignData::alignErrs
std::vector< float > alignErrs
uncertainties on alignment parameters
Definition: TOPAlignmentAlgorithm.h:68
Belle2::TOP::TOPAlignmentAlgorithm::m_ntrk
int m_ntrk
number of tracks used
Definition: TOPAlignmentAlgorithm.h:100
Belle2::TOP::TOPAlignmentAlgorithm::AlignData
data structure
Definition: TOPAlignmentAlgorithm.h:64
Belle2::TOP::TOPAlignmentAlgorithm::m_inputData
std::multimap< int, AlignData > m_inputData
input from ntuples
Definition: TOPAlignmentAlgorithm.h:109
Belle2::TOP::TOPAlignmentAlgorithm::m_bAlignPars
TBranch * m_bAlignPars
branch of alignment parameters
Definition: TOPAlignmentAlgorithm.h:105
Belle2::TOP::TOPAlignmentAlgorithm::m_spatialPrecision
double m_spatialPrecision
required precision of displacements
Definition: TOPAlignmentAlgorithm.h:94