00001 // ================================================ 00002 // KIsolator class description 00003 // KIsolator is Kambiz's version of Isolator modified for use 00004 // with FastShower generated cells. 00005 // ================================================ 00006 // 00007 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT 00008 // 00009 // 00010 // This version.... 00011 // 00012 // 00013 // Namespace Atlfast:: 00014 // 00015 // class: KIsolator 00016 // 00017 // Description: 00018 // 00019 // Algorithm which knows how to test particles for isolation 00020 // 00021 // 00022 // ................................................................ 00023 // 00024 00025 00026 #ifndef ATLFAST_KISOLATOR_H 00027 #define ATLFAST_KISOLATOR_H 00028 00029 // STL 00030 #include <string> 00031 #include <vector> 00032 00033 // Gaudi 00034 #include "GaudiKernel/ISvcLocator.h" 00035 #include "GaudiKernel/IAlgorithm.h" 00036 #include "GaudiKernel/Algorithm.h" 00037 #include "GaudiKernel/MsgStream.h" 00038 //#include "GaudiKernel/DataObject.h" 00039 //#include "GaudiKernel/ObjectVector.h" 00040 // Other 00041 #include "HepMC/GenParticle.h" 00042 00043 // Atlfast 00044 #include "AtlfastEvent/ReconstructedParticle.h" 00045 //#include "AtlfastEvent/ReconstructedParticleCollection.h" 00046 #include "AtlfastEvent/CollectionDefs.h" 00047 #include "AtlfastEvent/ITwoCptCell.h" 00048 #include "AtlfastEvent/ICluster.h" 00049 00050 #ifndef ATLFAST_COLLECTIONDEFS_H 00051 #include "AtlfastEvent/CollectionDefs.h" 00052 #endif 00053 00054 #include "AtlfastEvent/IKinematic.h" 00055 #include "AtlfastUtils/KinematicHelper.h" 00056 #include "AtlfastUtils/TesIO.h" 00057 00058 00059 //*************************************************************** 00060 // KIsolator class declaration 00061 // 00062 //**************************************************************** 00063 00064 00065 namespace Atlfast { 00066 using std::string; 00067 00084 class KIsolator : public Algorithm { 00085 00086 public: 00087 00089 KIsolator( const std::string& name, ISvcLocator* pSvcLocator ) ; 00090 00092 virtual ~KIsolator(); 00093 00094 00096 StatusCode initialize() ; 00098 StatusCode execute() ; 00100 StatusCode finalize() ; 00101 00102 00103 00104 private: 00105 00106 //--------------------------------------------------- 00107 // Parameters of this algorithm 00108 //--------------------------------------------------- 00109 00111 double m_rClusterMatch; 00112 00114 double m_rClusterIsolation; 00115 00117 double m_eClusterIsolation; 00118 00120 double m_rCellIsolation; 00121 00123 double m_eCellIsolation; 00124 00126 std::string m_inputLocation ; 00127 00129 std::string m_isolatedOutputLocation ; 00131 std::string m_nonIsolatedOutputLocation ; 00132 00134 std::string m_cellLocation ; 00136 std::string m_clusterLocation ; 00137 00138 00140 TesIO* m_tesIO; 00141 00143 std::string m_mcLocation; 00144 00145 00146 //------------------------------- 00147 // Objects used by this class to do its job 00148 //------------------------------- 00149 00150 // Encapsulates common operations on IKinematic types 00151 KinematicHelper m_kinehelp ; 00152 HepMC_helper::IMCselector* m_visibleToCal; 00153 00154 //------------------------------- 00155 // Private methods 00156 //------------------------------- 00157 00158 // transition region effect (from FastShower) 00159 double gapResponse(double eta); 00160 00163 bool isIsolated( 00164 MsgStream&, 00165 ReconstructedParticleCollection::const_iterator, 00166 std::vector<ITwoCptCell*>& , 00167 std::vector<ICluster*>& 00168 ); 00169 00170 }; 00171 00172 } // end of namespace bracket 00173 00174 00175 #endif