BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcDedxRecon.h
Go to the documentation of this file.
1// BesIII MDC dE/dx Reconstruction Module
2// Class: MdcDedxRecon
3// Created by Dayong WANG 2003/11
4
5#include "AIDA/IHistogram1D.h"
6#include "AIDA/IHistogram2D.h"
7#include "GaudiKernel/Algorithm.h"
8#include "GaudiKernel/ISvcLocator.h"
9#include "GaudiKernel/NTuple.h"
10#include "TFile.h"
11#include "TFolder.h"
12#include "TH1F.h"
13#include "TObjArray.h"
14#include <fstream>
15#include <iostream>
16#include <string>
17#include <vector>
18
19#include "DedxCorrecSvc/IDedxCorrecSvc.h"
20#include "DedxCurSvc/IDedxCurSvc.h"
21#include "MdcGeomSvc/IMdcGeomSvc.h"
22
23#include "MdcDedxCorrection.h"
24#include "MdcDedxTrk.h"
25
26class DedxCorrection;
27class MdcDedxTrk;
28
29class MdcDedxRecon : public Algorithm {
30
31public:
32 MdcDedxRecon( const std::string& name, ISvcLocator* pSvcLocator );
34
35 StatusCode initialize();
36 StatusCode execute();
37 StatusCode finalize();
38 StatusCode beginRun();
39
40 const std::vector<MdcDedxTrk>& tracks( void ) const;
41 void clearTables();
42
43 void mdctrackrec( RecMdcTrackCol::iterator trk, Identifier mdcid, double tes, int RunNO,
44 int eventNO, int runFlag, MsgStream log );
45 void kaltrackrec( RecMdcKalTrackCol::iterator trk, Identifier mdcid, double tes, int RunNO,
46 int eventNO, int runFlag, MsgStream log );
47 void switchtomdctrack( int trkid, Identifier mdcid, double tes, int RunNO, int eventNO,
48 int runFlag, MsgStream log );
49
50private:
51 bool m_beginRun{ false };
52
53 int calib_flag;
54 int landau;
55 int ntpFlag;
56 int doNewGlobal;
57 int recalg; // reconstruction method:
58 // 0:RecMdcTrack; 1:RecMdcKalTrack; 2:RecMdcTrack when no RecMdcKalTrack
59 int ParticleFlag; // particle type flag: 0: electron, 1:muon, 2: pion, 3:kaon, 4:proton
60 int m_alg; // algorithm 1: bi-truncation; 2: transformation; 3: logorithm mean;
61 float truncate; // truncation rate
62 std::string m_rootfile;
63
64 IDedxCurSvc* dedxcursvc;
65 IMdcGeomSvc* geosvc;
66 IDedxCorrecSvc* exsvc;
67 MdcDedxCorrection* ex_calib;
68 std::vector<MdcDedxTrk> ex_trks;
69 std::vector<int> m_trkalgs;
70 int m_trkalg;
71
72 RecMdcDedxCol* dedxList;
73 RecMdcDedx* resdedx;
74 RecMdcDedxHitCol* dedxhitList;
75 RecMdcDedxHit* dedxhit;
76 DedxHitRefVec* dedxhitrefvec;
77
78 // root file
79 TObjArray* m_hlist;
80 TFolder* m_hitlevel;
81 TH1F* m_hitNo_wire;
82
83 // Ntuple file
84 NTuple::Tuple* m_nt1;
85 NTuple::Item<float> m_phtm;
86 // NTuple::Item<float> m_median;
87 // NTuple::Item<float> m_geometric;
88 // NTuple::Item<float> m_geometric_trunc;
89 // NTuple::Item<float> m_harmonic;
90 // NTuple::Item<float> m_harmonic_trunc;
91 // NTuple::Item<float> m_transform;
92 // NTuple::Item<float> m_logtrunc;
93 NTuple::Item<float> m_dEdx_meas;
94
95 NTuple::Item<float> m_ptrk;
96 NTuple::Item<float> m_costheta;
97 NTuple::Item<float> m_sintheta;
98 NTuple::Item<float> m_charge;
99 NTuple::Item<float> m_runNO;
100 NTuple::Item<float> m_evtNO;
101 NTuple::Item<float> m_t0;
102 NTuple::Item<float> m_trackId;
103 NTuple::Item<float> m_poca_x;
104 NTuple::Item<float> m_poca_y;
105 NTuple::Item<float> m_poca_z;
106 NTuple::Item<float> m_recalg;
107
108 NTuple::Item<float> m_nhit;
109 NTuple::Item<float> m_usedhit;
110 NTuple::Item<long> m_nphlisthit;
111 NTuple::Array<double> m_dEdx_hit;
112
113 NTuple::Array<float> m_probpid;
114 NTuple::Array<float> m_expectid;
115 NTuple::Array<float> m_sigmaid;
116 NTuple::Item<float> m_parttype;
117 NTuple::Item<float> m_prob;
118 NTuple::Item<float> m_expect;
119 NTuple::Item<float> m_sigma;
120 NTuple::Item<float> m_chidedx;
121 NTuple::Item<float> m_chidedxe;
122 NTuple::Item<float> m_chidedxmu;
123 NTuple::Item<float> m_chidedxpi;
124 NTuple::Item<float> m_chidedxk;
125 NTuple::Item<float> m_chidedxp;
126
127 NTuple::Tuple* m_nt2;
128 NTuple::Item<double> m_charge1;
129 NTuple::Item<double> m_phraw;
130 NTuple::Item<double> m_exraw;
131 NTuple::Item<float> m_wire;
132 NTuple::Item<float> m_localwid;
133 NTuple::Item<float> m_runNO1;
134 NTuple::Item<float> m_evtNO1;
135 NTuple::Item<float> m_nhit_hit;
136 NTuple::Item<float> m_doca_in;
137 NTuple::Item<float> m_doca_ex;
138 NTuple::Item<float> m_driftdist;
139 NTuple::Item<float> m_eangle;
140 NTuple::Item<float> m_costheta1;
141 NTuple::Item<float> m_pathL;
142 NTuple::Item<float> m_layer;
143 NTuple::Item<float> m_ptrk1;
144 NTuple::Item<float> m_ptrk_hit;
145 NTuple::Item<float> m_t01;
146 NTuple::Item<float> m_tdc_raw;
147 NTuple::Item<float> m_driftT;
148 NTuple::Item<float> m_trackId1;
149};
SmartRefVector< RecMdcDedxHit > DedxHitRefVec
void mdctrackrec(RecMdcTrackCol::iterator trk, Identifier mdcid, double tes, int RunNO, int eventNO, int runFlag, MsgStream log)
void switchtomdctrack(int trkid, Identifier mdcid, double tes, int RunNO, int eventNO, int runFlag, MsgStream log)
StatusCode initialize()
StatusCode execute()
const std::vector< MdcDedxTrk > & tracks(void) const
MdcDedxRecon(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode finalize()
void kaltrackrec(RecMdcKalTrackCol::iterator trk, Identifier mdcid, double tes, int RunNO, int eventNO, int runFlag, MsgStream log)
StatusCode beginRun()