#include <LocalPionSelector.h>
Inheritance diagram for LocalPionSelector:
Public Member Functions | |
LocalPionSelector () | |
bool | operator() (CDChargedPion &aPion) |
void | setpidtype (int type) |
virtual bool | operator() (Arg &)=0 |
bool | operator() (Arg &iArg) const |
Private Member Functions | |
LocalPionSelector (const LocalPionSelector &) | |
const LocalPionSelector & | operator= (const LocalPionSelector &) |
Private Attributes | |
int | m_pidtype |
double | m_VrCut |
double | m_VzCut |
double | m_CosThetaCut |
bool | m_useSimplePID |
bool | m_useDedx |
bool | m_useTof1 |
bool | m_useTof2 |
bool | m_useTofE |
bool | m_useTofQ |
bool | m_useEmc |
bool | m_useMuc |
bool | m_probability |
double | m_PidProbCut |
bool | m_rejectKaon |
bool | m_rejectProton |
bool | m_likelihood |
bool | m_neuronNetwork |
std::vector< double > | m_neuronValCut |
Definition at line 7 of file LocalPionSelector.h.
LocalPionSelector::LocalPionSelector | ( | ) |
Definition at line 20 of file LocalPionSelector.cxx.
References m_CosThetaCut, m_likelihood, m_neuronNetwork, m_neuronValCut, m_PidProbCut, m_pidtype, m_probability, m_rejectKaon, m_rejectProton, m_useDedx, m_useEmc, m_useMuc, m_useSimplePID, m_useTof1, m_useTof2, m_useTofE, m_useTofQ, m_VrCut, and m_VzCut.
00021 { 00022 m_pidtype=0; 00023 00024 IJobOptionsSvc* jobSvc; 00025 Gaudi::svcLocator()->service("JobOptionsSvc", jobSvc); 00026 00027 PropertyMgr m_propMgr; 00028 00029 //Declare the properties 00030 m_propMgr.declareProperty("RxyCut", m_VrCut = 1.0); 00031 m_propMgr.declareProperty("Vz0Cut", m_VzCut = 10.0); 00032 m_propMgr.declareProperty("CosThetaCut", m_CosThetaCut = 0.93); 00033 00034 m_propMgr.declareProperty("useSimplePID", m_useSimplePID = true); 00035 00036 m_propMgr.declareProperty("PidUseDedx", m_useDedx = true); 00037 m_propMgr.declareProperty("PidUseTof1", m_useTof1 = true); 00038 m_propMgr.declareProperty("PidUseTof2", m_useTof2 = true); 00039 m_propMgr.declareProperty("PidUseTofE", m_useTofE = false); 00040 m_propMgr.declareProperty("PidUseTofQ", m_useTofQ = false); 00041 m_propMgr.declareProperty("PidUseEmc", m_useEmc = false); 00042 m_propMgr.declareProperty("PidUseMuc", m_useMuc = false); 00043 00044 m_propMgr.declareProperty("PidwithProbability", m_probability = true); 00045 m_propMgr.declareProperty("PidProbCut", m_PidProbCut = 0.001); 00046 m_propMgr.declareProperty("RejectKaon", m_rejectKaon = true); 00047 m_propMgr.declareProperty("RejectProton", m_rejectProton = false); 00048 00049 m_propMgr.declareProperty("PidwithLikelihood", m_likelihood = false); 00050 m_propMgr.declareProperty("PidwithNeuronNetwork", m_neuronNetwork = false); 00051 m_neuronValCut.clear(); 00052 m_neuronValCut.push_back(1.5); 00053 m_neuronValCut.push_back(2.5); 00054 m_propMgr.declareProperty("NeuronValue", m_neuronValCut); 00055 00056 jobSvc->setMyProperties("LocalPionSelector", &m_propMgr); 00057 }
LocalPionSelector::LocalPionSelector | ( | const LocalPionSelector & | ) | [private] |
bool DCSelectionFunction< Arg >::operator() | ( | Arg & | iArg | ) | const [inline, inherited] |
virtual bool DCSelectionFunction< Arg >::operator() | ( | Arg & | ) | [pure virtual, inherited] |
Implemented in DChain::DCSimpleSelector< Arg >, ChargedDSelector, DsSelector, LocalEptoPiPiEta3PiSelector, LocalEptoPiPiEtaSelector, LocalEptoRhoGamSelector, LocalEtatoGGSelector, LocalEtatoPiPiPi0Selector, LocalKsSelector, LocalPhotonSelector, LocalPi0Selector, LocalRhotoPiPiSelector, NeutralDSelector, and UserPi0Cut.
bool LocalPionSelector::operator() | ( | CDChargedPion & | aPion | ) |
Definition at line 59 of file LocalPionSelector.cxx.
References VFHelix::a(), DstMdcKalTrack::charge(), cos(), RecMdcKalTrack::getZError(), RecMdcKalTrack::getZHelix(), ParticleID::instance(), EvtRecTrack::isMdcKalTrackValid(), ISimplePIDSvc::ispion(), IVertexDbSvc::isVertexValid(), m_CosThetaCut, m_pidtype, m_useSimplePID, m_VrCut, m_VzCut, EvtRecTrack::mdcKalTrack(), pid, DstMdcKalTrack::pion, VFHelix::pivot(), ISimplePIDSvc::preparePID(), IVertexDbSvc::PrimaryVertex(), DstMdcKalTrack::setPidType(), CDCandidate::setUserTag(), IVertexDbSvc::SigmaPrimaryVertex(), DstMdcKalTrack::theta(), CDChargedVisible< H >::track(), and CDCandidate::userTag().
00059 { 00060 00061 aPion.setUserTag(1); 00062 EvtRecTrack* recTrk = const_cast<EvtRecTrack*>( aPion.track() ); 00063 00064 00065 // MDC track selection 00066 00067 RecMdcKalTrack::setPidType(RecMdcKalTrack::pion); 00068 if ( !recTrk->isMdcKalTrackValid() ) return false; 00069 RecMdcKalTrack* mdcKalTrk = recTrk->mdcKalTrack(); 00070 if ( mdcKalTrk->charge()==0 ) return false; 00071 00072 Hep3Vector xorigin(0,0,0); 00073 IVertexDbSvc* vtxsvc; 00074 Gaudi::svcLocator()->service("VertexDbSvc", vtxsvc); 00075 if(vtxsvc->isVertexValid()){ 00076 double* dbv = vtxsvc->PrimaryVertex(); 00077 double* vv = vtxsvc->SigmaPrimaryVertex(); 00078 xorigin.setX(dbv[0]); 00079 xorigin.setY(dbv[1]); 00080 xorigin.setZ(dbv[2]); 00081 } 00082 HepVector a = mdcKalTrk->getZHelix(); 00083 HepSymMatrix Ea = mdcKalTrk->getZError(); 00084 HepPoint3D point0(0.,0.,0.); 00085 HepPoint3D IP(xorigin[0],xorigin[1],xorigin[2]); 00086 VFHelix helixip3(point0,a,Ea); 00087 helixip3.pivot(IP); 00088 HepVector vecipa = helixip3.a(); 00089 00090 double dr=fabs(vecipa[0]); 00091 double dz=fabs(vecipa[3]); 00092 double costheta=cos(mdcKalTrk->theta()); 00093 if ( dr>= m_VrCut ) return false; 00094 if ( dz>= m_VzCut ) return false; 00095 if ( fabs(costheta) >= m_CosThetaCut ) return false; 00096 00097 00098 if(m_useSimplePID){ 00099 // PID 00100 ISimplePIDSvc* m_simplePIDSvc; 00101 Gaudi::svcLocator()->service("SimplePIDSvc", m_simplePIDSvc); 00102 m_simplePIDSvc->preparePID(recTrk); 00103 if( !m_simplePIDSvc->ispion() ){ 00104 aPion.setUserTag(2); 00105 } 00106 } 00107 else{ 00108 //particleID pacakge 00109 ParticleID *pid = ParticleID::instance(); 00110 pid->init(); 00111 pid->setMethod(pid->methodProbability()); 00112 pid->setChiMinCut(4); 00113 pid->setRecTrack(recTrk); 00114 pid->usePidSys(pid->useDedx() | pid->useTof1() | pid->useTof2() | pid->useTof() ); 00115 pid->identify(pid->onlyPion() | pid->onlyKaon()); 00116 pid->calculate(); 00117 00118 if( !(pid->probPion()>0 && pid->probPion()>pid->probKaon()) ) 00119 aPion.setUserTag(2); 00120 00121 } 00122 00123 if(m_pidtype==0) return true; 00124 00125 if(aPion.userTag()==1) 00126 return true; 00127 else 00128 return false; 00129 00130 }
const LocalPionSelector& LocalPionSelector::operator= | ( | const LocalPionSelector & | ) | [private] |
void LocalPionSelector::setpidtype | ( | int | type | ) | [inline] |
Definition at line 14 of file LocalPionSelector.h.
References m_pidtype.
Referenced by NeutralDReconstruction::execute(), DsReconstruction::execute(), and ChargedDReconstruction::execute().
double LocalPionSelector::m_CosThetaCut [private] |
Definition at line 26 of file LocalPionSelector.h.
Referenced by LocalPionSelector(), and operator()().
bool LocalPionSelector::m_likelihood [private] |
bool LocalPionSelector::m_neuronNetwork [private] |
std::vector<double> LocalPionSelector::m_neuronValCut [private] |
double LocalPionSelector::m_PidProbCut [private] |
int LocalPionSelector::m_pidtype [private] |
Definition at line 21 of file LocalPionSelector.h.
Referenced by LocalPionSelector(), operator()(), and setpidtype().
bool LocalPionSelector::m_probability [private] |
bool LocalPionSelector::m_rejectKaon [private] |
bool LocalPionSelector::m_rejectProton [private] |
bool LocalPionSelector::m_useDedx [private] |
bool LocalPionSelector::m_useEmc [private] |
bool LocalPionSelector::m_useMuc [private] |
bool LocalPionSelector::m_useSimplePID [private] |
Definition at line 28 of file LocalPionSelector.h.
Referenced by LocalPionSelector(), and operator()().
bool LocalPionSelector::m_useTof1 [private] |
bool LocalPionSelector::m_useTof2 [private] |
bool LocalPionSelector::m_useTofE [private] |
bool LocalPionSelector::m_useTofQ [private] |
double LocalPionSelector::m_VrCut [private] |
Definition at line 24 of file LocalPionSelector.h.
Referenced by LocalPionSelector(), and operator()().
double LocalPionSelector::m_VzCut [private] |
Definition at line 25 of file LocalPionSelector.h.
Referenced by LocalPionSelector(), and operator()().