00001 // Cell Maker.h 00002 // 00003 // HTP tidied up and put into namespace 00004 00005 #ifndef ATLFAST_CELLMAKER_H 00006 #define ATLFAST_CELLMAKER_H 00007 00008 #include <string> 00009 #include <vector> 00010 00011 // Gaudi 00012 #ifndef GAUDIKERNEL_ALGORITHM_H 00013 #include "GaudiKernel/Algorithm.h" 00014 #define GAUDIKERNEL_ALGORITHM_H 00015 #endif 00016 00017 #ifndef GAUDIKERNEL_MSGSTREAM_H 00018 #include "GaudiKernel/MsgStream.h" 00019 #define GAUDIKERNEL_MSGSTREAM_H 00020 #endif 00021 00022 #include "AtlfastEvent/CollectionDefs.h" 00023 #include "AtlfastEvent/MCparticleCollection.h" 00024 00025 //Atlfast 00026 namespace HepMC_helper{ 00027 class IMCselector; 00028 } 00029 00030 00031 //Transient event store paths 00032 00033 class ISvcLocator; 00034 00035 namespace Atlfast { 00036 class Calorimeter; 00037 class TesIO; 00038 class ICellSelector; 00039 class EPileupMap; 00040 class ISmearer; 00041 00042 using std::string; 00043 using std::vector; 00044 00054 class CellMaker : public Algorithm { 00055 00056 public: 00057 00059 CellMaker(const std::string& name, ISvcLocator* pSvcLocator); 00060 00062 ~CellMaker(); 00063 00065 StatusCode initialize(); 00067 StatusCode execute(); 00069 StatusCode finalize(); 00070 00071 private: 00072 00073 void deflectParticles(ITransportedParticleCollection&); 00074 Calorimeter* m_calorimeter; 00075 ICellSelector* m_cellSelector; //select cells on readout of Calorimeter 00076 HepMC_helper::IMCselector* m_mcSelector; //selects input particles 00078 EPileupMap* m_epileupMap; 00080 ISmearer* m_smearer; 00081 00082 // parameters needed to construct a calorimeter object... 00083 double m_etaCoverage; 00084 double m_minETCell; // minimum Et of cell to write out 00085 double m_barrelForwardEta; // boundary between forward and barrel 00086 bool m_fieldOn; // field bending calculted if true 00088 00089 bool m_doSmearing; 00091 bool m_fastShower; 00092 00093 //...............Cell Granularities for............................... 00094 double m_granBarrelEta; // barrel eta 00095 double m_granBarrelPhi; // barrel phi 00096 double m_granForwardEta; // forward eta 00097 double m_granForwardPhi; // forward phi 00098 00099 //Paths in the transient event store to get/put things 00100 std::string m_outputLocation; 00101 std::string m_outputLocation_IN4M; 00102 00103 //holds the Stotegate MC location 00104 std::string m_mcLocation; 00105 00106 // PDG ID for magnetic monopoles 00107 std::vector<int> m_monopoleIDs; 00108 00109 TesIO* m_tesIO; // TES interface 00110 MsgStream m_log; 00111 }; 00112 00113 } // end of namespace bracket 00114 #endif 00115 00116 00117 00118 00119 00120 00121 00122 00123 00124 00125 00126 00127 00128 00129 00130 00131 00132