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