/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Analysis/DTagTool/DTagTool-00-00-11/DTagTool/DTagTool.h

Go to the documentation of this file.
00001 
00002 #ifndef CLASS_DTAGTOOL_H
00003 #define CLASS_DTAGTOOL_H
00004 
00005 #include "GaudiKernel/ObjectVector.h"
00006 #include "GaudiKernel/AlgFactory.h"
00007 #include "GaudiKernel/Algorithm.h"
00008 #include "GaudiKernel/NTuple.h"
00009 #include "GaudiKernel/IDataProviderSvc.h"
00010 
00011 #include "CLHEP/Vector/LorentzVector.h"
00012 #include "EvtRecEvent/EvtRecTrack.h"
00013 #include "EvtRecEvent/EvtRecDTag.h"
00014 #include "EvtRecEvent/EvtRecVeeVertex.h"
00015 #include "EvtRecEvent/EvtRecPi0.h"
00016 #include "EvtRecEvent/EvtRecEtaToGG.h"
00017 
00018 #include "SimplePIDSvc/ISimplePIDSvc.h"
00019 
00020 
00021 #include <iostream>
00022 
00023 using namespace std;
00024 
00025 
00026 
00027 class DTagTool{
00028 
00029  public:
00030   
00031   DTagTool  ();
00032 
00033   ~DTagTool ();
00034 
00035   //DTag operations
00036   bool isDTagListEmpty() { return m_isdtaglistempty; }
00037   void setPID(bool pid) {m_pid = pid;}
00038 
00039 
00040   
00041   EvtRecDTagCol::iterator modes_begin(){ return m_iterbegin;}
00042   EvtRecDTagCol::iterator modes_end(){ return m_iterend;}
00043   EvtRecPi0Col::iterator pi0_begin(){ return m_pi0iterbegin;}
00044   EvtRecPi0Col::iterator pi0_end(){ return m_pi0iterend;}
00045   EvtRecEtaToGGCol::iterator eta_begin(){ return m_etaiterbegin;}
00046   EvtRecEtaToGGCol::iterator eta_end(){ return m_etaiterend;}
00047   EvtRecVeeVertexCol::iterator ks_begin(){ return m_ksiterbegin;}
00048   EvtRecVeeVertexCol::iterator ks_end(){ return m_ksiterend;}
00049 
00050  
00051   vector<int>  D0modes() { return m_d0modes;}
00052   vector<int>  Dpmodes() { return m_dpmodes;}
00053   vector<int>  Dsmodes() { return m_dsmodes;}
00054 
00055   vector<int> mode(EvtRecDTag::DecayMode decaymode);
00056   vector<int> mode(int decaymode);
00057 
00058 
00059   bool findSTag(EvtRecDTag::DecayMode mode, int tagcharm);
00060   bool findSTag(EvtRecDTag::DecayMode mode);
00061   bool findDTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2,string smass="mbc");
00062   bool findDTag(EvtRecDTag::DecayMode mode1, int tagcharm1,EvtRecDTag::DecayMode mode2, int tagcharm2,string smass="mbc" );
00063   bool findADTag(EvtRecDTag::DecayMode mode1, EvtRecDTag::DecayMode mode2);
00064   bool findADTag(EvtRecDTag::DecayMode mode1, int tagcharm1,EvtRecDTag::DecayMode mode2, int tagcharm2 );
00065 
00066   bool findSTag(int mode, int tagcharm);
00067   bool findSTag(int mode);
00068   bool findDTag(int mode1, int mode2, string smass="mbc");
00069   bool findDTag(int mode1, int tagcharm1,int mode2, int tagcharm2,string smass="mbc" );
00070   bool findADTag(int mode1, int mode2);
00071   bool findADTag(int mode1, int tagcharm1,int mode2, int tagcharm2);
00072 
00073 
00074   
00075   EvtRecDTagCol::iterator stag(){ return m_iterstag;}
00076   EvtRecDTagCol::iterator dtag1(){ return m_iterdtag1;}
00077   EvtRecDTagCol::iterator dtag2(){ return m_iterdtag2;}
00078   vector<EvtRecDTagCol::iterator> vdtag1(){ return m_viterdtag1;}
00079   vector<EvtRecDTagCol::iterator> vdtag2(){ return m_viterdtag2;}
00080   void setdtagDE(double sigma1,double sigma2){ m_tag1desigma=sigma1;m_tag2desigma=sigma2;}
00081   bool compare(EvtRecDTagCol::iterator pair1_iter1,EvtRecDTagCol::iterator pair1_iter2,EvtRecDTagCol::iterator pair2_iter1,EvtRecDTagCol::iterator pair2_iter2, double mD, string smass);
00082 
00083   void operator<< ( EvtRecDTagCol::iterator iter);
00084 
00085 
00086   //other utilities
00087   HepLorentzVector pi0p4(EvtRecPi0Col::iterator pi0Itr, bool isconstrain=true);
00088   HepLorentzVector etap4(EvtRecEtaToGGCol::iterator etaItr, bool isconstrain=true);
00089   vector<int> pi0Id(EvtRecDTagCol::iterator iter, int numpi0=1);
00090   vector<int> etaId(EvtRecDTagCol::iterator iter, int numeta=1);
00091   vector<int> ksId(EvtRecDTagCol::iterator iter, int numks=1);
00092   HepLorentzVector p4shower(RecEmcShower* shower);
00093   HepLorentzVector p4(RecMdcKalTrack* mdcKalTrack, int pid);
00094   bool isPion( EvtRecTrack* trk);
00095   bool isKaon( EvtRecTrack* trk);
00096   bool isElectron( EvtRecTrack* trk);
00097   bool isMuon( EvtRecTrack* trk);
00098   bool isGoodTrack( EvtRecTrack* trk);
00099   bool isGoodShower( EvtRecTrack* trk);
00100   bool cosmicandleptonVeto(bool emc=true);
00101   int  numofShowerAboveThreshold();
00102   int  numofShowerAboveThreshold(int threshold);
00103   bool shareTracks(EvtRecDTagCol::iterator iter1, EvtRecDTagCol::iterator iter2);
00104   double angleShowerwithTrack(EvtRecTrack *shower, EvtRecTrack *track);
00105 
00106   void clear();
00107   void name(){ cout<<" I am the dtag tool"<<endl;}
00108   
00109  protected:
00110   
00111   IDataProviderSvc* eventSvc();
00112   
00113   
00114  private:
00115   
00116   bool m_isdtaglistempty;
00117 
00118   IDataProviderSvc* m_evtSvc;
00119   ISimplePIDSvc*    m_simplePIDSvc;
00120 
00121 
00122 
00123   EvtRecDTagCol::iterator m_iterbegin;
00124   EvtRecDTagCol::iterator m_iterend;
00125   EvtRecPi0Col::iterator m_pi0iterbegin;
00126   EvtRecPi0Col::iterator m_pi0iterend;
00127   EvtRecEtaToGGCol::iterator m_etaiterbegin;
00128   EvtRecEtaToGGCol::iterator m_etaiterend;
00129   EvtRecVeeVertexCol::iterator m_ksiterbegin;
00130   EvtRecVeeVertexCol::iterator m_ksiterend;
00131   
00132 
00133   bool m_pid;
00134 
00135   EvtRecDTagCol::iterator m_iterstag;
00136   EvtRecDTagCol::iterator m_iterdtag1;
00137   EvtRecDTagCol::iterator m_iterdtag2;
00138   vector<EvtRecDTagCol::iterator> m_viterdtag1;
00139   vector<EvtRecDTagCol::iterator> m_viterdtag2;
00140   double m_tag1desigma;
00141   double m_tag2desigma;
00142 
00143   vector<int> m_d0modes;
00144   vector<int> m_dpmodes;
00145   vector<int> m_dsmodes;
00146 
00147   EvtRecTrackIterator m_chargebegin;
00148   EvtRecTrackIterator m_chargeend;
00149   EvtRecTrackIterator m_showerbegin;
00150   EvtRecTrackIterator m_showerend;
00151 
00152   
00153 };
00154 
00155 typedef EvtRecDTagCol::iterator DTagToolIterator;
00156 typedef EvtRecPi0Col::iterator pi0Iterator;
00157 typedef EvtRecEtaToGGCol::iterator etaIterator;
00158 typedef EvtRecVeeVertexCol::iterator ksIterator;
00159 
00160 
00161 
00162 #endif

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