00001 #ifndef reconRootWriterAlg_h
00002 #define reconRootWriterAlg_h
00003
00004 #include "GaudiKernel/Algorithm.h"
00005
00006 #include "TkrRecon/SiRecObjs.h"
00007 #include "TkrRecon/SiClusters.h"
00008
00009 #include "CalRecon/CalRecLogs.h"
00010 #include "CalRecon/CsIClusters.h"
00011
00012
00013 class Recon;
00014 class CalLogEne;
00015 class CalCluster;
00016
00017
00018 class TkrTrack;
00019 class TkrSiCluster;
00020 class TkrLocator;
00021 class TkrHit;
00022 class TkrGamma;
00023
00024 class TFile;
00025 class TTree;
00026
00027 class reconRootWriterAlg : public Algorithm
00028 {
00029 public:
00030
00032
00033 reconRootWriterAlg(const std::string& name, ISvcLocator* pSvcLocator);
00034
00036 StatusCode initialize();
00038 StatusCode execute();
00040 StatusCode finalize();
00041
00043 StatusCode retrieve();
00044
00045 protected:
00046
00048 void save(SiRecObjs* sirec);
00050 void save(SiClusters* sicl);
00052 void save(CalRecLogs* crls);
00054 void save(CsIClusterList* ccl);
00056
00057
00059 void load(SiRecObjs* sirec) {};
00061 void load(SiClusters* sicl) {};
00063 void load(CalRecLogs* crls) {};
00065 void load(CsIClusterList* ccl) {};
00067
00068
00069 protected:
00070
00072
00074
00075
00076 void writeEvent();
00077 void close();
00078 StatusCode saveHeader();
00079
00080 private:
00081
00082 CalLogEne* converter(const CalRecLog* crl);
00083 CalCluster* converter(const ICsICluster* cc);
00084
00086
00088 TkrTrack* converter(const GFtrack* track, int id, bool mother = false);
00090
00092 TkrLocator* converter(const GFdata* gf);
00094 TkrSiCluster* converter(const SiCluster* scl);
00095
00097
00099 TkrHit* converter(const KalPlane& kp, SiCluster::view a);
00101
00103 TkrLocator* converter(const KalPlane& kp, SiCluster::view a, int idummy);
00104
00105 private:
00106
00108 void importGamma(SiRecObjs* sirec);
00110 void importTracks(SiRecObjs* sirec);
00112 void importHits(const GFtrack* track, TkrTrack* rtrack);
00113
00114 private:
00115
00117 int m_idtrack;
00118
00119 private:
00120
00121 SiClusters* m_SiClusters;
00122 SiRecObjs* m_SiRecObjs;
00123 CalRecLogs* m_CalRecLogs;
00124 CsIClusterList* m_CsIClusterList;
00125
00126 TFile *recFile;
00127 TTree *recTree;
00128
00129 Recon *m_rec;
00130
00131 std::string m_nameFile;
00132 std::string m_inputSource;
00133
00134 };
00135 #endif
00136
00137
00138