00001 #ifndef TkrNtupleAlg_h
00002 #define TkrNtupleAlg_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/SiClusters.h"
00013 #include "TkrRecon/SiRecObjs.h"
00014
00015
00016 class TkrNtupleAlg : public Algorithm
00017
00018 {
00019 public:
00020
00022
00024
00025 TkrNtupleAlg(const std::string& name, ISvcLocator* pSvcLocator);
00026
00028 virtual ~TkrNtupleAlg() {}
00029
00031 StatusCode initialize();
00033 StatusCode execute();
00035 StatusCode finalize();
00036
00037 private:
00039 std::string m_tupleName;
00041 INTupleWriterSvc *ntupleWriteSvc;
00042 };
00043
00044
00045
00046
00047
00048 class TkrTupleValues
00049
00050 {
00051 public:
00052 TkrTupleValues();
00053 ~TkrTupleValues() {return;}
00054
00055 StatusCode calcTupleValues(SiClusters* pClusters, SiRecObjs* pRecObjs);
00056 StatusCode fillTupleValues(INTupleWriterSvc* pSvc, const char* pName);
00057
00058 private:
00059
00060 void calcFitKink(GFgamma* pGamma);
00061
00062
00063 double Tkr_Cnv_Lyr_Hits;
00064 double Tkr_Max_controller_hits;
00065 double Tkr_Fst_Cnv_Lyr;
00066 double Tkr_NCnv_Lyrs_Hit;
00067
00068 std::vector<double> Tkr_HitsPerLyr;
00069
00070
00071 double Tkr_No_X_Trks;
00072 double Tkr_No_Y_Trks;
00073 double Tkr_No_Tracks;
00074 double Tkr_Fit_Type;
00075 double Tkr_Fit_Topo;
00076 double Tkr_Chisq;
00077 double Tkr_Chisq_1st;
00078 double Tkr_qual_X;
00079 double Tkr_qual_Y;
00080 double Tkr_qual;
00081 double Tkr_No_Hits;
00082 double Tkr_No_Gaps;
00083 double Tkr_No_Gaps_1st;
00084 double Tkr_No_Noise;
00085 double Tkr_No_Noise_1st;
00086 double Tkr_Fit_XNhits;
00087 double Tkr_Fit_YNhits;
00088 double Tkr_Fit_XChisq;
00089 double Tkr_Fit_YChisq;
00090 double Tkr_Fit_XChisq_1st;
00091 double Tkr_Fit_YChisq_1st;
00092 double Tkr_Fit_XKalEne;
00093 double Tkr_Fit_YKalEne;
00094 double Tkr_Fit_XKalThetaMS;
00095 double Tkr_Fit_YKalThetaMS;
00096 double Tkr_Fit_xdir;
00097 double Tkr_Fit_ydir;
00098 double Tkr_Fit_zdir;
00099 double Tkr_Fit_x0;
00100 double Tkr_Fit_y0;
00101 double Tkr_Fit_z0;
00102 double Tkr_Pair_xdir;
00103 double Tkr_Pair_ydir;
00104 double Tkr_Pair_zdir;
00105 double Tkr_Pair_x0;
00106 double Tkr_Pair_y0;
00107 double Tkr_Pair_z0;
00108 double Tkr_Gamma_xdir;
00109 double Tkr_Gamma_ydir;
00110 double Tkr_Gamma_zdir;
00111 double Tkr_Gamma_x0;
00112 double Tkr_Gamma_y0;
00113 double Tkr_Gamma_z0;
00114 double Tkr_Gamma_DLT;
00115 double Tkr_Pair_XNhits;
00116 double Tkr_XChisq;
00117 double Tkr_XChisq_1st;
00118 double Tkr_XKalEne;
00119 double Tkr_XKalThetaMS;
00120 double Tkr_Pair_YNhits;
00121 double Tkr_YChisq;
00122 double Tkr_YChisq_1st;
00123 double Tkr_YKalEne;
00124 double Tkr_YKalThetaMS;
00125 double Tkr_errSlopeX;
00126 double Tkr_errSlopeY;
00127 double Tkr_xeneXSlope;
00128 double Tkr_xeneYSlope;
00129 double Tkr_weightXSlope;
00130 double Tkr_weightYSlope;
00131 double Tkr_First_XHit;
00132 double Tkr_Zbottom;
00133 double Tkr_Diff_1st_Hit;
00134 double Tkr_Fit_Kink;
00135 double Tkr_Fit_KinkN;
00136 double Tkr_Pair_Kink;
00137 double Tkr_Pair_KinkN;
00138 };
00139 #endif