00001 // ================================================ 00002 //StandardHistogramMaker class description 00003 // ================================================ 00004 // 00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT 00006 // 00007 // 00008 // This version.... 00009 // 00010 // 00011 // Namespace Atlfast:: 00012 // 00013 // class: StandardHistogramMaker 00014 // 00015 // Description: 00016 // 00017 // Algorithm which makes some standard Atlfast debug histograms 00018 // 00019 // 00020 // ................................................................ 00021 // 00022 00023 #ifndef ATLFAST_STANDARDHISTOGRAMMAKER_H 00024 #define ATLFAST_STANDARDHISTOGRAMMAKER_H 00025 00026 // STL 00027 #include <vector> 00028 #include <string> 00029 00030 // Gaudi 00031 #include "GaudiKernel/ISvcLocator.h" 00032 #include "GaudiKernel/Algorithm.h" 00033 #include "GaudiKernel/MsgStream.h" 00034 #include "GaudiKernel/DataObject.h" 00035 00036 class IHistogram1D; // forward declaration 00037 00038 // Other 00039 #include "CLHEP/Vector/LorentzVector.h" 00040 #include "HepMC/GenEvent.h" 00041 #include "HepMC/GenParticle.h" 00042 00043 // Atlfast 00044 #include "AtlfastEvent/ReconstructedParticle.h" 00045 #include "AtlfastUtils/TesIO.h" 00046 00047 //*************************************************************** 00048 // StandardHistogramMaker class declaration 00049 // 00050 // A "Gaudi algorithm" is something which gets scheduled and controlled 00051 // by the framework. In its simplest definition it is something which 00052 // - gets clled for each event 00053 // - can get anything it wants out of the Transient Event Store" 00054 // - can put anything it makes into the store. 00055 // 00056 // It must inherit from the Algorithm base class 00057 //**************************************************************** 00058 00059 namespace Atlfast { 00060 using std::string; 00064 class StandardHistogramMaker : public Algorithm 00065 { 00066 00067 public: 00068 00069 //------------------------- 00070 // Constructors/Destructors 00071 // 00072 // Gaudi requires that the constructor takes certain arguments 00073 // (and passes them directly to the constructor of the base class) 00074 //------------------------- 00075 00076 StandardHistogramMaker( const std::string& name, ISvcLocator* pSvcLocator ) ; 00077 ~StandardHistogramMaker(); 00078 00079 00080 //------------------------------------------------------ 00081 // Methods used by Gaudi to run the algorithm 00082 //------------------------------------------------------ 00083 00084 StatusCode initialize() ; 00085 StatusCode execute() ; 00086 StatusCode finalize() ; 00087 00088 00089 00090 private: 00091 00092 00093 //------------------------------- 00094 // Private methods 00095 //------------------------------- 00096 00097 void bookElectronHistograms(); 00098 void bookPhotonHistograms(); 00099 void bookIsolatedElectronHistograms(); 00100 void bookIsolatedPhotonHistograms(); 00101 void bookCellHistograms(); 00102 void bookClusterHistograms(); 00103 00104 void fillElectronHistograms() ; 00105 void fillPhotonHistograms() ; 00106 void fillIsolatedElectronHistograms(); 00107 void fillIsolatedPhotonHistograms(); 00108 void fillCellHistograms(); 00109 void fillClusterHistograms(); 00110 00111 TesIO* m_tesIO; 00112 00113 00114 // the following data members tell the 00115 // algorithm where to retrieve its input particles from 00116 // in the TES. These are written by the job Options service. 00117 00118 std::string m_electronLocation ; 00119 std::string m_isolatedElectronLocation; 00120 std::string m_photonLocation ; 00121 std::string m_isolatedPhotonLocation; 00122 std::string m_cellLocation; 00123 std::string m_clusterLocation; 00124 std::string m_mcTruthLocation; 00125 00126 00127 // the following data members tell the 00128 // algorithm whether or not certain sets of histograms 00129 // are required 00130 00131 bool m_doElectronHistograms ; 00132 bool m_doIsolatedElectronHistograms ; 00133 bool m_doPhotonHistograms ; 00134 bool m_doIsolatedPhotonHistograms ; 00135 bool m_doCellHistograms ; 00136 bool m_doClusterHistograms ; 00137 00138 // The following are the actual histograms 00139 // htp has added his own naming convention here 00140 // m_h_ means a histogram! 00141 00142 // electron histograms 00143 IHistogram1D* m_h_electronMultiplicity; 00144 IHistogram1D* m_h_electronPt; 00145 00146 // isolated electron histograms 00147 IHistogram1D* m_h_isolatedElectronMultiplicity; 00148 IHistogram1D* m_h_isolatedElectronPt; 00149 00150 // photon histograms 00151 IHistogram1D* m_h_photonMultiplicity; 00152 IHistogram1D* m_h_photonPt; 00153 00154 // isolated photon histograms 00155 IHistogram1D* m_h_isolatedPhotonMultiplicity; 00156 IHistogram1D* m_h_isolatedPhotonPt; 00157 00158 // cell histograms 00159 IHistogram1D* m_h_cellMultiplicity; 00160 IHistogram1D* m_h_cellPt; 00161 00162 // cluster histograms 00163 IHistogram1D* m_h_clusterMultiplicity; 00164 IHistogram1D* m_h_clusterPt; 00165 00166 00167 // histogram numbers, start at... 00168 int m_histStart; 00169 // and current count 00170 int m_nHist; 00171 }; 00172 00173 00174 } // end of namespace bracket 00175 00176 #endif 00177 00178 00179 00180 00181 00182 00183 00184 00185 00186 00187