MdcDedxTrk Class Reference

#include <MdcDedxTrk.h>

List of all members.

Public Member Functions

 MdcDedxTrk (RecMdcTrack &trk)
 MdcDedxTrk (RecMdcKalTrack &trk_kal, int pid)
 MdcDedxTrk ()
 ~MdcDedxTrk ()
void set_ExTrk (RecMdcTrack &trk)
void set_ExTrk_Kal (RecMdcKalTrack &trk_kal, int pid)
double cal_dedx (float)
double cal_dedx_bitrunc (float, int, int &)
double cal_dedx_median (float)
double cal_dedx_geometric (float)
double cal_dedx_geometric_trunc (float)
double cal_dedx_harmonic (float)
double cal_dedx_harmonic_trunc (float)
double cal_dedx_transform (int)
double cal_dedx_log (float, int)
double SpaceChargeCorrec (double, double, int, double)
void set_dEdx (int l, float dEdx_meas, int trkalg, int runflag, int vflag[3], double t0, vector< double > &DedxCurve_Parameter, vector< double > &DedxSigma_Parameter, MdcDedxCorrection *)
void set_phlist (const vector< double > &phlist)
void set_phlist_hit (const vector< double > &phlist)
void setVecDedxHits (const DedxHitRefVec &vecdedxhit)
vector< double > get_phlist (void)
vector< double > get_phlist_hit (void)
DedxHitRefVec getVecDedxHits () const
RecMdcTracktrk_ptr () const
RecMdcKalTracktrk_ptr_kal () const
int stat () const
int trk_id () const
int nsample () const
int quality () const
double dedx () const
int charge () const
double P () const
double theta () const
double phi () const
double Pt () const
double expect (int pid) const
double exp_sigma (int pid) const
double prob (int pid) const
double chi_dedx (int pid) const
double * pexpect ()
double * pexp_sigma ()
double * pprob ()
double * pchi_dedx ()

Private Attributes

double dedx_exp [5]
double ex_sigma [5]
double pid_prob [5]
double chi_ex [5]
double m_dEdx
float m_truncate
RecMdcTrackm_trk
RecMdcKalTrackm_trk_kal
int m_stat
int m_trk_id
int m_quality
int m_charge
float m_P
double m_theta
double m_phi
int m_nsample
double m_pl_rp
vector< double > m_phlist
vector< double > m_phlist_hit
DedxHitRefVec m_vecdedxhit


Detailed Description

Definition at line 21 of file MdcDedxTrk.h.


Constructor & Destructor Documentation

MdcDedxTrk::MdcDedxTrk ( RecMdcTrack trk  ) 

Definition at line 43 of file MdcDedxTrk.cxx.

References m_charge, m_dEdx, m_nsample, m_P, m_phi, m_pl_rp, m_quality, m_stat, m_theta, m_trk, m_trk_id, m_trk_kal, m_truncate, and set_ExTrk().

00044 {
00045     m_trk = 0;
00046     m_trk_kal = 0;
00047     m_stat = -1;
00048     m_trk_id = 0;
00049     m_quality = -99;
00050     m_charge = 0;
00051     m_P = 0; 
00052     m_theta = 0;
00053     m_phi = 0; 
00054     m_pl_rp = 0;
00055     m_nsample = 0;
00056     m_dEdx = 0; 
00057     m_truncate = 0.7;
00058 
00059     set_ExTrk( trk );
00060 #ifdef DEBUG
00061     std::cout<<"MdcDedxTrk(2) constructed!"<<std::endl;
00062 #endif   
00063 }

MdcDedxTrk::MdcDedxTrk ( RecMdcKalTrack trk_kal,
int  pid 
)

Definition at line 65 of file MdcDedxTrk.cxx.

References m_charge, m_dEdx, m_nsample, m_P, m_phi, m_pl_rp, m_quality, m_stat, m_theta, m_trk, m_trk_id, m_trk_kal, m_truncate, and set_ExTrk_Kal().

00066 { 
00067     m_trk = 0;
00068     m_trk_kal = 0;
00069     m_stat = -1;
00070     m_trk_id = 0;
00071     m_quality = -99;
00072     m_charge = 0;
00073     m_P = 0; 
00074     m_theta = 0;
00075     m_phi = 0; 
00076     m_pl_rp = 0;
00077     m_nsample = 0;
00078     m_dEdx = 0; 
00079     m_truncate = 0.7;
00080 
00081     set_ExTrk_Kal( trk_kal, pid ); 
00082 #ifdef DEBUG 
00083     std::cout<<"MdcDedxTrk(2) kal constructed!"<<std::endl;
00084 #endif 
00085 } 

MdcDedxTrk::MdcDedxTrk (  ) 

Definition at line 14 of file MdcDedxTrk.cxx.

References chi_ex, dedx_exp, ex_sigma, m_charge, m_dEdx, m_nsample, m_P, m_phi, m_pl_rp, m_quality, m_stat, m_theta, m_trk, m_trk_id, m_trk_kal, m_truncate, and pid_prob.

00015 {
00016     m_trk = 0;
00017     m_trk_kal = 0;
00018     m_stat = -1;
00019     m_trk_id = 0;
00020     m_quality = -99;
00021     m_charge = 0;
00022     m_P = 0;
00023     m_theta = 0;
00024     m_phi = 0;
00025     m_pl_rp = 0;
00026     m_nsample = 0;
00027 
00028     m_dEdx = 0;
00029     m_truncate = 1;
00030     for( unsigned a = 0; a < 5 ; a++ )
00031     {
00032         dedx_exp[a]=0.0;
00033         ex_sigma[a]=0.0;
00034         pid_prob[a]=0.0;
00035         chi_ex[a]=999.0;
00036     }
00037 
00038 #ifdef DEBUG   
00039     std::cout<<"MdcDedxTrk(1) constructed!"<<std::endl;
00040 #endif   
00041 }

MdcDedxTrk::~MdcDedxTrk (  ) 

Definition at line 87 of file MdcDedxTrk.cxx.

00088 {
00089 #ifdef DEBUG   
00090     std::cout<<"MdcDedxTrk destructed!!!"<<std::endl;
00091 #endif   
00092 }


Member Function Documentation

double MdcDedxTrk::cal_dedx ( float   ) 

Definition at line 153 of file MdcDedxTrk.cxx.

References genRecEmupikp::i, m_phlist, and m_truncate.

00154 {
00155     m_truncate = truncate;
00156     sort(m_phlist.begin(),m_phlist.end());
00157     int nsampl = (int)( m_phlist.size()*truncate );
00158     double qSum = 0;
00159     unsigned int i = 0;
00160     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++)
00161     {
00162         i++;
00163         if(i<= nsampl) qSum += (*ql);
00164     }
00165 
00166     float trunc=qSum/nsampl;
00167     return trunc;
00168     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00169 }

double MdcDedxTrk::cal_dedx_bitrunc ( float  ,
int  ,
int &   
)

Definition at line 171 of file MdcDedxTrk.cxx.

References genRecEmupikp::i, m_phlist, and m_truncate.

00172 {
00173     m_truncate = truncate;
00174     sort(m_phlist.begin(),m_phlist.end());
00175     int nsampl = (int)( m_phlist.size()*truncate );
00176     int smpl = (int)(m_phlist.size()*(truncate+0.05));
00177     int min_cut = (int)( m_phlist.size()*0.05 + 0.5 );
00178     double qSum = 0;
00179     unsigned i = 0;
00180     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++)
00181     {
00182         i++;
00183         if(i<= smpl && i>=min_cut ) qSum += (*ql);
00184     }
00185     double trunc=-99;
00186     usedhit = smpl-min_cut+1;
00187     if(usedhit>0)  trunc=qSum/usedhit;
00188 
00189     return trunc;
00190     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00191 }

double MdcDedxTrk::cal_dedx_geometric ( float   ) 

Definition at line 207 of file MdcDedxTrk.cxx.

References m_phlist.

00208 {
00209     sort(m_phlist.begin(),m_phlist.end());
00210 
00211     int nsampl = m_phlist.size();
00212     double qSum = 1.0;
00213     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++){
00214         qSum *= (*ql);
00215     }
00216 
00217     double trunc = pow(qSum,1/double(nsampl));
00218     return trunc;
00219     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00220 }

double MdcDedxTrk::cal_dedx_geometric_trunc ( float   ) 

Definition at line 222 of file MdcDedxTrk.cxx.

References genRecEmupikp::i, m_phlist, and m_truncate.

00223 {
00224     m_truncate = truncate;
00225     sort(m_phlist.begin(),m_phlist.end());
00226     int nsampl = (int)( m_phlist.size()*truncate );
00227     double qSum = 1.0;
00228     unsigned i = 0;
00229     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++){
00230         i++;
00231         if(  i<= nsampl )
00232           qSum *= (*ql);
00233     }
00234 
00235     double trunc = pow(qSum,1/double(nsampl));
00236     return trunc;
00237 
00238     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00239 }

double MdcDedxTrk::cal_dedx_harmonic ( float   ) 

Definition at line 241 of file MdcDedxTrk.cxx.

References m_phlist.

00242 {
00243     sort(m_phlist.begin(),m_phlist.end());
00244 
00245     int nsampl = m_phlist.size();
00246     double qSum = 0;
00247     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++){
00248         qSum += 1/(*ql);
00249     }
00250 
00251     float trunc=nsampl/qSum;
00252     return trunc;
00253     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00254 }

double MdcDedxTrk::cal_dedx_harmonic_trunc ( float   ) 

Definition at line 256 of file MdcDedxTrk.cxx.

References genRecEmupikp::i, m_phlist, and m_truncate.

00257 {
00258     m_truncate = truncate;
00259     sort(m_phlist.begin(),m_phlist.end());
00260     int nsampl = (int)( m_phlist.size()*truncate );
00261     double qSum = 0;
00262     unsigned i = 0;
00263     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++){
00264         i++;
00265         if(  i<= nsampl )
00266           qSum += 1/(*ql);
00267     }
00268 
00269     float trunc= nsampl/qSum;
00270     return trunc;
00271     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00272 }

double MdcDedxTrk::cal_dedx_log ( float  ,
int   
)

Definition at line 291 of file MdcDedxTrk.cxx.

References genRecEmupikp::i, and m_phlist.

00292 {
00293     double qSum = 0;
00294     unsigned i = 0;
00295     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++){
00296         i++;
00297         qSum += log(*ql);
00298     }
00299 
00300     float trunc=qSum/m_phlist.size();
00301     return trunc;
00302     std::cout<<"MdcDedxTrk::cal_dedx_log()!!!"<<std::endl;
00303 }

double MdcDedxTrk::cal_dedx_median ( float   ) 

Definition at line 193 of file MdcDedxTrk.cxx.

References m_phlist, and nsample().

00194 {
00195     sort(m_phlist.begin(),m_phlist.end());
00196 
00197     int nsample = m_phlist.size();
00198     double median;   
00199     if( fmod(double(nsample),2.0) ) {   
00200         median = m_phlist[(nsample-1)/2];
00201     } else {
00202         median= 0.5*( m_phlist[nsample/2] + m_phlist[nsample/2-1] );
00203     }
00204     return median;
00205 }

double MdcDedxTrk::cal_dedx_transform ( int   ) 

Definition at line 274 of file MdcDedxTrk.cxx.

References m_phlist.

00275 {
00276     sort(m_phlist.begin(),m_phlist.end());
00277 
00278     int nsampl = m_phlist.size();
00279     double qSum = 0;
00280     for(vector<double>::iterator ql= m_phlist.begin();ql!=m_phlist.end();ql++){
00281         qSum += 1/sqrt(*ql);
00282     }
00283 
00284     float trunc=1/qSum;
00285 
00286     return trunc;
00287     std::cout<<"MdcDedxTrk::cal_dedx()!!!"<<std::endl;
00288 }

int MdcDedxTrk::charge (  )  const [inline]

Definition at line 63 of file MdcDedxTrk.h.

References m_charge.

00063 {return m_charge;}

double MdcDedxTrk::chi_dedx ( int  pid  )  const [inline]

Definition at line 122 of file MdcDedxTrk.h.

References chi_ex.

00123 {
00124     if( pid >= 0 && pid < 5 ) return chi_ex[pid];
00125     else return -1;
00126 }

double MdcDedxTrk::dedx (  )  const [inline]

Definition at line 62 of file MdcDedxTrk.h.

References m_dEdx.

00062 {return m_dEdx;}

double MdcDedxTrk::exp_sigma ( int  pid  )  const [inline]

Definition at line 110 of file MdcDedxTrk.h.

References ex_sigma.

00111 {
00112     if( pid >= 0 && pid < 5 ) return ex_sigma[pid];
00113     else return -1;
00114 }

double MdcDedxTrk::expect ( int  pid  )  const [inline]

Definition at line 104 of file MdcDedxTrk.h.

References dedx_exp.

00105 {
00106     if( pid >= 0 && pid < 5 ) return dedx_exp[pid];
00107     else return -1;
00108 }

vector<double> MdcDedxTrk::get_phlist ( void   )  [inline]

Definition at line 49 of file MdcDedxTrk.h.

References m_phlist.

00049 {return m_phlist;}

vector<double> MdcDedxTrk::get_phlist_hit ( void   )  [inline]

Definition at line 50 of file MdcDedxTrk.h.

References m_phlist_hit.

00050 {return m_phlist_hit;}

DedxHitRefVec MdcDedxTrk::getVecDedxHits (  )  const [inline]

Definition at line 51 of file MdcDedxTrk.h.

References m_vecdedxhit.

00051 {return m_vecdedxhit;}

int MdcDedxTrk::nsample (  )  const [inline]

Definition at line 60 of file MdcDedxTrk.h.

References m_nsample.

Referenced by cal_dedx_median(), and set_dEdx().

00060 {return m_nsample;}

double MdcDedxTrk::P (  )  const [inline]

Definition at line 64 of file MdcDedxTrk.h.

References m_P.

00064 {return m_P;}

double* MdcDedxTrk::pchi_dedx (  )  [inline]

Definition at line 75 of file MdcDedxTrk.h.

References chi_ex.

00075 {return chi_ex;}  

double* MdcDedxTrk::pexp_sigma (  )  [inline]

Definition at line 73 of file MdcDedxTrk.h.

References ex_sigma.

00073 {return ex_sigma;}

double* MdcDedxTrk::pexpect (  )  [inline]

Definition at line 72 of file MdcDedxTrk.h.

References dedx_exp.

00072 {return dedx_exp;}

double MdcDedxTrk::phi ( void   )  const [inline]

Definition at line 66 of file MdcDedxTrk.h.

References m_phi.

00066 {return m_phi;}

double* MdcDedxTrk::pprob (  )  [inline]

Definition at line 74 of file MdcDedxTrk.h.

References pid_prob.

00074 {return pid_prob;}   

double MdcDedxTrk::prob ( int  pid  )  const [inline]

Definition at line 116 of file MdcDedxTrk.h.

References pid_prob.

00117 {
00118     if( pid >= 0 && pid < 5 ) return pid_prob[pid];
00119     else return -1;
00120 }

double MdcDedxTrk::Pt (  )  const [inline]

Definition at line 67 of file MdcDedxTrk.h.

References m_P, m_theta, and sin().

00067 {return m_P*std::sin(m_theta);}

int MdcDedxTrk::quality (  )  const [inline]

Definition at line 61 of file MdcDedxTrk.h.

References m_quality.

00061 {return m_quality;}

void MdcDedxTrk::set_dEdx ( int  l,
float  dEdx_meas,
int  trkalg,
int  runflag,
int  vflag[3],
double  t0,
vector< double > &  DedxCurve_Parameter,
vector< double > &  DedxSigma_Parameter,
MdcDedxCorrection  
)

Definition at line 307 of file MdcDedxTrk.cxx.

References chi_ex, dedx_exp, MdcDedxCorrection::dedx_pid_exp(), MdcDedxCorrection::dedx_pid_exp_old(), ex_sigma, m_dEdx, m_P, m_phlist, m_pl_rp, m_theta, m_truncate, nsample(), and pid_prob.

00308 {
00309 #ifdef DEBUG
00310     cout<<"in MdcDedxTrk::set_dEdx()  landau: "<<landau<<"  dedx:  "<<dEdx<<" nsample(): "<<nsample()<<"  ph size: "<<m_phlist.size()<<"  m_P: "<<m_P<<"  theta: "<<m_theta<<"  pl-rp: "<<m_pl_rp<<endl;
00311 #endif   
00312 
00313     m_dEdx = dEdx;
00314     int dedxhit_use = (int)(m_phlist.size()*m_truncate);  
00315 
00316     //some old data with od methods
00317     if(runflag ==1 || runflag ==2 )
00318       ex_calib->dedx_pid_exp_old( landau, runflag, (float)dEdx, (int)dedxhit_use,
00319                   (float)m_P, (float)m_theta, (float)t0,(float)m_pl_rp,
00320                   dedx_exp, ex_sigma, pid_prob, chi_ex);
00321     //for 2009 psip data and after
00322     else
00323       ex_calib->dedx_pid_exp( vflag, (float)dEdx, trkalg,(int)dedxhit_use,
00324                   (float)m_P, (float)m_theta, (float)t0,(float)m_pl_rp,
00325                   dedx_exp, ex_sigma, pid_prob, chi_ex, DedxCurve_Parameter, DedxSigma_Parameter); 
00326 
00327 #ifdef DEBUG
00328     std::cout<<"MdcDedxTrk::set_dEdx()!!!"<<std::endl;
00329 #endif   
00330 }

void MdcDedxTrk::set_ExTrk ( RecMdcTrack trk  ) 

Definition at line 94 of file MdcDedxTrk.cxx.

References chi_ex, dedx_exp, ex_sigma, RecMdcTrack::getNhits(), DstMdcTrack::helix(), m_charge, m_nsample, m_P, m_phi, m_pl_rp, m_quality, m_stat, m_theta, m_trk, m_trk_id, pid_prob, DstMdcTrack::stat(), and DstMdcTrack::trackId().

Referenced by MdcDedxTrk().

00095 {
00096     for( unsigned a = 0; a < 5 ; a++ )
00097     {
00098         dedx_exp[a]=0.0;
00099         ex_sigma[a]=0.0;
00100         pid_prob[a]=0.0;
00101         chi_ex[a]=0.0;
00102     }
00103     m_stat = 1;
00104     m_trk = &trk;
00105     m_trk_id = trk.trackId();
00106     m_quality = trk.stat();
00107 
00108     m_charge = ( trk.helix(2) > 0 )? 1 : -1;
00109     float m_Pt = 1.0/fabs( trk.helix(2) );
00110     m_P = m_Pt*sqrt(1 + trk.helix(4)*trk.helix(4));
00111     m_theta = M_PI_2 - atan( trk.helix(4) );
00112     m_phi = ( trk.helix(1) < 3*M_PI_2 )? trk.helix(1)+M_PI_2 : trk.helix(1)-3*M_PI_2;
00113     m_nsample = trk.getNhits();
00114     m_pl_rp = 1.5;
00115     //cout<<"set_ExTrk: "<<trk.helix(0)<<"  "<<trk.helix(1)<<"  "<<trk.helix(2)<<"  "<<trk.helix(3)<<"  "<<trk.helix(4)<<endl;
00116 
00117 #ifdef DEBUG     
00118     std::cout<<"MdcDedxTrk::set_ExTrk(&trk)!!!"<<std::endl;
00119 #endif
00120 }

void MdcDedxTrk::set_ExTrk_Kal ( RecMdcKalTrack trk_kal,
int  pid 
)

Definition at line 122 of file MdcDedxTrk.cxx.

References chi_ex, dedx_exp, ex_sigma, DstMdcKalTrack::getFHelix(), RecMdcKalTrack::getNhits(), DstMdcKalTrack::getStat(), m_charge, m_nsample, m_P, m_phi, m_pl_rp, m_quality, m_stat, m_theta, m_trk_id, m_trk_kal, pid_prob, and DstMdcKalTrack::trackId().

Referenced by MdcDedxTrk().

00123 {
00124     DstMdcKalTrack* dstTrk = &trk_kal;
00125     for( unsigned a = 0; a < 5 ; a++ )
00126     {
00127         dedx_exp[a]=0.0;
00128         ex_sigma[a]=0.0;
00129         pid_prob[a]=0.0;
00130         chi_ex[a]=0.0;
00131     }      
00132     if(pid<0 || pid>4) pid = 2;
00133     m_stat = 1;
00134     m_trk_kal = &trk_kal;
00135     m_trk_id = trk_kal.trackId();
00136     m_quality = dstTrk->getStat(pid);
00137 
00138     HepVector kal_helix = dstTrk->getFHelix(pid);
00139     m_charge = ( kal_helix[2] > 0 )? 1 : -1;
00140     float m_Pt = 1.0/fabs( kal_helix[2] );
00141     m_P = m_Pt*sqrt(1 + kal_helix[4]*kal_helix[4]);
00142     m_theta = M_PI_2 - atan( kal_helix[4] );
00143     m_phi = ( kal_helix[1] < 3*M_PI_2 )? kal_helix[1]+M_PI_2 : kal_helix[1]-3*M_PI_2;
00144     m_nsample = trk_kal.getNhits(pid);
00145     m_pl_rp = 1.5;
00146     //cout<<"set_ExTrk_Kal: "<<kal_helix[0]<<"  "<<kal_helix[1]<<"  "<<kal_helix[2]<<"  "<<kal_helix[3]<<"  "<<kal_helix[4]<<endl;
00147 #ifdef DEBUG     
00148     std::cout<<"MdcDedxTrk::set_ExTrk_Kal(&trk_kal)!!!"<<std::endl;
00149 #endif
00150 }

void MdcDedxTrk::set_phlist ( const vector< double > &  phlist  )  [inline]

Definition at line 45 of file MdcDedxTrk.h.

References m_phlist.

Referenced by MdcDedxRecon::execute(), MdcDedxRecon::kaltrackrec(), and MdcDedxRecon::mdctrackrec().

00045 {m_phlist = phlist;}

void MdcDedxTrk::set_phlist_hit ( const vector< double > &  phlist  )  [inline]

Definition at line 46 of file MdcDedxTrk.h.

References m_phlist_hit.

Referenced by MdcDedxRecon::execute(), MdcDedxRecon::kaltrackrec(), and MdcDedxRecon::mdctrackrec().

00046 {m_phlist_hit = phlist;}

void MdcDedxTrk::setVecDedxHits ( const DedxHitRefVec vecdedxhit  )  [inline]

Definition at line 47 of file MdcDedxTrk.h.

References m_vecdedxhit.

Referenced by MdcDedxRecon::execute(), MdcDedxRecon::kaltrackrec(), and MdcDedxRecon::mdctrackrec().

00047 { m_vecdedxhit= vecdedxhit;} 

double MdcDedxTrk::SpaceChargeCorrec ( double  ,
double  ,
int  ,
double   
)

Definition at line 333 of file MdcDedxTrk.cxx.

References arg(), and cos().

Referenced by MdcDedxCorrection::dedx_pid_exp_old().

00334 {
00335     const int    par_cand( 5 );
00336     const float  Charge_Mass[par_cand] = {0.00051100, 0.10566, 0.13957, 0.4937, 0.93827 }; 
00337     double       beta_G;
00338     double e_Par[5] = {143.349, 1.7315, 0.192616, 2.90437, 1.08248};
00339     double Beta_Gamma[22] ={0.373026, 0.479605, 0.586184, 0.692763, 0.799342, 782.779, 1565.56,
00340         2348.34,  17.2727,  18.1245,  1.43297,  2.14946,  12.1803, 13.6132, 6.62515,  10.4109,  
00341         14.1967,  17.9825,  21.7683,  26.0274, 30.7596, 35.4919 }; 
00342     double K_par[22] ={4.64411e-05, 5.86544e-05, 8.05289e-05, 8.46981e-05, 8.92014e-05, 4.74517e-05, 
00343         4.51684e-05, 5.32732e-05, 6.12803e-05, 6.14592e-05, 8.08608e-05, 6.73184e-05, 5.46448e-05, 
00344         6.1377e-05,  6.57385e-05, 7.03053e-05, 6.61171e-05, 6.86824e-05, 6.246e-05,   7.25988e-05, 
00345         7.11034e-05, 6.24924e-05 };
00346     double D_par[22] ={0.0871504, 0.0956379, 0.117193,  0.118647,  0.127203, 0.0566449, 0.0529198,
00347         0.0642525, 0.0764562, 0.081341, 0.0952263, 0.0987536, 0.0639901, 0.0845994,0.0777062, 
00348         0.0823206, 0.0783874, 0.079537, 0.0815792, 0.0849875, 0.0824751,0.0776296 };
00349     double DSqr_par[22] = {0.00759519,  0.0091466,  0.0137341,  0.0140772,  0.0161807, 0.00320864,
00350         0.00280051, 0.00412839, 0.00584555, 0.00661636, 0.00906805, 0.00975227, 0.00409473, 
00351         0.00715706, 0.00603826, 0.00677668, 0.00614458, 0.00632613, 0.00665516, 0.00722288, 
00352         0.00680214, 0.00602635}; 
00353 
00354     beta_G = mom/Charge_Mass[Particle];
00355     if(beta_G <0.3) beta_G =0.3;
00356     double bet=beta_G/TMath::Sqrt(beta_G*beta_G+1);
00357     double fterm=TMath::Log(e_Par[2]+1/pow(beta_G,e_Par[4]));
00358     double fitval=e_Par[0]/pow(bet,e_Par[3])*(e_Par[1]-pow(bet,e_Par[3])-fterm);
00359     TGraphErrors *gr1 = new TGraphErrors(22,Beta_Gamma, K_par,0,0);
00360     TGraphErrors *gr2 = new TGraphErrors(22,Beta_Gamma, DSqr_par,0,0);
00361 
00362     double par[3];
00363     par[0] = fitval;
00364     par[1] = gr1->Eval(m_theta);
00365     par[2] = gr2->Eval(m_theta);
00366     Double_t y = fabs(cos(m_theta));
00367     double electron_par[3] ={334.032, 6.20658e-05, 0.00525673};
00368     double arg= TMath::Sqrt(y*y+ par[2]);
00369     //double cal_factor =par[0]*TMath::Exp(-(par[1]* par[0])/arg);
00370     double cal_factor =TMath::Exp(-(par[1]* par[0])/arg);
00371     double arg_electron = TMath::Sqrt(y*y + electron_par[2]);
00372     //double electron_factor = electron_par[0]*TMath::Exp(-(electron_par[1]* electron_par[0])/arg);
00373     double electron_factor = TMath::Exp(-(electron_par[1]* electron_par[0])/arg_electron);
00374     //cout<<"cal_factor = "<<cal_factor<<"         electron_factor = "<<electron_factor<<endl;
00375     double dedx_cal = dEdx/(cal_factor/electron_factor);
00376     //double dedx_cal = dEdx/cal_factor;
00377     //cout<<"m_theta= "<<m_theta<<"      y ="<<y<<"      beta_G  = "<<beta_G <<"     dEdx = "<<dEdx<<"     cal dedx = "<<dedx_cal<<endl;
00378     delete gr1;
00379     delete gr2;
00380     return dedx_cal;
00381 }

int MdcDedxTrk::stat (  )  const [inline]

Definition at line 57 of file MdcDedxTrk.h.

References m_stat.

00057 {return m_stat;}

double MdcDedxTrk::theta (  )  const [inline]

Definition at line 65 of file MdcDedxTrk.h.

References m_theta.

00065 {return m_theta;}

int MdcDedxTrk::trk_id (  )  const [inline]

Definition at line 58 of file MdcDedxTrk.h.

References m_trk_id.

Referenced by MdcDedxRecon::execute(), MdcDedxRecon::kaltrackrec(), and MdcDedxRecon::mdctrackrec().

00058 {return m_trk_id;}

RecMdcTrack* MdcDedxTrk::trk_ptr (  )  const [inline]

Definition at line 53 of file MdcDedxTrk.h.

References m_trk.

00053 {return m_trk;}   

RecMdcKalTrack* MdcDedxTrk::trk_ptr_kal (  )  const [inline]

Definition at line 54 of file MdcDedxTrk.h.

References m_trk_kal.

00054 {return m_trk_kal;}


Member Data Documentation

double MdcDedxTrk::chi_ex[5] [private]

Definition at line 81 of file MdcDedxTrk.h.

Referenced by chi_dedx(), MdcDedxTrk(), pchi_dedx(), set_dEdx(), set_ExTrk(), and set_ExTrk_Kal().

double MdcDedxTrk::dedx_exp[5] [private]

Definition at line 78 of file MdcDedxTrk.h.

Referenced by expect(), MdcDedxTrk(), pexpect(), set_dEdx(), set_ExTrk(), and set_ExTrk_Kal().

double MdcDedxTrk::ex_sigma[5] [private]

Definition at line 79 of file MdcDedxTrk.h.

Referenced by exp_sigma(), MdcDedxTrk(), pexp_sigma(), set_dEdx(), set_ExTrk(), and set_ExTrk_Kal().

int MdcDedxTrk::m_charge [private]

Definition at line 91 of file MdcDedxTrk.h.

Referenced by charge(), MdcDedxTrk(), set_ExTrk(), and set_ExTrk_Kal().

double MdcDedxTrk::m_dEdx [private]

Definition at line 82 of file MdcDedxTrk.h.

Referenced by dedx(), MdcDedxTrk(), and set_dEdx().

int MdcDedxTrk::m_nsample [private]

Definition at line 95 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), nsample(), set_ExTrk(), and set_ExTrk_Kal().

float MdcDedxTrk::m_P [private]

Definition at line 92 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), P(), Pt(), set_dEdx(), set_ExTrk(), and set_ExTrk_Kal().

double MdcDedxTrk::m_phi [private]

Definition at line 94 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), phi(), set_ExTrk(), and set_ExTrk_Kal().

vector<double> MdcDedxTrk::m_phlist [private]

Definition at line 98 of file MdcDedxTrk.h.

Referenced by cal_dedx(), cal_dedx_bitrunc(), cal_dedx_geometric(), cal_dedx_geometric_trunc(), cal_dedx_harmonic(), cal_dedx_harmonic_trunc(), cal_dedx_log(), cal_dedx_median(), cal_dedx_transform(), get_phlist(), set_dEdx(), and set_phlist().

vector<double> MdcDedxTrk::m_phlist_hit [private]

Definition at line 99 of file MdcDedxTrk.h.

Referenced by get_phlist_hit(), and set_phlist_hit().

double MdcDedxTrk::m_pl_rp [private]

Definition at line 96 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), set_dEdx(), set_ExTrk(), and set_ExTrk_Kal().

int MdcDedxTrk::m_quality [private]

Definition at line 90 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), quality(), set_ExTrk(), and set_ExTrk_Kal().

int MdcDedxTrk::m_stat [private]

Definition at line 87 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), set_ExTrk(), set_ExTrk_Kal(), and stat().

double MdcDedxTrk::m_theta [private]

Definition at line 93 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), Pt(), set_dEdx(), set_ExTrk(), set_ExTrk_Kal(), and theta().

RecMdcTrack* MdcDedxTrk::m_trk [private]

Definition at line 85 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), set_ExTrk(), and trk_ptr().

int MdcDedxTrk::m_trk_id [private]

Definition at line 88 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), set_ExTrk(), set_ExTrk_Kal(), and trk_id().

RecMdcKalTrack* MdcDedxTrk::m_trk_kal [private]

Definition at line 86 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), set_ExTrk_Kal(), and trk_ptr_kal().

float MdcDedxTrk::m_truncate [private]

Definition at line 83 of file MdcDedxTrk.h.

Referenced by cal_dedx(), cal_dedx_bitrunc(), cal_dedx_geometric_trunc(), cal_dedx_harmonic_trunc(), MdcDedxTrk(), and set_dEdx().

DedxHitRefVec MdcDedxTrk::m_vecdedxhit [private]

Definition at line 100 of file MdcDedxTrk.h.

Referenced by getVecDedxHits(), and setVecDedxHits().

double MdcDedxTrk::pid_prob[5] [private]

Definition at line 80 of file MdcDedxTrk.h.

Referenced by MdcDedxTrk(), pprob(), prob(), set_dEdx(), set_ExTrk(), and set_ExTrk_Kal().


Generated on Tue Nov 29 23:20:11 2016 for BOSS_7.0.2 by  doxygen 1.4.7