#include <MdcxTrackFinder.h>
Definition at line 60 of file MdcxTrackFinder.h.
MdcxTrackFinder::MdcxTrackFinder | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 107 of file MdcxTrackFinder.cxx.
References m_addHitCut, m_countPropTime, m_cresol, m_csmax3, m_csmax4, m_d0Cut, m_debug, m_doSag, m_dropHitsSigma, m_dropHot, m_dropMultiHotInLayer, m_dropTrkPt, m_getDigiFlag, m_helixFitCut, m_helixFitSigma, m_hist, m_keepBadTdc, m_keepUnmatch, m_lineFit, m_maxMdcDigi, m_maxProca, m_maxRcsInAddSeg, m_mcHist, m_minMdcDigi, m_minTrkProb, m_nSigAddHitTrk, m_pdtFile, m_salvageTrk, and m_z0Cut.
00107 : 00108 Algorithm(name, pSvcLocator), m_mdcCalibFunSvc(0) 00109 { 00110 //input 00111 declareProperty("pdtFile", m_pdtFile = "pdt.table"); 00112 //debug control 00113 declareProperty("debug", m_debug= 0); 00114 declareProperty("hist", m_hist= 0); 00115 declareProperty("mcHist", m_mcHist = false); 00116 //cuts and control 00117 declareProperty("cresol", m_cresol = 0.013); 00118 00119 declareProperty("getDigiFlag", m_getDigiFlag = 0); 00120 declareProperty("maxMdcDigi", m_maxMdcDigi= 0); 00121 declareProperty("keepBadTdc", m_keepBadTdc= 0); 00122 declareProperty("dropHot", m_dropHot= 0); 00123 declareProperty("keepUnmatch", m_keepUnmatch= 0); 00124 declareProperty("salvageTrk", m_salvageTrk = false); 00125 declareProperty("dropMultiHotInLayer",m_dropMultiHotInLayer = false); 00126 declareProperty("dropTrkPt", m_dropTrkPt = -999.); 00127 declareProperty("d0Cut", m_d0Cut = 999.); 00128 declareProperty("z0Cut", m_z0Cut = 999.); 00129 00130 declareProperty("minMdcDigi", m_minMdcDigi = 0); 00131 declareProperty("countPropTime",m_countPropTime = true); 00132 declareProperty("addHitCut", m_addHitCut = 5.); 00133 declareProperty("dropHitsSigma",m_dropHitsSigma); 00134 declareProperty("helixFitCut", m_helixFitCut); 00135 declareProperty("minTrkProb", m_minTrkProb = 0.01); 00136 declareProperty("csmax4", m_csmax4 = 50.); 00137 declareProperty("csmax3", m_csmax3 = 1.); 00138 declareProperty("helixFitSigma",m_helixFitSigma= 5.); 00139 declareProperty("maxRcsInAddSeg",m_maxRcsInAddSeg= 50.); 00140 declareProperty("nSigAddHitTrk", m_nSigAddHitTrk= 5.); 00141 declareProperty("maxProca", m_maxProca= 0.6); 00142 declareProperty("doSag", m_doSag= false); 00143 declareProperty("lineFit", m_lineFit = false); 00144 //declareProperty("cosmicFit", m_cosmicFit= false); 00145 }
MdcxTrackFinder::~MdcxTrackFinder | ( | ) | [virtual] |
Definition at line 150 of file MdcxTrackFinder.cxx.
References m_bfield.
00150 { 00151 delete m_bfield; 00152 }
StatusCode MdcxTrackFinder::beginRun | ( | ) |
Definition at line 154 of file MdcxTrackFinder.cxx.
References MdcDetector::instance(), m_doSag, m_gm, and MdcxHit::setMdcDetector().
00154 { 00155 // Get Mdc Detector Geometry 00156 m_gm = MdcDetector::instance(m_doSag); 00157 if(NULL == m_gm) return StatusCode::FAILURE; 00158 MdcxHit::setMdcDetector(m_gm); 00159 00160 return StatusCode::SUCCESS; 00161 }
void MdcxTrackFinder::bookNTuple | ( | ) | [private] |
Definition at line 843 of file MdcxTrackFinder.cxx.
References calibUtil::ERROR, g_addHitCut, g_addHitCut2d, g_addSegPhi, g_csmax3, g_csmax4, g_dPhiAU, g_dPhiAU_0, g_dPhiAU_1, g_dPhiAU_5, g_dPhiAU_7, g_dPhiAV, g_dPhiAV_0, g_dPhiAV_1, g_dPhiAV_6, g_dPhiAV_8, g_dropHitsSigma, g_omegag, g_poison, g_trklappend1, g_trklappend2, g_trklappend3, g_trklcircle, g_trkld, g_trkldl, g_trkldoca, g_trkldrop1, g_trkldrop2, g_trkle, g_trklel, g_trklfirstProb, g_trklgood, g_trklhelix, g_trkllayer, g_trkllmk, g_trklproca, g_trkltemp, histoSvc(), m_addSegAddD0, m_addSegAddLen, m_addSegAddPhi, m_addSegAddPhi0, m_addSegAddPhiLay, m_addSegAddSl, m_addSegEvtNo, m_addSegLen, m_addSegPoca, m_addSegSame, m_addSegSeedD0, m_addSegSeedLen, m_addSegSeedPhi, m_addSegSeedPhi0, m_addSegSeedPhiLay, m_addSegSeedSl, m_addSegSlayer, m_csmcD0, m_csmcOmega, m_csmcPhi0, m_csmcPt, m_csmcTanl, m_csmcZ0, m_hist, m_segCombDLenAU, m_segCombDLenUV, m_segCombEvtNo, m_segCombOmega, m_segCombPhiA, m_segCombPhiU, m_segCombPhiV, m_segCombSameAU, m_segCombSameUV, m_segCombSlA, m_segCombSlU, m_segCombSlV, m_segDropHitsDoca, m_segDropHitsDrift, m_segDropHitsEvtNo, m_segDropHitsLayer, m_segDropHitsMcTkId, m_segDropHitsPull, m_segDropHitsSigma, m_segDropHitsWire, m_xact, m_xadc, m_xambig, m_xchi2, m_xcpa, m_xd0, m_xdoca, m_xdriftD, m_xdriftT, m_xentra, m_xevtNo, m_xfltLen, m_xlayer, m_xnAct, m_xnDof, m_xnHit, m_xnSlay, m_xnSt, m_xp, m_xphi0, m_xpocax, m_xpocay, m_xpocaz, m_xpt, m_xpz, m_xq, m_xresid, m_xsigma, m_xt0, m_xt0Stat, m_xt0Truth, m_xt4Charge, m_xt4EvtNo, m_xt4Layer, m_xt4nDigi, m_xt4nRecTk, m_xt4nTdsTk, m_xt4t0, m_xt4t0Stat, m_xt4t0Truth, m_xt4Time, m_xt4time, m_xt5Layer, m_xt5Wire, m_xtanl, m_xtdc, m_xtiming, m_xtkId, m_xtof, m_xtsChisq, m_xtsD0, m_xtsD0_sl_approx, m_xtsInSeg, m_xtsLayer, m_xtsNDigi, m_xtsOmega, m_xtsPat, m_xtsPhi0, m_xtsPhi0_sl_approx, m_xtsSl, m_xtsWire, m_xtsXline_bbrrf, m_xtsXline_slope, m_xtsYline_bbrrf, m_xtsYline_slope, m_xtuple1, m_xtupleAddSeg1, m_xtupleAddSeg2, m_xtupleCsmcSew, m_xtupleDropHits, m_xtupleEvt, m_xtupleSeg, m_xtupleSegComb, m_xtupleTrkl, m_xwire, m_xx, m_xy, m_xz, m_xz0, msgSvc(), and ntupleSvc().
Referenced by initialize().
00843 { 00844 MsgStream log(msgSvc(), name()); 00845 StatusCode sc; 00846 if(!m_hist) return; 00847 00848 g_poison = histoSvc()->book( "poison", "poison",43,0,42,288,0,288 ); 00849 g_csmax4 = histoSvc()->book( "csmax4", "csmax4",100,0,100 ); 00850 g_csmax3 = histoSvc()->book( "csmax3", "csmax3",50000,0,500000 ); 00851 g_omegag = histoSvc()->book( "omegag", "omegag",1000 ,0.,1.); 00852 g_dPhiAU = histoSvc()->book( "dPhiAU", "dPhiAU",1000 ,0.,3.5); 00853 g_dPhiAU_0 = histoSvc()->book( "dPhiAU_0", "dPhiAU_0",1000 ,0.,3.5); 00854 g_dPhiAU_1 = histoSvc()->book( "dPhiAU_1", "dPhiAU_1",1000 ,0.,3.5); 00855 g_dPhiAU_5 = histoSvc()->book( "dPhiAU_5", "dPhiAU_5",1000 ,0.,3.5); 00856 g_dPhiAU_7 = histoSvc()->book( "dPhiAU_7", "dPhiAU_7",1000 ,0.,3.5); 00857 g_dPhiAV = histoSvc()->book( "dPhiAV", "dPhiAV",1000 ,0.,3.5); 00858 g_addSegPhi = histoSvc()->book( "addSegPhi", "addSegPhi",1000 ,0.,3.5); 00859 g_dPhiAV_0 = histoSvc()->book( "dPhiAV_0", "dPhiAV_0",1000 ,0.,3.5); 00860 g_dPhiAV_1 = histoSvc()->book( "dPhiAV_1", "dPhiAV_1",1000 ,0.,3.5); 00861 g_dPhiAV_6 = histoSvc()->book( "dPhiAV_6", "dPhiAV_6",1000 ,0.,3.5); 00862 g_dPhiAV_8 = histoSvc()->book( "dPhiAV_8", "dPhiAV_8",1000 ,0.,3.5); 00863 g_trkllmk = histoSvc()->book( "trkllmk", "trkllmk",43,0.,42); 00864 g_trklgood = histoSvc()->book( "trklgood", "trklgood",43,0.,42); 00865 g_trklcircle = histoSvc()->book( "trklcircle", "trklcircle",43,0.,42); 00866 g_trklhelix= histoSvc()->book( "trklhelix", "trklhelix",43,0.,42); 00867 g_trkldrop1= histoSvc()->book( "trkldrop1", "trkldrop1",43,0.,42); 00868 g_trkldrop2= histoSvc()->book( "trkldrop2", "trkldrop2",43,0.,42); 00869 g_trklappend1= histoSvc()->book( "trklappend1", "trklappend1",43,0.,42); 00870 g_trklappend2= histoSvc()->book( "trklappend2", "trklappend2",43,0.,42); 00871 g_trklappend3= histoSvc()->book( "trklappend3", "trklappend3",43,0.,42); 00872 //g_fitOmega= histoSvc()->book( "fitOmega", "fitOmega",200,0.,100.); 00873 g_trklfirstProb= histoSvc()->book( "trklfirstProb", "trklfirstProb",200,0.,2.); 00874 g_trkltemp= histoSvc()->book( "trkltemp", "trkltemp",200,-3.5,3.5); 00875 00876 g_trklproca= histoSvc()->book( "trklproca", "trklproca",100,0.,5.); 00877 g_trkle= histoSvc()->book( "trkle", "trkle",200,0.,0.025); 00878 g_trkld= histoSvc()->book( "trkld", "trkld",200,-1.2,1.2); 00879 g_trklel= histoSvc()->book( "trklel", "trklel",200,0.,0.025,43,0,43); 00880 g_trkldl= histoSvc()->book( "trkldl", "trkldl",200,-1.2,1.2,43,0,43); 00881 g_trkldoca= histoSvc()->book( "trkldoca", "trkldoca",200,-1.2,1.2); 00882 g_trkllayer= histoSvc()->book( "trkllayer", "trkllayer",43,0,43); 00883 g_dropHitsSigma= histoSvc()->book( "dropHitsSigma", "dropHitsSigma",43,0,43,100,0,11); 00884 g_addHitCut= histoSvc()->book( "addHitCut", "addHitCut",100,0,10); 00885 g_addHitCut2d= histoSvc()->book( "addHitCut2d", "addHitCut2d",43,0,43,100,0,10); 00886 //g_addSegPhiDiff = histoSvc()->book( "addSegPhiDiff", "addSegPhiDiff",100,-6.28,6.28); 00887 00888 NTuplePtr nt1(ntupleSvc(), "MdcxReco/rec"); 00889 if ( nt1 ) { m_xtuple1 = nt1;} 00890 else { 00891 m_xtuple1 = ntupleSvc()->book ("MdcxReco/rec", CLID_ColumnWiseTuple, "MdcxReco reconsturction results"); 00892 if ( m_xtuple1 ) { 00893 sc = m_xtuple1->addItem ("t0", m_xt0); 00894 sc = m_xtuple1->addItem ("timing", m_xtiming); 00895 sc = m_xtuple1->addItem ("t0Stat", m_xt0Stat); 00896 sc = m_xtuple1->addItem ("t0Truth", m_xt0Truth); 00897 00898 sc = m_xtuple1->addItem ("nSlay", m_xnSlay); 00899 sc = m_xtuple1->addItem ("p", m_xp); 00900 sc = m_xtuple1->addItem ("pt", m_xpt); 00901 sc = m_xtuple1->addItem ("pz", m_xpz); 00902 sc = m_xtuple1->addItem ("d0", m_xd0); 00903 sc = m_xtuple1->addItem ("phi0", m_xphi0); 00904 sc = m_xtuple1->addItem ("cpa", m_xcpa); 00905 sc = m_xtuple1->addItem ("z0", m_xz0); 00906 sc = m_xtuple1->addItem ("tanl", m_xtanl); 00907 sc = m_xtuple1->addItem ("q", m_xq); 00908 sc = m_xtuple1->addItem ("pocax", m_xpocax); 00909 sc = m_xtuple1->addItem ("pocay", m_xpocay); 00910 sc = m_xtuple1->addItem ("pocaz", m_xpocaz); 00911 00912 sc = m_xtuple1->addItem ("evtNo", m_xevtNo); 00913 sc = m_xtuple1->addItem ("nSt", m_xnSt); 00914 sc = m_xtuple1->addItem ("nAct", m_xnAct); 00915 sc = m_xtuple1->addItem ("nDof", m_xnDof); 00916 sc = m_xtuple1->addItem ("chi2", m_xchi2); 00917 sc = m_xtuple1->addItem ("tkId", m_xtkId); 00918 sc = m_xtuple1->addItem ("nHit", m_xnHit, 0, 7000);//# of hit/rec track 00919 sc = m_xtuple1->addIndexedItem ("resid", m_xnHit, m_xresid); 00920 sc = m_xtuple1->addIndexedItem ("sigma", m_xnHit, m_xsigma); 00921 sc = m_xtuple1->addIndexedItem ("driftD", m_xnHit, m_xdriftD); 00922 sc = m_xtuple1->addIndexedItem ("driftT", m_xnHit, m_xdriftT); 00923 sc = m_xtuple1->addIndexedItem ("doca", m_xnHit, m_xdoca); 00924 sc = m_xtuple1->addIndexedItem ("entra", m_xnHit, m_xentra); 00925 sc = m_xtuple1->addIndexedItem ("ambig", m_xnHit, m_xambig); 00926 sc = m_xtuple1->addIndexedItem ("fltLen", m_xnHit, m_xfltLen); 00927 sc = m_xtuple1->addIndexedItem ("tof", m_xnHit, m_xtof); 00928 sc = m_xtuple1->addIndexedItem ("act", m_xnHit, m_xact); 00929 sc = m_xtuple1->addIndexedItem ("tdc", m_xnHit, m_xtdc); 00930 sc = m_xtuple1->addIndexedItem ("adc", m_xnHit, m_xadc); 00931 sc = m_xtuple1->addIndexedItem ("layer", m_xnHit, m_xlayer); 00932 sc = m_xtuple1->addIndexedItem ("wire", m_xnHit, m_xwire); 00933 sc = m_xtuple1->addIndexedItem ("x", m_xnHit, m_xx); 00934 sc = m_xtuple1->addIndexedItem ("y", m_xnHit, m_xy); 00935 sc = m_xtuple1->addIndexedItem ("z", m_xnHit, m_xz); 00936 } else { // did not manage to book the N tuple.... 00937 log << MSG::ERROR << " Cannot book N-tuple: MdcxReco/rec" << endmsg; 00938 //return; 00939 } 00940 }//end book of nt1 00941 NTuplePtr nt4(ntupleSvc(), "MdcxReco/evt"); 00942 if ( nt4 ) { m_xtupleEvt = nt4;} 00943 else { 00944 m_xtupleEvt = ntupleSvc()->book ("MdcxReco/evt", CLID_ColumnWiseTuple, "MdcxReco event data"); 00945 if ( m_xtupleEvt ) { 00946 sc = m_xtupleEvt->addItem ("evtNo", m_xt4EvtNo ); 00947 sc = m_xtupleEvt->addItem ("nRecTk", m_xt4nRecTk ); 00948 sc = m_xtupleEvt->addItem ("nTdsTk", m_xt4nTdsTk ); 00949 sc = m_xtupleEvt->addItem ("t0", m_xt4t0); 00950 sc = m_xtupleEvt->addItem ("t0Stat", m_xt4t0Stat); 00951 sc = m_xtupleEvt->addItem ("t0Truth", m_xt4t0Truth); 00952 sc = m_xtupleEvt->addItem ("time", m_xt4time); 00953 sc = m_xtupleEvt->addItem ("nDigi", m_xt4nDigi, 0, 7000);//# of hit/mc track 00954 sc = m_xtupleEvt->addIndexedItem ("layer", m_xt4nDigi, m_xt4Layer); 00955 sc = m_xtupleEvt->addIndexedItem ("rt", m_xt4nDigi, m_xt4Time); 00956 sc = m_xtupleEvt->addIndexedItem ("rc", m_xt4nDigi, m_xt4Charge); 00957 //sc = m_xtupleEvt->addIndexedItem ("rawHit", m_xt4nDigi, m_xt4rawHit); 00958 //sc = m_xtupleEvt->addIndexedItem ("recHit", m_xt4nDigi, m_xt4recHit); 00959 } else { // did not manage to book the N tuple.... 00960 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/evt" << endmsg; 00961 //return; 00962 } 00963 }// end of book nt4 00964 00965 //book tuple of segment 00966 NTuplePtr ntSeg(ntupleSvc(), "MdcxReco/seg"); 00967 if ( ntSeg ) { m_xtupleSeg = ntSeg;} 00968 else { 00969 m_xtupleSeg = ntupleSvc()->book ("MdcxReco/seg", CLID_ColumnWiseTuple, "MdcxTrackFinder segment data"); 00970 if ( m_xtupleSeg ) { 00971 sc = m_xtupleSeg->addItem ("sl", m_xtsSl); 00972 sc = m_xtupleSeg->addItem ("d0", m_xtsD0); 00973 sc = m_xtupleSeg->addItem ("omega", m_xtsOmega); 00974 sc = m_xtupleSeg->addItem ("phi0", m_xtsPhi0); 00975 sc = m_xtupleSeg->addItem ("d0sl", m_xtsD0_sl_approx); 00976 sc = m_xtupleSeg->addItem ("phi0sl", m_xtsPhi0_sl_approx); 00977 sc = m_xtupleSeg->addItem ("xbbrrf", m_xtsXline_bbrrf); 00978 sc = m_xtupleSeg->addItem ("ybbrrf", m_xtsYline_bbrrf); 00979 sc = m_xtupleSeg->addItem ("xslope", m_xtsXline_slope); 00980 sc = m_xtupleSeg->addItem ("yslope", m_xtsYline_slope); 00981 sc = m_xtupleSeg->addItem ("pat", m_xtsPat); 00982 sc = m_xtupleSeg->addItem ("chisq", m_xtsChisq); 00983 sc = m_xtupleSeg->addItem ("nDigi", m_xtsNDigi, 0, 20); 00984 sc = m_xtupleSeg->addIndexedItem ("layer", m_xtsNDigi, m_xtsLayer); 00985 sc = m_xtupleSeg->addIndexedItem ("wire", m_xtsNDigi, m_xtsWire); 00986 sc = m_xtupleSeg->addIndexedItem ("inSeg", m_xtsNDigi, m_xtsInSeg); 00987 }else{ 00988 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/evt" << endmsg; 00989 //return; 00990 } 00991 } 00992 NTuplePtr nt5(ntupleSvc(), "MdcxReco/trkl"); 00993 if ( nt5 ) { m_xtupleTrkl= nt5;} 00994 else { 00995 m_xtupleTrkl= ntupleSvc()->book ("MdcxReco/trkl", CLID_RowWiseTuple, "MdcxReco track info"); 00996 if ( m_xtupleTrkl) { 00997 sc = m_xtupleTrkl->addItem ("layer", m_xt5Layer); 00998 sc = m_xtupleTrkl->addItem ("wire", m_xt5Wire); 00999 }else{ 01000 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/trkl" << endmsg; 01001 //return; 01002 } 01003 } 01004 01005 NTuplePtr ntCsmcSew(ntupleSvc(), "MdcxReco/csmc"); 01006 if ( ntCsmcSew ) { m_xtupleCsmcSew = ntCsmcSew;} 01007 else { 01008 m_xtupleCsmcSew = ntupleSvc()->book ("MdcxReco/csmc", CLID_ColumnWiseTuple, "MdcxReco reconsturction results"); 01009 if ( m_xtupleCsmcSew ) { 01010 sc = m_xtupleCsmcSew->addItem ("dD0", m_csmcD0); 01011 sc = m_xtupleCsmcSew->addItem ("dPhi0", m_csmcPhi0); 01012 sc = m_xtupleCsmcSew->addItem ("dZ0", m_csmcZ0); 01013 sc = m_xtupleCsmcSew->addItem ("dOmega", m_csmcOmega); 01014 sc = m_xtupleCsmcSew->addItem ("dPt", m_csmcPt); 01015 sc = m_xtupleCsmcSew->addItem ("dTanl", m_csmcTanl); 01016 }else{ 01017 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/csmc" << endmsg; 01018 //return; 01019 } 01020 } 01021 NTuplePtr ntSegAdd1(ntupleSvc(), "MdcxReco/addSeg1"); 01022 if ( ntSegAdd1 ) { m_xtupleAddSeg1 = ntSegAdd1;} 01023 else { 01024 m_xtupleAddSeg1 = ntupleSvc()->book ("MdcxReco/addSeg1", CLID_ColumnWiseTuple, "MdcxReco event data"); 01025 if ( m_xtupleAddSeg1 ) { 01026 sc = m_xtupleAddSeg1->addItem ("same", m_addSegSame); 01027 sc = m_xtupleAddSeg1->addItem ("seedSl", m_addSegSeedSl ); 01028 sc = m_xtupleAddSeg1->addItem ("seedPhi", m_addSegSeedPhi ); 01029 sc = m_xtupleAddSeg1->addItem ("seedPhiLay",m_addSegSeedPhiLay ); 01030 sc = m_xtupleAddSeg1->addItem ("seedLen", m_addSegSeedLen ); 01031 sc = m_xtupleAddSeg1->addItem ("seedD0", m_addSegSeedD0 ); 01032 sc = m_xtupleAddSeg1->addItem ("seedPhi0", m_addSegSeedPhi0 ); 01033 sc = m_xtupleAddSeg1->addItem ("addSl", m_addSegAddSl ); 01034 sc = m_xtupleAddSeg1->addItem ("addPhi", m_addSegAddPhi ); 01035 sc = m_xtupleAddSeg1->addItem ("addPhiLay", m_addSegAddPhiLay ); 01036 sc = m_xtupleAddSeg1->addItem ("addLen", m_addSegAddLen ); 01037 sc = m_xtupleAddSeg1->addItem ("addD0", m_addSegAddD0 ); 01038 sc = m_xtupleAddSeg1->addItem ("addPhi0", m_addSegAddPhi0 ); 01039 } 01040 else{ 01041 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/addSeg1" << endmsg; 01042 //return; 01043 } 01044 } 01045 01046 NTuplePtr ntSegComb(ntupleSvc(), "MdcxReco/segComb"); 01047 if ( ntSegComb ) { m_xtupleSegComb = ntSegComb;} 01048 else { 01049 m_xtupleSegComb = ntupleSvc()->book ("MdcxReco/segComb", CLID_ColumnWiseTuple, "MdcxReco event data"); 01050 if ( m_xtupleSegComb ) { 01051 sc = m_xtupleSegComb->addItem ("evtNo", m_segCombEvtNo); 01052 sc = m_xtupleSegComb->addItem ("omega", m_segCombOmega); 01053 sc = m_xtupleSegComb->addItem ("sameAU", m_segCombSameAU); 01054 sc = m_xtupleSegComb->addItem ("sameUV", m_segCombSameUV); 01055 sc = m_xtupleSegComb->addItem ("dlenAU", m_segCombDLenAU); 01056 sc = m_xtupleSegComb->addItem ("dlenUV", m_segCombDLenUV); 01057 sc = m_xtupleSegComb->addItem ("slA", m_segCombSlA); 01058 sc = m_xtupleSegComb->addItem ("slU", m_segCombSlU); 01059 sc = m_xtupleSegComb->addItem ("slV", m_segCombSlV); 01060 sc = m_xtupleSegComb->addItem ("phiA", m_segCombPhiA); 01061 sc = m_xtupleSegComb->addItem ("phiU", m_segCombPhiU); 01062 sc = m_xtupleSegComb->addItem ("phiV", m_segCombPhiV); 01063 } 01064 else{ 01065 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/segComb" << endmsg; 01066 //return; 01067 } 01068 } 01069 01070 NTuplePtr ntDropHits(ntupleSvc(), "MdcxReco/dropHits"); 01071 if ( ntDropHits ) { m_xtupleDropHits = ntDropHits;} 01072 else { 01073 m_xtupleDropHits = ntupleSvc()->book ("MdcxReco/dropHits", CLID_ColumnWiseTuple, "MdcxReco event data"); 01074 if ( m_xtupleDropHits ) { 01075 sc = m_xtupleDropHits->addItem ("evtNo", m_segDropHitsEvtNo); 01076 sc = m_xtupleDropHits->addItem ("layer", m_segDropHitsLayer); 01077 sc = m_xtupleDropHits->addItem ("wire", m_segDropHitsWire); 01078 sc = m_xtupleDropHits->addItem ("pull", m_segDropHitsPull); 01079 sc = m_xtupleDropHits->addItem ("doca", m_segDropHitsDoca); 01080 sc = m_xtupleDropHits->addItem ("sigma", m_segDropHitsSigma); 01081 sc = m_xtupleDropHits->addItem ("drift", m_segDropHitsDrift); 01082 sc = m_xtupleDropHits->addItem ("mcTkId", m_segDropHitsMcTkId); 01083 } else{ 01084 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/dropHits" << endmsg; 01085 //return; 01086 } 01087 } 01088 NTuplePtr ntAddSeg2(ntupleSvc(), "MdcxReco/addSeg2"); 01089 if ( ntAddSeg2 ) { m_xtupleAddSeg2 = ntAddSeg2;} 01090 else { 01091 m_xtupleAddSeg2 = ntupleSvc()->book ("MdcxReco/addSeg2", CLID_ColumnWiseTuple, "MdcxReco event data"); 01092 if ( m_xtupleAddSeg2 ) { 01093 sc = m_xtupleAddSeg2->addItem ("evtNo", m_addSegEvtNo); 01094 sc = m_xtupleAddSeg2->addItem ("slayer", m_addSegSlayer); 01095 sc = m_xtupleAddSeg2->addItem ("poca", m_addSegPoca); 01096 sc = m_xtupleAddSeg2->addItem ("len", m_addSegLen); 01097 } else{ 01098 log << MSG::ERROR << "Cannot book N-tuple: MdcxReco/addSeg2" << endmsg; 01099 //return; 01100 } 01101 } 01102 //--------------end of book ntuple------------------ 01103 }
void MdcxTrackFinder::dropMultiHotInLayer | ( | TrkHitList * | list | ) | [private] |
Definition at line 1417 of file MdcxTrackFinder.cxx.
References TrkHotList::begin(), dt, TrkHotList::end(), TrkHitList::hotList(), TrkHitList::removeHit(), and TrkHitOnTrk::setActivity().
Referenced by FitMdcxTrack().
01417 { 01418 double tdr[43]; 01419 double tdr_wire[43]; 01420 for(int i=0; i<43; i++){tdr[i]=9999.;} 01421 01422 // make flag 01423 TrkHotList::hot_iterator hotIter = trkHitList->hotList().begin(); 01424 while (hotIter!=trkHitList->hotList().end()) { 01425 MdcHitOnTrack* hot = const_cast<MdcHitOnTrack*> (&(*hotIter->mdcHitOnTrack())); 01426 01427 //driftTime(tof,z) 01428 double dt = hot->mdcHit()->driftTime(0.,0.); 01429 int layer = hot->mdcHit()->layernumber(); 01430 int wire = hot->mdcHit()->wirenumber(); 01431 01432 //std::cout<<__FILE__<<" "<<dt<< std::endl; 01433 if (dt < tdr[layer]) { 01434 tdr[layer] = dt; 01435 tdr_wire[layer] = wire; 01436 } 01437 hotIter++; 01438 } 01439 01440 //std::cout<<" tdr wire "; 01441 //for(int i=0;i<43;i++){ 01442 //std::cout<<i<<","<<tdr_wire[i]<<" tdr="<<tdr[i]<<"\n"; 01443 //} 01444 // inactive multi hit 01445 hotIter = trkHitList->hotList().begin(); 01446 while (hotIter!=trkHitList->hotList().end()) { 01447 int layer = hotIter->mdcHitOnTrack()->mdcHit()->layernumber(); 01448 int wire = hotIter->mdcHitOnTrack()->mdcHit()->wirenumber(); 01449 //double dt = hotIter->mdcHitOnTrack()->mdcHit()->driftTime(0.,0.)-m_bunchT0; 01450 01451 if ((tdr[layer] <9998.) && (tdr_wire[layer]!=wire)){ 01452 MdcHitOnTrack* hot = const_cast<MdcHitOnTrack*> (&(*hotIter->mdcHitOnTrack())); 01453 hot->setActivity(false); 01454 trkHitList->removeHit( hotIter->mdcHitOnTrack()->mdcHit() ); 01455 //std::cout<<__FILE__<<" inactive "<< layer<<" "<<wire<<" dt "<<dt << std::endl; 01456 }else{ 01457 hotIter++; 01458 } 01459 } 01460 }
void MdcxTrackFinder::dumpMdcxSegs | ( | const HepAList< MdcxSeg > & | segList | ) | const [private] |
void MdcxTrackFinder::dumpTdsHits | ( | RecMdcHitCol * | hitList | ) | [private] |
Definition at line 1510 of file MdcxTrackFinder.cxx.
References MdcID::layer(), and MdcID::wire().
01510 { 01511 std::cout<<__FILE__<<" "<<__LINE__<<" All hits in TDS, nhit="<<hitList->size()<< std::endl; 01512 RecMdcHitCol::iterator it = hitList->begin(); 01513 for(;it!= hitList->end(); it++){ 01514 RecMdcHit* h = (*it); 01515 Identifier id(h->getMdcId()); 01516 int layer = MdcID::layer(id); 01517 int wire = MdcID::wire(id); 01518 cout<<"("<< layer <<","<<wire<<") lr:"<<h->getFlagLR()<<" stat:"<<h->getStat()<<" tk:"<<h->getTrkId() <<" doca:"<<setw(10)<<h->getDoca()<<std::endl; 01519 }//end of hit list 01520 }
void MdcxTrackFinder::dumpTdsTrack | ( | RecMdcTrackCol * | trackList | ) | [private] |
Definition at line 1461 of file MdcxTrackFinder.cxx.
References MdcID::layer(), and MdcID::wire().
Referenced by execute(), and FitMdcxTrack().
01461 { 01462 std::cout<< "tksize = "<<trackList->size() << std::endl;//yzhang debug 01463 RecMdcTrackCol::iterator it = trackList->begin(); 01464 for (;it!= trackList->end();it++){ 01465 RecMdcTrack *tk = *it; 01466 std::cout<< "//====RecMdcTrack "<<tk->trackId()<<"====:" << std::endl; 01467 cout <<" d0 "<<tk->helix(0) 01468 <<" phi0 "<<tk->helix(1) 01469 <<" cpa "<<tk->helix(2) 01470 <<" z0 "<<tk->helix(3) 01471 <<" tanl "<<tk->helix(4) 01472 <<endl; 01473 std::cout<<" q "<<tk->charge() 01474 <<" theta "<<tk->theta() 01475 <<" phi "<<tk->phi() 01476 <<" x0 "<<tk->x() 01477 <<" y0 "<<tk->y() 01478 <<" z0 "<<tk->z() 01479 <<" r0 "<<tk->r() 01480 <<endl; 01481 std::cout <<" p "<<tk->p() 01482 <<" pt "<<tk->pxy() 01483 <<" px "<<tk->px() 01484 <<" py "<<tk->py() 01485 <<" pz "<<tk->pz() 01486 <<endl; 01487 std::cout<<" tkStat "<<tk->stat() 01488 <<" chi2 "<<tk->chi2() 01489 <<" ndof "<<tk->ndof() 01490 <<" nhit "<<tk->getNhits() 01491 <<" nst "<<tk->nster() 01492 <<endl; 01493 01494 int nhits = tk->getVecHits().size(); 01495 std::cout<<nhits <<" Hits: " << std::endl; 01496 for(int ii=0; ii <nhits ; ii++){ 01497 Identifier id(tk->getVecHits()[ii]->getMdcId()); 01498 int layer = MdcID::layer(id); 01499 int wire = MdcID::wire(id); 01500 cout<<"("<< layer <<","<<wire<<","<<tk->getVecHits()[ii]->getStat() 01501 <<",lr:"<<tk->getVecHits()[ii]->getFlagLR()<<") "; 01502 }//end of hit list 01503 std::cout << " "<< std::endl; 01504 }//end of tk list 01505 std::cout << " "<< std::endl; 01506 01507 01508 }//end of dumpTdsTrack
void MdcxTrackFinder::dumpTrack | ( | RecMdcTrackCol * | trackList | ) | [private] |
Definition at line 780 of file MdcxTrackFinder.cxx.
References printTrack().
Referenced by execute().
00780 { 00781 RecMdcTrackCol::iterator i_tk = trackList->begin(); 00782 for (;i_tk != trackList->end(); i_tk++) { 00783 printTrack(*(i_tk)); 00784 } 00785 }// dumpTrack
void MdcxTrackFinder::dumpTrackList | ( | const HepAList< MdcxFittedHel > & | trackList | ) | const [private] |
Definition at line 1326 of file MdcxTrackFinder.cxx.
Referenced by execute().
01326 { 01327 std::cout<< "dump track list " <<std::endl; 01328 for (int i=0;i<trackList.length();i++){ 01329 std::cout<< "track "<<i<<std::endl; 01330 for (int ihit=0 ; ihit< trackList[i]->Nhits() ; ihit++){ 01331 const MdcxHit* hit = trackList[i]->XHitList()[ihit]; 01332 int layer = hit->Layer(); 01333 int wire = hit->WireNo(); 01334 std::cout<< " ("<<layer << ","<< wire<<") "; 01335 } 01336 std::cout<<std::endl; 01337 } 01338 }// end of dumpTrackList
StatusCode MdcxTrackFinder::execute | ( | ) |
Definition at line 242 of file MdcxTrackFinder.cxx.
References MdcRawDataProvider::b_dropHot, MdcRawDataProvider::b_keepBadTdc, MdcRawDataProvider::b_keepUnmatch, b_saveEvent, MdcxHits::create(), dumpMdcxSegs(), dumpTdsTrack(), dumpTrack(), dumpTrackList(), Bes_Common::FATAL, fillEvent(), FitMdcxTrack(), g_eventNo, RawDataProviderSvc::getMdcDigiVec(), MdcxHits::GetMdcxHitList(), MdcxFindSegs::GetMdcxSeglist(), MdcxFindTracks::GetMdcxTrklist(), MdcxMergeDups::GetMergedTrklist(), genRecEmupikp::i, Bes_Common::INFO, m_bunchT0, m_cresol, m_debug, m_dropHot, m_eventNo, m_hist, m_keepBadTdc, m_keepUnmatch, m_maxMdcDigi, m_mdcxHits, m_minMdcDigi, m_rawDataProviderSvc, m_salvageTrk, m_t0Stat, m_timing, m_xt4time, m_xtupleEvt, mdcDigiVec, msgSvc(), nTk, EventModel::Recon::RecMdcHitCol, EventModel::Recon::RecMdcTrackCol, MdcxHits::reset(), t_nDigi, t_nTdsTk, t_nTkNum, t_nTkTot, and Bes_Common::WARNING.
00242 { 00243 00244 00245 b_saveEvent=false; 00246 setFilterPassed(b_saveEvent); 00247 #ifdef MDCXTIMEDEBUG 00248 m_timer[0]->start(); 00249 #endif 00250 MsgStream log(msgSvc(), name()); 00251 log << MSG::INFO << "in execute()" << endreq; 00252 StatusCode sc; 00253 00254 nTk = 0; t_nTdsTk = 0; //yzhang for fill 00255 //------------------------------------ 00256 // Get event No. 00257 //------------------------------------ 00258 SmartDataPtr<Event::EventHeader> evtHead(eventSvc(),"/Event/EventHeader"); 00259 if (!evtHead) { 00260 log << MSG::FATAL<< "Could not retrieve event header" << endreq; 00261 return StatusCode::FAILURE; 00262 } 00263 m_eventNo = evtHead->eventNumber(); 00264 //std::cout << "x evt: "<<evtHead->runNumber()<<" " << m_eventNo<< std::endl; 00265 long t_evtNo = m_eventNo; 00266 g_eventNo = m_eventNo; 00267 //if (t_evtNo % 1000 == 0) std::cout << "x evt: " << t_evtNo << std::endl; 00268 IDataManagerSvc *dataManSvc; 00269 DataObject *aTrackCol; 00270 DataObject *aHitCol; 00271 if (!m_salvageTrk) { 00272 SmartIF<IDataManagerSvc> dataManSvc(eventSvc()); 00273 eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol); 00274 if(aTrackCol != NULL) { 00275 dataManSvc->clearSubTree("/Event/Recon/RecMdcTrackCol"); 00276 eventSvc()->unregisterObject("/Event/Recon/RecMdcTrackCol"); 00277 } 00278 eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aHitCol); 00279 if(aHitCol != NULL) { 00280 dataManSvc->clearSubTree("/Event/Recon/RecMdcHitCol"); 00281 eventSvc()->unregisterObject("/Event/Recon/RecMdcHitCol"); 00282 } 00283 } 00284 00285 //------------------------------------ 00286 // Initialize track collection in TDS 00287 //------------------------------------ 00288 DataObject *aReconEvent; 00289 eventSvc()->findObject("/Event/Recon",aReconEvent); 00290 if (aReconEvent==NULL) { 00291 aReconEvent = new ReconEvent(); 00292 sc = eventSvc()->registerObject("/Event/Recon",aReconEvent); 00293 if(sc != StatusCode::SUCCESS) { 00294 log << MSG::FATAL << "Could not register ReconEvent" <<endreq; 00295 return StatusCode::FAILURE; 00296 } 00297 } 00298 RecMdcTrackCol* trackList; 00299 eventSvc()->findObject("/Event/Recon/RecMdcTrackCol",aTrackCol); 00300 if (aTrackCol) { 00301 trackList = dynamic_cast<RecMdcTrackCol*> (aTrackCol); 00302 }else{ 00303 trackList = new RecMdcTrackCol; 00304 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcTrackCol, trackList); 00305 if(!sc.isSuccess()) { 00306 log << MSG::FATAL << " Could not register RecMdcTrack collection" <<endreq; 00307 return StatusCode::FAILURE; 00308 } 00309 } 00310 RecMdcHitCol* hitList; 00311 eventSvc()->findObject("/Event/Recon/RecMdcHitCol",aHitCol); 00312 if (aHitCol) { 00313 hitList = dynamic_cast<RecMdcHitCol*> (aHitCol); 00314 }else{ 00315 hitList = new RecMdcHitCol; 00316 sc = eventSvc()->registerObject(EventModel::Recon::RecMdcHitCol, hitList); 00317 if(!sc.isSuccess()) { 00318 log << MSG::FATAL << " Could not register RecMdcHit collection" <<endreq; 00319 return StatusCode::FAILURE; 00320 } 00321 } 00322 00323 //------------------------------------ 00324 // Initialize hit collection in TDS 00325 //------------------------------------ 00326 DataObject *pnode = 0; 00327 sc = eventSvc()->retrieveObject("/Event/Hit",pnode); 00328 if(!sc.isSuccess()) { 00329 pnode = new DataObject; 00330 sc = eventSvc()->registerObject("/Event/Hit",pnode); 00331 if(!sc.isSuccess()) { 00332 log << MSG::FATAL << " Could not register /Event/Hit branch " <<endreq; 00333 return StatusCode::FAILURE; 00334 } 00335 } 00336 SmartDataPtr<MdcHitCol> m_hitCol(eventSvc(), "/Event/Hit/MdcHitCol"); 00337 if (!m_hitCol){ 00338 m_hitCol= new MdcHitCol; 00339 sc = eventSvc()->registerObject("/Event/Hit/MdcHitCol",m_hitCol); 00340 if(!sc.isSuccess()) { 00341 log << MSG::FATAL << " Could not register hit collection" <<endreq; 00342 return StatusCode::FAILURE; 00343 } 00344 } 00345 00346 00347 //------------------------------------ 00348 // Get bunch time t0 (ns) and timing 00349 //------------------------------------ 00350 m_bunchT0 = -999.; 00351 SmartDataPtr<RecEsTimeCol> aevtimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol"); 00352 if (!aevtimeCol || aevtimeCol->size()==0) { 00353 log << MSG::WARNING<< "evt "<<m_eventNo<<" Could not find RecEsTimeCol"<< endreq; 00354 return StatusCode::SUCCESS; 00355 } 00356 00357 RecEsTimeCol::iterator iter_evt = aevtimeCol->begin(); 00358 for(; iter_evt!=aevtimeCol->end(); iter_evt++){ 00359 m_bunchT0 = (*iter_evt)->getTest(); 00360 m_t0Stat = (*iter_evt)->getStat(); 00361 if ((m_t0Stat==0) || (m_bunchT0 < 0.) || (m_bunchT0 > 9999.0) ){ 00362 log << MSG::WARNING << "Skip evt:"<<m_eventNo<< " by t0 = "<<m_bunchT0 << endreq; 00363 //return StatusCode::SUCCESS; 00364 } 00365 } 00366 if(m_debug>1) std::cout<<name()<<" t0 "<<m_bunchT0<<" t0Stat "<<m_t0Stat<<std::endl; 00367 int trigtiming=-10; 00368 SmartDataPtr<TrigData> trigData(eventSvc(),"/Event/Trig/TrigData"); 00369 if(trigData){ 00370 log << MSG::INFO <<"Trigger conditions 0--43:"<<endreq; 00371 for(int i = 0; i < 48; i++) { 00372 log << MSG::INFO << trigData->getTrigCondName(i)<<" ---- "<<trigData->getTrigCondition(i)<< endreq; 00373 } 00374 for(int i = 0; i < 16; i++) log << MSG::INFO << "Trigger channel "<< i << ": " << trigData->getTrigChannel(i) << endreq; 00375 m_timing=trigData->getTimingType(); 00376 //cout<<"-----------------trigger timing type-----------------------: "<<trigtiming<<endl; 00377 log << MSG::INFO <<"Tigger Timing type: "<< trigtiming << endreq; 00378 } 00379 00380 //------------------------------------ 00381 // Initialize MdcxHits 00382 //------------------------------------ 00383 m_mdcxHits.reset(); 00384 uint32_t getDigiFlag = 0; 00385 getDigiFlag += m_maxMdcDigi; 00386 if(m_dropHot||m_salvageTrk) getDigiFlag |= MdcRawDataProvider::b_dropHot; 00387 if(m_keepBadTdc) getDigiFlag |= MdcRawDataProvider::b_keepBadTdc; 00388 if(m_keepUnmatch) getDigiFlag |= MdcRawDataProvider::b_keepUnmatch; 00389 mdcDigiVec = m_rawDataProviderSvc->getMdcDigiVec(getDigiFlag); 00390 t_nDigi = mdcDigiVec.size(); 00391 00392 if (0 == t_nDigi ){ 00393 log << MSG::WARNING << " No hits in MdcDigiVec" << endreq; 00394 return StatusCode::SUCCESS; 00395 } 00396 00397 00398 // fill Mc truth 00399 //if(m_hist) fillMcTruth(); 00400 00401 //skip event by hit numbe 00402 if (t_nDigi < m_minMdcDigi){ 00403 log << MSG::WARNING << " Skip this event for MdcDigiVec.size() < "<<m_minMdcDigi << endreq; 00404 return StatusCode::SUCCESS; 00405 } 00406 m_mdcxHits.create(mdcDigiVec, m_bunchT0, m_cresol); 00407 const HepAList<MdcxHit>& dchitlist = m_mdcxHits.GetMdcxHitList(); 00408 00409 //-------------------------------------------- 00410 // Make segments (MdcxSeg's) out of MdcxHit's 00411 //-------------------------------------------- 00412 MdcxFindSegs dcsegs(dchitlist,m_debug); 00413 const HepAList<MdcxSeg>& seglist = dcsegs.GetMdcxSeglist(); 00414 if(m_debug > 1 ){ dumpMdcxSegs(seglist);} 00415 //if(m_hist){ fillMdcxSegs(seglist);} 00416 00417 //-------------------------------------------- 00418 // Make tracks (MdcxFittedHel's) out of MdcxSeg's 00419 //-------------------------------------------- 00420 MdcxFindTracks dctrks(seglist,m_debug); 00421 HepAList<MdcxFittedHel>& firsttrkl = (HepAList<MdcxFittedHel>&)dctrks.GetMdcxTrklist(); 00422 if(m_debug>1) dumpTrackList(firsttrkl); 00423 00424 //if(m_hist){ fillTrkl(firsttrkl);} 00425 00426 //if(m_debug>1){ 00427 // std::cout << "dchitlist after find tracks before MergeDups, nhits=" << dchitlist.length() << std::endl; 00428 // for (int ii = 0; ii < dchitlist.length(); ii++) { 00429 // dchitlist[ii]->print(std::cout, ii); 00430 // } 00431 // std::cout<<std::endl; 00432 //} 00433 MdcxMergeDups dcmergeem(firsttrkl,m_debug); 00434 HepAList<MdcxFittedHel>& trkl = (HepAList<MdcxFittedHel>&)dcmergeem.GetMergedTrklist(); 00435 00436 //if (m_debug > 1 ){ 00437 // cout << "MdcxTrackFinder: after MergeDups, have " 00438 // << trkl.length() << " track(s). nhits=" << dchitlist.length() << endl; 00439 // for (int ii = 0; ii < dchitlist.length(); ii++) { 00440 // dchitlist[ii]->print(std::cout, ii); 00441 // } 00442 // std::cout<<std::endl; 00443 //} 00444 00445 //--------------------------------------------------------- 00446 // Put my tracks into official fitter and store to TDS 00447 //---------------------------------------------------------- 00448 00449 00450 sc = FitMdcxTrack(trkl, dchitlist, m_hitCol, trackList, hitList); 00451 if (!sc.isSuccess()) {return StatusCode::SUCCESS;} 00452 t_nTdsTk = trackList->size(); 00453 00454 t_nTkTot += trackList->size(); 00455 if(t_nTdsTk<20) t_nTkNum[t_nTdsTk]++; 00456 00457 #ifdef MDCXTIMEDEBUG 00458 m_timer[0]->stop(); 00459 m_xt4time = m_timer[0]->elapsed(); 00460 m_xtupleEvt->write(); 00461 #endif 00462 00463 if(m_hist) fillEvent(); 00464 if (m_debug > 0) { 00465 DataObject* pNode; 00466 eventSvc()->retrieveObject("/Event/Recon/RecMdcTrackCol",pNode); 00467 RecMdcTrackCol *tmpTrackCol = dynamic_cast<RecMdcTrackCol*> (pNode); 00468 eventSvc()->retrieveObject("/Event/Recon/RecMdcHitCol",pNode); 00469 int nTdsTk = 0; 00470 if(tmpTrackCol) nTdsTk = tmpTrackCol->size(); 00471 00472 //if (t_evtNo % 1000 == 0) { 00473 std::cout<< "MdcxTrackFinder: evtNo "<< m_eventNo << " t0="<<m_bunchT0 00474 <<" Found " <<trkl.length() 00475 <<" keep "<< t_nTdsTk 00476 <<" finialy keep "<< nTdsTk; 00477 00478 int ndelete =0; trkl.length() - trackList->size(); 00479 if( ndelete>0 ) std::cout <<" delete "<< ndelete; 00480 std::cout <<" track(s)" <<endl; 00481 //} 00482 00483 if(m_debug>1)dumpTdsTrack(tmpTrackCol); 00484 if(m_debug>1)dumpTrack(tmpTrackCol); 00485 //dumpTdsHits(tmpHitCol); 00486 00487 } 00488 if((trackList->size()!=4) ) b_saveEvent = true; 00489 setFilterPassed(b_saveEvent); 00490 return StatusCode::SUCCESS; 00491 }
void MdcxTrackFinder::fillEvent | ( | ) | [private] |
Definition at line 1106 of file MdcxTrackFinder.cxx.
References iter(), MdcID::layer(), m_bunchT0, m_eventNo, m_t0Stat, m_t0Truth, m_xt4Charge, m_xt4EvtNo, m_xt4Layer, m_xt4nDigi, m_xt4nRecTk, m_xt4nTdsTk, m_xt4t0, m_xt4t0Stat, m_xt4t0Truth, m_xt4Time, m_xtupleEvt, RawDataUtil::MdcCharge(), mdcDigiVec, RawDataUtil::MdcTime(), nTk, t_nDigi, and t_nTdsTk.
Referenced by execute().
01106 { 01107 //-----------get raw digi----------------------- 01108 if (t_nDigi<=0) return; 01109 if (m_xtupleEvt == NULL ) return; 01110 m_xt4EvtNo = m_eventNo; 01111 m_xt4t0 = m_bunchT0; 01112 m_xt4t0Stat = m_t0Stat; 01113 m_xt4t0Truth = m_t0Truth; 01114 m_xt4nRecTk = nTk; 01115 m_xt4nTdsTk = t_nTdsTk; 01116 m_xt4nDigi = t_nDigi; 01117 int iDigi=0; 01118 MdcDigiCol::iterator iter = mdcDigiVec.begin(); 01119 for (;iDigi<t_nDigi; iter++ ) { 01120 int l = MdcID::layer((*iter)->identify()); 01121 m_xt4Layer[iDigi] = l; 01122 //int w = MdcID::wire((*iter)->identify()); 01123 m_xt4Time[iDigi] = RawDataUtil::MdcTime((*iter)->getTimeChannel()); 01124 m_xt4Charge[iDigi] = RawDataUtil::MdcCharge((*iter)->getChargeChannel()); 01125 //m_xt4rawHit[l]++; 01126 iDigi++; 01127 }//end for iter 01128 m_xtupleEvt->write(); 01129 }
void MdcxTrackFinder::fillMcTruth | ( | ) | [private] |
Definition at line 1360 of file MdcxTrackFinder.cxx.
References haveDigi, Bes_Common::INFO, MdcID::layer(), m_mcHist, m_t0Truth, mdcDigiVec, msgSvc(), w, and MdcID::wire().
01360 { 01361 MsgStream log(msgSvc(), name()); 01362 StatusCode sc; 01363 //Initialize 01364 for (int ii=0;ii<43;ii++){ 01365 for (int jj=0;jj<288;jj++){ 01366 haveDigi[ii][jj] = -2; 01367 } 01368 } 01369 int nDigi = mdcDigiVec.size(); 01370 for (int iDigi =0 ;iDigi<nDigi; iDigi++ ) { 01371 int l = MdcID::layer((mdcDigiVec[iDigi])->identify()); 01372 int w = MdcID::wire((mdcDigiVec[iDigi])->identify()); 01373 //haveDigi[l][w]=(mdcDigiVec[iDigi])->getTrackIndex(); 01374 haveDigi[l][w]=1; 01375 } 01376 01377 if( m_mcHist ){ 01378 //------------------get event start time truth----------- 01379 m_t0Truth = -10.; 01380 SmartDataPtr<Event::McParticleCol> mcParticleCol(eventSvc(),"/Event/MC/McParticleCol"); 01381 if(!mcParticleCol){ 01382 log << MSG::INFO << "Could not retrieve McParticelCol" << endreq; 01383 }else { 01384 Event::McParticleCol::iterator iter_mc = mcParticleCol->begin(); 01385 for (;iter_mc != mcParticleCol->end(); iter_mc++){ 01386 if ((*iter_mc)->primaryParticle()){ 01387 m_t0Truth = (*iter_mc)->initialPosition().t(); 01388 //px = (*iter_mc)->initialFourMomentum().x()/1000.;//GeV 01389 //py = (*iter_mc)->initialFourMomentum().y()/1000.;//GeV 01390 //pz = (*iter_mc)->initialFourMomentum().z()/1000.;//GeV 01391 } 01392 } 01393 } 01394 } 01395 //------------------Retrieve MC truth MdcMcHit------------ 01396 /* 01397 SmartDataPtr<Event::MdcMcHitCol> mcMdcMcHitCol(eventSvc(),"/Event/MC/MdcMcHitCol"); 01398 if (!mcMdcMcHitCol) { 01399 log << MSG::WARNING << "Could not find MdcMcHit" << endreq; 01400 }else{ 01401 Event::MdcMcHitCol::iterator iter_mchit = mcMdcMcHitCol->begin(); 01402 for (;iter_mchit != mcMdcMcHitCol->end(); iter_mchit++ ) { 01403 const Identifier id= (*iter_mchit)->identify(); 01404 int layer = MdcID::layer(id); 01405 int wire = MdcID::wire(id); 01406 mcDrift[layer][wire] = (*iter_mchit)->getDriftDistance(); //drift in MC. 01407 mcLR[layer][wire] = (*iter_mchit)->getPositionFlag(); 01408 mcX[layer][wire] = (*iter_mchit)->getPositionX(); 01409 mcY[layer][wire] = (*iter_mchit)->getPositionY(); 01410 mcZ[layer][wire] = (*iter_mchit)->getPositionZ(); 01411 if (mcLR[layer][wire] == 0) mcLR[layer][wire] = -1; 01412 } 01413 } 01414 */ 01415 }
void MdcxTrackFinder::fillMdcxSegs | ( | const HepAList< MdcxSeg > & | segList | ) | const [private] |
Definition at line 1261 of file MdcxTrackFinder.cxx.
References m_xtsChisq, m_xtsD0, m_xtsD0_sl_approx, m_xtsInSeg, m_xtsLayer, m_xtsNDigi, m_xtsOmega, m_xtsPat, m_xtsPhi0, m_xtsPhi0_sl_approx, m_xtsSl, m_xtsWire, m_xtsXline_bbrrf, m_xtsXline_slope, m_xtsYline_bbrrf, m_xtsYline_slope, m_xtupleSeg, MdcxSegPatterns::patt3, and MdcxSegPatterns::patt4.
01261 { 01262 if(!m_xtupleSeg) return; 01263 01264 int cellMax[43] ={ 01265 40,44,48,56, 64,72,80,80, 76,76,88,88, 01266 100,100,112,112, 128,128,140,140, 160,160,160,160, 01267 176,176,176,176, 208,208,208,208, 240,240,240,240, 01268 256,256,256,256, 288,288,288 }; 01269 // Fill hits of every layer after segment finding 01270 int hitInSegList[43][288]; 01271 for (int ii=0;ii<43;ii++){ 01272 for (int jj=0;jj<cellMax[ii];jj++){ hitInSegList[ii][jj] = 0; } 01273 } 01274 for (int i = 0; i < segList.length(); i++) { 01275 MdcxSeg* aSeg = segList[i]; 01276 for (int ihit=0 ; ihit< aSeg->Nhits() ; ihit++){ 01277 const MdcxHit* hit = aSeg->XHitList()[ihit]; 01278 int layer = hit->Layer(); 01279 int wire = hit->WireNo(); 01280 hitInSegList[layer][wire]++; 01281 } 01282 } 01283 for (int i = 0; i < segList.length(); i++) { 01284 MdcxSeg* aSeg = segList[i]; 01285 if(aSeg==NULL)continue; 01286 m_xtsSl = aSeg->SuperLayer(); 01287 m_xtsD0 = aSeg->D0(); 01288 m_xtsOmega = aSeg->Omega(); 01289 m_xtsPhi0 = aSeg->Phi0(); 01290 m_xtsD0_sl_approx = aSeg->D0_sl_approx(); 01291 m_xtsPhi0_sl_approx = aSeg->Phi0_sl_approx(); 01292 m_xtsXline_bbrrf = aSeg->Xline_bbrrf(); 01293 m_xtsYline_bbrrf = aSeg->Yline_bbrrf(); 01294 m_xtsXline_slope = aSeg->Xline_slope(); 01295 m_xtsYline_slope = aSeg->Yline_slope(); 01296 int patIndex = -1; 01297 for (int ii = 0;ii<14;ii++){ 01298 if (aSeg->Pat() == (int) MdcxSegPatterns::patt4[ii]){ 01299 patIndex = ii; 01300 break; 01301 } 01302 } 01303 for (int ii = 0;ii<20;ii++){ 01304 if (aSeg->Pat() == (int) MdcxSegPatterns::patt3[ii]){ 01305 patIndex = ii +15; 01306 break; 01307 } 01308 } 01309 m_xtsPat = patIndex; 01310 m_xtsChisq = aSeg->Chisq(); 01311 m_xtsNDigi = aSeg->Nhits(); 01312 for (int ihit=0 ; ihit< aSeg->Nhits() ; ihit++){ 01313 const MdcxHit* hit = aSeg->XHitList()[ihit]; 01314 int layer = hit->Layer(); 01315 int wire = hit->WireNo(); 01316 m_xtsLayer[ihit] = layer; 01317 m_xtsWire[ihit] = wire; 01318 m_xtsInSeg[ihit] = hitInSegList[layer][wire]; 01319 //std::cout<< "hitInSegList "<<hitInSegList[layer][wire] << std::endl;//yzhang debug 01320 } 01321 m_xtupleSeg->write(); 01322 } 01323 01324 }//end of fillMdcxSegs
void MdcxTrackFinder::fillTrack | ( | TrkRecoTrk * | aTrack | ) | [private] |
Definition at line 1131 of file MdcxTrackFinder.cxx.
References TrkHitList::begin(), TrkAbsFit::charge(), TrkAbsFit::chisq(), TrkExchangePar::d0(), TrkHitList::end(), TrkRecoTrk::fitResult(), TrkFit::helix(), TrkRecoTrk::hits(), genRecEmupikp::i, m_bunchT0, m_debug, m_eventNo, m_t0Stat, m_t0Truth, m_timing, m_xact, m_xadc, m_xambig, m_xchi2, m_xcpa, m_xd0, m_xdoca, m_xdriftD, m_xdriftT, m_xentra, m_xevtNo, m_xfltLen, m_xlayer, m_xnAct, m_xnDof, m_xnHit, m_xnSlay, m_xnSt, m_xp, m_xphi0, m_xpocax, m_xpocay, m_xpocaz, m_xpt, m_xpz, m_xq, m_xresid, m_xsigma, m_xt0, m_xt0Stat, m_xt0Truth, m_xtanl, m_xtdc, m_xtiming, m_xtof, m_xtuple1, m_xwire, m_xx, m_xy, m_xz, m_xz0, TrkAbsFit::momentum(), TrkFit::nActive(), TrkAbsFit::nDof(), TrkHitList::nHit(), TrkExchangePar::phi0(), boss::pos, TrkAbsFit::position(), TrkAbsFit::pt(), recHitMap, TrkExchangePar::tanDip(), and TrkExchangePar::z0().
Referenced by store().
01131 { 01132 01133 if(!m_xtuple1) return; 01134 //-----------get MC truth data------------------- 01135 m_xevtNo = m_eventNo; 01136 int recHitMap[43][288]={0}; 01137 //int nTk = (*m_tracks).nTrack(); 01138 //for (int itrack = 0; itrack < nTk; itrack++) { 01139 if (atrack==NULL) return; 01140 01141 const TrkFit* fitResult = atrack->fitResult(); 01142 if (fitResult == 0) return;//check the fit worked 01143 01144 //for fill ntuples 01145 int nSt=0; //int nSeg=0; 01146 int seg[11] = {0}; int segme; 01147 //-----------hit list------------- 01148 HitRefVec hitRefVec; 01149 const TrkHitList* hitlist = atrack->hits(); 01150 01151 TrkHitList::hot_iterator hot = hitlist->begin(); 01152 int layerCount[43]={0}; 01153 int i=0; 01154 for (;hot!= hitlist->end();hot++){ 01155 01156 const MdcRecoHitOnTrack* recoHot; 01157 recoHot = dynamic_cast<const MdcRecoHitOnTrack*> (&(*hot)); 01158 int layer = recoHot->mdcHit()->layernumber(); 01159 int wire = recoHot->mdcHit()->wirenumber(); 01160 m_xlayer[i] = layer; 01161 //m_xt4recHit[layer]++;//fill rec hit for hit eff 01162 m_xwire[i] = wire; 01163 layerCount[layer]++; 01164 recHitMap[layer][wire]++; 01165 m_xambig[i] = recoHot->wireAmbig();// wire ambig 01166 //fltLen 01167 double fltLen = recoHot->fltLen(); 01168 m_xfltLen[i] = fltLen; 01169 double tof = recoHot->getParentRep()->arrivalTime(fltLen); 01170 //position 01171 HepPoint3D pos; Hep3Vector dir; 01172 recoHot->getParentRep()->traj().getInfo(fltLen,pos,dir); 01173 m_xx[i] = pos.x(); 01174 m_xy[i] = pos.y(); 01175 m_xz[i] = pos.z(); 01176 m_xdriftT[i] = recoHot->mdcHit()->driftTime(tof,pos.z()); 01177 m_xtof[i] = tof; 01178 m_xdriftD[i] = recoHot->drift(); 01179 m_xsigma[i] = recoHot->hitRms(); 01180 m_xtdc[i] = recoHot->rawTime(); 01181 m_xadc[i] = recoHot->mdcHit()->charge(); 01182 m_xdoca[i] = recoHot->dcaToWire();//sign w.r.t. dirft() FIXME 01183 m_xentra[i] = recoHot->entranceAngle(); 01184 //m_xentraHit[i] = recoHot->entranceAngleHit(); 01185 m_xact[i] = recoHot->isActive(); 01186 //resid 01187 double res=999.,rese=999.; 01188 if (recoHot->resid(res,rese,false)){ 01189 }else{} 01190 m_xresid[i] = res; 01191 //for n seg 01192 segme=0; 01193 if ( layer >0 ) {segme=(layer-1)/4;} 01194 seg[segme]++; 01195 if (recoHot->layer()->view()) { ++nSt; } 01196 i++; 01197 }// end fill hit 01198 01199 int nSlay=0; 01200 for(int i=0;i<11;i++){ 01201 if (seg[i]>0) nSlay++; 01202 } 01203 m_xnSlay = nSlay; 01204 01205 //------------fill track result------------- 01206 //m_xtkId = itrack; 01207 //track parameters at closest approach to beamline 01208 double fltLenPoca = 0.0; 01209 TrkExchangePar helix = fitResult->helix(fltLenPoca); 01210 m_xphi0 = helix.phi0(); 01211 m_xtanl = helix.tanDip(); 01212 m_xz0 = helix.z0(); 01213 m_xd0 = helix.d0(); 01214 if(fabs(m_xz0)>20||fabs(m_xd0)>2) { 01215 //b_saveEvent = true; 01216 if(m_debug>1) std::cout<<"evt:"<<m_eventNo<<" BigVtx:" 01217 <<" d0 "<<helix.d0()<<" z0 "<<helix.z0()<<std::endl; 01218 } 01219 m_xpt = fitResult->pt(); 01220 if (m_xpt > 0.00001){ 01221 m_xcpa = fitResult->charge()/fitResult->pt(); 01222 } 01223 //momenta and position 01224 CLHEP::Hep3Vector p1 = fitResult->momentum(fltLenPoca); 01225 double px,py,pz,pxy; 01226 pxy = fitResult->pt(); 01227 px = p1.x(); 01228 py = p1.y(); 01229 pz = p1.z(); 01230 m_xp = p1.mag(); 01231 m_xpz = pz; 01232 HepPoint3D poca = fitResult->position(fltLenPoca); 01233 m_xpocax = poca.x(); 01234 m_xpocay = poca.y(); 01235 m_xpocaz = poca.z(); 01236 01237 m_xq = fitResult->charge(); 01238 m_xnAct = fitResult->nActive(); 01239 m_xnHit = hitlist->nHit(); 01240 m_xnDof = fitResult->nDof(); 01241 m_xnSt = nSt; 01242 m_xchi2 = fitResult->chisq(); 01243 //for (int l=0;l<43;l++) m_xlayerCount[l] = layerCount[l]; 01244 m_xt0 = m_bunchT0; 01245 m_xtiming = m_timing; 01246 m_xt0Stat = m_t0Stat; 01247 m_xt0Truth= m_t0Truth; 01248 m_xtuple1->write(); 01249 //}//end of loop rec trk list 01250 01251 }//end of
void MdcxTrackFinder::fillTrkl | ( | const HepAList< MdcxFittedHel > & | firsttrkl | ) | const [private] |
Definition at line 1340 of file MdcxTrackFinder.cxx.
References m_xt5Layer, m_xt5Wire, and m_xtupleTrkl.
01340 { 01341 if(!m_xtupleTrkl) return; 01342 int nDigi = 0; 01343 int iDigi = 0; 01344 for (int i =0; i< firsttrkl.length(); i++){ 01345 nDigi+= firsttrkl[i]->Nhits(); 01346 } 01347 for (int i=0;i<firsttrkl.length();i++){ 01348 for (int ihit=0 ; ihit< firsttrkl[i]->Nhits() ; ihit++){ 01349 const MdcxHit* hit = firsttrkl[i]->XHitList()[ihit]; 01350 int layer = hit->Layer(); 01351 int wire = hit->WireNo(); 01352 m_xt5Layer = layer; 01353 m_xt5Wire = wire; 01354 m_xtupleTrkl->write(); 01355 iDigi++; 01356 } 01357 } 01358 }//end of fillTrkl
StatusCode MdcxTrackFinder::finalize | ( | ) |
Definition at line 493 of file MdcxTrackFinder.cxx.
References genRecEmupikp::i, Bes_Common::INFO, msgSvc(), t_nTkNum, and t_nTkTot.
00493 { 00494 MsgStream log(msgSvc(), name()); 00495 log << MSG::INFO << "in finalize()" << endreq; 00496 00497 std::cout<< " --after " << name() << " keep " << t_nTkTot<< " tracks "<<std::endl; 00498 for(int i=0; i<20; i++){ 00499 if(t_nTkNum[i]>0)std::cout<< " nTk="<< i << " "<< t_nTkNum[i]<< std::endl; 00500 } 00501 00502 //tot evtNo, trkNum 00503 return StatusCode::SUCCESS; 00504 }
StatusCode MdcxTrackFinder::FitMdcxTrack | ( | HepAList< MdcxFittedHel > & | trkList, | |
const HepAList< MdcxHit > & | dchitlist, | |||
MdcHitCol * | hitCol, | |||
RecMdcTrackCol * | trackList, | |||
RecMdcHitCol * | hitList | |||
) | [private] |
Definition at line 546 of file MdcxTrackFinder.cxx.
References EvtCyclic3::c_str(), TrkAbsFit::chisq(), MdcxFittedHel::Chisq(), MdcxHel::D0(), dropMultiHotInLayer(), dumpTdsTrack(), showlog::err, MdcxFittedHel::Fail(), TrkHitList::fit(), MdcxAddHits::GetAssociates(), MdcxFittedHel::Grow(), genRecEmupikp::i, m_addHitCut, m_bunchT0, m_context, m_debug, m_dropMultiHotInLayer, m_lineFit, TrkSimpleMaker< T >::makeTrack(), MdcxHitsToHots(), msgSvc(), TrkFit::nActive(), MdcxHel::Omega(), MdcxHel::Phi0(), TrkErrCode::print(), MdcxFittedHel::ReFit(), MdcxFittedHel::SetChiDofBail(), TrkSimpleMaker< T >::setFlipAndDrop(), store(), TrkErrCode::success(), MdcxHel::Tanl(), MdcxFittedHel::VaryRes(), MdcxFittedHel::XHitList(), and MdcxHel::Z0().
Referenced by execute().
00548 { 00549 StatusCode sc; 00550 MsgStream log(msgSvc(), name()); 00551 00552 //--Add Hit to MdcxFittedHel 00553 //if(m_debug>1){ 00554 // std::cout << "dchitlist before addHits nhits=" << dchitlist.length() << std::endl; 00555 // for (int ii = 0; ii < dchitlist.length(); ii++) { 00556 // dchitlist[ii]->print(std::cout, ii); 00557 // } 00558 // std::cout<<std::endl; 00559 //} 00560 MdcxAddHits dcaddem(trkl, dchitlist, m_addHitCut); 00561 //if (m_debug > 1){ 00562 // cout << "MdcxTrackFinder: after AddHits, have " 00563 // << trkl.length() << " track(s). nhits=" << dchitlist.length() << endl; 00564 // for (int ii = 0; ii < dchitlist.length(); ii++) { 00565 // dchitlist[ii]->print(std::cout, ii); 00566 // } 00567 // std::cout<<std::endl; 00568 //} 00569 00570 TrkLineMaker linefactory; 00571 TrkHelixMaker helixfactory; 00572 00573 00574 int tkLen = trkl.length();//FIXME 00575 for (int kk=0; kk< tkLen; kk++){ 00576 const HepAList<MdcxHit>& xhits = trkl[kk]->XHitList(); 00577 if(m_debug>2){ 00578 std::cout<<__FILE__<<" FitMdcxTrack "<<kk<< std::endl; 00579 for(int i=0; i<xhits.length(); i++){ xhits[i]->print(std::cout); } 00580 std::cout<<std::endl; 00581 } 00582 00583 if(m_debug>2) std::cout<<" before add hits nhits="<<xhits.length()<< std::endl; 00584 HepAList<MdcxHit> xass = dcaddem.GetAssociates(kk); 00585 if(m_debug>2){ 00586 std::cout<<" after,add "<<xass.length()<<" hits"<<std::endl; 00587 } 00588 00589 MdcxFittedHel mdcxHelix = *trkl[kk]; 00590 double thechisq = mdcxHelix.Chisq(); 00591 TrkExchangePar tt(-mdcxHelix.D0(),mdcxHelix.Phi0(),mdcxHelix.Omega(),-mdcxHelix.Z0(),-mdcxHelix.Tanl()); 00592 TrkRecoTrk* aTrack; 00593 int nparm; 00594 00595 if (m_lineFit) { 00597 aTrack = linefactory.makeTrack(tt, thechisq, *m_context, m_bunchT0*1.e-9); 00598 nparm = 4; 00599 linefactory.setFlipAndDrop(*aTrack, true, true); 00600 } else { 00601 aTrack = helixfactory.makeTrack(tt, thechisq, *m_context, m_bunchT0*1.e-9); 00602 nparm = 5; 00603 helixfactory.setFlipAndDrop(*aTrack, true, true); 00604 } 00605 00606 TrkHitList* m_trkHitList = aTrack->hits(); 00607 if (0 == m_trkHitList) { 00608 delete aTrack; 00609 aTrack = NULL; 00610 continue; 00611 } 00612 00613 00614 MdcxHitsToHots(mdcxHelix, xhits, m_trkHitList, m_hitCol); 00615 //std::cout<<"xhits---------------------"<<std::endl;//debug 00616 //m_trkHitList->hotList().printAll(cout);//debug 00617 MdcxHitsToHots(mdcxHelix, xass, m_trkHitList, m_hitCol); 00618 //std::cout<<"xass----------------------"<<std::endl;//debug 00619 //m_trkHitList->hotList().printAll(cout);//debug 00620 //std::cout<<"size "<<m_trkHitList->hotList().nHit()<<std::endl; 00621 //int beforDrop = m_trkHitList->hotList().nHit(); 00622 if(m_dropMultiHotInLayer) dropMultiHotInLayer(m_trkHitList);//yzhang debug FIXME 00623 //int afterDrop = m_trkHitList->hotList().nHit(); 00624 //std::cout<<"drop "<<beforDrop-afterDrop<<" keep:"<<afterDrop<<::endl; 00625 if(m_debug>1){ std::cout<< "== put to official fitter "<<std::endl;} 00626 TrkErrCode err = m_trkHitList->fit(); 00627 00628 if(m_debug>1){ 00629 std::cout<< "== after official fitter "<<std::endl; 00630 aTrack->printAll(std::cout); 00631 } 00632 00633 const TrkFit* theFit = aTrack->fitResult(); 00634 float rcs = 10000.0; 00635 00636 if (theFit) { 00637 int ndof = theFit->nActive()-nparm; 00638 if (ndof > 0) rcs = theFit->chisq()/float(ndof); 00639 if (m_debug>1) { 00640 if (4 == nparm) cout << " TrkLineMaker"; 00641 else cout << " TrkHelixMaker"; 00642 cout << " trkNo. " << kk << " success " << err.success() << " rcs " << rcs 00643 << " chi2 " << theFit->chisq() << " nactive " << theFit->nActive() << endl; 00644 } 00645 } 00646 00647 if ( (1 == err.success()) && (rcs < 20.0) ) { 00648 if(m_debug>1) std::cout<<"== fit success "<<std::endl;//yzhang debug 00649 if (4 == nparm) { 00650 linefactory.setFlipAndDrop(*aTrack, false, false); 00651 } else { 00652 helixfactory.setFlipAndDrop(*aTrack, false, false); 00653 } 00654 //-------------Stick the found tracks into the list in RecMdcTrackCol-------- 00655 if (m_debug>1) { cout << "MdcxTrackFinder: accept a track " << endl; } 00656 // update history 00657 aTrack->status()->addHistory(err,name().c_str()); //yzhang FIXME 00658 store(aTrack, trackList, hitList);//aTrack have been deleted 00659 } else if ( (2 == err.success()) && (rcs < 150.0) ) { 00660 if(m_debug > 1) std::cout<<"== fit success = 2, refit now"<<std::endl;//yzhang debug 00661 int nrefit = 0; 00662 while (nrefit++ < 5) { 00663 if (m_debug>1) std::cout << "refit time " << nrefit << std::endl; 00664 err = m_trkHitList->fit(); 00665 if (err.success() == 1) break; 00666 } 00667 if (err.success() == 1) { 00668 if (4 == nparm) { 00669 linefactory.setFlipAndDrop(*aTrack, false, false); 00670 } else { 00671 helixfactory.setFlipAndDrop(*aTrack, false, false); 00672 } 00673 //-------------Stick the found tracks into the list in RecMdcTrackCol-------- 00674 //if (m_debug>1) { cout << "MdcxTrackFinder: accept a track and store to TDS" << endl; } 00675 // update history 00676 aTrack->status()->addHistory(err,name().c_str()); //yzhang FIXME 00677 store(aTrack, trackList, hitList);//aTrack have been deleted 00678 } 00679 } else { 00680 if (m_debug >1) { 00681 std::cout<<"== fit faild "<<std::endl;//yzhang debug 00682 err.print(cout); 00683 cout << endl; 00684 } 00685 delete aTrack; 00686 aTrack = NULL; 00687 //--------------------------------------- 00688 // Fit no good; try a better input helix 00689 //--------------------------------------- 00690 if(m_debug>1) std::cout<<"== Fit no good; try a better input helix"<<std::endl;//yzhang debug 00691 mdcxHelix.Grow(*trkl[kk],xass); 00692 mdcxHelix.VaryRes(); 00693 mdcxHelix.SetChiDofBail(1500);//yzhang add 2009-11-03 00694 int fail = mdcxHelix.ReFit(); 00695 if(m_debug>1)std::cout<<__FILE__<<" refit fail:"<<fail<< std::endl; 00696 if (!mdcxHelix.Fail()) { 00697 const HepAList<MdcxHit>& bxhits = mdcxHelix.XHitList(); 00698 thechisq = mdcxHelix.Chisq(); 00699 TrkExchangePar tb(mdcxHelix.D0(),mdcxHelix.Phi0(),mdcxHelix.Omega(),mdcxHelix.Z0(),mdcxHelix.Tanl()); 00700 TrkRecoTrk* bTrack; 00701 if (4 == nparm){ 00702 bTrack = linefactory.makeTrack(tb,thechisq,*m_context,m_bunchT0*1.e-9); 00703 linefactory.setFlipAndDrop(*bTrack, false, false); 00704 }else{ 00705 bTrack = helixfactory.makeTrack(tb,thechisq,*m_context,m_bunchT0*1.e-9); 00706 helixfactory.setFlipAndDrop(*bTrack, false, false); 00707 } 00708 TrkHitList* bhits = bTrack->hits(); 00709 if (0 == bhits){delete bTrack; bTrack = NULL; continue;} 00710 00711 MdcxHitsToHots(mdcxHelix, bxhits, bhits, m_hitCol); 00712 TrkErrCode berr = bhits->fit(); 00713 const TrkFit* bFit = bTrack->fitResult(); 00714 rcs=10000.0; 00715 if (bFit) { 00716 int ndof = bFit->nActive() - nparm; 00717 if (ndof > 0) rcs = bFit->chisq()/float(ndof); 00718 if (m_debug >1) { 00719 if (4 == nparm) cout << " TrkLineMaker"; 00720 else cout << " TrkHelixMaker"; 00721 cout << " success trkNo. " << kk << " status " << berr.success() << " rcs " << rcs 00722 << " chi2 " << bFit->chisq() << " nactive "<< bFit->nActive() << endl; 00723 } 00724 } 00725 if ( ( 1 == berr.success() ) && ( rcs < 50.0 ) ) { 00726 // update history 00727 bTrack->status()->addHistory(berr,name().c_str());//yzhang FIXME 00728 if (m_debug>1) { 00729 cout << "MdcxTrackFinder: accept b track and store to TDS" << endl; 00730 bTrack->printAll(cout); 00731 } 00732 store(bTrack, trackList, hitList);//bTrack have been deleted 00733 } else { 00734 if (m_debug>1) { 00735 cout<< " fit failed "<<endl; 00736 berr.print(cout); 00737 cout << endl; 00738 } 00739 if (bTrack!=NULL) { delete bTrack; bTrack = NULL; } 00740 } 00741 }else{ 00742 //cout<< " grow and refit failed "<<endl; 00743 } 00744 } 00745 } 00746 if(m_debug >1) dumpTdsTrack(trackList); 00747 return StatusCode::SUCCESS; 00748 00749 }// end of FitMdcxTrack
StatusCode MdcxTrackFinder::initialize | ( | ) |
Definition at line 165 of file MdcxTrackFinder.cxx.
References BField::bFieldNominal(), bookNTuple(), MdcxParameters::csmax3, MdcxParameters::csmax4, MdcxFittedHel::debug, MdcxParameters::debug, MdcxParameters::dropHitsSigma, calibUtil::ERROR, Bes_Common::FATAL, MdcxParameters::helixFitSigma, genRecEmupikp::i, Bes_Common::INFO, m_bfield, m_context, m_countPropTime, m_csmax3, m_csmax4, TrkHelixFitter::m_debug, m_debug, m_dropHitsSigma, m_helixFitCut, m_helixFitSigma, m_hist, m_maxProca, m_maxRcsInAddSeg, m_mdcCalibFunSvc, m_minTrkProb, m_nSigAddHitTrk, m_pdtFile, m_pIMF, m_rawDataProviderSvc, MdcxParameters::maxProca, MdcxParameters::maxRcsInAddSeg, MdcxParameters::minTrkProb, msgSvc(), MdcxParameters::nSigAddHitTrk, TrkHelixFitter::nSigmaCut, Pdt::readMCppTable(), MdcxHit::setCountPropTime(), MdcxHit::setMdcCalibFunSvc(), t_nTkNum, t_nTkTot, and Bes_Common::WARNING.
00165 { 00166 MsgStream log(msgSvc(), name()); 00167 log << MSG::INFO << "in initialize()" << endreq; 00168 00169 t_nTkTot = 0; 00170 for (int i=0;i<20;i++) t_nTkNum[i]=0; 00171 00172 //m_flags.readPar(m_paramFile); 00173 #ifdef MDCXTIMEDEBUG 00174 StatusCode tsc = service( "BesTimerSvc", m_timersvc); 00175 if( tsc.isFailure() ) { 00176 log << MSG::WARNING << name() << ": Unable to locate BesTimer Service" << endreq; 00177 return StatusCode::FAILURE; 00178 } 00179 m_timer[0] = m_timersvc->addItem("Execution"); 00180 m_timer[0]->propName("Execution"); 00181 #endif 00182 00183 if (m_helixFitCut.size() == 43){ 00184 for(int i=0; i<43; i++){ 00185 //MdcTrkReconCut_helix_fit[i] = m_helixFitCut[i]; 00186 TrkHelixFitter::nSigmaCut[i] = m_helixFitCut[i]; 00187 } 00188 } 00189 MdcxParameters::debug = m_debug; 00190 MdcxParameters::minTrkProb = m_minTrkProb; 00191 MdcxParameters::csmax4 = m_csmax4; 00192 MdcxParameters::csmax3 = m_csmax3; 00193 MdcxParameters::helixFitSigma = m_helixFitSigma; 00194 MdcxParameters::maxRcsInAddSeg= m_maxRcsInAddSeg; 00195 MdcxParameters::nSigAddHitTrk = m_nSigAddHitTrk; 00196 MdcxParameters::maxProca = m_maxProca; 00197 TrkHelixFitter::m_debug = (m_debug>7); 00198 Pdt::readMCppTable(m_pdtFile); 00199 MdcxFittedHel::debug = m_debug; 00200 00201 00202 // Get MdcCalibFunSvc 00203 IMdcCalibFunSvc* imdcCalibSvc; 00204 StatusCode sc = service ("MdcCalibFunSvc", imdcCalibSvc); 00205 m_mdcCalibFunSvc = dynamic_cast<MdcCalibFunSvc*>(imdcCalibSvc); 00206 if ( sc.isFailure() ){ 00207 log << MSG::FATAL << "Could not load MdcCalibFunSvc!" << endreq; 00208 return StatusCode::FAILURE; 00209 } 00210 MdcxHit::setMdcCalibFunSvc(m_mdcCalibFunSvc); 00211 MdcxHit::setCountPropTime(m_countPropTime); 00212 00213 // Get RawDataProviderSvc 00214 IRawDataProviderSvc* iRawDataProvider; 00215 sc = service ("RawDataProviderSvc", iRawDataProvider); 00216 if ( sc.isFailure() ){ 00217 log << MSG::FATAL << "Could not load RawDataProviderSvc!" << endreq; 00218 return StatusCode::FAILURE; 00219 } 00220 m_rawDataProviderSvc = dynamic_cast<RawDataProviderSvc*>(iRawDataProvider); 00221 00222 00223 //Initailize magnetic filed 00224 sc = service ("MagneticFieldSvc",m_pIMF); 00225 if(sc!=StatusCode::SUCCESS) { 00226 log << MSG::ERROR << "Unable to open Magnetic field service"<<endreq; 00227 } 00228 m_bfield = new BField(m_pIMF); 00229 log << MSG::INFO << "field z = "<<m_bfield->bFieldNominal()<< endreq; 00230 m_context = new TrkContextEv(m_bfield); 00231 00232 if (m_hist) {bookNTuple();} 00233 if (m_dropHitsSigma.size()==43){ 00234 for (int ii=0;ii<43;ii++) { 00235 MdcxParameters::dropHitsSigma[ii]=m_dropHitsSigma[ii]; 00236 } 00237 } 00238 00239 return StatusCode::SUCCESS; 00240 }
void MdcxTrackFinder::MdcxHitsToHots | ( | TrkHitList * | m_trkHitList, | |
HitRefVec & | recMdcHits, | |||
HitRefVec & | skipedHits | |||
) | [private] |
void MdcxTrackFinder::MdcxHitsToHots | ( | MdcxHel & | mdcxHelix, | |
const HepAList< MdcxHit > & | mdcxHits, | |||
TrkHitList * | m_trkHitList, | |||
MdcHitCol * | hitCol | |||
) | [private] |
Definition at line 507 of file MdcxTrackFinder.cxx.
References TrkHitList::appendHot(), MdcID::layer(), m_bunchT0, m_countPropTime, m_digiMap, m_gm, m_mdcCalibFunSvc, TrkHitOnTrk::setActivity(), MdcHit::setCalibSvc(), MdcHit::setCountPropTime(), TrkHitOnTrk::setUsability(), subSeperate::temp, and MdcID::wire().
Referenced by FitMdcxTrack().
00508 { 00509 00510 if ( 0 == mdcxHits.length() ) return; 00511 00512 int ihits = 0; 00513 while(mdcxHits[ihits]) { 00514 int ambig = 0;//=mdcxHelix.Doca_Samb();//yzhang delete 2011-10-13 00515 const MdcHit* newhit = mdcxHits[ihits]->getMdcHit(); 00516 if ( 0 == newhit ) { 00517 const MdcDigi* theDigi = mdcxHits[ihits]->getDigi(); 00518 int layer = MdcID::layer(mdcxHits[ihits]->getDigi()->identify()); 00519 int wire = MdcID::wire(mdcxHits[ihits]->getDigi()->identify()); 00520 m_digiMap[layer][wire] = mdcxHits[ihits]->getDigi(); 00521 MdcHit *thehit = new MdcHit(theDigi, m_gm); 00522 thehit->setCalibSvc(m_mdcCalibFunSvc); 00523 thehit->setCountPropTime(m_countPropTime); 00524 //thehit->setCosmicFit(m_cosmicFit); 00525 00526 mdcHitCol->push_back(thehit); 00527 newhit = thehit; 00528 } 00529 MdcRecoHitOnTrack temp(*newhit, ambig, m_bunchT0);//m_bunchT0 nano second here 00530 MdcHitOnTrack* newhot = &temp; 00531 //double fltLen = mdcxHelix.Doca_FLen(); 00532 //std::cout<<" fltLen-- "<<fltLen<<" "<<std::endl; 00533 //newhot->setFltLen(fltLen); 00534 //newhot->print(std::cout); 00535 //std::cout<< __FILE__ << " ambig " << ambig << " append "<<std::endl; 00536 00537 // Store MdcxHits to TrkHitList 00538 m_trkHitList->appendHot(newhot); //yzhang TEMP FIXME 00539 newhot->setUsability(true);//yzhang add 2011-10-12 TEMP 00540 newhot->setActivity(true);//yzhang add 2011-10-12 TEMP 00541 00542 ihits++; 00543 } 00544 }
void MdcxTrackFinder::printTrack | ( | RecMdcTrack * | tk | ) | [private] |
Definition at line 787 of file MdcxTrackFinder.cxx.
References DstMdcTrack::charge(), DstMdcTrack::chi2(), DstMdcTrack::err(), RecMdcTrack::getFiTerm(), RecMdcTrack::getNhits(), RecMdcTrack::getVecHits(), DstMdcTrack::helix(), MdcDetector::Layer(), MdcID::layer(), m_gm, DstMdcTrack::ndof(), DstMdcTrack::nster(), DstMdcTrack::poca(), DstMdcTrack::trackId(), Constants::vpropInner, Constants::vpropOuter, MdcID::wire(), and MdcLayer::zLength().
Referenced by dumpTrack().
00787 { 00788 //yzhang debug 00789 std::cout<< " MdcTrack Id:"<<tk->trackId() <<" q:"<< tk->charge()<< std::endl; 00790 std::cout<< "dr Fi0 Cpa Dz Tanl Chi2 Ndf nSt FiTerm poca" << std::endl; 00791 std::cout<<"(" <<setw(5) << tk->helix(0)<<","<< setw(5) << tk->helix(1)<<"," << setw(5) << tk->helix(2) <<"," 00792 << setw(5) << tk->helix(3) << ","<< setw(5) << tk->helix(4) <<")" 00793 << setw(5) << tk->chi2() << setw(4) << tk->ndof() 00794 << setw(4) << tk->getNhits() << setw(4) << tk->nster() 00795 << setw(5) << tk->getFiTerm() <<tk->poca()<<std::endl; 00796 std::cout<< " ErrMat "<<tk->err() << std::endl; 00797 00798 std::cout<< "hitId tkId (l,w) fltLen lr dt ddl tdc "//<<chi2Add 00799 <<"doca entr z tprop stat " << std::endl; 00800 00801 HitRefVec hl = tk->getVecHits(); 00802 HitRefVec::iterator it = hl.begin(); 00803 for (;it!=hl.end();++it){ 00804 RecMdcHit* h = *it; 00805 int layer = MdcID::layer(h->getMdcId()); 00806 double _vprop = (layer<8) ? Constants::vpropInner : Constants::vpropOuter; 00807 const MdcLayer* _layerPtr = m_gm->Layer(layer); 00808 double _zlen = _layerPtr->zLength(); 00809 double z = h->getZhit(); 00810 double tprop; 00811 if (0 == layer%2){ 00812 tprop = (0.5*_zlen + z)/_vprop; //odd 00813 }else{ 00814 tprop = (0.5*_zlen - z)/_vprop; //even 00815 } 00816 // build the sense wires 00817 //const MdcSWire* wire = m_gm->Wire(MdcID::layer(h->getMdcId()),MdcID::wire(h->getMdcId())); 00818 //double z = wire->zForw(); 00819 //while(z<wire->zRear()){ 00820 //HepPoint3D pos; 00821 //Hep3Vector dir; 00822 //if(!(wire->getTraj()==NULL)){ 00823 //wire->getTraj()->getInfo(z,pos,dir); 00824 //} 00825 //std::cout<<"("<< wire->layer()->layNum()<<","<<wire->cell()<<" "<<wire->Id()<<")"; 00826 //std::cout<<" z, sag:"<<z 00827 //<<", "<<wire->getTraj()->deltaY(z-wire->zForw())<<std::endl; 00829 //z+=1.; 00830 //} 00831 std::cout<< setw(3) << h->getId() << setw(2) << h->getTrkId() << 00832 "(" << MdcID::layer(h->getMdcId()) <<"," << MdcID::wire(h->getMdcId()) <<")"<< 00833 setw(10) << h->getFltLen() << 00834 setw(2) << h->getFlagLR() <<setw(10) << h->getDriftT() << 00835 setw(12) << h->getDriftDistLeft() <<//setw(8) << h->getErrDriftDistRight() << 00836 setw(8) << h->getTdc() <<//setw(10) << h->getChisqAdd() << 00837 setw(10) << h->getDoca() <<setw(10) << h->getEntra() << 00838 setw(10) << h->getZhit() << setw(10) << tprop<< 00839 setw(2)<< h->getStat() << std::endl; 00840 } 00841 }//print track
void MdcxTrackFinder::store | ( | TrkRecoTrk * | aTrack, | |
RecMdcTrackCol * | , | |||
RecMdcHitCol * | ||||
) | [private] |
Definition at line 751 of file MdcxTrackFinder.cxx.
References TrkExchangePar::d0(), fillTrack(), TrkRecoTrk::fitResult(), TrkFit::helix(), m_d0Cut, m_debug, m_dropTrkPt, m_hist, m_z0Cut, nTk, TrkAbsFit::pt(), MdcTrack::storeTrack(), and TrkExchangePar::z0().
Referenced by FitMdcxTrack().
00752 { 00753 assert (aTrack != NULL); 00754 nTk++; 00755 int trackId = trackList->size(); 00756 TrkExchangePar helix = aTrack->fitResult()->helix(0.); 00757 if(m_dropTrkPt>0. && (aTrack->fitResult()->pt()<m_dropTrkPt)) { 00758 if(m_debug>1) std::cout<<"MdcxTrackFinder delete track by pt " 00759 <<aTrack->fitResult()->pt()<<"<ptCut "<<m_dropTrkPt << std::endl; 00760 return; 00761 } 00762 00763 if( ( (fabs(helix.d0())>m_d0Cut) ||( fabs(helix.z0())>m_z0Cut) ) ){ 00764 if(m_debug>1) std::cout<< name()<<" delete track by d0 "<<helix.d0()<<">d0Cut "<<m_d0Cut 00765 <<" or z0 "<<helix.z0()<<" >z0Cut "<<m_z0Cut << std::endl; 00766 return; 00767 } 00768 00769 if(m_hist) fillTrack(aTrack); 00770 MdcTrack mdcTrack(aTrack);//aTrack have been deleted in ~MdcTrack() 00771 //tkStat: 0,PatRec 1,MdcxReco 2,Tsf 3,CurlFinder -1,Combined cosmic 00772 int tkStat = 1; 00773 int nHitbefore = hitList->size(); 00774 00775 mdcTrack.storeTrack(trackId, trackList, hitList, tkStat); 00776 int nHitAfter = hitList->size(); 00777 if (nHitAfter - nHitbefore <10 ) setFilterPassed(true); 00778 }
bool MdcxTrackFinder::b_saveEvent [private] |
int MdcxTrackFinder::haveDigi[43][288] [private] |
double MdcxTrackFinder::m_addHitCut [private] |
Definition at line 124 of file MdcxTrackFinder.h.
Referenced by FitMdcxTrack(), and MdcxTrackFinder().
BField* MdcxTrackFinder::m_bfield [private] |
Definition at line 136 of file MdcxTrackFinder.h.
Referenced by initialize(), and ~MdcxTrackFinder().
double MdcxTrackFinder::m_bunchT0 [private] |
Definition at line 89 of file MdcxTrackFinder.h.
Referenced by execute(), fillEvent(), fillTrack(), FitMdcxTrack(), and MdcxHitsToHots().
TrkContextEv* MdcxTrackFinder::m_context [private] |
bool MdcxTrackFinder::m_countPropTime [private] |
Definition at line 116 of file MdcxTrackFinder.h.
Referenced by initialize(), MdcxHitsToHots(), and MdcxTrackFinder().
double MdcxTrackFinder::m_cresol [private] |
double MdcxTrackFinder::m_csmax3 [private] |
Definition at line 127 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
double MdcxTrackFinder::m_csmax4 [private] |
Definition at line 126 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
double MdcxTrackFinder::m_d0Cut [private] |
int MdcxTrackFinder::m_debug [private] |
Definition at line 96 of file MdcxTrackFinder.h.
Referenced by execute(), fillTrack(), FitMdcxTrack(), initialize(), MdcxTrackFinder(), and store().
const MdcDigi* MdcxTrackFinder::m_digiMap[43][288] [private] |
bool MdcxTrackFinder::m_doSag [private] |
std::vector<float> MdcxTrackFinder::m_dropHitsSigma [private] |
Definition at line 121 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
bool MdcxTrackFinder::m_dropHot [private] |
bool MdcxTrackFinder::m_dropMultiHotInLayer [private] |
Definition at line 108 of file MdcxTrackFinder.h.
Referenced by FitMdcxTrack(), and MdcxTrackFinder().
double MdcxTrackFinder::m_dropTrkPt [private] |
bool MdcxTrackFinder::m_dropUnmatch [private] |
Definition at line 101 of file MdcxTrackFinder.h.
int MdcxTrackFinder::m_eventNo [private] |
Definition at line 93 of file MdcxTrackFinder.h.
Referenced by execute(), fillEvent(), and fillTrack().
uint32_t MdcxTrackFinder::m_getDigiFlag [private] |
const MdcDetector* MdcxTrackFinder::m_gm [private] |
Definition at line 145 of file MdcxTrackFinder.h.
Referenced by beginRun(), MdcxHitsToHots(), and printTrack().
std::vector<float> MdcxTrackFinder::m_helixFitCut [private] |
Definition at line 122 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
double MdcxTrackFinder::m_helixFitSigma [private] |
Definition at line 128 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
int MdcxTrackFinder::m_hist [private] |
Definition at line 97 of file MdcxTrackFinder.h.
Referenced by bookNTuple(), execute(), initialize(), MdcxTrackFinder(), and store().
HepAList<MdcHit>* MdcxTrackFinder::m_junkHitList [private] |
Definition at line 141 of file MdcxTrackFinder.h.
bool MdcxTrackFinder::m_keepBadTdc [private] |
bool MdcxTrackFinder::m_keepUnmatch [private] |
bool MdcxTrackFinder::m_lineFit [private] |
Definition at line 112 of file MdcxTrackFinder.h.
Referenced by FitMdcxTrack(), and MdcxTrackFinder().
int MdcxTrackFinder::m_maxMdcDigi [private] |
double MdcxTrackFinder::m_maxProca [private] |
Definition at line 131 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
double MdcxTrackFinder::m_maxRcsInAddSeg [private] |
Definition at line 129 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
bool MdcxTrackFinder::m_mcHist [private] |
Definition at line 98 of file MdcxTrackFinder.h.
Referenced by fillMcTruth(), and MdcxTrackFinder().
const MdcCalibFunSvc* MdcxTrackFinder::m_mdcCalibFunSvc [private] |
MdcxHits MdcxTrackFinder::m_mdcxHits [private] |
int MdcxTrackFinder::m_minMdcDigi [private] |
double MdcxTrackFinder::m_minTrkProb [private] |
Definition at line 125 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
double MdcxTrackFinder::m_nSigAddHitTrk [private] |
Definition at line 130 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
std::string MdcxTrackFinder::m_pdtFile [private] |
Definition at line 140 of file MdcxTrackFinder.h.
Referenced by initialize(), and MdcxTrackFinder().
IMagneticFieldSvc* MdcxTrackFinder::m_pIMF [private] |
bool MdcxTrackFinder::m_salvageTrk [private] |
int MdcxTrackFinder::m_t0Stat [private] |
Definition at line 91 of file MdcxTrackFinder.h.
Referenced by execute(), fillEvent(), and fillTrack().
double MdcxTrackFinder::m_t0Truth [private] |
Definition at line 92 of file MdcxTrackFinder.h.
Referenced by fillEvent(), fillMcTruth(), and fillTrack().
double MdcxTrackFinder::m_timing [private] |
double MdcxTrackFinder::m_z0Cut [private] |
MdcDigiVec MdcxTrackFinder::mdcDigiVec [private] |
Definition at line 146 of file MdcxTrackFinder.h.
Referenced by execute(), fillEvent(), and fillMcTruth().
int MdcxTrackFinder::nTk [private] |
int MdcxTrackFinder::t_nDigi [private] |
int MdcxTrackFinder::t_nTdsTk [private] |
int MdcxTrackFinder::t_nTkNum[20] [private] |
Definition at line 87 of file MdcxTrackFinder.h.
Referenced by execute(), finalize(), and initialize().
int MdcxTrackFinder::t_nTkTot [private] |
Definition at line 86 of file MdcxTrackFinder.h.
Referenced by execute(), finalize(), and initialize().