BOSS 6.6.4.p03
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 ([email protected]) */
3
4#ifndef MILLEALIGN_H
5#define MILLEALIGN_H
6
11
12#include "TH1F.h"
13
14using namespace Alignment;
15
16class MilleAlign: public MdcAlign {
17public:
18 MilleAlign();
20 void clear();
21 void initialize(TObjArray* hlist, IMdcGeomSvc* mdcGeomSvc,
22 IMdcCalibFunSvc* mdcFunSvc);
23
24 void setParam(MdcAliParams& param);
25 bool fillHist(MdcAliEvent* event);
26 void updateConst(MdcAlignPar* alignPar);
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, double &deri);
34 bool getDeriGlo(int iparHit, int iparGB, int lay, int cel, HepVector helix, HepSymMatrix &helixErr,
35 double wpos[], double &deri);
36
37 double moment(double phi0, double tanl);
38
39 MdcAliParams m_param;
40 TObjArray* m_hlist;
41 IMdcGeomSvc* m_mdcGeomSvc;
42 IMdcCalibFunSvc* m_mdcFunSvc;
43 MdcUtilitySvc* m_mdcUtilitySvc;
44
45 double m_resiCut[LAYERNMAX];
46 double m_docaCut[LAYERNMAX][2];
47
48 double m_p[20][15];
49 double m_dxini[NEP];
50 double m_dyini[NEP];
51 double m_rzini[NEP];
52
53 /* for millepede */
54 Millepede* m_pMilleAlign;
55 int m_npar;
56 bool m_dofs[NDOFALIGN];
57 double m_sigm[NDOFALIGN];
58 int m_nGloHit; /* number of global pars for each hit */
59 int m_nglo;
60 int m_nloc;
61 std::vector<double> m_par;
62 std::vector<double> m_error;
63 std::vector<double> m_pull;
64 std::vector<double> m_derGB;
65 std::vector<double> m_derNonLin;
66 std::vector<double> m_derLC;
67
68 /* histograms */
69 TH1F* m_hresAll;
70 TH1F* m_hresInn;
71 TH1F* m_hresStp;
72 TH1F* m_hresOut;
73 TH1F* m_hresLay[LAYERNMAX];
74
75 TH1F* m_hresAllRec;
76 TH1F* m_hresLayRec[LAYERNMAX];
77
78 TH1F* m_hddoca; /* for debug */
79 TH1F* m_hddocaLay[LAYERNMAX]; /* for debug */
80};
81
83 MdcAlign::setParam(param);
84 m_param = param;
85}
86
87#endif /* MILLEALIGN_H */
virtual void setParam(MdcAliParams &param)=0
Definition: MdcAlign.h:35
void clear()
Definition: MilleAlign.cxx:44
void setParam(MdcAliParams &param)
Definition: MilleAlign.h:82
void initialize(TObjArray *hlist, IMdcGeomSvc *mdcGeomSvc, IMdcCalibFunSvc *mdcFunSvc)
Definition: MilleAlign.cxx:56
std::string fixMomLab
Definition: MilleAlign.h:28
bool fillHist(MdcAliEvent *event)
Definition: MilleAlign.cxx:198
void updateConst(MdcAlignPar *alignPar)
Definition: MilleAlign.cxx:331
const int LAYERNMAX
Definition: Alignment.h:45
const int NEP
Definition: Alignment.h:48
const int NDOFALIGN
Definition: Alignment.h:62