BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MilleAlign.h
Go to the documentation of this file.
1/* Millepede matrix method for alignment, author: Volker Blobel */
2/* First used in BESIII drift chamber by Wu Linghui (wulh@ihep.ac.cn) */
3
4#ifndef MILLEALIGN_H
5#define MILLEALIGN_H
6
10
11#include "TH1F.h"
12
13using namespace Alignment;
14
15class MilleAlign : public MdcAlign {
16public:
17 MilleAlign();
19 void clear();
20 void initialize( TObjArray* hlist, IMdcGeomSvc* mdcGeomSvc, IMdcCalibFunSvc* mdcFunSvc,
21 IMdcUtilitySvc* mdcUtilitySvc );
22
23 void setParam( MdcAliParams& param );
24 bool fillHist( MdcAliEvent* event );
25 void updateConst( MdcAlignPar* alignPar );
26
27public:
28 std::string fixMomLab;
29
30private:
31 int getAlignParId( int lay, int iparHit );
32
33 bool getDeriLoc( int ipar, int lay, int cel, HepVector helix, HepSymMatrix& helixErr,
34 double& deri );
35 bool getDeriGlo( int iparHit, int iparGB, int lay, int cel, HepVector helix,
36 HepSymMatrix& helixErr, double wpos[], double& deri );
37
38 double moment( double phi0, double tanl );
39
40 MdcAliParams m_param;
41 TObjArray* m_hlist;
42 IMdcGeomSvc* m_mdcGeomSvc;
43 IMdcCalibFunSvc* m_mdcFunSvc;
44 IMdcUtilitySvc* m_mdcUtilitySvc;
45
46 double m_resiCut[LAYERNMAX];
47 double m_docaCut[LAYERNMAX][2];
48
49 double m_p[20][15];
50 double m_dxini[NEP];
51 double m_dyini[NEP];
52 double m_rzini[NEP];
53
54 /* for millepede */
55 Millepede* m_pMilleAlign;
56 int m_npar;
57 bool m_dofs[NDOFALIGN];
58 double m_sigm[NDOFALIGN];
59 int m_nGloHit; /* number of global pars for each hit */
60 int m_nglo;
61 int m_nloc;
62 std::vector<double> m_par;
63 std::vector<double> m_error;
64 std::vector<double> m_pull;
65 std::vector<double> m_derGB;
66 std::vector<double> m_derNonLin;
67 std::vector<double> m_derLC;
68
69 /* histograms */
70 TH1F* m_hresAll;
71 TH1F* m_hresInn;
72 TH1F* m_hresStp;
73 TH1F* m_hresOut;
74 TH1F* m_hresLay[LAYERNMAX];
75
76 TH1F* m_hresAllRec;
77 TH1F* m_hresLayRec[LAYERNMAX];
78
79 TH1F* m_hddoca; /* for debug */
80 TH1F* m_hddocaLay[LAYERNMAX]; /* for debug */
81};
82
83inline void MilleAlign::setParam( MdcAliParams& param ) {
84 MdcAlign::setParam( param );
85 m_param = param;
86}
87
88#endif /* MILLEALIGN_H */
virtual void setParam(MdcAliParams &param)=0
Definition MdcAlign.h:37
void clear()
void setParam(MdcAliParams &param)
Definition MilleAlign.h:83
std::string fixMomLab
Definition MilleAlign.h:28
bool fillHist(MdcAliEvent *event)
void initialize(TObjArray *hlist, IMdcGeomSvc *mdcGeomSvc, IMdcCalibFunSvc *mdcFunSvc, IMdcUtilitySvc *mdcUtilitySvc)
void updateConst(MdcAlignPar *alignPar)
const int LAYERNMAX
Definition Alignment.h:43
const int NEP
Definition Alignment.h:46
const int NDOFALIGN
Definition Alignment.h:60