BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ValidRecMdcTrackAlg.cxx
Go to the documentation of this file.
2#include "EventModel/EventHeader.h"
3#include "GaudiKernel/IHistogramSvc.h"
4#include "GaudiKernel/MsgStream.h"
5#include "GaudiKernel/NTuple.h"
6#include "GaudiKernel/SmartDataPtr.h"
7// #include "ReconEvent/ReconEvent.h"
8
9#include "Identifier/MdcID.h"
10#include "MdcRecEvent/RecMdcTrack.h"
11
12using namespace Event;
13
15ValidRecMdcTrackAlg::ValidRecMdcTrackAlg( const std::string& name, ISvcLocator* pSvcLocator )
16 : Algorithm( name, pSvcLocator ) {
17
18 // m_tuple1 = 0;
19 // m_tuple2 = 0;
20}
21
23 MsgStream log( msgSvc(), name() );
24 log << MSG::INFO << "Booking Histograms" << endmsg;
25
26 NTuplePtr nt1( ntupleSvc(), "FILE101/mdcTrack" );
27 if ( nt1 ) m_tuple1 = nt1;
28 else
29 {
30 m_tuple1 =
31 ntupleSvc()->book( "FILE101/mdcTrack", CLID_RowWiseTuple, "ValidRecMdcTrackNTuple1" );
32
33 if ( m_tuple1 )
34 {
35 m_tuple1->addItem( "eventNo", g_eventNo );
36 m_tuple1->addItem( "runNo", g_runNo );
37 m_tuple1->addItem( "nhits", g_hits );
38 m_tuple1->addItem( "Id", g_track_id );
39 m_tuple1->addItem( "Phi0", g_phi0 );
40 m_tuple1->addItem( "Cpa", g_kappa );
41 m_tuple1->addItem( "Tanl", g_tanl );
42 m_tuple1->addItem( "p", g_p );
43
44 m_tuple1->addItem( "Dr", g_dr );
45 m_tuple1->addItem( "Dz", g_dz );
46 m_tuple1->addItem( "Chisq", g_chisq_of_fit );
47 m_tuple1->addItem( "FiTerm", g_phi_terminal );
48 m_tuple1->addItem( "Nhits", g_number_of_hits );
49 m_tuple1->addItem( "Nster", g_number_of_stereo_hits );
50
51 m_tuple1->addItem( "px", g_px );
52 m_tuple1->addItem( "py", g_py );
53 m_tuple1->addItem( "pz", g_pz );
54 m_tuple1->addItem( "pxy", g_pxy );
55 m_tuple1->addItem( "charge", g_charge );
56 m_tuple1->addItem( "stat", g_stat );
57 m_tuple1->addItem( "x", g_x );
58 m_tuple1->addItem( "y", g_y );
59 m_tuple1->addItem( "z", g_z );
60 m_tuple1->addItem( "r", g_r );
61 m_tuple1->addItem( "chi2", g_chi2 );
62 m_tuple1->addItem( "ndof", g_ndof );
63 m_tuple1->addItem( "firstLayer", g_firstLayer );
64 m_tuple1->addItem( "lastLayer", g_lastLayer );
65 m_tuple1->addItem( "theta", g_theta );
66 m_tuple1->addItem( "phi", g_phi );
67 }
68 else
69 {
70 log << MSG::ERROR << "----- Cannot book or register histograms -----" << endmsg;
71 return StatusCode::FAILURE;
72 }
73 }
74 NTuplePtr nt2( ntupleSvc(), "FILE101/mdcHit" );
75 if ( nt2 ) m_tuple2 = nt2;
76 else
77 {
78 m_tuple2 =
79 ntupleSvc()->book( "FILE101/mdcHit", CLID_RowWiseTuple, "ValidRecMdcHitNTuple1" );
80
81 if ( m_tuple2 )
82 {
83 m_tuple2->addItem( "Hits_id", g_hits_id );
84 m_tuple2->addItem( "Hits_ddl", g_hits_ddl );
85 m_tuple2->addItem( "Hits_ddr", g_hits_ddr );
86
87 m_tuple2->addItem( "doca", g_doca );
88 m_tuple2->addItem( "Hits_mdc_id", g_hits_mdc_id );
89 m_tuple2->addItem( "layer", g_layer );
90 m_tuple2->addItem( "wire", g_wire );
91
92 m_tuple2->addItem( "Hits_tdc", g_hits_tdc );
93 m_tuple2->addItem( "Hits_adc", g_hits_adc );
94 }
95 else
96 {
97 log << MSG::ERROR << "----- Cannot book or register histograms -----" << endmsg;
98 return StatusCode::FAILURE;
99 }
100 }
101
102 log << MSG::INFO << "Finished booking Histograms" << endmsg;
103 return StatusCode::SUCCESS;
104
105 /*
106
107 NTuplePtr nt2(ntupleSvc(),"FILE101/mdcHit");
108 if( nt2 ) m_tuple2 = nt2;
109 else{
110 m_tuple2 =
111 ntupleSvc()->book("FILE101/mdcHit",CLID_ColumnWiseTuple,"ValidRecMdcTrackNTuple2");
112
113 if( m_tuple2 ) {
114 m_tuple1->addItem ("eventNo",g_eventNo);
115 m_tuple1->addItem ("runNo", g_runNo);
116 m_tuple1->addItem("nhits",g_hits,0,5000);
117 m_tuple1->addItem ("Id",g_track_id);
118 m_tuple1->addItem ("Phi0",g_phi0);
119 m_tuple1->addItem ("Cpa",g_kappa);
120 m_tuple1->addItem ("Tanl",g_tanl);
121 m_tuple1->addItem ("p",g_p);
122
123 m_tuple1->addItem ("Dr",g_dr);
124 m_tuple1->addItem ("Dz",g_dz);
125 m_tuple1->addItem ("Chisq",g_chisq_of_fit);
126 m_tuple1->addItem ("FiTerm",g_phi_terminal);
127 m_tuple1->addItem ("Nhits",g_number_of_hits);
128 m_tuple1->addItem ("Nster",g_number_of_stereo_hits);
129
130 m_tuple2->addItem ("Hits_id",g_hits_id);
131 m_tuple2->addItem ("Hits_ddl",g_hits_ddl);
132 m_tuple2->addItem ("Hits_ddr",g_hits_ddr);
133
134 m_tuple2->addItem ("doca",g_doca);
135 m_tuple2->addItem ("Hits_mdc_id",g_hits_mdc_id);
136 m_tuple2->addItem ("layer",g_layer);
137 m_tuple2->addItem ("wire",g_wire );
138
139 m_tuple2->addItem ("Hits_tdc",g_hits_tdc);
140 m_tuple2->addItem ("Hits_adc",g_hits_adc);
141 }
142 else {
143 log << MSG::ERROR << "----- Cannot book or register histograms -----" << endmsg;
144 return StatusCode::FAILURE;
145 }
146
147 log << MSG::INFO << "Finished booking Histograms" << endmsg;
148 return StatusCode::SUCCESS;
149
150 }*/
151}
152
154 MsgStream log( msgSvc(), name() );
155
156 int ntrk = 0;
157
158 SmartDataPtr<Event::EventHeader> eventHeader( eventSvc(), "/Event/EventHeader" );
159 if ( !eventHeader )
160 {
161 log << MSG::FATAL << "Could not find Event Header" << endmsg;
162 return ( StatusCode::SUCCESS );
163 }
164
165 log << MSG::INFO << "retrieved event: " << eventHeader->eventNumber()
166 << " run: " << eventHeader->runNumber() << endmsg;
167 int eventNo = eventHeader->eventNumber();
168 int runNo = eventHeader->runNumber();
169 if ( m_tuple1 )
170 {
171 g_eventNo = eventNo;
172 g_runNo = runNo;
173 }
174
175 SmartDataPtr<RecMdcTrackCol> mdcTracks( eventSvc(), "/Event/Recon/RecMdcTrackCol" );
176 if ( !mdcTracks )
177 {
178 log << MSG::ERROR << "Unable to retrieve RecMdcTrackCol" << endmsg;
179 return StatusCode::FAILURE;
180 }
181 else
182 {
183 log << MSG::DEBUG << "RecMdcTrackCol retrieved of size " << mdcTracks->size() << endmsg;
184 for ( RecMdcTrackCol::iterator it = mdcTracks->begin(); it != mdcTracks->end(); it++ )
185 {
186
187 /* g_hits=0;
188
189 HitRefVec gothits = (*it)->getVecHits();
190 HitRefVec::iterator it_gothit = gothits.begin();
191 for( ; it_gothit != gothits.end(); it_gothit++){
192 g_hits_id = (*it_gothit)->getId();
193 g_hits_ddl = (*it_gothit)->getDriftDistLeft();
194 g_hits_ddr = (*it_gothit)->getDriftDistRight();
195 g_doca = (*it_gothit)->getDoca();
196 g_hits_mdc_id = (*it_gothit)->getMdcId();
197 g_layer = MdcID::layer((*it_gothit)->getMdcId());
198 g_wire = MdcID::wire((*it_gothit)->getMdcId());
199
200
201
202 g_hits_tdc = (*it_gothit)->getTdc();
203 g_hits_adc = (*it_gothit)->getAdc();
204
205 g_hits++;
206 m_tuple2->write();
207 }*/
208
209 g_track_id = ( *it )->trackId();
210 g_phi0 = ( *it )->helix()[1];
211 g_kappa = ( *it )->helix()[2];
212 g_tanl = ( *it )->helix()[4];
213
214 g_dr = ( *it )->helix()[0];
215 g_dz = ( *it )->helix()[3];
216 g_chisq_of_fit = ( *it )->chi2();
217 g_phi_terminal = ( *it )->getFiTerm();
218 g_number_of_hits = ( *it )->getNhits();
219 g_number_of_stereo_hits = ( *it )->nster();
220 g_p = ( *it )->p();
221
222 g_px = ( *it )->px();
223 g_py = ( *it )->py();
224 g_pz = ( *it )->pz();
225 g_pxy = ( *it )->pxy();
226 g_charge = ( *it )->charge();
227 g_stat = ( *it )->stat();
228 g_x = ( *it )->x();
229 g_y = ( *it )->y();
230 g_z = ( *it )->z();
231 g_r = ( *it )->r();
232 g_chi2 = ( *it )->chi2();
233 g_ndof = ( *it )->ndof();
234 g_firstLayer = ( *it )->firstLayer();
235 g_lastLayer = ( *it )->lastLayer();
236
237 g_hits = 0;
238 HitRefVec gothits = ( *it )->getVecHits();
239 HitRefVec::iterator it_gothit = gothits.begin();
240 for ( ; it_gothit != gothits.end(); it_gothit++ )
241 {
242 g_hits_id = ( *it_gothit )->getId();
243
244 g_hits_ddl = ( *it_gothit )->getDriftDistLeft();
245 g_hits_ddr = ( *it_gothit )->getDriftDistRight();
246
247 g_doca = ( *it_gothit )->getDoca();
248 g_hits_mdc_id = ( *it_gothit )->getMdcId();
249 g_layer = MdcID::layer( ( *it_gothit )->getMdcId() );
250 g_wire = MdcID::wire( ( *it_gothit )->getMdcId() );
251
252 g_hits_tdc = ( *it_gothit )->getTdc();
253 g_hits_adc = ( *it_gothit )->getAdc();
254
255 g_hits++;
256 m_tuple2->write();
257 }
258
259 m_tuple1->write();
260 }
261 }
262 return StatusCode::SUCCESS;
263}
264
266
267 MsgStream log( msgSvc(), name() );
268 log << MSG::INFO << "Finalizing..." << endmsg;
269 return StatusCode::SUCCESS;
270}
DECLARE_COMPONENT(BesBdkRc)
int runNo
Definition DQA_TO_DB.cxx:13
int eventNo
INTupleSvc * ntupleSvc()
IMessageSvc * msgSvc()
static int layer(const Identifier &id)
Values of different levels (failure returns 0).
Definition MdcID.cxx:47
static int wire(const Identifier &id)
Definition MdcID.cxx:52
ValidRecMdcTrackAlg(const std::string &name, ISvcLocator *pSvcLocator)