BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Mdc/MdcRecEvent/include/MdcRecEvent/RecMdcDedx.h
Go to the documentation of this file.
1/*
2 * @class : MdcDedx
3 *
4 * this class models "dE/dx" used in Mdc Reconstruction
5 *
6 * @author: wangdy
7 *
8 * ********************************************************/
9
10#ifndef RECMDCDEDX_H
11#define RECMDCDEDX_H
12#include "EventModel/EventModel.h"
13#include "GaudiKernel/ContainedObject.h"
14#include "GaudiKernel/ObjectVector.h"
15#include "GaudiKernel/SmartRef.h"
16#include "GaudiKernel/SmartRefVector.h"
17#include "RecMdcDedxHit.h"
18#include "RecMdcKalTrack.h"
19#include "RecMdcTrack.h"
20
21// #include "Identifier/Identifier.h"
22// #include "ExtEvent/ExtTrack.h"
23#include "DstEvent/DstMdcDedx.h"
24
25extern const CLID& CLID_RecMdcDedx;
26typedef SmartRefVector<RecMdcDedxHit> DedxHitRefVec;
27
28class RecMdcDedx : virtual public DstMdcDedx {
29
30public:
31 virtual const CLID& clID() const { return RecMdcDedx::classID(); }
32
33 static const CLID& classID() { return CLID_RecMdcDedx; }
34
35 // ctor and dector
37 RecMdcDedx( const RecMdcDedx& dedxtrk );
38 RecMdcDedx( const DstMdcDedx& dedxtrk );
41
43 // extractors
44 // int getId(void) const { return m_id; }
45 // int getPid(void) const { return m_pid; }
46 // int getStat(void) const { return m_stat; }
47 // int getNHits(void) const { return m_nhits; }
48 // float getDedx(void) const { return m_dedx; }
49 // float getDedxStd(void) const { return m_dedx_std; }
50 // int getBitrunc(void) const { return m_bitrunc; }
51
52 bool isMdcTrackValid( void ) { return ( m_mdcTrack != 0 ); }
53 bool isMdcKalTrackValid( void ) { return ( m_mdcKalTrack != 0 ); }
54
55 DedxHitRefVec getVecDedxHits() const { return m_vecdedxhit; }
56
57 double getDedxHit( void ) { return m_dedx_hit; }
58 double getDedxEsat( void ) { return m_dedx_esat; }
59 double getDedxNoRun( void ) { return m_dedx_norun; }
60 double getDedxMoment( void ) { return m_dedx_momentum; }
61
62 double getDedxExpect( int pid ) const { return m_dedx_exp[pid]; }
63 double getSigmaDedx( int pid ) const { return m_sigma_dedx[pid]; }
64 double getPidProb( int pid ) const { return m_pid_prob[pid]; }
65 // double getChi(int pid) const { return m_chi[pid]; }
66 RecMdcTrack* getMdcTrack( void ) { return m_mdcTrack; }
67 RecMdcKalTrack* getMdcKalTrack( void ) { return m_mdcKalTrack; }
68
69 // modifiers
70 void setVecDedxHits( const DedxHitRefVec& vecdedxhit ) { m_vecdedxhit = vecdedxhit; }
71
72 void setDedxHit( double dedx_hit ) { m_dedx_hit = dedx_hit; }
73 void setDedxEsat( double dedx_esat ) { m_dedx_esat = dedx_esat; }
74 void setDedxNoRun( double dedx_norun ) { m_dedx_norun = dedx_norun; }
75 void setDedxMoment( double dedx_momentum ) { m_dedx_momentum = dedx_momentum; }
76 // void setId(int id) { m_id = id; }
77 // void setPid(int pid) { m_pid = pid; }
78 // void setStat(int stat) { m_stat = stat; }
79 // void setNHits(int nhits) { m_nhits = nhits; }
80 // void setDedx(float dedx) { m_dedx = dedx; }
81 // void setDedxStd(float dedx_std) { m_dedx_std = dedx_std; }
82 // void setBitrunc(int bitrunc) { m_bitrunc = bitrunc; }
83
84 void setDedxExpect( double* dedx_exp ) {
85 for ( int i = 0; i < 5; i++ ) m_dedx_exp[i] = dedx_exp[i];
86 }
87 void setSigmaDedx( double* sigma_dedx ) {
88 for ( int i = 0; i < 5; i++ ) m_sigma_dedx[i] = sigma_dedx[i];
89 }
90 void setPidProb( double* pid_prob ) {
91 for ( int i = 0; i < 5; i++ ) m_pid_prob[i] = pid_prob[i];
92 }
93 /* void setChi(double* chi) {
94 for(int i = 0; i < 5; i++)
95 m_chi[i] = chi[i] ;
96 }
97 */
98 void setMdcTrack( RecMdcTrack* trk ) { m_mdcTrack = trk; }
99 void setMdcKalTrack( RecMdcKalTrack* trk ) { m_mdcKalTrack = trk; }
100
101private:
102 DedxHitRefVec m_vecdedxhit;
103
104 double m_dedx_hit{ 0.0 }; // double trucation mean of hit-level calib
105 double m_dedx_esat{ 0.0 }; // double trucation mean of hit-level+electron saturation calib
106 double m_dedx_norun{ 0.0 }; // double trucation mean of no run gain calib
107 double m_dedx_momentum{ 0.0 }; // dE/dx calib used momentum
108 // int m_bitrunc; //bitrunction rate
109 // int m_id;
110 // int m_pid; // partile id results
111 // int m_stat; // status flag
112 // int m_nhits; // number of hits used in dE/dx recon
113 // float m_dedx; // measured value of dE/dx
114 // float m_dedx_std; // normalized dE/dx;
115 double m_dedx_exp[5]{}; // expected value of dE/dx for 5 particle hypotheses
116 double m_sigma_dedx[5]{}; // sigma value of dE/dx for 5 particle hypotheses
117 double m_pid_prob[5]{}; // probability for each of the 5 particle hypotheses
118 // double m_chi[5]; // chi of dE/dx for each of 5 particle hypotheses
119 SmartRef<RecMdcTrack> m_mdcTrack; // reference to the track
120 SmartRef<RecMdcKalTrack> m_mdcKalTrack;
121};
122
123typedef ObjectVector<RecMdcDedx> RecMdcDedxCol;
124
125#endif
const CLID & CLID_RecMdcDedx
SmartRefVector< RecMdcDedxHit > DedxHitRefVec
SmartRefVector< RecMdcDedxHit > DedxHitRefVec
const CLID & CLID_RecMdcDedx
void setVecDedxHits(const DedxHitRefVec &vecdedxhit)
RecMdcDedx(const DstMdcDedx &dedxtrk)
RecMdcDedx & operator=(const RecMdcDedx &)
void setDedxMoment(double dedx_momentum)
RecMdcDedx(const RecMdcDedx &dedxtrk)
RecMdcDedx & operator=(const DstMdcDedx &)