BOSS 7.1.2
BESIII Offline Software System
Loading...
Searching...
No Matches
DedxCalibEvent.cxx
Go to the documentation of this file.
1#include "GaudiKernel/MsgStream.h"
2#include "GaudiKernel/StatusCode.h"
3#include "GaudiKernel/INTupleSvc.h"
4#include "GaudiKernel/SmartDataPtr.h"
5
15#include "Identifier/MdcID.h"
16
18#include "EventModel/Event.h"
21
22#include <TMath.h>
23
25DECLARE_COMPONENT(DedxCalibEvent)
26
27typedef std::vector<int> Vint;
28
29using namespace std;
30using CLHEP::HepVector;
31static int evt_count(0), evt_threshold(0);
32
33DedxCalibEvent::DedxCalibEvent(const std::string& name, ISvcLocator* pSvcLocator): DedxCalib(name, pSvcLocator) {
34 //Declare the properties
35 declareProperty("CutWire", cut_wire=-1);
36 declareProperty("Count", m_count=1000000);
37 declareProperty("Gap", m_gap=1);
38}
39
40
42{
43 MsgStream log(msgSvc(), name());
44 log << MSG::INFO << "DedxCalibEvent::initializing()" << endreq;
45
46 StatusCode status;
47 NTuplePtr nt1(ntupleSvc(),"FILE100/n103");
48 if ( nt1 )
49 m_nt1 = nt1;
50 else
51 {
52 m_nt1= ntupleSvc()->book("FILE100/n103",CLID_ColumnWiseTuple,"dEdx per track");
53 if ( m_nt1 )
54 {
55 status = m_nt1->addItem("ptrk",m_ptrk);
56 status = m_nt1->addItem("ptrk_t",m_ptrk_t);
57 status = m_nt1->addItem("sintheta",m_sintheta);
58 status = m_nt1->addItem("costheta",m_costheta);
59 status = m_nt1->addItem("charge",m_charge);
60 status = m_nt1->addItem("runNO",m_runNO);
61 status = m_nt1->addItem("runFlag",m_runFlag);
62 status = m_nt1->addItem("evtNO",m_evtNO);
63 status = m_nt1->addItem("t0",m_t0);
64 status = m_nt1->addItem("trackId",m_trackId);
65 status = m_nt1->addItem("poca_x",m_poca_x);
66 status = m_nt1->addItem("poca_y",m_poca_y);
67 status = m_nt1->addItem("poca_z",m_poca_z);
68 status = m_nt1->addItem("recalg",m_recalg);
69 status = m_nt1->addItem("nhit",m_nhit);
70 status = m_nt1->addItem("nhits",m_nhits);
71 status = m_nt1->addItem("usedhit",m_usedhit);
72
73 status = m_nt1->addItem("ndedxhit",m_nphlisthit,0,100);
74 status = m_nt1->addIndexedItem("dEdx_hit",m_nphlisthit,m_dEdx_hit);
75 status = m_nt1->addIndexedItem("pathlength_hit",m_nphlisthit,m_pathlength_hit);
76 status = m_nt1->addIndexedItem("wid_hit",m_nphlisthit,m_wid_hit);
77 status = m_nt1->addIndexedItem("layid_hit",m_nphlisthit,m_layid_hit);
78 status = m_nt1->addIndexedItem("dd_in_hit",m_nphlisthit,m_dd_in_hit);
79 status = m_nt1->addIndexedItem("eangle_hit",m_nphlisthit,m_eangle_hit);
80 status = m_nt1->addIndexedItem("zhit_hit",m_nphlisthit,m_zhit_hit);
81
82 //status = m_nt1->addItem("dEdx_meas_hit", m_dEdx_meas_hit);
83 status = m_nt1->addItem("dEdx_meas", m_dEdx_meas);
84 //status = m_nt1->addItem("dEdx_meas_esat", m_dEdx_meas_esat);
85 //status = m_nt1->addItem("dEdx_meas_norun", m_dEdx_meas_norun);
86
87 status = m_nt1->addItem("type",m_parttype);
88 status = m_nt1->addItem("chidedx_e",m_chidedxe);
89 status = m_nt1->addItem("chidedx_mu",m_chidedxmu);
90 status = m_nt1->addItem("chidedx_pi",m_chidedxpi);
91 status = m_nt1->addItem("chidedx_k",m_chidedxk);
92 status = m_nt1->addItem("chidedx_p",m_chidedxp);
93 status = m_nt1->addItem("partid",5,m_probpid);
94 status = m_nt1->addItem("expectid",5,m_expectid);
95 status = m_nt1->addItem("sigmaid",5,m_sigmaid);
96 }
97 }
98
99 NTuplePtr nt2(ntupleSvc(),"FILE100/n102");
100 if ( nt2 ) m_nt2 = nt2;
101 else
102 {
103 m_nt2= ntupleSvc()->book("FILE100/n102",CLID_RowWiseTuple,"dE/dx per hit");
104 if ( m_nt2 )
105 {
106 status = m_nt2->addItem("charge",m_charge1);
107 status = m_nt2->addItem("adc_raw",m_phraw);
108 status = m_nt2->addItem("exraw",m_exraw);
109 status = m_nt2->addItem("runNO",m_runNO1);
110 status = m_nt2->addItem("evtNO",m_evtNO1);
111 status = m_nt2->addItem("runFlag",m_runFlag1);
112 status = m_nt2->addItem("wire",m_wire);
113 status = m_nt2->addItem("doca_in",m_doca_in);
114 status = m_nt2->addItem("doca_ex",m_doca_ex);
115 status = m_nt2->addItem("driftdist",m_driftdist);
116 status = m_nt2->addItem("eangle",m_eangle);
117 status = m_nt2->addItem("zhit",m_zhit);
118 status = m_nt2->addItem("costheta1",m_costheta1);
119 status = m_nt2->addItem("path_rphi",m_pathL);
120 status = m_nt2->addItem("layer",m_layer);
121 status = m_nt2->addItem("ptrk1",m_ptrk1);
122 status = m_nt2->addItem("ptrk_hit",m_ptrk_hit);
123 status = m_nt2->addItem("t01",m_t01);
124 status = m_nt2->addItem("tdc_raw",m_tdc_raw);
125 status = m_nt2->addItem("driftT",m_driftT);
126 status = m_nt2->addItem("localwid",m_localwid);
127 status = m_nt2->addItem("trackId1",m_trackId1);
128 }
129 }
130}
131
133{
134 MsgStream log(msgSvc(), name());
135 log << MSG::INFO << "DedxCalibEvent::genNtuple()" << endreq;
136
137 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
138 if (!eventHeader)
139 {
140 log << MSG::INFO << "Could not find Event Header" << endreq;
141 return;
142 }
143 int eventNO = eventHeader->eventNumber();
144 int runNO = eventHeader->runNumber();
145 // only save part of the events, in each cluster only m_count events saved, then jump with a gap
146 //std::cout << "eventNO " << eventNO << " evt_count " << evt_count << std::endl;
147 if(eventNO < evt_threshold) return;
148 evt_count ++;
149 if(evt_count == m_count){
150 evt_threshold = eventNO + m_gap;
151 evt_count = 0;
152 }
153 //std::cout << "evt_threshold " << evt_threshold << " evt_count " << evt_count << std::endl;
154
155
156 log << MSG::INFO << "now begin the event: runNO= "<<runNO<<" eventNO= "<< eventNO<< endreq;
157
158 int runFlag=0; //data type flag
159 if(runNO<RUN0) runFlag =0;
160 if(runNO>=RUN1 && runNO<RUN2) runFlag =1;
161 if(runNO>=RUN2 && runNO<RUN3) runFlag =2;
162 if(runNO>=RUN3 && runNO<RUN4) runFlag =3;
163 if(runNO>=RUN4 && runNO<RUN5) runFlag =4; //jpsi
164 if(runNO>=RUN5 && runNO<RUN6) runFlag =5; //psipp
165 if(runNO>=RUN6 && runNO<RUN7) runFlag =6; //psi4040, psip, jpsi...
166 if(runNO>=RUN7) runFlag =7; //psip
167
168 double tes = -999.0;
169 int esTimeflag = -1;
170 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
171 if( (!aevtimeCol) || (aevtimeCol->size()==0) ){
172 tes = -9999.0;
173 esTimeflag = -1;
174 }else{
175 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin();
176 for(; iter_evt!=aevtimeCol->end(); iter_evt++){
177 tes = (*iter_evt)->getTest();
178 esTimeflag = (*iter_evt)->getStat();
179 }
180 }
181 if(runFlag ==2) {if( tes>1000 ) return;}
182 else if(runFlag ==3 ){if (tes>700 ) return;}
183 else {if (tes>1400 ) return;}
184
185 SmartDataPtr<EvtRecEvent>evtRecEvent(eventSvc(),"/Event/EvtRec/EvtRecEvent");
186 if(!evtRecEvent){
187 log << MSG::ERROR << "EvtRecEvent not found" << endreq;
188 return ;
189 }
190
191 SmartDataPtr<EvtRecTrackCol>
192 evtRecTrkCol(eventSvc(), "/Event/EvtRec/EvtRecTrackCol");
193 if(!evtRecTrkCol){
194 log << MSG::ERROR << "EvtRecTrackCol" << endreq;
195 return ;
196 }
197
198
199 Vint iGood;
200 iGood.clear();
201 int nCharge = 0;
202 double db=0,dz=0,pt0=0,charge0=0;
203 for(int i = 0; i < evtRecEvent->totalCharged(); i++){
204 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i;
205 RecMdcDedx *it = (*itTrk)->mdcDedx();
206 if(it==0) continue;
207 HepVector a;
208 // if((*itTrk)->isMdcKalTrackValid()) cout << "mdckaltrack is valid" << endl;
209 // else cout << "mdckaltrack is not valid" << endl;
210
211 if((*itTrk)->isMdcKalTrackValid())
212 {
213 RecMdcKalTrack* trk = it->getMdcKalTrack();
214 if(ParticleFlag>-1&&ParticleFlag<5)
215 {
216 DstMdcKalTrack* dstTrk = trk;
217 a = dstTrk->getZHelix(ParticleFlag);
218 }
219 else
220 a = trk->getZHelix();
221 }
222 else if((*itTrk)->isMdcTrackValid())
223 {
224 RecMdcTrack* trk = it->getMdcTrack();
225 a = trk->helix();
226 }
227 else continue;
228 db = a[0];
229 dz = a[3];
230 pt0 = fabs(1.0/a[2]);
231 charge0 = ( a[2] > 0 )? 1 : -1;
232
233 //cout<<"db: "<<db<<" dz: "<<dz<<" pt0: "<<pt0<<" charge0: "<<charge0<<endl;
234 if(fabs(dz) >= VZ0CUT) continue;
235 if(db >= VR0CUT) continue;
236 if(pt0 >= PT0HighCut) continue;
237 if(pt0 <= PT0LowCut) continue;
238 iGood.push_back(it->trackId());
239 nCharge += charge0;
240 }
241
242
243 double poca_x=0,poca_y=0,poca_z=0;
244 float sintheta=0,costheta=0,ptrk=0,ptrk_t=0,charge=0,trackId=0;
245 int Nhit=0,usedhit=0,Nhits=0,Nphlisthit=0;
246 double dEdx_meas_hit=0, dEdx_meas=0,dEdx_meas_esat=0,dEdx_meas_norun=0;
247 double dEdx_hit[100]={0},pathlength_hit[100]={0},wid_hit[100]={0},layid_hit[100]={0},dd_in_hit[100]={0},eangle_hit[100]={0},zhit_hit[100]={0};
248 int trk_recalg = -1;
249 Identifier mdcid;
250
251 for(int i = 0; i < evtRecEvent->totalCharged(); i++){
252 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i;
253 RecMdcDedx *it = (*itTrk)->mdcDedx();
254 if(it==0) continue;
255 bool flag = false;
256 for(unsigned int i = 0; i < iGood.size(); i++)
257 {
258 if(it->trackId()==iGood[i]) flag=true;
259 }
260 if(flag==false) continue;
261
262 HepVector a;
263 HepSymMatrix tkErrM;
264 if((*itTrk)->isMdcKalTrackValid())
265 {
266 poca_x = it->getMdcKalTrack()->x(); //get poca, default pid is pion; change pid using setPidType();
267 poca_y = it->getMdcKalTrack()->y();
268 poca_z = it->getMdcKalTrack()->z();
269
270 RecMdcKalTrack* trk = it->getMdcKalTrack();
271 if(ParticleFlag>-1&&ParticleFlag<5)
272 {
273 DstMdcKalTrack* dstTrk = trk;
274 a = dstTrk->getFHelix(ParticleFlag);
275 tkErrM = dstTrk->getFError(ParticleFlag);
276 }
277 else
278 {
279 a = trk->getFHelix();
280 tkErrM = trk->getFError();
281 }
282 }
283 else if((*itTrk)->isMdcTrackValid())
284 {
285 poca_x = it->getMdcTrack()->x();
286 poca_y = it->getMdcTrack()->y();
287 poca_z = it->getMdcTrack()->z();
288
289 RecMdcTrack* trk = it->getMdcTrack();
290 a = trk->helix();
291 tkErrM = trk->err();
292 }
293 else continue;
294
295 sintheta = sin(M_PI_2 - atan(a[4]));
296 costheta = cos(M_PI_2 - atan(a[4]));
297 ptrk_t = 1.0/fabs( a[2] );
298 ptrk = ptrk_t*sqrt(1 + a[4]*a[4]);
299 charge = ( a[2] > 0 )? 1 : -1;
300
301 Nhit = it->numTotalHits(); //total hits on track used as sample;
302 Nhits = (it->getVecDedxHits()).size(); //dedx hits on this track, they are put in phlist if layid>3
303 usedhit = it->numGoodHits(); //hits after truncting phlist and used in cal dE/dx value;
304 trk_recalg = it->status();
305 trackId = it->trackId();
306
307 if(m_eventType == "isBhabha")
308 {
309 if(runFlag ==3 &&(ptrk>1.88 || ptrk<1.80)) continue;
310 if(runFlag ==4 &&(ptrk>1.72 || ptrk<1.45)) continue;
311 if(runFlag ==5 &&(ptrk>2.00 || ptrk<1.70)) continue;
312 if(runFlag ==6 &&(ptrk>1.90 || ptrk<1.00)) continue;
313 if(runFlag ==7 &&(ptrk>1.90 || ptrk<0.90)) continue;
314 if(abs(costheta)>0.9) continue;
315
316 if(Nhit<20) continue;
317 if(usedhit<6) continue;
318 }
319
320
321 int layid=0,localwid=0,w0id=0,wid=0,lr=0;
322 double p_hit=0,adc_raw=0,tdc_raw=0,zhit=0,driftd=0,driftD=0,driftT=0,dd_in=0,dd_ex=0,eangle=0;
323 double ph=0,pathlength=0,rphi_path=0;
324 long k=0;
325
326 DedxHitRefVec gothits = it->getVecDedxHits();
327 DedxHitRefVec::iterator it_gothit = gothits.begin();
328 for(;it_gothit!=gothits.end(); it_gothit++)
329 {
330 if((*it_gothit)->isMdcHitValid())
331 {
332 RecMdcHit* itor = (*it_gothit)->getMdcHit();
333 mdcid = itor->getMdcId();
334 layid = MdcID::layer(mdcid);
335 localwid = MdcID::wire(mdcid);
336 w0id = geosvc->Layer(layid)->Wirst();
337 wid = w0id + localwid;
338 adc_raw = itor->getAdc();
339 tdc_raw = itor->getTdc();
340 zhit = itor->getZhit();
341
342 lr = itor->getFlagLR();
343 if(lr == 2) cout<<"lr = "<<lr<<endl;
344 if(lr == 0 || lr == 2) driftD = itor->getDriftDistLeft();
345 else driftD = itor->getDriftDistRight();
346 driftd = abs(driftD);
347 dd_in = itor->getDoca();
348 dd_ex = itor->getDoca();
349 if(lr == 0 || lr == 2 ) {dd_in = -abs(dd_in);dd_ex = -abs(dd_ex);}
350 if(lr == 1 ) {dd_in = abs(dd_in);dd_ex = abs(dd_ex);}
351 driftT = itor->getDriftT();
352 eangle = itor->getEntra();
353 eangle = eangle/M_PI;
354 }
355 else if((*it_gothit)->isMdcKalHelixSegValid())
356 {
357 RecMdcKalHelixSeg* itor = (*it_gothit)->getMdcKalHelixSeg();
358 HepVector a_hit_in = itor->getHelixIncl();
359 p_hit = 1.0/fabs(a_hit_in(3))*sqrt(1+a_hit_in(5)*a_hit_in(5));
360
361 mdcid = itor->getMdcId();
362 layid = MdcID::layer(mdcid);
363 localwid = MdcID::wire(mdcid);
364 w0id = geosvc->Layer(layid)->Wirst();
365 wid = w0id + localwid;
366 adc_raw = itor->getAdc();
367 tdc_raw = itor->getTdc();
368 zhit = itor->getZhit();
369
370 lr = itor->getFlagLR();
371 if(lr == 2) cout<<"lr = "<<lr<<endl;
372 driftD = itor->getDD();
373 driftd = abs(driftD);
374 driftT = itor->getDT();
375 dd_in = itor->getDocaIncl(); //getDocaIncl() include fit unused hit
376 dd_ex = itor->getDocaExcl(); //getDocaExcl() exclude fit unused hit
377 if(lr==-1 || lr == 2) {dd_in = dd_in; dd_ex = dd_ex;}
378 else if(lr ==1) {dd_in = -dd_in; dd_ex = -dd_ex;}
379 eangle = itor->getEntra();
380 eangle = eangle/M_PI;
381 }
382 else continue;
383
384 pathlength=(*it_gothit)->getPathLength();
385 rphi_path=pathlength*sintheta;
386 ph = (*it_gothit)->getDedx();
387 if(layid>3)
388 {
389 dEdx_hit[k]=adc_raw;
390 pathlength_hit[k]=pathlength;
391 wid_hit[k]=wid;
392 layid_hit[k]=layid;
393 dd_in_hit[k]=dd_in;
394 eangle_hit[k]=eangle;
395 zhit_hit[k]=zhit;
396
397 k++;
398 }
399
400 //cout<<"begin to Fill Ntuple n102!!!!!!!!!"<<endl;
401 m_charge1 = charge;
402 m_t01 = tes;
403 m_driftT = driftT;
404 m_tdc_raw = tdc_raw;
405 m_phraw = adc_raw;
406 m_exraw = ph;
407 m_localwid = localwid;
408 m_wire = wid;
409 m_runNO1 = runNO;
410 m_evtNO1 = eventNO;
411 m_runFlag1 = runFlag;
412 m_doca_in = dd_in;
413 m_doca_ex = dd_ex;
414 m_driftdist = driftD;
415 m_eangle = eangle;
416 m_zhit = zhit;
417 m_costheta1 = costheta;
418 m_pathL = pathlength;
419 m_layer = layid;
420 m_ptrk1 = ptrk;
421 m_ptrk_hit = p_hit;
422 m_trackId1 = trackId;
423 StatusCode status;
424 if(cut_wire>0){ if(cut_wire == m_wire) status = m_nt2->write(); }
425 else status = m_nt2->write();
426 if ( status.isFailure() )
427 log << MSG::ERROR << "Cannot fill Ntuple n102" << endreq;
428 }
429
430 Nphlisthit = k; //dedx hits on this track, exclude the first 3 layers
431 dEdx_meas = it->probPH();
432 dEdx_meas_esat = it->getDedxEsat();
433 dEdx_meas_norun = it->getDedxNoRun();
434 dEdx_meas_hit = it->getDedxHit();
435
436 //cout<<"begin to Fill Ntuple n103!!!!!!!"<<endl;
437 m_poca_x = poca_x;
438 m_poca_y = poca_y;
439 m_poca_z = poca_z;
440 m_ptrk_t=ptrk_t;
441 m_ptrk=ptrk;
442 m_sintheta=sintheta;
443 m_costheta=costheta;
444 m_charge=charge;
445 m_runNO = runNO;
446 m_runFlag = runFlag;
447 m_evtNO = eventNO;
448 m_t0 = tes;
449 m_trackId = trackId;
450 m_recalg = trk_recalg;
451
452 m_nhit=Nhit;
453 m_nhits=Nhits;
454 m_nphlisthit=Nphlisthit;
455 m_usedhit=usedhit;
456 for(int j=0; j<Nphlisthit; j++)
457 {
458 m_dEdx_hit[j]=dEdx_hit[j];
459 m_pathlength_hit[j]=pathlength_hit[j];
460 m_wid_hit[j]=wid_hit[j];
461 m_layid_hit[j]=layid_hit[j];
462 m_dd_in_hit[j]=dd_in_hit[j];
463 m_eangle_hit[j]=eangle_hit[j];
464 m_zhit_hit[j]=zhit_hit[j];
465 }
466
467 //m_dEdx_meas_hit = dEdx_meas_hit;
468 m_dEdx_meas = dEdx_meas;
469 //m_dEdx_meas_esat = dEdx_meas_esat;
470 //m_dEdx_meas_norun = dEdx_meas_norun;
471
472 m_parttype = it->particleId();
473 m_chidedxe=it->chiE();
474 m_chidedxmu=it->chiMu();
475 m_chidedxpi=it->chiPi();
476 m_chidedxk=it->chiK();
477 m_chidedxp=it->chiP();
478 for(int i=0;i<5;i++)
479 {
480 m_probpid[i]= it->getPidProb(i);
481 m_expectid[i]= it->getDedxExpect(i);
482 m_sigmaid[i]= it->getSigmaDedx(i);
483 }
484 StatusCode status;
485 if(cut_wire<0) status = m_nt1->write();
486 if ( status.isFailure() )
487 {
488 log << MSG::ERROR << "Cannot fill Ntuple n103" << endreq;
489 }
490 }
491 //cout<<"track iteration ended!!!!!!!!!!"<<endl;
492}
double sin(const BesAngle a)
Definition BesAngle.h:210
double cos(const BesAngle a)
Definition BesAngle.h:213
static int evt_threshold(0)
const long int RUN5
const double VZ0CUT
const double PT0HighCut
const long int RUN6
const long int RUN2
const long int RUN7
const long int RUN1
const long int RUN4
const double VR0CUT
const double PT0LowCut
const long int RUN3
const long int RUN0
EvtRecTrackCol::iterator EvtRecTrackIterator
std::vector< int > Vint
Definition Gam4pikp.cxx:52
SmartRefVector< RecMdcDedxHit > DedxHitRefVec
Definition RecMdcDedx.h:27
INTupleSvc * ntupleSvc()
IMessageSvc * msgSvc()
#define M_PI
Definition TConstant.h:4
int ParticleFlag
Definition DedxCalib.h:50
IMdcGeomSvc * geosvc
Definition DedxCalib.h:29
std::string m_eventType
Definition DedxCalib.h:53
double probPH() const
Definition DstMdcDedx.h:66
double chiE() const
Definition DstMdcDedx.h:59
int particleId() const
Definition DstMdcDedx.h:33
int numTotalHits() const
Definition DstMdcDedx.h:65
int numGoodHits() const
Definition DstMdcDedx.h:64
int status() const
Definition DstMdcDedx.h:56
double chiPi() const
Definition DstMdcDedx.h:61
double chiK() const
Definition DstMdcDedx.h:62
double chiMu() const
Definition DstMdcDedx.h:60
int trackId() const
Definition DstMdcDedx.h:32
double chiP() const
Definition DstMdcDedx.h:63
const double y() const
const HepVector & getZHelix(const int pid) const
const HepSymMatrix & getFError(const int pid) const
const HepVector & getFHelix(const int pid) const
const double z() const
const double x() const
const HepSymMatrix err() const
const HepVector helix() const
......
const double z() const
Definition DstMdcTrack.h:63
const double y() const
Definition DstMdcTrack.h:62
const double x() const
Definition DstMdcTrack.h:61
virtual const MdcGeoLayer *const Layer(unsigned id)=0
int Wirst(void) const
static int layer(const Identifier &id)
Values of different levels (failure returns 0)
Definition MdcID.cxx:49
static int wire(const Identifier &id)
Definition MdcID.cxx:54
RecMdcKalTrack * getMdcKalTrack(void)
Definition RecMdcDedx.h:73
double getDedxNoRun(void)
Definition RecMdcDedx.h:65
DedxHitRefVec getVecDedxHits() const
Definition RecMdcDedx.h:61
double getPidProb(int pid) const
Definition RecMdcDedx.h:70
RecMdcTrack * getMdcTrack(void)
Definition RecMdcDedx.h:72
double getDedxEsat(void)
Definition RecMdcDedx.h:64
double getSigmaDedx(int pid) const
Definition RecMdcDedx.h:69
double getDedxExpect(int pid) const
Definition RecMdcDedx.h:68
double getDedxHit(void)
Definition RecMdcDedx.h:63
const int getFlagLR(void) const
Definition RecMdcHit.h:47
const double getZhit(void) const
Definition RecMdcHit.h:55
const double getAdc(void) const
Definition RecMdcHit.h:51
const Identifier getMdcId(void) const
Definition RecMdcHit.h:49
const double getTdc(void) const
Definition RecMdcHit.h:50
const double getDriftDistRight(void) const
Definition RecMdcHit.h:43
const double getDriftT(void) const
Definition RecMdcHit.h:52
const double getEntra(void) const
Definition RecMdcHit.h:54
const double getDriftDistLeft(void) const
Definition RecMdcHit.h:42
const double getDoca(void) const
Definition RecMdcHit.h:53
Identifier getMdcId(void) const
int getFlagLR(void) const
HepVector & getHelixIncl(void)
double getEntra(void) const
double getDD(void) const
double getDocaIncl(void) const
double getDocaExcl(void) const
double getTdc(void) const
double getZhit(void) const
double getDT(void) const
double getAdc(void) const
const HepVector & getZHelix() const
const HepSymMatrix & getFError() const
const HepVector & getFHelix() const
float costheta
float charge
float dEdx_meas
float ptrk
float dEdx_hit[100]