00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkHelixMaker.cxx,v 1.1.1.1 2005/04/21 06:26:56 maqm Exp $ 00004 // 00005 // Description: 00006 // 00007 // Environment: 00008 // Software developed for the BaBar Detector at the SLAC B-Factory. 00009 // 00010 // Authors: Steve Schaffner 00011 // 00012 //------------------------------------------------------------------------ 00013 #include "TrkFitter/TrkHelixMaker.h" 00014 #include "TrkFitter/TrkHelixRep.h" 00015 #include "TrkBase/TrkRecoTrk.h" 00016 #include "TrkBase/TrkExchangePar.h" 00017 #include "TrkBase/TrkHitOnTrk.h" 00018 00019 //------------------------------------------------------------------------ 00020 TrkHelixMaker::~TrkHelixMaker() {} 00021 //------------------------------------------------------------------------ 00022 00023 //------------------------------------------------------------------------ 00024 TrkHelixMaker::TrkHelixMaker() {} 00025 //------------------------------------------------------------------------ 00026 00027 00028 void 00029 TrkHelixMaker::addZValues(TrkRecoTrk& theTrack, double z0, 00030 double tanDip, double chi2) 00031 { 00032 PdtPid::PidType hypo = theTrack.defaultType(); 00033 // const TrkRep* defrep = getRep(theTrack,hypo); 00034 // const TrkHotList *hl = defrep->hotList();//yzhang delete 00035 TrkRep* defrep = getRep(theTrack,hypo); 00036 TrkHotList *hl = defrep->hotList();//yzhang temp 00037 const TrkFit* theFit = theTrack.fitResult(); 00038 if (theFit == 0) { 00039 std::cout<<"ErrMsg(error)" 00040 << "TrkSimpleMaker::addZValues() cannot get helix from invalid fit." 00041 << std::endl; 00042 return; 00043 } 00044 00045 TrkExchangePar oldPar = theFit->helix(0.0); 00046 oldPar.setZ0(z0); 00047 oldPar.setTanDip(tanDip); 00048 /* 00049 std::cout << "#########################before newHelix" << std::endl;//yzhang debug 00050 std::cout << "track--------- " << std::endl;//yzhang debug 00051 theTrack.printAll(std::cout);//track 00052 std::cout << "rep of track--------- " << std::endl;//yzhang debug 00053 getRep(theTrack,hypo)->printAll(std::cout);//track Rep 00054 std::cout << "circle rep's hotlist--------- " << std::endl;//yzhang debug 00055 hl->printAll(std::cout);//Circle Rep 's hotList 00056 */ 00057 00058 TrkHelixRep* newRep = new TrkHelixRep(oldPar, &theTrack, hypo, hl); 00059 /* 00060 std::cout << "#########################after new helix before setRep" << std::endl;//yzhang debug 00061 std::cout << "track--------- " << std::endl;//yzhang debug 00062 theTrack.printAll(std::cout);//track 00063 std::cout << "rep of track--------- " << std::endl;//yzhang debug 00064 std::cout <<newRep->hotList()<<std::endl; 00065 std::cout << "circle hotlist --------- " << std::endl;//yzhang debug 00066 std::cout <<hl<<std::endl; 00067 std::cout << "helix hotlist --------- " << std::endl;//yzhang debug 00068 getRep(theTrack,hypo)->printAll(std::cout);//track Rep 00069 std::cout << "circle rep's hotlist--------- " << std::endl;//yzhang debug 00070 hl->printAll(std::cout);//Circle Rep 's hotList 00071 std::cout << "helix rep's hotlist--------- " << std::endl;//yzhang debug 00072 newRep->hotList()->printAll(std::cout);//Helix Rep's hotList 00073 */ 00074 00075 newRep->fitter().setFittingPar(false, false); 00076 setRep(theTrack, newRep); // theTrack will delete all old Reps 00077 00078 /* 00079 std::cout << "#########################after setRep" << std::endl;//yzhang debug 00080 std::cout << "track--------- " << std::endl;//yzhang debug 00081 theTrack.printAll(std::cout);//track 00082 std::cout << "rep of track--------- " << std::endl;//yzhang debug 00083 getRep(theTrack,hypo)->printAll(std::cout);//track Rep 00084 //std::cout << "circle rep--------- " << std::endl;//yzhang debug 00085 //defrep->printAll(std::cout); 00086 //std::cout << "circle rep's hotlist--------- " << std::endl;//yzhang debug 00087 //hl->printAll(std::cout);//Circle Rep 's hotList 00088 std::cout << "helix rep's hotlist--------- " << std::endl;//yzhang debug 00089 newRep->hotList()->printAll(std::cout);//Helix Rep's hotList 00090 00091 std::cout << "######################### " << std::endl;//yzhang debug 00092 00093 */ 00094 newRep->setChisq(chi2); 00095 if (chi2 > 0.0) newRep->setValid(true); 00096 newRep->setCurrent(false); 00097 }