BFieldCorr Class Reference

#include <BFieldCorr.h>

List of all members.

Public Member Functions

 BFieldCorr (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Private Attributes

double m_factor
HepSymMatrix m_Ew
int RUN_BEGIN_10
int RUN_END_10
int RUN_BEGIN_11
int RUN_END_11


Detailed Description

Definition at line 19 of file BFieldCorr.h.


Constructor & Destructor Documentation

BFieldCorr::BFieldCorr ( const std::string name,
ISvcLocator *  pSvcLocator 
)

Definition at line 45 of file BFieldCorr.cxx.

References m_factor.

00045                                                                      :Algorithm(name,pSvcLocator)
00046 {
00047         declareProperty("CorrectionFactor",  m_factor = 1.0000);
00048 }


Member Function Documentation

StatusCode BFieldCorr::execute (  ) 

Definition at line 68 of file BFieldCorr.cxx.

References DstMdcKalTrack::electron, DstMdcKalTrack::err(), DstMdcTrack::err(), EventModel::EvtRec::EvtRecEvent, EventModel::EvtRec::EvtRecTrackCol, Bes_Common::FATAL, DstMdcKalTrack::helix(), DstMdcTrack::helix(), genRecEmupikp::i, Bes_Common::INFO, ganga-rec::j, DstMdcKalTrack::kaon, m_Ew, m_factor, msgSvc(), DstMdcKalTrack::muon, DstMdcKalTrack::p(), DstMdcTrack::p(), DstMdcKalTrack::pion, DstMdcKalTrack::proton, DstMdcKalTrack::px(), DstMdcTrack::px(), DstMdcKalTrack::pxy(), DstMdcTrack::pxy(), DstMdcKalTrack::py(), DstMdcTrack::py(), DstMdcKalTrack::pz(), DstMdcTrack::pz(), RUN_BEGIN_10, RUN_BEGIN_11, RUN_END_10, RUN_END_11, DstMdcTrack::setError(), DstMdcTrack::setHelix(), DstMdcKalTrack::setP(), DstMdcTrack::setP(), DstMdcKalTrack::setPidType(), DstMdcKalTrack::setPx(), DstMdcTrack::setPx(), DstMdcKalTrack::setPxy(), DstMdcTrack::setPxy(), DstMdcKalTrack::setPy(), DstMdcTrack::setPy(), DstMdcKalTrack::setPz(), DstMdcTrack::setPz(), DstMdcKalTrack::setZError(), and DstMdcKalTrack::setZHelix().

00069 {
00070         MsgStream log(msgSvc(), name());
00071         log << MSG::INFO << "in BFieldCorr::execute()" << endreq;
00072         SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00073         int run_no = eventHeader->runNumber();
00074         if (run_no < 0) return StatusCode::SUCCESS;
00075 
00076         SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00077         if (!evtRecEvent)
00078         {
00079                 log << MSG::FATAL << "Could not find EvtRecEvent" << endreq;
00080                 return StatusCode::SUCCESS;
00081         }
00082 
00083         SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(),  EventModel::EvtRec::EvtRecTrackCol);
00084         if (!evtRecTrkCol)
00085         {
00086                 log << MSG::FATAL << "Could not find EvtRecTrackCol" << endreq;
00087                 return StatusCode::SUCCESS;
00088         }
00089 
00090         if ((unsigned int)evtRecEvent->totalTracks() > evtRecTrkCol->size()) return StatusCode::SUCCESS;
00091         //if (evtRecEvent->totalTracks() > 50) return StatusCode::SUCCESS;
00092 
00093         //set Ew if by default
00094         double factor;
00095         if (fabs(m_factor - 1.000) < 1e-6)
00096         {
00097                 if (run_no >= RUN_BEGIN_10 && run_no <= RUN_END_10)
00098                         factor = 1.0004;
00099                 else if (run_no >= RUN_BEGIN_11 && run_no <= RUN_END_11)
00100                         factor = 1.0002;
00101                 else
00102                         factor = 1.0000;
00103         }       
00104         else
00105         {
00106                 factor = m_factor;
00107         }
00108         m_Ew[2][2] = fabs(factor) < 1e-6 ? 1.0 : 1.0 / factor; 
00109 
00110         for (int i = 0; i < evtRecEvent->totalCharged(); i++)
00111         {
00112                 EvtRecTrackIterator itTrk = evtRecTrkCol->begin() + i;
00113                 if (!(*itTrk)->isMdcTrackValid()) continue;
00114                 if (!(*itTrk)->isMdcKalTrackValid()) continue;
00115 
00116                 //RecMdcTrack correction 
00117                 RecMdcTrack *mdc_trk = (*itTrk)->mdcTrack();
00118                 mdc_trk->setHelix( m_Ew * mdc_trk->helix() );
00119                 mdc_trk->setError( mdc_trk->err().similarity(m_Ew) );
00120                 mdc_trk->setP(   factor * mdc_trk->p()   );
00121                 mdc_trk->setPxy( factor * mdc_trk->pxy() );
00122                 mdc_trk->setPx(  factor * mdc_trk->px()  );
00123                 mdc_trk->setPy(  factor * mdc_trk->py()  );
00124                 mdc_trk->setPz(  factor * mdc_trk->pz()  );
00125 
00126                 //RecMdcKalTrack correction 
00127                 RecMdcKalTrack *kal_trk = (*itTrk)->mdcKalTrack();
00128                 RecMdcKalTrack::PidType trk_type[] = {
00129                         RecMdcKalTrack::electron,
00130                         RecMdcKalTrack::muon,
00131                         RecMdcKalTrack::pion,
00132                         RecMdcKalTrack::kaon,
00133                         RecMdcKalTrack::proton,
00134                 };
00135                 
00136                 for (int j = 0; j < 5; j++)
00137                 {
00138                         kal_trk->setPidType( trk_type[j] );
00139                         kal_trk->setZHelix( m_Ew * kal_trk->helix(), j );
00140                         kal_trk->setZError( kal_trk->err().similarity(m_Ew), j );
00141                         kal_trk->setP(   factor * kal_trk->p(),   j );
00142                         kal_trk->setPxy( factor * kal_trk->pxy(), j );
00143                         kal_trk->setPx(  factor * kal_trk->px(),  j );
00144                         kal_trk->setPy(  factor * kal_trk->py(),  j );
00145                         kal_trk->setPz(  factor * kal_trk->pz(),  j );
00146                 }
00147         }
00148         return StatusCode::SUCCESS;
00149 }

StatusCode BFieldCorr::finalize (  ) 

Definition at line 151 of file BFieldCorr.cxx.

References Bes_Common::INFO, and msgSvc().

00152 {
00153         MsgStream log(msgSvc(), name());
00154         log << MSG::INFO << "in BFieldCorr::finalize()" << endreq;
00155         return StatusCode::SUCCESS;
00156 }

StatusCode BFieldCorr::initialize (  ) 

Definition at line 50 of file BFieldCorr.cxx.

References Bes_Common::INFO, m_Ew, m_factor, msgSvc(), RUN_BEGIN_10, RUN_BEGIN_11, RUN_END_10, and RUN_END_11.

00051 {
00052         m_Ew = HepSymMatrix(5, 0);
00053         m_Ew[0][0] = 1.0; 
00054         m_Ew[1][1] = 1.0; 
00055         m_Ew[2][2] = fabs(m_factor) < 1e-6 ? 1.0 : 1.0 / m_factor; 
00056         m_Ew[3][3] = 1.0; 
00057         m_Ew[4][4] = 1.0; 
00058         RUN_BEGIN_10 = 11414;
00059         RUN_END_10   = 14604;
00060         RUN_BEGIN_11 = 20448;
00061         RUN_END_11   = 23454;
00062 
00063         MsgStream log(msgSvc(), name());
00064         log << MSG::INFO << "in MagCorr::initialize()" <<endmsg;
00065         return StatusCode::SUCCESS;
00066 }


Member Data Documentation

HepSymMatrix BFieldCorr::m_Ew [private]

Definition at line 30 of file BFieldCorr.h.

Referenced by execute(), and initialize().

double BFieldCorr::m_factor [private]

Definition at line 28 of file BFieldCorr.h.

Referenced by BFieldCorr(), execute(), and initialize().

int BFieldCorr::RUN_BEGIN_10 [private]

Definition at line 31 of file BFieldCorr.h.

Referenced by execute(), and initialize().

int BFieldCorr::RUN_BEGIN_11 [private]

Definition at line 33 of file BFieldCorr.h.

Referenced by execute(), and initialize().

int BFieldCorr::RUN_END_10 [private]

Definition at line 32 of file BFieldCorr.h.

Referenced by execute(), and initialize().

int BFieldCorr::RUN_END_11 [private]

Definition at line 34 of file BFieldCorr.h.

Referenced by execute(), and initialize().


Generated on Tue Nov 29 23:17:54 2016 for BOSS_7.0.2 by  doxygen 1.4.7