BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcTrkRecon.h
Go to the documentation of this file.
1#ifndef MDCTRKRECON_H
2#define MDCTRKRECON_H
3
4#include "GaudiKernel/Algorithm.h"
5#include "GaudiKernel/NTuple.h"
6#include "MagneticFieldSvc/IBesMagFieldSvc.h"
7#include "MdcPrintSvc/IMdcPrintSvc.h"
8#include "MdcRecEvent/RecMdcTrack.h"
9#include "MdcTrkRecon/MdcFlagHold.h"
10#include "RawDataProviderSvc/IRawDataProviderSvc.h"
11#include <string>
12
13class MdcDetector;
14class MdcSegData;
15class MdcSegList;
17class MdcSegFinder;
18namespace MdcPatRec {
19 class BField;
20}
21class IHistogram1D;
22class McParticle;
23#ifdef MDCPATREC_TIMETEST
24class IBesTimerSvc;
25class BesTimer;
26#endif
27
28#ifdef UseCalib
29class MdcCalibFunSvc;
30#endif
31
32class MdcTrkRecon : public Algorithm {
33public:
34 MdcTrkRecon( const std::string& name, ISvcLocator* pSvcLocator );
36 StatusCode initialize();
37 StatusCode execute();
38 StatusCode finalize();
39 StatusCode beginRun();
40
41protected:
42 bool ignoringUsedHits() const { return m_onlyUnusedHits; }
43 bool poisoningHits() const { return m_poisonHits; }
44 void fillSegList();
45 void fillTrackList();
46 void dumpDigi();
47 void dumpTdsTrack( RecMdcTrackCol* trackList );
48 void fillMcTruth();
49 void fillEvent();
50 StatusCode bookNTuple();
51
52private:
53 bool m_beginRun{ false };
54
55 int t_iExecute;
56 int m_fittingMethod;
57 int m_allHit; // if all hit (active and inactive) include in the number of nHit
58 std::string m_configFile;
59 std::string m_paramFile;
60 std::string m_pdtFile;
61 const MdcDetector* _gm;
62 MdcFlagHold m_flags; // run-time-settable flags and params
63 std::auto_ptr<MdcSegData> m_hitData;
64 std::auto_ptr<MdcSegList> m_segs;
65 std::auto_ptr<MdcTrackListBase> m_tracks;
66 std::auto_ptr<MdcSegFinder> m_segFinder;
67 IRawDataProviderSvc* m_rawDataProviderSvc;
68 IMdcPrintSvc* m_mdcPrintSvc;
69
70 MdcPatRec::BField* m_bfield;
71
72 std::vector<int> m_selEvtNo;
73 bool m_onlyUnusedHits;
74 bool m_poisonHits;
75 bool m_doLineFit;
76 bool m_tryBunch;
77 bool m_recForEsTime;
78 std::vector<float> m_helixHitsSigma;
79
80 uint32_t m_getDigiFlag;
81 int m_maxMdcDigi;
82 bool m_keepBadTdc;
83 bool m_dropHot;
84 bool m_keepUnmatch;
85 int m_minMdcDigi;
86
87 bool m_fieldCosmic;
88 double m_d0Cut;
89 double m_z0Cut;
90 double m_dropTrkPt;
91 bool m_mcHist;
92 int m_hist;
93 int m_debug;
94 bool m_doSagFlag;
95 bool m_arbitrateHits;
96 bool m_combineTracking;
97
98 double mcDrift[43][288]; // FIXME assume max 43 track/event, 288 hit/track
99 double mcLayer[43][288];
100 double mcWire[43][288];
101 double mcLR[43][288];
102 double mcX[43][288];
103 double mcY[43][288];
104 double mcZ[43][288];
105 double hitOnSeg[43];
106 double hitOnMcTk[43];
107 int hitPoisoned[43][288];
108 int hitInSegList[43][288];
109 int t_nHitInTk[100];
110 int t_t0Stat;
111 double t_t0;
112 double t_t0Truth;
113 double t_mcTkNum;
114 int t_nDigi;
115 int t_eventNo;
116 int t_nRecTk;
117 int t_iExexute;
118 int isPrimaryOfMcTk[100];
119 int pdgOfMcTk[100];
120 bool m_noInner;
121#ifdef MDCPATREC_TIMETEST
122 IBesTimerSvc* m_timersvc;
123 BesTimer* m_timer[2];
124 double ti_nHit;
125 double ti_p;
126 double ti_pt;
127#endif
128 IBesMagFieldSvc* m_pIMF;
129};
130
131#endif
The Monte Carlo particle kinematics information.
StatusCode bookNTuple()
StatusCode finalize()
void dumpTdsTrack(RecMdcTrackCol *trackList)
StatusCode execute()
void fillTrackList()
StatusCode initialize()
bool ignoringUsedHits() const
Definition MdcTrkRecon.h:42
StatusCode beginRun()
MdcTrkRecon(const std::string &name, ISvcLocator *pSvcLocator)
bool poisoningHits() const
Definition MdcTrkRecon.h:43
void fillMcTruth()