BOSS 7.0.7
BESIII Offline Software System
Loading...
Searching...
No Matches
MucPID Class Reference

#include <MucPID.h>

+ Inheritance diagram for MucPID:

Public Member Functions

void init ()
 
void calculate ()
 
bool IsPidInfoValid () const
 
double chi (int n) const
 
double prob (int n) const
 
int ndof () const
 
double hits () const
 
double depth () const
 
double chi2 () const
 
double distance () const
 
double delta_phi () const
 
double val_muc1 () const
 
int neuronPID () const
 
- Public Member Functions inherited from ParticleIDBase
 ParticleIDBase ()
 
virtual ~ParticleIDBase ()
 
virtual void init ()=0
 
virtual void calculate ()=0
 
virtual bool IsPidInfoValid () const =0
 
virtual double chi (int n) const =0
 
virtual double prob (int n) const =0
 
virtual int ndof () const =0
 
EvtRecTrackPidTrk () const
 
void setRecTrack (EvtRecTrack *trk)
 
double chiMinCut () const
 
void setChiMinCut (const double chi=4)
 
double chiMaxCut () const
 
void setChiMaxCut (const double chi=6)
 
double pdfMinSigmaCut () const
 
void setPdfMinSigmaCut (const double pdf=4)
 
double getRunNo () const
 
void setRunNo (const double runh=8093)
 
double p ()
 
double pt ()
 
double charge ()
 
double xmass (int n)
 
double velc ()
 
double probCalculate (double chi2, int n)
 
double pdfCalculate (double offset, double sigma)
 
double interpolation (double *x, double *y, double x1)
 
double pol2 (double x, double *par)
 
double pol3 (double x, double *par)
 
double pol4 (double x, double *par)
 
int useDedx () const
 
int useTof () const
 
int useTof1 () const
 
int useTof2 () const
 
int useTofE () const
 
int useTofQ () const
 
int useTofC () const
 
int useTofCorr () const
 
int useEmc () const
 
int useMuc () const
 
int onlyPionKaon () const
 
int onlyPionKaonProton () const
 
int onlyPionKaonElectron () const
 
int all () const
 
int onlyElectron () const
 
int onlyMuon () const
 
int onlyPion () const
 
int onlyKaon () const
 
int onlyProton () const
 
int methodLikelihood () const
 
int methodProbability () const
 
int methodNeuronNetwork () const
 
int dedxValid () const
 
int tofValid () const
 
int tofeValid () const
 
int tofqValid () const
 
int tofcValid () const
 
int tofcorrValid () const
 
int emcValid () const
 
int mucValid () const
 
void set_path (const char *s_path=0)
 
void set_path (std::string s_path)
 

Static Public Member Functions

static MucPIDinstance ()
 

Protected Member Functions

int particleIDCalculation ()
 
int neuronPIDCalculation ()
 
int LikelihoodCalculation ()
 
virtual int particleIDCalculation ()=0
 
virtual int LikelihoodCalculation ()=0
 

Additional Inherited Members

- Static Protected Attributes inherited from ParticleIDBase
static std::string path = ""
 

Detailed Description

Definition at line 20 of file MucPID.h.

Member Function Documentation

◆ calculate()

void MucPID::calculate ( )
virtual

Implements ParticleIDBase.

Definition at line 101 of file MucPID.cxx.

101 {
102 if(particleIDCalculation() == 0) m_ndof = 1;
103}
int particleIDCalculation()
Definition: MucPID.cxx:105

◆ chi()

double MucPID::chi ( int  n) const
inlinevirtual

Implements ParticleIDBase.

Definition at line 29 of file MucPID.h.

29{return m_chi[n];}

◆ chi2()

double MucPID::chi2 ( ) const
inline

Definition at line 34 of file MucPID.h.

34{return m_chi2;}

Referenced by init().

◆ delta_phi()

double MucPID::delta_phi ( ) const
inline

Definition at line 36 of file MucPID.h.

36{return m_muc_delta_phi;}

◆ depth()

double MucPID::depth ( ) const
inline

Definition at line 33 of file MucPID.h.

33{return m_depth;}

Referenced by init().

◆ distance()

double MucPID::distance ( ) const
inline

Definition at line 35 of file MucPID.h.

35{return m_distance;}

Referenced by init().

◆ hits()

double MucPID::hits ( ) const
inline

Definition at line 32 of file MucPID.h.

32{return m_hits;}

Referenced by init().

◆ init()

void MucPID::init ( )
virtual

Implements ParticleIDBase.

Definition at line 67 of file MucPID.cxx.

67 {
68 for(int i = 0; i < 5; i++) {
69 m_chi[i] = 99.0;
70 m_prob[i] = -1.0;
71 }
72 m_chimin = 99.;
73 m_ndof = 0;
74 m_hits = -99;
75 m_depth = -999;
76 m_val_muc=-99;
77
78 std::string neural = path + "/share/neural.root";
79 std::string muc = path + "/share/muc.txt";
80 double ptrk,phi,theta,depth,hits,chi2,distance,muc_delta_phi;
81 int type;
82 if(!m_trainTree_muc) {
83 m_trainTree_muc = new TTree("m_trainTree_muc","m_trainTree_muc");
84 m_trainTree_muc->Branch("ptrk",&ptrk,"ptrk/D");
85 m_trainTree_muc->Branch("phi",&phi,"phi/D");
86 m_trainTree_muc->Branch("theta",&theta,"theta/D");
87 m_trainTree_muc->Branch("depth",&depth,"depth/D");
88 m_trainTree_muc->Branch("hits",&hits,"hits/D");
89 m_trainTree_muc->Branch("chi2",&chi2,"chi2/D");
90 m_trainTree_muc->Branch("distance",&distance,"distance/D");
91 m_trainTree_muc->Branch("muc_delta_phi",&muc_delta_phi,"muc_delta_phi/D");
92 m_trainTree_muc->Branch("type",&type,"type/I");
93 }
94 if(!m_mlp_muc) {
95 m_mlp_muc = new TMultiLayerPerceptron("@ptrk,@phi,@theta,@depth,@hits,@chi2,@distance,@muc_delta_phi:16:type",m_trainTree_muc);
96 m_mlp_muc->LoadWeights(muc.c_str());
97 }
98}
double distance() const
Definition: MucPID.h:35
double depth() const
Definition: MucPID.h:33
double chi2() const
Definition: MucPID.h:34
double hits() const
Definition: MucPID.h:32
static std::string path
float ptrk

Referenced by ParticleID::init().

◆ instance()

MucPID * MucPID::instance ( )
static

Definition at line 22 of file MucPID.cxx.

22 {
23
24 if(!m_pointer) m_pointer = new MucPID();
25 return m_pointer;
26}
Definition: MucPID.h:20

Referenced by ParticleID::init().

◆ IsPidInfoValid()

bool MucPID::IsPidInfoValid ( ) const
inlinevirtual

Implements ParticleIDBase.

Definition at line 28 of file MucPID.h.

28{return (m_ndof> 0);}

◆ LikelihoodCalculation()

int MucPID::LikelihoodCalculation ( )
inlineprotectedvirtual

Implements ParticleIDBase.

Definition at line 46 of file MucPID.h.

46{return -1;}

◆ ndof()

int MucPID::ndof ( ) const
inlinevirtual

Implements ParticleIDBase.

Definition at line 31 of file MucPID.h.

31{return m_ndof;}

◆ neuronPID()

int MucPID::neuronPID ( ) const
inline

Definition at line 39 of file MucPID.h.

39{return -1;}

◆ neuronPIDCalculation()

int MucPID::neuronPIDCalculation ( )
inlineprotected

Definition at line 45 of file MucPID.h.

45{return -1;}

◆ particleIDCalculation()

int MucPID::particleIDCalculation ( )
protectedvirtual

Implements ParticleIDBase.

Definition at line 105 of file MucPID.cxx.

105 {
106 int irc = -1;
107 EvtRecTrack* recTrk = PidTrk();
108 if(!(recTrk->isMdcTrackValid())) return irc;
109 RecMdcTrack* mdcTrk = recTrk->mdcTrack();
110
111 m_depth = -99;
112 m_hits = -99;
113 m_chi2 =-99;
114 m_distance =-99;
115 m_muc_delta_phi =-99;
116
117 double ptrk = mdcTrk->p();
118 double m_ptrk = ptrk;
119 double m_pt = mdcTrk->pxy();
120 double phi = mdcTrk->phi();
121 double theta = mdcTrk->theta();
122 double cost = cos(mdcTrk->theta());
123 if(ptrk<0.5) return irc;
124 if(fabs(cost)>0.83) return irc;
125 if(!(recTrk->isExtTrackValid())) return irc;
126 RecExtTrack* extTrk = recTrk->extTrack();
127 if(extTrk->mucVolumeNumber() == -1) return irc;
128 if (!(recTrk->isMucTrackValid())) return irc;
129 RecMucTrack* mucTrk = recTrk->mucTrack();
130
131 // if(mucTrk->maxHitsInLayer()< 0) return irc;
132 if(mucTrk->depth()>100000) return irc;
133
134 m_hits = mucTrk->maxHitsInLayer();
135 m_depth = mucTrk->depth();
136 m_distance = mucTrk->distance();
137 m_chi2 = mucTrk->chi2();
138 /* Hep3Vector phi_muc;
139 phi_muc.set(mucTrk->xPos(),mucTrk->yPos(),0);
140 Hep3Vector phi_mdc;
141 phi_mdc.set(mdcTrk->px(),mdcTrk->py(),0);
142 m_muc_delta_phi = phi_muc.angle(phi_mdc);
143 if(m_muc_delta_phi<0) m_muc_delta_phi = -m_muc_delta_phi; */
144 m_muc_delta_phi= mucTrk->deltaPhi();
145 m_muc_delta_phi=3.14159-m_muc_delta_phi;
146 theta = cos(theta);
147 params_muc1[0] = m_ptrk;
148 params_muc1[1] = phi;
149 params_muc1[2] = theta;
150 params_muc1[3] = m_depth;
151 params_muc1[4] = m_hits;
152 params_muc1[5] = m_chi2;
153 params_muc1[6] = m_distance;
154 params_muc1[7] = m_muc_delta_phi;
155
156 m_val_muc = m_mlp_muc->Evaluate(0,params_muc1);
157 if(m_pt<0) m_pt = -m_pt;
158 int pindex = int((m_ptrk-0.5)/0.1);
159 int bindex = int((m_val_muc-0.5)/0.01);
160 if(bindex>300||bindex<0) return irc;
161 if(pindex>11) pindex=11;
162 if(pindex<0) pindex=0;
163 m_prob[0] = m_p_h[pindex][bindex];;
164 m_prob[1] = m_m_h[pindex][bindex];
165 m_prob[2] = m_p_h[pindex][bindex];
166 m_prob[3] = m_p_h[pindex][bindex];
167 m_prob[4] = m_p_h[pindex][bindex];
168 for(int i =0; i<5; i++) {
169 if(m_prob[i]==0) m_prob[i] = 0.001;
170 }
171 float ppp[5];
172 for(int i =0; i<5; i++) {
173 ppp[i] = 0.0;
174 }
175
176 for(int j=0; j<bindex; j++) {
177 ppp[1]+= m_m_h[pindex][j]*0.01;
178 ppp[2]+= m_p_h[pindex][j]*0.01;
179 }
180 if(ppp[1]>0&&ppp[1]<1)
181 CALG(ppp[1],m_chi[1]);
182 if(ppp[2]>0&&ppp[2]<1)
183 CALG(ppp[2],m_chi[2]);
184 if(ppp[1]<=0||ppp[1]>=1)
185 m_chi[1]=-99;
186 if(ppp[2]<=0||ppp[2]>=1)
187 m_chi[2]=-99;
188
189 m_chi[3]=m_chi[2];
190 m_chi[4]=m_chi[2];
191 m_chi[0] =m_chi[2];
192 m_ndof = 1;
193 irc = 0;
194 return irc;
195}
double cos(const BesAngle a)
Definition: BesAngle.h:213
NTuple::Item< double > m_pt
Definition: MdcHistItem.h:76
void CALG(double Px, double &e2)
Definition: calg.cxx:31
const int mucVolumeNumber() const
Definition: DstExtTrack.h:160
const double theta() const
Definition: DstMdcTrack.h:59
const double phi() const
Definition: DstMdcTrack.h:60
const double pxy() const
Definition: DstMdcTrack.h:54
const double p() const
Definition: DstMdcTrack.h:58
double deltaPhi() const
Definition: DstMucTrack.h:63
int maxHitsInLayer() const
Definition: DstMucTrack.h:43
double distance() const
Definition: DstMucTrack.h:62
double depth() const
Definition: DstMucTrack.h:45
double chi2() const
Definition: DstMucTrack.h:46
RecMucTrack * mucTrack()
Definition: EvtRecTrack.h:59
bool isExtTrackValid()
Definition: EvtRecTrack.h:49
RecExtTrack * extTrack()
Definition: EvtRecTrack.h:56
bool isMucTrackValid()
Definition: EvtRecTrack.h:48
bool isMdcTrackValid()
Definition: EvtRecTrack.h:43
RecMdcTrack * mdcTrack()
Definition: EvtRecTrack.h:53
EvtRecTrack * PidTrk() const

Referenced by calculate().

◆ prob()

double MucPID::prob ( int  n) const
inlinevirtual

Implements ParticleIDBase.

Definition at line 30 of file MucPID.h.

30{return m_prob[n];}

◆ val_muc1()

double MucPID::val_muc1 ( ) const
inline

Definition at line 37 of file MucPID.h.

37{return m_val_muc;}

The documentation for this class was generated from the following files: