00001 // ================================================ 00002 // Isolator 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: Isolator 00014 // 00015 // Description: 00016 // 00017 // Algorithm which knows how to test particles for isolation 00018 // 00019 // 00020 // ................................................................ 00021 // 00022 00023 00024 #ifndef ATLFAST_ISOLATOR_H 00025 #define ATLFAST_ISOLATOR_H 00026 00027 // STL 00028 #include <string> 00029 #include <vector> 00030 00031 // Gaudi 00032 #include "GaudiKernel/ISvcLocator.h" 00033 #include "GaudiKernel/IAlgorithm.h" 00034 #include "GaudiKernel/Algorithm.h" 00035 #include "GaudiKernel/MsgStream.h" 00036 //#include "GaudiKernel/DataObject.h" 00037 //#include "GaudiKernel/ObjectVector.h" 00038 // Other 00039 #include "HepMC/GenParticle.h" 00040 00041 // Atlfast 00042 #include "AtlfastEvent/ReconstructedParticle.h" 00043 //#include "AtlfastEvent/ReconstructedParticleCollection.h" 00044 #include "AtlfastEvent/CollectionDefs.h" 00045 #include "AtlfastEvent/ITwoCptCell.h" 00046 #include "AtlfastEvent/ICluster.h" 00047 00048 #ifndef ATLFAST_COLLECTIONDEFS_H 00049 #include "AtlfastEvent/CollectionDefs.h" 00050 #endif 00051 00052 #include "AtlfastEvent/IKinematic.h" 00053 #include "AtlfastUtils/KinematicHelper.h" 00054 #include "AtlfastUtils/TesIO.h" 00055 00056 00057 //*************************************************************** 00058 // Isolator class declaration 00059 // 00060 //**************************************************************** 00061 00062 00063 namespace Atlfast { 00064 using std::string; 00077 class Isolator : public Algorithm { 00078 00079 public: 00080 00082 Isolator( const std::string& name, ISvcLocator* pSvcLocator ) ; 00083 00085 virtual ~Isolator(); 00086 00087 00089 StatusCode initialize() ; 00091 StatusCode execute() ; 00093 StatusCode finalize() ; 00094 00095 00096 00097 private: 00098 00099 //--------------------------------------------------- 00100 // Parameters of this algorithm 00101 //--------------------------------------------------- 00102 00104 double m_rClusterMatch; 00105 00107 double m_rClusterIsolation; 00108 00110 double m_eClusterIsolation; 00111 00113 double m_rCellIsolation; 00114 00116 double m_eCellIsolation; 00117 00119 double m_rLowerHalo; 00120 double m_rHigherHalo; 00121 00123 std::string m_inputLocation ; 00124 00126 std::string m_isolatedOutputLocation ; 00128 std::string m_nonIsolatedOutputLocation ; 00129 00131 std::string m_cellLocation ; 00133 std::string m_clusterLocation ; 00134 00135 00137 TesIO* m_tesIO; 00138 00140 std::string m_mcLocation; 00141 00142 00143 //------------------------------- 00144 // Objects used by this class to do its job 00145 //------------------------------- 00146 00147 // Encapsulates common operations on IKinematic types 00148 KinematicHelper m_kinehelp ; 00149 HepMC_helper::IMCselector* m_visibleToCal; 00150 00151 //------------------------------- 00152 // Private methods 00153 //------------------------------- 00154 00157 bool isIsolated( 00158 MsgStream&, 00159 ReconstructedParticleCollection::const_iterator, 00160 std::vector<ITwoCptCell*>& , 00161 std::vector<ICluster*>& 00162 00163 ); 00164 00165 }; 00166 00167 } // end of namespace bracket 00168 00169 00170 #endif