00001 #ifndef Reconstruction_ChargedDReconstruction_H
00002 #define Reconstruction_ChargedDReconstruction_H
00003
00004 #include "GaudiKernel/AlgFactory.h"
00005 #include "GaudiKernel/Algorithm.h"
00006 #include "GaudiKernel/NTuple.h"
00007
00008 #include "DTagAlg/ReadBeamInfFromDb.h"
00009 #include "EvtRecEvent/EvtRecDTag.h"
00010
00011 #include "BesDChain/CDChargedPionList.h"
00012 #include "BesDChain/CDChargedKaonList.h"
00013 #include "BesDChain/CDPi0List.h"
00014 #include "BesDChain/CDKsList.h"
00015 #include "BesDChain/CDDecayList.h"
00016 #include "MeasuredEcmsSvc/IMeasuredEcmsSvc.h"
00017
00018 #include <vector>
00019 #include <string>
00020
00021 class ChargedDReconstruction : public Algorithm {
00022
00023 public:
00024 ChargedDReconstruction(const std::string& name, ISvcLocator* pSvcLocator);
00025 StatusCode initialize();
00026 StatusCode execute();
00027 StatusCode finalize();
00028
00029 void saveDpInfo(CDDecayList::iterator, double, int, EvtRecDTag*);
00030 void savetrack(vector<int>, vector<int>, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecTrackIterator,EvtRecDTag*);
00031 vector<string> getlist(string& filename);
00032 void pidtag(vector<int>, vector<int>, CDChargedKaonList&, CDChargedPionList&,EvtRecDTag* );
00033
00034
00035 private:
00036 StatusCode registerEvtRecDTagCol(EvtRecDTagCol* dtagCol, MsgStream& log);
00037
00038
00039 private:
00040
00041 bool m_debug;
00042
00043 int m_irun;
00044 int m_ievt;
00045 int m_nChrg;
00046 int m_nNeu;
00047 int m_nPion;
00048 int m_nKaon;
00049 int m_nPi0;
00050 int m_nKs;
00051
00052 string m_decaylist;
00053 vector<string> chanlist;
00054
00055 double m_beamE;
00056 Hep3Vector m_beta;
00057 bool m_ReadBeamEFromDB;
00058 bool m_usecalibBeamE;
00059 bool m_usevertexfit;
00060 ReadBeamInfFromDb m_readDb;
00061 IMeasuredEcmsSvc* ecmsSvc;
00062 bool m_RdMeasuredEcms;
00063 };
00064 #endif