BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/TrkReco/test/Test.cxx
Go to the documentation of this file.
1#include "math.h"
2#include "stdio.h"
3
4#include "AsciiDmp/AsciiData.h"
5#include "AsciiDmp/dmplib.h"
6
7#include <fstream>
8#include <iostream>
9#include <vector>
10
11#include "TrkReco/Bfield.h"
12#include "TrkReco/Helix.h"
13#include "TrkReco/TUpdater.h"
14#include "TrkReco/TrkReco.h"
15// #include "BesKernel/BesEvent.h"
16#include "MdcRecGeo/MdcRecGeo.h"
17#include "MdcTables/MdcTables.h"
18
19int main() {
20
21 TrkReco* _trkreco = TrkReco::getTrkReco();
22
23 _trkreco->init( 0 );
24
25 Bfield* fBfield = Bfield::getBfield( 5 );
26 // cout<<"Bfield:"<<endl;
27 // cout<<"bz(0.1,0.1,0.5):"<<fBfield->bz(0.1,0.1,0.5)<<endl;
28 delete fBfield;
29
30 HepPoint3D fPivot( 0, 0, 0 );
31 Hep3Vector fmomentum( 1, 1, 1 );
32 Helix fHelix( fPivot, fmomentum, 1.0 );
33 // cout<<"Helix:"<<endl;
34 // cout<<"radius: "<<fHelix.radius()<<endl;
35
36 TUpdater fUpd;
37 // cout <<"TUpdater"<<endl;
38 fUpd.update();
39 fUpd.dump();
40 // cout<<"Hi, event routine is running"<<endl;
41
42 ifstream is( "AsciiDmp_out.dat" );
43
44 if ( !is.good() )
45 {
46 std::cout << " The input file is wrong! " << std::endl;
47 return 0;
48 }
49
50 // EVENT list;
51 EVENT evt;
52 vector<EVENT> evt_list;
53
54 // event loop ..
55 for ( int ix = 0; ix < 100; ix++ )
56 {
57
58 // initialisation
59 evt.set_initialized();
60
61 try
62 { is >> evt; } catch ( AsciiWrongTag& ex )
63 {
64 std::cerr << "wrong tag, got " << ex.got() << " expected: " << ex.expected()
65 << std::endl;
66 return 0;
67 } catch ( AsciiDumpException& ex )
68 { std::cerr << "AsciiDumpException was caught!" << std::endl; }
69
70 // Output MC info.
71 KINE mckn = evt.kine;
72 kine mctrk = mckn.kineList[0];
73 cout << "==============New Event, MC info ================" << endl;
74 cout << "nTrk:" << mckn.nKine << " idPart" << mctrk.idPart << " chrg:" << mctrk.q
75 << " pt:" << mctrk.pt << " theta0:" << mctrk.theta0 << " phi0:" << mctrk.phi0
76 << endl;
77 // cout<<"Total mdcDigi of this event=
78 // "<<evt.mdcDigi.nDigi<<";"<<evt.mdcDigi.digi.size()<<endl;
79
80 // Clear the old MdcRec_wirhit tables and create the hits' info for the new event.
81 unsigned nt = MdcRecWirhitCol::getMdcRecWirhitCol()->size();
82 // cout<<"Col size = "<<nt<<endl;
84
85 MDCDIGI mdigi = evt.mdcDigi;
86 MdcRecGeo* fGeom = MdcRecGeo::getMdcRecGeo();
87 // cout<<fGeom->Wire(7,72)->Layer()<<"; "<<fGeom->Wire(7,72)->Cell()<<"; "
88 // <<fGeom->Wire(7,72)->Lyr()->NCell()<<endl;
89 for ( unsigned i = 0; i < mdigi.nDigi; i++ )
90 {
91 // MdcRec_wirhit* mhit = new MdcRec_wirhit;
92 // mhit->tdc = evt.mdcDigi.digi[i].driftTime;
93 // mhit->adc = evt.mdcDigi.digi[i].energyDeposit;
94 // MdcRecWirhitCol::getMdcRecWirhitCol()->push_back(*mhit);
95 MdcRec_wirhit mhit;
96 mhit.geo = fGeom->Wire( mdigi.digi[i].layerNo - 1, mdigi.digi[i].cellNo - 1 );
97 mhit.tdc = mdigi.digi[i].driftTime;
98 mhit.adc = mdigi.digi[i].energyDeposit;
99 mhit.ddl = mhit.tdc * 40 / 10000;
100 mhit.ddr = mhit.ddl;
101 mhit.erddl = 0.013;
102 mhit.erddr = 0.013;
103 mhit.lr = 2;
104 mhit.stat = 0;
105 mhit.stat = mhit.stat |= 1048576; // bit20
106 mhit.stat = mhit.stat |= 2097152; // bit21
107 mhit.stat = mhit.stat |= 4194304; // bit22
108 mhit.stat = mhit.stat |= 1073741824; // bit30
109 // cout<<"layerNo = "<<mhit.geo->Layer()<<"; "<<mdigi.digi[i].layerNo<<endl;
110 // cout<<"cellNo = "<<mhit.geo->Cell()<<"; "<<mdigi.digi[i].cellNo<<endl;
111 // cout<<"NCell of this layer = "<<mhit.geo->Lyr()->NCell()<<endl;
112 MdcRecWirhitCol::getMdcRecWirhitCol()->push_back( mhit );
113 }
114 // _trkreco->event(BesEvent * ,int * );
115 _trkreco->event();
116
117 std::cout << "Event No = " << evt.header.eventNo << std::endl;
118 evt_list.push_back( evt );
119 }
120
121 // Clear the MdcRec_wirhit tables
122 unsigned nt = MdcRecWirhitCol::getMdcRecWirhitCol()->size();
123 for ( unsigned i = 0; i < nt; i++ )
124 {
125 // delete &(*MdcRecWirhitCol::getMdcRecWirhitCol())[i];
126 }
128
129 is.close();
130
131 /*
132 cout<<"Total Event = "<<evt_list.size()<<endl;
133 cout<<"event1-mdc-ndigi :"<<evt_list[0].mdcDigi.nDigi<<endl;
134 cout<<"event2-mdc-ndigi :"<<evt_list[1].mdcDigi.nDigi<<endl;
135 cout<<"event3-mdc-ndigi :"<<evt_list[2].mdcDigi.nDigi<<endl;
136 cout<<"event1-mdc-digi15-cell :"<<evt_list[0].mdcDigi.digi[14].cellNo<<endl;
137 cout<<"event1-mdc-digi15-cell :"<<evt_list[1].mdcDigi.digi[14].cellNo<<endl;
138 cout<<"event1-mdc-digi15-cell :"<<evt_list[2].mdcDigi.digi[14].cellNo<<endl;
139 */
140 _trkreco->term();
141
142 return 1;
143}
HepGeom::Point3D< double > HepPoint3D
static Bfield * getBfield(int)
returns Bfield object.
static vector< MdcRec_wirhit > * getMdcRecWirhitCol(void)
A class to handle update timing of static objects of tracking.
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
Definition TUpdater.cxx:23
virtual void update(void)
updates an object.
Definition TUpdater.cxx:33
A tracking module.
Definition TrkReco.h:46
#define ix(i)