00001 // 00002 // Emc Rec 00003 // 00004 // Created by Zhe Wang, May 31, 2004 00005 // 00006 #ifndef EMC_REC_A_H 00007 #define EMC_REC_A_H 00008 00009 #include "GaudiKernel/Algorithm.h" 00010 #include "GaudiKernel/PropertyMgr.h" 00011 00012 #include "EmcRecEventModel/RecEmcEventModel.h" 00013 #include "EmcRec/EmcRecDigit2Hit.h" 00014 #include "EmcRec/EmcRecHit2Cluster.h" 00015 #include "EmcRec/EmcRecCluster2ShowerAbs.h" 00016 00017 //Ntuple 00018 #include "GaudiKernel/NTuple.h" 00019 00020 class IRawDataProviderSvc; 00021 00022 class EmcRec:public Algorithm { 00023 public: 00024 EmcRec(const std::string& name, ISvcLocator* pSvcLocator); 00025 StatusCode initialize(); 00026 StatusCode execute(); 00027 StatusCode finalize(); 00028 00029 private: 00030 // functionality members 00031 EmcRecDigit2Hit fDigit2Hit; 00032 EmcRecHit2Cluster fHit2Cluster; 00033 EmcRecCluster2ShowerAbs *fCluster2Shower; 00034 00035 // data members 00036 RecEmcDigitMap fDigitMap; 00037 RecEmcHitMap fHitMap; 00038 RecEmcClusterMap fClusterMap; 00039 RecEmcShowerMap fShowerMap; 00040 00041 // some control parameters 00042 IRawDataProviderSvc *m_rawDataProviderSvc; 00043 PropertyMgr m_propMgr; 00044 int m_event; 00045 int fOutput; 00046 int fEventNb; 00047 bool fDigiCalib; 00048 bool fTofEnergy; 00049 bool fOnlineMode; 00050 double fTimeMin; 00051 double fTimeMax; 00052 double fMethodMode; 00053 double fPosCorr; 00054 00055 //MC reconstruction for electronics saturation 00056 // 0: using Bhabha calibration constants 00057 // 1: using Emaxdata from data 00058 int fElecSaturation; 00059 00060 std::vector<std::string> fPositionMode; 00061 00062 #ifndef OnlineMode 00063 // others 00064 NTuple::Tuple* m_tuple; 00065 // mc truth 00066 NTuple::Item<long> pid; 00067 NTuple::Item<float> tp; 00068 NTuple::Item<float> ttheta; 00069 NTuple::Item<float> tphi; 00070 // 00071 NTuple::Item<long> nrun; 00072 NTuple::Item<long> nrec; 00073 // 00074 NTuple::Item<long> nneu; 00075 NTuple::Item<long> npart; 00076 NTuple::Item<long> ntheta; 00077 NTuple::Item<long> nphi; 00078 NTuple::Item<long> ndigi; 00079 NTuple::Item<long> nhit; 00080 NTuple::Item<long> ncluster; 00081 // track 1 00082 NTuple::Array<float> pp1; 00083 NTuple::Item<float> theta1; 00084 NTuple::Item<float> phi1; 00085 NTuple::Item<float> dphi1; 00086 NTuple::Item<float> eseed; 00087 NTuple::Item<float> e3x3; 00088 NTuple::Item<float> e5x5; 00089 NTuple::Item<float> enseed; 00090 NTuple::Item<float> etof2x1; 00091 NTuple::Item<float> etof2x3; 00092 NTuple::Item<float> cluster2ndMoment; 00093 NTuple::Item<float> secondMoment; 00094 NTuple::Item<float> latMoment; 00095 NTuple::Item<float> a20Moment; 00096 NTuple::Item<float> a42Moment; 00097 NTuple::Item<float> mpi0; 00098 NTuple::Item<long> thtgap1; 00099 NTuple::Item<long> phigap1; 00100 00101 // track 2 00102 NTuple::Array<float> pp2; 00103 #endif 00104 }; 00105 00106 #endif 00107