BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcAlignAlg Class Reference

#include <MdcAlignAlg.h>

+ Inheritance diagram for MdcAlignAlg:

Public Member Functions

 MdcAlignAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
StatusCode initialize ()
 
StatusCode execute ()
 
StatusCode finalize ()
 

Detailed Description

Definition at line 30 of file MdcAlignAlg.h.

Constructor & Destructor Documentation

◆ MdcAlignAlg()

MdcAlignAlg::MdcAlignAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 21 of file MdcAlignAlg.cxx.

21 :
22 Algorithm(name, pSvcLocator), m_alignMeth(0), m_flgKalFit(0){
23
24 m_distAlign = false;
25 m_configFile = "MdcCalibConfig.txt";
26 m_fixMomLab = "fixMom_lab.txt";
27 m_nEvt = 0;
28 m_mag = 1.0;
29
30 //declare properties
31 declareProperty("DistAlign", m_distAlign);
32 declareProperty("MdcAlignMeth", m_alignMeth);
33 declareProperty("UseKalFit", m_flgKalFit);
34 declareProperty("MagneticField", m_mag);
35 declareProperty("AlignFile", m_alignFile);
36 declareProperty("HistFile", m_histname);
37 declareProperty("ConfigFile", m_configFile);
38 declareProperty("FixMomLab", m_fixMomLab);
39 declareProperty("NumEvtDisplay", m_nEvtDisp);
40}

Member Function Documentation

◆ execute()

StatusCode MdcAlignAlg::execute ( )

Definition at line 160 of file MdcAlignAlg.cxx.

160 {
161 MsgStream log(msgSvc(), name());
162 log << MSG::DEBUG << "MdcAlignAlg execute()" << endreq;
163
164 // display event number for debug
165 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
166 if (!eventHeader) {
167 log << MSG::FATAL << "Could not find Event Header" << endreq;
168 return( StatusCode::FAILURE);
169 }
170 int iEvt = eventHeader->eventNumber();
171 if(0 == (m_nEvt % m_nEvtDisp)) std::cout << "Event " << m_nEvt << ", Event number online " << iEvt << endl;
172 m_nEvt++;
173
174 // get reconstruction result
175 if(m_flgKalFit) m_mdcevt -> setKalEvent();
176 else m_mdcevt -> setRecEvent();
177
178 if (!(m_pAlign->fillHist(m_mdcevt))) {
179 m_mdcevt->clear();
180 return(StatusCode::SUCCESS);
181 }
182 m_mdcevt->clear();
183
184 return StatusCode::SUCCESS;
185}
IMessageSvc * msgSvc()
virtual bool fillHist(MdcAliEvent *event)=0
Definition MdcAlign.cxx:16

◆ finalize()

StatusCode MdcAlignAlg::finalize ( )

Definition at line 188 of file MdcAlignAlg.cxx.

188 {
189 MsgStream log(msgSvc(), name());
190 log << MSG::INFO << "MdcAlignAlg finalize()" << endreq;
191
192 if( ! m_distAlign ){
193 // execute calibration and write new calibration data file
194 m_pAlign -> updateConst(m_alignPar);
195 m_alignPar -> wrtAlignPar();
196 }
197
198 TFile* fhist = new TFile(m_histname.c_str(), "recreate");
199 m_hlist -> Write();
200
201 m_pAlign -> clear();
202 delete m_pAlign;
203 std::cout << "m_pAlign deleted" << std::endl;
204
205 delete m_alignPar;
206 std::cout << "m_alignPar deleted" << std::endl;
207
208 delete m_mdcevt;
209 std::cout << "m_mdcevt deleted" << std::endl;
210
211 delete m_hlist;
212 std::cout << "m_hlist deleted" << std::endl;
213
214 fhist->Close();
215 delete fhist;
216 cout << m_histname << " was written" << endl;
217
218 if( ! m_distAlign ){
219 std::ofstream fend("endalign.out");
220 fend << "MdcAlign end." << std::endl;
221 fend.close();
222 }
223
224 std::cout << "MdcAlignAlg End." << std::endl;
225
226 return StatusCode::SUCCESS;
227}
curve Write()

◆ initialize()

StatusCode MdcAlignAlg::initialize ( )

Definition at line 44 of file MdcAlignAlg.cxx.

44 {
45 MsgStream log( msgSvc(), name() );
46 log << MSG::INFO << "MdcAlignAlg initialze() ..." << endreq;
47 log << MSG::INFO << "MdcAlignFlg = " << m_alignMeth << endreq;
48
49 StatusCode sc = service("MdcGeomSvc", m_mdcGeomSvc);
50 if(sc != StatusCode::SUCCESS){
51 log << MSG::ERROR << "can not use MdcGeomSvc" << endreq;
52 }
53
54 sc = service("MdcCalibFunSvc", m_mdcFunSvc);
55 if( sc != StatusCode::SUCCESS ){
56 log << MSG::FATAL << "can not use MdcCalibFunSvc" << endreq;
57 }
58
59 sc = service("MdcUtilitySvc", m_mdcUtilitySvc);
60 if( sc != StatusCode::SUCCESS ){
61 log << MSG::FATAL << "can not use MdcUtilitySvc" << endreq;
62 }
63
64 // initialize m_param
65 initParam();
66
67 // read mdc config parameters
68 int i;
69 std::string strconfig;
70 std::string strcomment;
71 std::string strTes;
72 int fgTes[50];
73 for(i=0; i<50; i++) fgTes[i] = -999;
74 ifstream fconfig( m_configFile.c_str() );
75 if( ! fconfig.is_open() ){
76 log << MSG::WARNING << "can not open config file " << m_configFile
77 << ". Use defalt config parameters" << endreq;
78 } else {
79 log << MSG::INFO << "Open config file " << m_configFile << endreq;
80 while( fconfig >> strconfig ){
81 if('#' == strconfig[0]){
82 getline(fconfig, strcomment);
83 } else if("EsTimeFlag" == strconfig){
84 getline(fconfig, strTes);
85 int n = sscanf(strTes.c_str(), "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
86 fgTes+0, fgTes+1, fgTes+2, fgTes+3, fgTes+4,
87 fgTes+5, fgTes+6, fgTes+7, fgTes+8, fgTes+9,
88 fgTes+10, fgTes+11, fgTes+12, fgTes+13, fgTes+14,
89 fgTes+15, fgTes+16, fgTes+17, fgTes+18, fgTes+19);
90 for(i=0; i<n; i++) m_param.esFlag[i] = fgTes[i];
91 m_param.nEsFlag = n;
92 } else if("TesMin" == strconfig){
93 fconfig >> m_param.tesMin;
94 } else if("TesMax" == strconfig){
95 fconfig >> m_param.tesMax;
96 } else if("ResidualType" == strconfig){
97 fconfig >> m_param.resiType;
98 } else if("FlagAdjacLayerCut" == strconfig){
99 fconfig >> m_param.fgAdjacLayerCut;
100 } else if("FlagBoundLayerCut" == strconfig){
101 fconfig >> m_param.fgBoundLayerCut;
102 } else if("hitStatCut" == strconfig){
103 fconfig >> m_param.hitStatCut;
104 } else if("nTrkCut" == strconfig){
105 fconfig >> m_param.nTrkCut[0] >> m_param.nTrkCut[1];
106 } else if("nHitLayCut" == strconfig){
107 fconfig >> m_param.nHitLayCut;
108 } else if("nHitCut" == strconfig){
109 fconfig >> m_param.nHitCut;
110 } else if("ptCut" == strconfig){
111 fconfig >> m_param.ptCut[0] >> m_param.ptCut[1];
112 } else if("cosThetaCut" == strconfig){
113 fconfig >> m_param.costheCut[0] >> m_param.costheCut[1];
114 } else if("DrCut" == strconfig){
115 fconfig >> m_param.drCut;
116 } else if("DzCut" == strconfig){
117 fconfig >> m_param.dzCut;
118 } else if("MaximalDocaInner" == strconfig){
119 fconfig >> m_param.maxDocaInner;
120 }else if("MaximalDocaOuter" == strconfig){
121 fconfig >> m_param.maxDocaOuter;
122 }else if("MaximalResidual" == strconfig){
123 fconfig >> m_param.maxResi;
124 }
125 }
126 fconfig.close();
127 }
128
129 // set event type
130 m_param.particle = m_evtType;
131
132 cout << "EsFlag for Mdc Alignment: ";
133 for(int iEs=0; iEs<m_param.nEsFlag; iEs++) cout << setw(6) << m_param.esFlag[iEs];
134 cout << endl;
135
136 if(fabs(m_mag) > 0.01) Alignment::gFlagMag = true;
137 else Alignment::gFlagMag = false;
138
139 m_alignPar = new MdcAlignPar();
140 m_alignPar -> rdAlignPar(m_alignFile);
141
142 m_mdcevt = new MdcAliEvent();
143 m_mdcevt -> setParam(m_param);
144
145 m_hlist = new TObjArray();
146
147 if( 0 == m_alignMeth ){
148 m_pAlign = new ResiAlign();
149 } else if( 1 == m_alignMeth ){
150 m_pAlign = new MilleAlign();
151 m_pAlign->fixMomLab = m_fixMomLab;
152 }
153 m_pAlign->setParam(m_param);
154 m_pAlign -> initialize(m_hlist, m_mdcGeomSvc, m_mdcFunSvc, m_mdcUtilitySvc);
155
156 return StatusCode::SUCCESS;
157}
const Int_t n
double maxDocaOuter
double costheCut[2]
int esFlag[50]
double ptCut[2]
double maxDocaInner
StatusCode initialize()
std::string fixMomLab
Definition MdcAlign.h:30
virtual void setParam(MdcAliParams &param)=0
Definition MdcAlign.h:36
bool gFlagMag
Definition Alignment.cxx:15

Referenced by initialize().


The documentation for this class was generated from the following files: