00001 #ifndef RecNtupleAlg_h 00002 #define RecNtupleAlg_h 00003 00004 #include "GaudiKernel/Algorithm.h" 00005 #include "GaudiKernel/MsgStream.h" 00006 #include "GaudiKernel/AlgFactory.h" 00007 #include "GaudiKernel/IDataProviderSvc.h" 00008 #include "GaudiKernel/SmartDataPtr.h" 00009 #include "GlastSvc/GlastDetSvc/IGlastDetSvc.h" 00010 #include "ntupleWriterSvc/INTupleWriterSvc.h" 00011 00012 #include "TkrRecon/ITkrGeometrySvc.h" 00013 #include "TkrRecon/SiClusters.h" 00014 #include "TkrRecon/SiRecObjs.h" 00015 00016 #include "GlastEvent/Recon/ICsIClusters.h" 00017 00018 //############################### 00019 class RecNtupleAlg : public Algorithm 00020 //############################### 00021 { 00022 public: 00023 00025 00027 00028 RecNtupleAlg(const std::string& name, ISvcLocator* pSvcLocator); 00029 00031 virtual ~RecNtupleAlg() {} 00032 00034 StatusCode initialize(); 00036 StatusCode execute(); 00038 StatusCode finalize(); 00039 00040 private: 00042 std::string m_tupleName; 00044 INTupleWriterSvc *ntupleWriteSvc; 00046 ITkrGeometrySvc *pGeometry; 00047 }; 00048 00049 00050 //Define the tracker tuple class here 00051 00052 class ICsIClusterList; 00053 00054 //############################### 00055 class RecTupleValues 00056 //############################### 00057 { 00058 public: 00059 RecTupleValues(); 00060 ~RecTupleValues() {return;} 00061 00062 StatusCode calcTupleValues(ICsIClusterList* pCalClusters, SiClusters* pSiClusters, SiRecObjs* pRecObjs, ITkrGeometrySvc* pGeom); 00063 StatusCode fillTupleValues(INTupleWriterSvc* pSvc, const char* pName); 00064 00065 private: 00066 //Routines to calculate some of the values 00067 void calcSkirtVars(GFgamma* pGamma); 00068 void calcTowerBoundaries(GFgamma* pGamma, ITkrGeometrySvc* pGeom); 00069 void calcActiveDistance(GFgamma* pGamma, ITkrGeometrySvc* pGeom); 00070 void calcExtraHits(SiClusters* pSiClusters, GFgamma* pGamma, ITkrGeometrySvc* pGeom); 00071 void calcEnergyCorrection(GFgamma* pGamma); 00072 00073 //Calculated in calcSkirtVars 00074 double Rec_Tkr_SkirtX; 00075 double Rec_Tkr_SkirtY; 00076 00077 //Calculated in TowerBoundaries 00078 double Rec_Conv_Twr_Dist; 00079 double Rec_Fit_xV; 00080 double Rec_Fit_yV; 00081 //Calculated in ActiveDistance 00082 double Rec_Active_Dist; 00083 //Calculated in ExtraHits 00084 double Rec_fst_Hit_Count; 00085 double Rec_Surplus_Hit_Ratio; 00086 double Rec_Outside_Hit_Ratio; 00087 double Rec_showerHits1; 00088 double Rec_showerHits2; 00089 double Rec_Sum_Hits; 00090 //Calclulated in EnergyCorrection 00091 double Rec_CsI_Energy; 00092 double Rec_CsI_Corr_Energy; 00093 }; 00094 #endif 00095
1.2.3 written by Dimitri van Heesch,
© 1997-2000