/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Analysis/VertexFit/VertexFit-00-02-78/VertexFit/TrackPool.h

Go to the documentation of this file.
00001 #ifndef VertexFit_TrackPool_H
00002 #define VertexFit_TrackPool_H
00003 
00004 //
00005 //  Add Track Parameters to VertexFit/KinematicFit
00006 //  Author: K.L. He     date: 11/09/2005, created
00007 //
00008 
00009 // #include <map>
00010 // #include <string>
00011 // #include <utility>
00012 
00013 #include <vector>
00014 #include "VertexFit/WTrackParameter.h"
00015 #include "VertexFit/GammaShape.h"
00016 
00017 #ifndef BEAN
00018 //#include "DstEvent/DstMdcTrack.h"
00019 //#include "DstEvent/DstMdcKalTrack.h"
00020 //#include "DstEvent/DstEmcTrack.h"
00021 #include "MdcRecEvent/RecMdcTrack.h"
00022 #include "MdcRecEvent/RecMdcKalTrack.h"
00023 #include "EmcRecEventModel/RecEmcShower.h"
00024 #else
00025 #include "DstEvtRecTracks.h"
00026 #endif
00027 
00028 class TrackPool {
00029 
00030     public:
00031 
00032         // constructor & deconstructor
00033         TrackPool();
00034         ~TrackPool(){;}
00035 
00036         //
00037         //  Constructor Function
00038         //
00039         //                   event data model dependent
00040         void AddTrack(const int number, const double mass, const RecMdcTrack *trk);
00041         void AddTrack(const int number, const double mass, const RecMdcKalTrack *trk);
00042         void AddTrack(const int number, const double mass, const RecEmcShower *trk);
00043         //                   event data model independent
00044         void AddTrack(const int number, const WTrackParameter wtrk);
00045         //                   virtual track with missing parameters
00046         void AddMissTrack(const int number, const double mass);
00047         void AddMissTrack(const int number, const double mass, const HepLorentzVector p4);
00048         void AddMissTrack(const int number, const double mass, const RecEmcShower *trk);
00049         void AddMissTrack(const int number, const RecEmcShower *trk);
00050         void AddMissTrack(const int number, const HepLorentzVector p4); 
00051         void AddTrackVertex(const int number, const double mass, const RecEmcShower *trk);
00052 
00053         std::vector<int> AddList(int n1);
00054         std::vector<int> AddList(int n1, int n2);
00055         std::vector<int> AddList(int n1, int n2, int n3);
00056         std::vector<int> AddList(int n1, int n2, int n3, int n4);
00057         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5);
00058         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6);
00059         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6, int n7);
00060         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8);
00061         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8,
00062                 int n9);
00063         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8,
00064                 int n9, int n10);
00065         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8,
00066                 int n9, int n10, int n11);
00067         std::vector<int> AddList(int n1, int n2, int n3, int n4, int n5, int n6, int n7, int n8,
00068                 int n9, int n10, int n11, int n12);
00069 
00070         //                       Get Function
00071 
00072         std::vector<WTrackParameter> wTrackOrigin() const {return m_wtrk_origin;}
00073         std::vector<WTrackParameter> wTrackInfit() const {return m_wtrk_infit;}
00074         std::vector<int>    wTrackList() const {return m_lwtrk;}
00075         WTrackParameter wTrackOrigin(int n) const {return m_wtrk_origin[n];}
00076         WTrackParameter wTrackInfit(int n) const {return m_wtrk_infit[n];}
00077         int     wTrackList(int n) const {return m_lwtrk[n];}
00078         //                       number of WTrack  
00079         int numberWTrack() const { return ((int)(m_lwtrk.size()));}
00080         //
00081         // For Virtual Particles
00082         //
00083         //  std::vector<WTrackParameter> wTrackOrigin_V() const {return m_wtrk_origin_V;}
00084         //  std::vector<WTrackParameter> wTrackInfit_V() const {return m_wtrk_infit_V;}
00085         //  std::vector<int>    wTrackList_V() const {return m_lwtrk_V;}
00086         //  WTrackParameter wTrackOrigin_V(int n) const {return m_wtrk_origin_V[n];}
00087         //  WTrackParameter wTrackInfit_V(int n) const {return m_wtrk_infit_V[n];}
00088         //  int     wTrackList_V(int n) const {return m_lwtrk_V[n];}
00089         //                       number of WTrack  
00090         //  int numberWTrack_V() const { return ((int)(m_lwtrk_V.size()));}
00091 
00092         //
00093         // gammashape get function
00094         //
00095         std::vector<GammaShape> GammaShapeValue() const {return m_gammashape;}
00096         std::vector<int>  GammaShapeList() const {return m_lgammashape;}
00097         GammaShape GammaShapeValue(int n) const {return m_gammashape[n];}
00098         int   GammaShapeList(int n) const {return m_lgammashape[n];}
00099         int numberGammaShape() const { return ((int)(m_lgammashape.size()) );} 
00100         //
00101         // modifier
00102         //
00103 
00104         //                set Function
00105         void setWTrackOrigin(const int n, const WTrackParameter wtrk) {m_wtrk_origin[n] = wtrk;}
00106         void setWTrackInfit(const int n, const WTrackParameter wtrk) {m_wtrk_infit[n] = wtrk;}
00107         void setWTrackOrigin(const WTrackParameter wtrk) {m_wtrk_origin.push_back(wtrk);}
00108         void setWTrackInfit(const WTrackParameter wtrk) {m_wtrk_infit.push_back(wtrk);}
00109         void setWTrackList(const int n) {m_lwtrk.push_back(n);}
00110         //                clear Function
00111         void clearWTrackOrigin() {m_wtrk_origin.clear();}
00112         void clearWTrackInfit() {m_wtrk_infit.clear();}
00113         void clearWTrackList() {m_lwtrk.clear();}
00114 
00115         void clearone() {m_numberone = 0;}
00116         void cleartwo() {m_numbertwo = 0;}
00117         int numberone() const {return m_numberone;}
00118         int numbertwo() const {return m_numbertwo;}
00119 
00120         vector<int> mappositionA() const {return m_mappositionA;}
00121         vector<int> mappositionB() const {return m_mappositionB;}
00122         vector<int> mapkinematic() const {return m_mapkinematic;}
00123 
00124         void clearMapkinematic() {m_mapkinematic.clear();}
00125         void clearMappositionA() {m_mappositionA.clear();}
00126         void clearMappositionB() {m_mappositionB.clear();}
00127 
00128         void setMapkinematic(const int n) {m_mapkinematic.push_back(n);}
00129         void setMappositionA(const int n) {m_mappositionA.push_back(n);}
00130         void setMappositionB(const int n) {m_mappositionB.push_back(n);}
00131 
00132         //
00133         // set GammaShape 
00134         //
00135         void setGammaShape(const int n, const GammaShape gammashape) {m_gammashape[n] = gammashape;}
00136         void setGammaShape(const GammaShape gammashape) {m_gammashape.push_back(gammashape);}
00137         void setGammaShapeList(const int n) {m_lgammashape.push_back(n);}
00138         //       clear gammashape
00139         void clearGammaShape() {m_gammashape.clear();}
00140         void clearGammaShapeList() {m_lgammashape.clear();}
00141 
00142         //=== set beam information===
00143         void setBeamPosition(const HepPoint3D BeamPosition) {m_BeamPosition = BeamPosition;}
00144         void setVBeamPosition(const HepSymMatrix VBeamPosition) {m_VBeamPosition = VBeamPosition;} 
00145 
00146         //=== get beam information===
00147         HepPoint3D getBeamPosition() const{return m_BeamPosition;}
00148         HepSymMatrix getVBeamPosition() const {return m_VBeamPosition;}
00149 
00150 
00151     protected:
00152 
00153 
00154     private:
00155         std::vector<WTrackParameter> m_wtrk_origin;   // WTrack parameter before fit
00156         std::vector<WTrackParameter> m_wtrk_infit;    // WTrack Parameter in fit
00157         std::vector<int>    m_lwtrk;         // List of the WTrack number ( != DST tracklist ID)
00158         //
00159         // For Virtual Particles
00160         //
00161         //  std::vector<WTrackParameter> m_wtrk_origin_V;  
00162         //  std::vector<WTrackParameter> m_wtrk_infit_V;  
00163         //  std::vector<int>    m_lwtrk_V; 
00164 
00165         //  std::multimap< int, int >  m_mapkinematic;        // index origin track and new track  
00166         //  std::multimap< int, int >  m_mappositionA;
00167         //  std::multimap< int, int >  m_mappositionB;
00168         int m_numberone;             //recording the number of common particlss
00169         int m_numbertwo;             //recording the number of virtual particles
00170         //    Gamma dynamic error information
00171         //
00172         std::vector<GammaShape> m_gammashape;
00173         std::vector<int> m_lgammashape;          // maybe can share with the m_lwtrk
00174 
00175         std::vector<int>  m_mapkinematic;        // index origin track and new track  
00176         std::vector<int>  m_mappositionA;
00177         std::vector<int>  m_mappositionB;
00178 
00179     private:
00180         HepPoint3D m_BeamPosition;
00181         HepSymMatrix m_VBeamPosition; 
00182 
00183 };
00184 #endif

Generated on Tue Nov 29 22:57:40 2016 for BOSS_7.0.2 by  doxygen 1.4.7