/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/MdcNavigation/MdcNavigation-00-00-17/MdcNavigation/MdcNavigation.h

Go to the documentation of this file.
00001 #include "GaudiKernel/Algorithm.h"
00002 #include <string>
00003 #include <vector>
00004 #include "CLHEP/Vector/ThreeVector.h"
00005 #include "HepPDT/ParticleDataTable.hh"
00006 #include "GaudiKernel/NTuple.h"
00007 #include "McTruth/McParticle.h"
00008 #include "McTruth/MdcMcHit.h"
00009 #include "RawDataProviderSvc/RawDataProviderSvc.h"
00010 #include "AIDA/IHistogram1D.h"
00011 #include "MdcGeomSvc/IMdcGeomSvc.h"
00012 #include "MdcGeomSvc/MdcGeoWire.h"
00013 #include "MdcGeomSvc/MdcGeoLayer.h"
00014 #include "MagneticField/IMagneticFieldSvc.h"
00015 #include "MdcRecEvent/RecMdcTrack.h"
00016 #include "MdcRecEvent/RecMdcHit.h"
00017 #include <math.h>
00018 
00019 class MdcDetector;
00020 class TH1F;
00021 class TH2F;
00022 
00023 class MdcNavigation:public Algorithm {
00024 public:
00025   MdcNavigation (const std::string& name, ISvcLocator* pSvcLocator);
00026   StatusCode initialize();
00027   StatusCode execute();
00028   StatusCode finalize();
00029   StatusCode beginRun();
00030 
00031 private: 
00032   //calculate momentum using helix parameters of fitted track
00033   Hep3Vector momentum(const RecMdcTrack* trk);
00034   StatusCode bookNTuple();
00035   StatusCode fillInit();
00036   StatusCode fillRecTrack(const RecMdcTrack* it, int mcTkNum, int recTkNum);
00037   StatusCode fillRecHits(RecMdcHitCol& hitCol);
00038   StatusCode fillEvent();
00039   StatusCode skipMcParticle(const Event::McParticle* it, int nKindSkiped, int* keepedPart);
00040   double poca(const MdcDigi* aDigi,const HepVector helixPar,const HepSymMatrix errMat);
00041   double probab(const int& ndof, const double& chisq);
00042   
00043   HepPDT::ParticleDataTable* m_particleTable;
00044   RawDataProviderSvc* m_rawDataProviderSvc; 
00045   IMagneticFieldSvc*   m_pIMF;
00046   
00047   bool   m_poca;
00048   bool   m_debug;
00049   const  MdcDetector * m_gm;
00050   int    havedigi[43][288]; 
00051   short  multiTdcCount[43][288];
00052   bool   m_hist;
00053   int    m_mc;
00054   bool   m_doSag;
00055   bool   m_rawData;
00056   int    m_maxMdcDigi;
00057   bool   m_keepBadTdc;
00058   bool   m_dropHot;
00059   bool   m_keepUnmatch;
00060   long   t_eventNo;
00061   long   t_runNo;
00062   double t_t0;
00063   double t_t0Stat;
00064   double t_t0Truth;
00065   int    t_nTk;
00066   int    t_recTkNum;
00067   int    t_mcTkNum;
00068   int    t_trkRecoTk;
00069   int    t_curlTk;
00070   int    t_patRecTk ;
00071   int    t_xRecTk;
00072   int    m_nMcHit;
00073   int*   keepedParticles;
00074   double m_d0Cut;
00075   double m_z0Cut;
00076   double nNoise;
00077   long   nDigiTk[100];
00078   long   digiLayer[100];//mc digi per track; 50 track/event most
00079 
00080   NTuple::Tuple*  g_tupleMc;
00081   NTuple::Tuple*  g_tupleRec;
00082   NTuple::Tuple*  g_tupleEvt;
00083 
00084   AIDA::IHistogram1D*  g_layerEff;
00085   NTuple::Item<double>             m_na_p;
00086   NTuple::Item<double>             m_na_pt;
00087   NTuple::Item<double>             m_na_pz;
00088   NTuple::Item<double>             m_na_d0;
00089   NTuple::Item<double>             m_na_phi0;
00090   NTuple::Item<double>             m_na_cpa;
00091   NTuple::Item<double>             m_na_z0;
00092   NTuple::Item<double>             m_na_tanl;
00093   NTuple::Item<double>             m_na_q;
00094   NTuple::Item<double>             m_na_d0E;
00095   NTuple::Item<double>             m_na_phi0E;
00096   NTuple::Item<double>             m_na_cpaE;
00097   NTuple::Item<double>             m_na_z0E;
00098   NTuple::Item<double>             m_na_tanlE;
00099 
00100   NTuple::Item<double>             m_na_dP; 
00101   NTuple::Item<double>             m_na_dPt;
00102   NTuple::Item<double>             m_na_dPz;
00103   NTuple::Item<double>             m_na_dD0;
00104   NTuple::Item<double>             m_na_dPhi0;
00105   NTuple::Item<double>             m_na_dCpa;
00106   NTuple::Item<double>             m_na_dZ0;
00107   NTuple::Item<double>             m_na_dTanl;
00108 
00109   NTuple::Item<double>             m_na_d0Res;
00110   NTuple::Item<double>             m_na_phi0Res;
00111   NTuple::Item<double>             m_na_cpaRes;
00112   NTuple::Item<double>             m_na_z0Res;
00113   NTuple::Item<double>             m_na_tanlRes;
00114 
00115   NTuple::Item<long>               m_na_nHit;
00116   NTuple::Item<long>               m_na_nDigi;
00117   NTuple::Item<double>             m_na_nEvtNoise;
00118   NTuple::Item<double>             m_na_nAct;
00119   NTuple::Item<double>             m_na_nNoise;
00120   NTuple::Item<double>             m_na_nMatch;
00121   NTuple::Item<double>             m_na_nSt;
00122   NTuple::Item<double>             m_na_nDof;
00123   NTuple::Item<double>             m_na_fiTerm;
00124   NTuple::Item<double>             m_na_chi2;
00125   NTuple::Item<double>             m_na_chi2Dof;
00126   NTuple::Item<double>             m_na_chi2Prob;
00127   NTuple::Item<double>             m_na_mcTkNum;
00128   NTuple::Item<double>             m_na_mcTkId;
00129   NTuple::Item<double>             m_na_recTkNum;
00130 
00131   NTuple::Item<double>             m_na_mcpid;
00132   NTuple::Item<double>             m_na_mcp;
00133   NTuple::Item<double>             m_na_mcpt;
00134   NTuple::Item<double>             m_na_mcpx;
00135   NTuple::Item<double>             m_na_mcpy;
00136   NTuple::Item<double>             m_na_mcpz;
00137   NTuple::Item<double>             m_na_mcd0;
00138   NTuple::Item<double>             m_na_mcphi0;
00139   NTuple::Item<double>             m_na_mcz0;
00140   NTuple::Item<double>             m_na_mctheta;
00141   NTuple::Item<double>             m_na_mccpa;
00142   NTuple::Item<double>             m_na_mcq;
00143   NTuple::Item<double>             m_na_mcfifin;
00144   NTuple::Item<double>             m_na_mcflag;
00145   NTuple::Item<long>               m_na_tkStat;
00146 
00147 
00148   NTuple::Item<long>               m_na_tkId;
00149   NTuple::Item<double>             m_na_evtNo;
00150   NTuple::Array<double>            m_na_resid;
00151   NTuple::Array<double>            m_na_driftD;
00152   NTuple::Array<long>              m_na_act;
00153   NTuple::Array<double>            m_na_driftT;
00154   NTuple::Array<double>            m_na_doca;
00155   NTuple::Array<double>            m_na_entra;
00156   NTuple::Array<double>            m_na_zhit;
00157   NTuple::Array<double>            m_na_chi2add;
00158   NTuple::Array<double>            m_na_flaglr;
00159   NTuple::Array<double>            m_na_hitStat;
00160   NTuple::Array<double>            m_na_Tdc;
00161   NTuple::Array<double>            m_na_Adc;
00162   NTuple::Array<double>            m_na_layer;
00163   NTuple::Array<double>            m_na_wire;
00164   NTuple::Array<double>            m_na_gwire;
00165   NTuple::Array<double>            m_na_hitTkId;
00166   NTuple::Array<double>            m_na_digiTkId;
00167   NTuple::Array<double>            m_na_digiLayer;
00168 
00169   NTuple::Item<double>             m_na_t2mcp;
00170   NTuple::Item<double>             m_na_t2mcpt;
00171   NTuple::Item<double>             m_na_t2mcphi;
00172   NTuple::Item<double>             m_na_t2mctheta;
00173   NTuple::Item<double>             m_na_t2tanl;
00174   NTuple::Item<double>             m_na_t2recTkNum;
00175   NTuple::Item<double>             m_na_t2mcTkNum;
00176   NTuple::Item<double>             m_na_t2p;
00177   NTuple::Item<double>             m_na_t2pt;
00178 
00179   NTuple::Item<double>             m_na_t3recTk;
00180   NTuple::Item<double>             m_na_t3mcTk;
00181   NTuple::Item<long>               m_na_t3TrkReco;
00182   NTuple::Item<long>               m_na_t3Curl;
00183   NTuple::Item<long>               m_na_t3PatRec;
00184   NTuple::Item<long>               m_na_t3XRec;
00185   NTuple::Item<double>             m_na_t3evtNo;
00186   NTuple::Item<double>             m_na_t3t0; 
00187   NTuple::Item<double>             m_na_t3t0Truth; 
00188   NTuple::Item<double>             m_na_t3t0Stat; 
00189   NTuple::Item<double>             m_na_t3timing; 
00190 
00191   NTuple::Item<long>               m_na_t3runNo;
00192   NTuple::Item<long>               m_na_t3nDigi;
00193   NTuple::Array<long>              m_na_t3layer;
00194   NTuple::Array<long>              m_na_t3wire;
00195   NTuple::Array<long>              m_na_t3gwire;
00196   NTuple::Array<double>            m_na_t3rt;
00197   NTuple::Array<double>            m_na_t3rtNot0;
00198   NTuple::Array<double>            m_na_t3rc;
00199   NTuple::Array<double>            m_na_t3phi;
00200   NTuple::Array<double>            m_na_t3xMid;
00201   NTuple::Array<double>            m_na_t3yMid;
00202   NTuple::Array<long>              m_na_t3ovfl;
00203   NTuple::Array<long>              m_na_t3tNum;
00204 };
00205 

Generated on Tue Nov 29 23:12:53 2016 for BOSS_7.0.2 by  doxygen 1.4.7